This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix ppc64 libc


Hi!

The nptl change fixes NPTL ppc64 build after 2004-07-01 Makeconfig
reordering of shlib-versions.  All other platforms which have DEFAULT
in main shlib-versions are listed there, so IMHO it certainly doesn't hurt.
Maybe it would be better to first process all DEFAULT lines and then the
other ones when processing shlib-versions though (say
egrep '[^[:space:]]+[[:space:]]+DEFAULT' first, then egrep -v).

The other changes are because I have noticed bogus:
  5314: 0000000000175970    24 FUNC    LOCAL  DEFAULT   29 __libc_longjmp@GLIBC_2.3
  5908: 0000000000175880    24 FUNC    LOCAL  DEFAULT   29 __setjmp@GLIBC_2.3
  6440: 0000000000175988    24 FUNC    LOCAL  DEFAULT   29 __sigjmp_save@GLIBC_2.3
  6760: 0000000000175940    24 FUNC    LOCAL  DEFAULT   29 __longjmp@GLIBC_2.3
  8164: 0000000000175970    24 FUNC    LOCAL  DEFAULT   29 __libc_siglongjmp@GLIBC_2.3
in ppc* libc.so.
__libc_longjmp and __libc_siglongjmp are both GLIBC_PRIVATE in Versions files,
so only vmx versions ought to be exported and as GLIBC_PRIVATE, while the
remaining 3 symbols are not exported.

2004-07-05  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/powerpc/novmx-longjmp.c (__libc_longjmp,
	__libc_siglongjmp): Remove symbol_version.
	* sysdeps/powerpc/longjmp.c (__libc_longjmp, __libc_siglongjmp):
	Export @@GLIBC_PRIVATE, not @@GLIBC_2.3.4.
	* sysdeps/powerpc/sigjmp.c (__sigjmp_save): Use strong_alias
	unconditionally.
	* sysdeps/powerpc/novmx-sigjmp.c (__sigjmp_save): Remove.
	* sysdeps/powerpc/powerpc32/__longjmp.S (__longjmp): Use
	strong_alias instead of default_symbol_version, remove
	symbol_version.
	* sysdeps/powerpc/powerpc64/__longjmp.S (__longjmp): Likewise.
	* sysdeps/powerpc/powerpc32/bsd-setjmp.S (__novmx__setjmp): Change
	into strong_alias to __novmxsetjmp.
	(__vmx__setjmp): Similarly with __vmxsetjmp.
	(__setjmp): Make it strong_alias to __vmx__setjmp, remove
	default_symbol_version and symbol_version.
	* sysdeps/powerpc/powerpc64/bsd-setjmp.S (__novmx__setjmp): Change
	into strong_alias to __novmxsetjmp.
	(__vmx__setjmp): Similarly with __vmxsetjmp.
	(__setjmp): Make it strong_alias to __vmx__setjmp, remove
	default_symbol_version and symbol_version.
nptl/
	* shlib-versions: Add powerpc64-.*-linux.*.

--- libc/nptl/shlib-versions.jj	2002-11-26 23:49:15.000000000 +0100
+++ libc/nptl/shlib-versions	2004-07-05 13:03:15.322282213 +0200
@@ -6,4 +6,5 @@ hppa.*-.*-linux.*	libpthread=0		GLIBC_2.
 s390x-.*-linux.*	libpthread=0		GLIBC_2.2
 cris-.*-linux.*		libpthread=0		GLIBC_2.2
 x86_64-.*-linux.*	libpthread=0		GLIBC_2.2.5
+powerpc64-.*-linux.*	libpthread=0		GLIBC_2.3
 .*-.*-linux.*		libpthread=0
--- libc/sysdeps/powerpc/novmx-longjmp.c.jj	2004-02-14 04:27:26.000000000 +0100
+++ libc/sysdeps/powerpc/novmx-longjmp.c	2004-07-05 13:14:32.693204025 +0200
@@ -53,14 +53,10 @@ weak_alias (__novmx__libc_siglongjmp, __
 weak_alias (__novmx__libc_siglongjmp, __novmxsiglongjmp)
 
 # if __WORDSIZE == 64
-symbol_version (__novmx__libc_longjmp,__libc_longjmp,GLIBC_2.3);
-symbol_version (__novmx__libc_siglongjmp,__libc_siglongjmp,GLIBC_2.3);
 symbol_version (__novmx_longjmp,_longjmp,GLIBC_2.3);
 symbol_version (__novmxlongjmp,longjmp,GLIBC_2.3);
 symbol_version (__novmxsiglongjmp,siglongjmp,GLIBC_2.3);
 # else
-symbol_version (__novmx__libc_longjmp,__libc_longjmp,GLIBC_2.0);
-symbol_version (__novmx__libc_siglongjmp,__libc_siglongjmp,GLIBC_2.0);
 symbol_version (__novmx_longjmp,_longjmp,GLIBC_2.0);
 symbol_version (__novmxlongjmp,longjmp,GLIBC_2.0);
 symbol_version (__novmxsiglongjmp,siglongjmp,GLIBC_2.0);
--- libc/sysdeps/powerpc/powerpc64/__longjmp.S.jj	2004-03-13 10:23:15.000000000 +0100
+++ libc/sysdeps/powerpc/powerpc64/__longjmp.S	2004-07-05 13:51:48.722100900 +0200
@@ -26,8 +26,7 @@
 # include "__longjmp-common.S"
 
 #else /* !NOT_IN_libc */
-/* Build a versioned object for libc.  */
-default_symbol_version (__vmx__longjmp,__longjmp,GLIBC_2.3.4)
+strong_alias (__vmx__longjmp, __longjmp)
 # define __longjmp  __vmx__longjmp
 # include "__longjmp-common.S"
 
@@ -35,7 +34,6 @@ default_symbol_version (__vmx__longjmp,_
 #  define __NO_VMX__
 #  undef __longjmp
 #  undef JB_SIZE
-symbol_version(__novmx__longjmp,__longjmp,GLIBC_2.3)
 #  define __longjmp  __novmx__longjmp
 #  include "__longjmp-common.S"
 # endif
--- libc/sysdeps/powerpc/powerpc64/bsd-setjmp.S.jj	2004-03-23 15:51:35.000000000 +0100
+++ libc/sysdeps/powerpc/powerpc64/bsd-setjmp.S	2004-07-05 13:57:06.813179949 +0200
@@ -23,33 +23,21 @@
 
 #if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
 
-/* We need 2 copies of identical code for the setjmp's as gas complains
-   erroneously about having multiple versions of setjmp.  This eliminates the
-   need for the strong alias of __setjmp to setjmp which
-   does not support versioning, i.e. another gas unimplemented feature. */
-symbol_version (__novmx__setjmp,__setjmp,GLIBC_2.3)
-symbol_version (__novmxsetjmp,setjmp,GLIBC_2.3)
 
-ENTRY (BP_SYM (__novmxsetjmp))
+ENTRY (__novmxsetjmp)
 	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__novmx__sigsetjmp))
-END (BP_SYM (__novmxsetjmp))
+	b JUMPTARGET (__novmx__sigsetjmp)
+END (__novmxsetjmp)
+strong_alias (__novmxsetjmp, __novmx__setjmp)
+symbol_version (__novmxsetjmp, setjmp, GLIBC_2.3)
 
-ENTRY (BP_SYM (__novmx__setjmp))
-	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__novmx__sigsetjmp))
-END (BP_SYM (__novmx__setjmp))
 #endif  /*  defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) */
 
-default_symbol_version (__vmx__setjmp,__setjmp,GLIBC_2.3.4)
-default_symbol_version (__vmxsetjmp,setjmp,GLIBC_2.3.4)
-
-ENTRY (BP_SYM (__vmxsetjmp))
-	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__vmx__sigsetjmp))
-END (BP_SYM (__vmxsetjmp))
 
-ENTRY (BP_SYM (__vmx__setjmp))
+ENTRY (__vmxsetjmp)
 	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__vmx__sigsetjmp))
-END (BP_SYM (__vmx__setjmp))
+	b JUMPTARGET (__vmx__sigsetjmp)
+END (__vmxsetjmp)
+strong_alias (__vmxsetjmp, __vmx__setjmp)
+strong_alias (__vmx__sigsetjmp, __setjmp)
+default_symbol_version (__vmxsetjmp, setjmp, GLIBC_2.3.4)
--- libc/sysdeps/powerpc/powerpc32/__longjmp.S.jj	2004-03-13 10:23:15.000000000 +0100
+++ libc/sysdeps/powerpc/powerpc32/__longjmp.S	2004-07-05 14:00:52.485508208 +0200
@@ -25,15 +25,13 @@
 # include "__longjmp-common.S"
 
 #else /* !NOT_IN_libc */
-/* Build a versioned object for libc.  */
-default_symbol_version (__vmx__longjmp,__longjmp,GLIBC_2.3.4);
+strong_alias (__vmx__longjmp, __longjmp);
 # define __longjmp  __vmx__longjmp
 # include "__longjmp-common.S"
 
 # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
 #  define __NO_VMX__
 #  undef JB_SIZE
-symbol_version (__novmx__longjmp,__longjmp,GLIBC_2.0);
 #  undef __longjmp
 #  define __longjmp  __novmx__longjmp
 #  include "__longjmp-common.S"
--- libc/sysdeps/powerpc/powerpc32/bsd-setjmp.S.jj	2004-03-23 15:51:34.000000000 +0100
+++ libc/sysdeps/powerpc/powerpc32/bsd-setjmp.S	2004-07-05 13:59:48.342784078 +0200
@@ -23,34 +23,19 @@
 
 #if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
 
-
-/* We need 2 copies of identical code for the  setjmp's as gas complains
-   erroneously about having multiple versions of setjmp.  This eliminates the
-   need for the strong alias of __setjmp to setjmp which
-   does not support versioning, i.e. another gas unimplemented feature. */
-symbol_version (__novmx__setjmp,__setjmp,GLIBC_2.0)
-symbol_version (__novmxsetjmp,setjmp,GLIBC_2.0)
-
-ENTRY (BP_SYM (__novmxsetjmp))
+ENTRY (__novmxsetjmp)
 	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__novmx__sigsetjmp))
-END (BP_SYM (__novmxsetjmp))
+	b JUMPTARGET (__novmx__sigsetjmp)
+END (__novmxsetjmp)
+strong_alias (__novmxsetjmp, __novmx__setjmp)
+symbol_version (__novmxsetjmp, setjmp, GLIBC_2.0)
 
-ENTRY (BP_SYM (__novmx__setjmp))
-	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__novmx__sigsetjmp))
-END (BP_SYM (__novmx__setjmp))
 #endif  /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) ) */
 
-default_symbol_version (__vmx__setjmp,__setjmp,GLIBC_2.3.4)
-default_symbol_version (__vmxsetjmp,setjmp,GLIBC_2.3.4)
-
-ENTRY (BP_SYM (__vmxsetjmp))
-	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__vmx__sigsetjmp))
-END (BP_SYM (__vmxsetjmp))
-
-ENTRY (BP_SYM (__vmx__setjmp))
+ENTRY (__vmxsetjmp)
 	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (BP_SYM (__vmx__sigsetjmp))
-END (BP_SYM (__vmx__setjmp))
+	b JUMPTARGET (__vmx__sigsetjmp)
+END (__vmxsetjmp)
+strong_alias (__vmxsetjmp, __vmx__setjmp)
+strong_alias (__vmx__setjmp, __setjmp)
+default_symbol_version (__vmxsetjmp,setjmp,GLIBC_2.3.4)
--- libc/sysdeps/powerpc/sigjmp.c.jj	2004-03-23 15:51:34.000000000 +0100
+++ libc/sysdeps/powerpc/sigjmp.c	2004-07-05 13:45:11.804878241 +0200
@@ -37,10 +37,4 @@ __vmx__sigjmp_save (sigjmp_buf env, int 
   return 0;
 }
 
-#if defined NOT_IN_libc
-/* Build a non-versioned object for rtld-*.  */
 strong_alias (__vmx__sigjmp_save,__sigjmp_save)
-#else
-/* Build a versioned object for libc.  */
-default_symbol_version (__vmx__sigjmp_save,__sigjmp_save,GLIBC_2.3.4);
-#endif
--- libc/sysdeps/powerpc/longjmp.c.jj	2004-03-13 10:23:15.000000000 +0100
+++ libc/sysdeps/powerpc/longjmp.c	2004-07-05 13:13:52.122336315 +0200
@@ -55,8 +55,8 @@ weak_alias (__vmx__libc_siglongjmp, __vm
 weak_alias (__vmx__libc_siglongjmp, __vmxsiglongjmp)
 
 
-default_symbol_version (__vmx__libc_longjmp, __libc_longjmp, GLIBC_2.3.4);
-default_symbol_version (__vmx__libc_siglongjmp, __libc_siglongjmp, GLIBC_2.3.4);
+default_symbol_version (__vmx__libc_longjmp, __libc_longjmp, GLIBC_PRIVATE);
+default_symbol_version (__vmx__libc_siglongjmp, __libc_siglongjmp, GLIBC_PRIVATE);
 default_symbol_version (__vmx_longjmp, _longjmp, GLIBC_2.3.4);
 default_symbol_version (__vmxlongjmp, longjmp, GLIBC_2.3.4);
 default_symbol_version (__vmxsiglongjmp, siglongjmp, GLIBC_2.3.4);
--- libc/sysdeps/powerpc/novmx-sigjmp.c.jj	2004-02-14 04:27:57.000000000 +0100
+++ libc/sysdeps/powerpc/novmx-sigjmp.c	2004-07-05 14:19:07.628982470 +0200
@@ -41,10 +41,5 @@ __novmx__sigjmp_save (__novmx__sigjmp_bu
   return 0;
 }
 
-#  if __WORDSIZE == 64
-symbol_version (__novmx__sigjmp_save,__sigjmp_save,GLIBC_2.3);
-#  else
-symbol_version (__novmx__sigjmp_save,__sigjmp_save,GLIBC_2.0);
-#  endif /* __WORDSIZE == 64  */
 # endif /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) */
 #endif /* !NOT_IN_libc && SHARED  */

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]