aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-04-06 01:45:15 +0000
committerUlrich Drepper <drepper@redhat.com>2002-04-06 01:45:15 +0000
commit6736e93bab3afb0745f15aa81c0093a698cca856 (patch)
treeaf2fb26d067bfdb17be317c4e167f6280ca9728d /sysdeps
parent55544141b859e3c640c52ce962727c5419a2fa6b (diff)
downloadglibc-6736e93bab3afb0745f15aa81c0093a698cca856.tar
glibc-6736e93bab3afb0745f15aa81c0093a698cca856.tar.gz
glibc-6736e93bab3afb0745f15aa81c0093a698cca856.tar.bz2
glibc-6736e93bab3afb0745f15aa81c0093a698cca856.zip
Update.
2002-03-23 Jakub Jelinek <jakub@redhat.com> * sysdeps/generic/brk.c (__curbrk): Declare. * sysdeps/generic/dl-brk.c: Add attribute_hidden to __curbrk. * sysdeps/generic/dl-sbrk.c: Likewise. * sysdeps/unix/arm/dl-brk.S: New file. * sysdeps/unix/bsd/hp/m68k/dl-brk.S: New file. * sysdeps/unix/bsd/osf/alpha/dl-brk.S: New file. * sysdeps/unix/bsd/sun/m68k/dl-brk.S: New file. * sysdeps/unix/bsd/vax/dl-brk.S: New file. * sysdeps/unix/i386/dl-brk.S: New file. * sysdeps/unix/mips/dl-brk.S: New file. * sysdeps/unix/sparc/dl-brk.S: New file. * sysdeps/unix/sysv/linux/alpha/dl-brk.S: New file. * sysdeps/unix/sysv/linux/ia64/dl-brk.S: New file. * sysdeps/unix/sysv/linux/powerpc/dl-brk.S: New file. * sysdeps/unix/sysv/linux/sparc/sparc64/dl-brk.S: New file. * sysdeps/unix/sysv/linux/i386/dl-brk.c: Remove. * sysdeps/unix/sysv/linux/i386/dl-sbrk.c: Remove. 2002-04-03 Andreas Schwab <schwab@suse.de> * Makefile (headers): Add gnu/lib-names.h here instead of install-others. ($(inst_includedir)/gnu/lib-names.h): Remove explicit installation rule. (install-headers): Add dependency on install-headers-nosubdir. * stdio-common/Makefile (headers): Add bits/stdio_lim.h here instead of install-others. ($(inst_includedir)/bits/stdio_lim.h): Remove explicit installation rule. 2002-04-05 Ulrich Drepper <drepper@redhat.com> * manual/users.tex (Enable/Disable Setuid): Fix typo in example. Reported by Sam Roberts <sroberts@uniserve.com>. 2002-04-03 Jakub Jelinek <jakub@redhat.com> * elf/do-rel.h (elf_dynamic_do_rel): Skip relative relocs if l_addr == 0 and ELF_MACHINE_REL_RELATIVE. * sysdeps/alpha/dl-machine.h (ELF_MACHINE_REL_RELATIVE): Define. * sysdeps/ia64/dl-machine.h (ELF_MACHINE_REL_RELATIVE): Define. 2002-04-03 David Mosberger <davidm@hpl.hp.com> * sysdeps/ia64/dl-machine.h (TRAMPOLINE_TEMPLATE): Add unwind info. (RTLD_START): Ditto. (__ia64_init_bootstrap_fdesc_table): Insert stop bit to avoid RAW dependency violation.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/alpha/dl-machine.h4
-rw-r--r--sysdeps/generic/brk.c5
-rw-r--r--sysdeps/generic/dl-brk.c5
-rw-r--r--sysdeps/generic/dl-sbrk.c5
-rw-r--r--sysdeps/ia64/dl-machine.h22
-rw-r--r--sysdeps/unix/arm/dl-brk.S1
-rw-r--r--sysdeps/unix/bsd/hp/m68k/dl-brk.S1
-rw-r--r--sysdeps/unix/bsd/osf/alpha/dl-brk.S1
-rw-r--r--sysdeps/unix/bsd/sun/m68k/dl-brk.S1
-rw-r--r--sysdeps/unix/bsd/vax/dl-brk.S1
-rw-r--r--sysdeps/unix/i386/dl-brk.S1
-rw-r--r--sysdeps/unix/mips/dl-brk.S1
-rw-r--r--sysdeps/unix/sparc/dl-brk.S1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/dl-brk.S1
-rw-r--r--sysdeps/unix/sysv/linux/i386/dl-brk.c5
-rw-r--r--sysdeps/unix/sysv/linux/i386/dl-sbrk.c5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/dl-brk.S1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-brk.S1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/dl-brk.S1
19 files changed, 49 insertions, 14 deletions
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h
index 490f1f1754..f6d33739a0 100644
--- a/sysdeps/alpha/dl-machine.h
+++ b/sysdeps/alpha/dl-machine.h
@@ -577,6 +577,10 @@ elf_machine_rela (struct link_map *map,
}
}
+/* Let do-rel.h know that on Alpha if l_addr is 0, all RELATIVE relocs
+ can be skipped. */
+#define ELF_MACHINE_REL_RELATIVE 1
+
static inline void
elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
Elf64_Addr *const reloc_addr)
diff --git a/sysdeps/generic/brk.c b/sysdeps/generic/brk.c
index 8b8b734e33..b951819f21 100644
--- a/sysdeps/generic/brk.c
+++ b/sysdeps/generic/brk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -19,6 +19,9 @@
#include <errno.h>
#include <unistd.h>
+/* sbrk.c expects this. */
+void *__curbrk;
+
/* Set the end of the process's data space to ADDR.
Return 0 if successful, -1 if not. */
int
diff --git a/sysdeps/generic/dl-brk.c b/sysdeps/generic/dl-brk.c
index 4a0cf2da11..c37cdfec33 100644
--- a/sysdeps/generic/dl-brk.c
+++ b/sysdeps/generic/dl-brk.c
@@ -1,2 +1,5 @@
-/* Just use the normal code. */
+/* We can use the normal code but we also know the __curbrk is not exported
+ from ld.so. */
+extern void *__curbrk attribute_hidden;
+
#include <brk.c>
diff --git a/sysdeps/generic/dl-sbrk.c b/sysdeps/generic/dl-sbrk.c
index 3874975890..4713a92694 100644
--- a/sysdeps/generic/dl-sbrk.c
+++ b/sysdeps/generic/dl-sbrk.c
@@ -1,2 +1,5 @@
-/* Just use the normal code. */
+/* We can use the normal code but we also know the __curbrk is not exported
+ from ld.so. */
+extern void *__curbrk attribute_hidden;
+
#include <sbrk.c>
diff --git a/sysdeps/ia64/dl-machine.h b/sysdeps/ia64/dl-machine.h
index a115b902fc..e0910891b1 100644
--- a/sysdeps/ia64/dl-machine.h
+++ b/sysdeps/ia64/dl-machine.h
@@ -61,7 +61,7 @@ __ia64_init_bootstrap_fdesc_table (struct link_map *map)
Elf64_Addr *boot_table;
/* careful: this will be called before got has been relocated... */
- asm ("addl %0 = @gprel (__ia64_boot_fptr_table), gp" : "=r"(boot_table));
+ asm (";; addl %0 = @gprel (__ia64_boot_fptr_table), gp" : "=r"(boot_table));
map->l_mach.fptr_table_len = IA64_BOOT_FPTR_TABLE_LEN;
map->l_mach.fptr_table = boot_table;
@@ -179,13 +179,18 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
" .proc " #tramp_name "#\n" \
#tramp_name ":\n" \
" { .mmi\n" \
+" .prologue\n" \
+" .save ar.pfs, r40\n" \
" alloc loc0 = ar.pfs, 8, 6, 3, 0\n" \
" adds r2 = -144, r12\n" \
" adds r3 = -128, r12\n" \
" }\n" \
" { .mii\n" \
+" .fframe 160\n" \
" adds r12 = -160, r12\n" \
+" .save rp, r41\n" \
" mov loc1 = b0\n" \
+" .body\n" \
" mov out2 = b0 /* needed by fixup_profile */\n" \
" ;;\n" \
" }\n" \
@@ -249,6 +254,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
" { .mmi\n" \
" ldf.fill f14 = [r2], 32\n" \
" ldf.fill f15 = [r3], 32\n" \
+" .restore sp /* pop the unwind frame state */\n" \
" adds r12 = 160, r12\n" \
" ;;\n" \
" }\n" \
@@ -265,6 +271,8 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
" /* An alloc is needed for the break system call to work.\n" \
" We don't care about the old value of the pfs register. */\n" \
" { .mmb\n" \
+" .prologue\n" \
+" .body\n" \
" alloc r2 = ar.pfs, 0, 0, 8, 0\n" \
" br.sptk.many b6\n" \
" ;;\n" \
@@ -292,7 +300,11 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
" .proc _start#\n" \
"_start:\n" \
"0: { .mii\n" \
+" .prologue\n" \
+" .save ar.pfs, r32\n" \
+" .save rp, r0\n" \
" alloc loc0 = ar.pfs, 0, 3, 4, 0\n" \
+" .body\n" \
" mov r2 = ip\n" \
" addl r3 = @gprel(0b), r0\n" \
" ;;\n" \
@@ -319,6 +331,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
" .global _dl_start_user#\n" \
" .proc _dl_start_user#\n" \
"_dl_start_user:\n" \
+" .prologue\n" \
+" .save ar.pfs, r32\n" \
+" .save rp, r0\n" \
+" .body\n" \
" { .mii\n" \
" /* Save the pointer to the user entry point fptr in loc2. */\n" \
" mov loc2 = ret0\n" \
@@ -577,6 +593,10 @@ elf_machine_rela (struct link_map *map,
assert (! "unexpected dynamic reloc format");
}
+/* Let do-rel.h know that on IA-64 if l_addr is 0, all RELATIVE relocs
+ can be skipped. */
+#define ELF_MACHINE_REL_RELATIVE 1
+
static inline void
elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
Elf64_Addr *const reloc_addr)
diff --git a/sysdeps/unix/arm/dl-brk.S b/sysdeps/unix/arm/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/arm/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/bsd/hp/m68k/dl-brk.S b/sysdeps/unix/bsd/hp/m68k/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/bsd/hp/m68k/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/bsd/osf/alpha/dl-brk.S b/sysdeps/unix/bsd/osf/alpha/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/bsd/osf/alpha/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/bsd/sun/m68k/dl-brk.S b/sysdeps/unix/bsd/sun/m68k/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/bsd/sun/m68k/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/bsd/vax/dl-brk.S b/sysdeps/unix/bsd/vax/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/bsd/vax/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/i386/dl-brk.S b/sysdeps/unix/i386/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/i386/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/mips/dl-brk.S b/sysdeps/unix/mips/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/mips/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/sparc/dl-brk.S b/sysdeps/unix/sparc/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/sparc/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/sysv/linux/alpha/dl-brk.S b/sysdeps/unix/sysv/linux/alpha/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/sysv/linux/i386/dl-brk.c b/sysdeps/unix/sysv/linux/i386/dl-brk.c
deleted file mode 100644
index c37cdfec33..0000000000
--- a/sysdeps/unix/sysv/linux/i386/dl-brk.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* We can use the normal code but we also know the __curbrk is not exported
- from ld.so. */
-extern void *__curbrk attribute_hidden;
-
-#include <brk.c>
diff --git a/sysdeps/unix/sysv/linux/i386/dl-sbrk.c b/sysdeps/unix/sysv/linux/i386/dl-sbrk.c
deleted file mode 100644
index 4713a92694..0000000000
--- a/sysdeps/unix/sysv/linux/i386/dl-sbrk.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* We can use the normal code but we also know the __curbrk is not exported
- from ld.so. */
-extern void *__curbrk attribute_hidden;
-
-#include <sbrk.c>
diff --git a/sysdeps/unix/sysv/linux/ia64/dl-brk.S b/sysdeps/unix/sysv/linux/ia64/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-brk.S b/sysdeps/unix/sysv/linux/powerpc/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/dl-brk.S b/sysdeps/unix/sysv/linux/sparc/sparc64/dl-brk.S
new file mode 100644
index 0000000000..eeb96544e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/dl-brk.S
@@ -0,0 +1 @@
+#include <brk.S>