From 6736e93bab3afb0745f15aa81c0093a698cca856 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 6 Apr 2002 01:45:15 +0000 Subject: Update. 2002-03-23 Jakub Jelinek * 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 * 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 * manual/users.tex (Enable/Disable Setuid): Fix typo in example. Reported by Sam Roberts . 2002-04-03 Jakub Jelinek * 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 * 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. --- sysdeps/ia64/dl-machine.h | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'sysdeps/ia64') 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) -- cgit v1.2.3