about summary refs log tree commit diff
path: root/sysdeps/ia64/elf
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-29 19:20:17 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-29 19:20:17 +0000
commit266227abcba4f70af3a2f4cbc34384ee498a3a50 (patch)
treec804c3f252d5bd356c5fd538dacadf4c720e1646 /sysdeps/ia64/elf
parentd8592d04fab67a5a553bd9fc5573f234897bc0af (diff)
downloadglibc-266227abcba4f70af3a2f4cbc34384ee498a3a50.tar.gz
glibc-266227abcba4f70af3a2f4cbc34384ee498a3a50.tar.xz
glibc-266227abcba4f70af3a2f4cbc34384ee498a3a50.zip
Update.
2003-03-27  David Mosberger  <davidm@hpl.hp.com>

	* sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0"
	directive into empty .prologue region to ensure that call-chain
	is terminated even for the first instruction.

	* sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom
	to terminate call-chain right from the get-go.

	* sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary
	stop bit between compare & branch.
Diffstat (limited to 'sysdeps/ia64/elf')
-rw-r--r--sysdeps/ia64/elf/start.S6
1 files changed, 4 insertions, 2 deletions
diff --git a/sysdeps/ia64/elf/start.S b/sysdeps/ia64/elf/start.S
index a05ddfbb52..18eaf8eae4 100644
--- a/sysdeps/ia64/elf/start.S
+++ b/sysdeps/ia64/elf/start.S
@@ -40,6 +40,9 @@
 	.type _start,@function
 _start:
 	.prologue
+	.save rp, r0
+	.body
+	.prologue
 	{ .mlx
 	  alloc r2 = ar.pfs,0,0,7,0
 	  movl r3 = FPSR_DEFAULT
@@ -76,8 +79,7 @@ _start:
 	{ .mmi
 	  ld8 out3 = [out3]	/* pointer to `init' function descriptor */
 	  ld8 out4 = [out4]	/* pointer to `fini' function descriptor */
-	  .save rp, r4
-	  mov r4 = r0		/* terminate unwind chain with a NULL return-pointer */
+	  nop 0
 	}
 	.body
 	{ .mib