aboutsummaryrefslogtreecommitdiff
path: root/stdio-common
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-07-29 08:33:03 -0700
committerUlrich Drepper <drepper@redhat.com>2009-07-29 08:33:03 -0700
commitb48a267b8fbb885191a04cffdb4050a4d4c8a20b (patch)
tree1a517e3273ee5785b44a9bd5b9aec9ae62b95ac3 /stdio-common
parent9655389317c92e5935c47d90c0ba48ca54bd245e (diff)
downloadglibc-b48a267b8fbb885191a04cffdb4050a4d4c8a20b.tar
glibc-b48a267b8fbb885191a04cffdb4050a4d4c8a20b.tar.gz
glibc-b48a267b8fbb885191a04cffdb4050a4d4c8a20b.tar.bz2
glibc-b48a267b8fbb885191a04cffdb4050a4d4c8a20b.zip
Preserve SSE registers in runtime relocations on x86-64.
SSE registers are used for passing parameters and must be preserved in runtime relocations. This is inside ld.so enforced through the tests in tst-xmmymm.sh. But the malloc routines used after startup come from libc.so and can be arbitrarily complex. It's overkill to save the SSE registers all the time because of that. These calls are rare. Instead we save them on demand. The new infrastructure put in place in this patch makes this possible and efficient.
Diffstat (limited to 'stdio-common')
-rw-r--r--stdio-common/scanf15.c1
-rw-r--r--stdio-common/scanf17.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/stdio-common/scanf15.c b/stdio-common/scanf15.c
index c56715c486..851466b3a9 100644
--- a/stdio-common/scanf15.c
+++ b/stdio-common/scanf15.c
@@ -1,5 +1,6 @@
#undef _GNU_SOURCE
#define _XOPEN_SOURCE 600
+#undef _LIBC
/* The following macro definitions are a hack. They word around disabling
the GNU extension while still using a few internal headers. */
#define u_char unsigned char
diff --git a/stdio-common/scanf17.c b/stdio-common/scanf17.c
index ee9024f9b7..4478a7022f 100644
--- a/stdio-common/scanf17.c
+++ b/stdio-common/scanf17.c
@@ -1,5 +1,6 @@
#undef _GNU_SOURCE
#define _XOPEN_SOURCE 600
+#undef _LIBC
/* The following macro definitions are a hack. They word around disabling
the GNU extension while still using a few internal headers. */
#define u_char unsigned char