about summary refs log tree commit diff
path: root/sysdeps/ia64/dl-machine.h
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/ia64/dl-machine.h
parent55544141b859e3c640c52ce962727c5419a2fa6b (diff)
downloadglibc-6736e93bab3afb0745f15aa81c0093a698cca856.tar.gz
glibc-6736e93bab3afb0745f15aa81c0093a698cca856.tar.xz
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/ia64/dl-machine.h')
-rw-r--r--sysdeps/ia64/dl-machine.h22
1 files changed, 21 insertions, 1 deletions
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)