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] PPC64 _dl_lookup_symbol_internal clobbers fpr2


The resolve path of ld.so does not actually use fp operations but gcc has a
nasty habit of using volitile fprs to move/copy structs inline. So a function
that is dynamically linked and has float/double parms may find its parametes
globbled by plt-fixup on the first call. This is the case with
_dl_lookup_symbol_internal in the current current RHEL 3 beta. 

There are three possible solutions:

1) change the dl-machine.h TRAMPOLINE to save/restore fprs 2-13. This would
slow down all dynamic resolves.
2) change gcc to not use fprs for struct copies. This would have negative
impact on SPEC benchmarks
3) apply -msoft-float to the compile of the appropriate loader modules so that
the dynamic resolve path does not use fprs.

For now I would like to go with option 3:

2003-08-26  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/powerpc/powerpc64/elf/Makefile: New file.

-- 
Steven Munroe
sjmunroe@us.ibm.com
Linux on PowerPC-64 Development
GLIBC for PowerPC-64 Development
diff -urN libc23-cvstip-20030825/sysdeps/powerpc/powerpc64/elf/Makefile libc23/sysdeps/powerpc/powerpc64/elf/Makefile
--- libc23-cvstip-20030825/sysdeps/powerpc/powerpc64/elf/Makefile	Wed Dec 31 18:00:00 1969
+++ libc23/sysdeps/powerpc/powerpc64/elf/Makefile	Mon Aug 25 14:57:54 2003
@@ -0,0 +1,9 @@
+# powerpc64/ELF specific definitions.
+
+# Need to prevent gcc from using fprs durring dynamic linking.
+
+CFLAGS-dl-runtime.c := -msoft-float
+CFLAGS-dl-lookup.c := -msoft-float
+CFLAGS-dl-reloc.c := -msoft-float
+CFLAGS-dl-misc.c := -msoft-float
+CFLAGS-rtld.c := -msoft-float

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