* [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).