[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r23298 - in /branches/eglibc-2_17: ./ libc/ports/ libc/ports/sysdeps/tile/ libc/ports/sysdeps/tile/tilegx/ libc/ports/sysdep...



Author: joseph
Date: Sat Jun 15 17:38:58 2013
New Revision: 23298

Log:
Merge changes between r23218 and r23297 from /fsf/glibc-2_17-branch.

Modified:
    branches/eglibc-2_17/   (props changed)
    branches/eglibc-2_17/libc/ports/ChangeLog.tile
    branches/eglibc-2_17/libc/ports/sysdeps/tile/crti.S
    branches/eglibc-2_17/libc/ports/sysdeps/tile/start.S
    branches/eglibc-2_17/libc/ports/sysdeps/tile/tilegx/Makefile
    branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data   (props changed)
    branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data   (props changed)
    branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data   (props changed)
    branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data   (props changed)

Propchange: branches/eglibc-2_17/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jun 15 17:38:58 2013
@@ -1,2 +1,2 @@
-/fsf/glibc-2_17-branch:22054-23218
+/fsf/glibc-2_17-branch:22054-23297
 /fsf/trunk:15224-22029

Modified: branches/eglibc-2_17/libc/ports/ChangeLog.tile
==============================================================================
--- branches/eglibc-2_17/libc/ports/ChangeLog.tile (original)
+++ branches/eglibc-2_17/libc/ports/ChangeLog.tile Sat Jun 15 17:38:58 2013
@@ -1,3 +1,12 @@
+2013-05-23  Chris Metcalf  <cmetcalf@xxxxxxxxxx>
+
+	* sysdeps/tile/tilegx/Makefile ($(cflags-mcmodel-large)):
+	Test for assembler and linker support for "-mcmodel=large -fpic"
+	in addition to compiler support; provide -DNO_PLT_PCREL if not.
+	* sysdeps/tile/start.S [NO_PLT_PCREL]: Guard for no PC-relative
+	PLT operators in assembly.
+	* sysdeps/tile/crti.S [NO_PLT_PCREL]: Likewise.
+
 2012-12-14  Chris Metcalf  <cmetcalf@xxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/tile/nptl/clone.S: Fix DWARF info.

Modified: branches/eglibc-2_17/libc/ports/sysdeps/tile/crti.S
==============================================================================
--- branches/eglibc-2_17/libc/ports/sysdeps/tile/crti.S (original)
+++ branches/eglibc-2_17/libc/ports/sysdeps/tile/crti.S Sat Jun 15 17:38:58 2013
@@ -95,7 +95,7 @@
 	LD_PTR r0, r0
 	BEQZ r0, .Lno_weak_fn
 	jalr r0
-#elif defined(__tilegx__)
+#elif defined(__tilegx__) && !defined(NO_PLT_PCREL)
 	/* Since we are calling from the start of the object to the PLT,
 	   call by loading the full address into a register.  */
 	lnk r2

Modified: branches/eglibc-2_17/libc/ports/sysdeps/tile/start.S
==============================================================================
--- branches/eglibc-2_17/libc/ports/sysdeps/tile/start.S (original)
+++ branches/eglibc-2_17/libc/ports/sysdeps/tile/start.S Sat Jun 15 17:38:58 2013
@@ -62,6 +62,13 @@
 #include <sysdep.h>
 #include <arch/abi.h>
 
+/* Just create no-ops if we don't support PC-relative PLT relocations. */
+#ifdef NO_PLT_PCREL
+# define hw2_last_plt(x)	0
+# define hw1_plt(x)		0
+# define hw0_plt(x)		0
+#endif
+
 	.text
 	.global _start
 	.type   _start,@function
@@ -155,7 +162,11 @@
 	}
 	{
 	 ADD_PTR r4, r4, r13
-	 jalr r12
+# ifdef NO_PLT_PCREL
+	 j plt(__libc_start_main)
+# else
+	 jr r12
+# endif
 	}
 #else
 	 addli r0, r13, lo16(main - .Lmy_pc)

Modified: branches/eglibc-2_17/libc/ports/sysdeps/tile/tilegx/Makefile
==============================================================================
--- branches/eglibc-2_17/libc/ports/sysdeps/tile/tilegx/Makefile (original)
+++ branches/eglibc-2_17/libc/ports/sysdeps/tile/tilegx/Makefile Sat Jun 15 17:38:58 2013
@@ -1,12 +1,16 @@
 include $(common-objpfx)cflags-mcmodel-large.mk
 
+# Check for gcc to support the command-line switch, and for
+# binutils to support the hwN_plt() assembly operators and relocations.
 $(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make
 	mcmodel=no; \
-	$(CC) -S -o /dev/null -xc /dev/null -mcmodel=large && mcmodel=yes; \
+	(echo 'int main() { return getuid(); }' | \
+	 $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \
 	echo "cflags-mcmodel-large = $$mcmodel" > $@
 
+ifeq (yes,$(cflags-mcmodel-large))
+
 ifeq ($(subdir),csu)
-ifeq (yes,$(cflags-mcmodel-large))
 # elf-init.c is in libc_nonshared.o (the end of the shared object) but
 # must reach the _init symbol at the very start of the shared object.
 CFLAGS-elf-init.c += -mcmodel=large
@@ -15,4 +19,17 @@
 # with profiling, but calls to libc.so via the PLT at the very end.
 CFLAGS-gmon-start.c += -mcmodel=large
 endif
+
+else
+
+# Don't try to compile assembly code with hwN_plt() directives if the
+# toolchain doesn't support -mcmodel=large.
+ifeq ($(subdir),csu)
+CPPFLAGS-start.S += -DNO_PLT_PCREL
+CPPFLAGS-crti.S += -DNO_PLT_PCREL
 endif
+ifeq ($(subdir),nptl)
+CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL
+endif
+
+endif

Propchange: branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jun 15 17:38:58 2013
@@ -1,3 +1,3 @@
-/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data:22054-23218
+/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data:22054-23297
 /fsf/trunk/libc/ports/data/c++-types-powerpce500v2-linux-gnu.data:15224-19464
 /fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data:19921-22029

Propchange: branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jun 15 17:38:58 2013
@@ -1,3 +1,3 @@
-/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data:22054-23218
+/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data:22054-23297
 /fsf/trunk/libc/ports/data/localplt-powerpce500v2-linux-gnu.data:15224-19464
 /fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data:19921-22029

Propchange: branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jun 15 17:38:58 2013
@@ -1,3 +1,3 @@
-/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data:22054-23218
+/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data:22054-23297
 /fsf/trunk/libc/ports/data/c++-types-powerpce500v1-linux-gnu.data:15224-19464
 /fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data:19921-22029

Propchange: branches/eglibc-2_17/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jun 15 17:38:58 2013
@@ -1,3 +1,3 @@
-/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data:22054-23218
+/fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data:22054-23297
 /fsf/trunk/libc/ports/data/localplt-powerpce500v1-linux-gnu.data:15224-19464
 /fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data:19921-22029

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits