public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Fix ppc64 libc
@ 2004-07-05 12:48 Jakub Jelinek
  2004-07-05 17:10 ` Ulrich Drepper
  0 siblings, 1 reply; 2+ messages in thread
From: Jakub Jelinek @ 2004-07-05 12:48 UTC (permalink / raw)
  To: Ulrich Drepper; +Cc: Glibc hackers

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Fix ppc64 libc
  2004-07-05 12:48 [PATCH] Fix ppc64 libc Jakub Jelinek
@ 2004-07-05 17:10 ` Ulrich Drepper
  0 siblings, 0 replies; 2+ messages in thread
From: Ulrich Drepper @ 2004-07-05 17:10 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Glibc hackers

Applied.

-- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-07-05 17:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-07-05 12:48 [PATCH] Fix ppc64 libc Jakub Jelinek
2004-07-05 17:10 ` Ulrich Drepper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).