aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ia64
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
parentd8592d04fab67a5a553bd9fc5573f234897bc0af (diff)
downloadglibc-266227abcba4f70af3a2f4cbc34384ee498a3a50.zip
glibc-266227abcba4f70af3a2f4cbc34384ee498a3a50.tar.gz
glibc-266227abcba4f70af3a2f4cbc34384ee498a3a50.tar.bz2
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')
-rw-r--r--sysdeps/ia64/dl-machine.h8
-rw-r--r--sysdeps/ia64/elf/start.S6
2 files changed, 10 insertions, 4 deletions
diff --git a/sysdeps/ia64/dl-machine.h b/sysdeps/ia64/dl-machine.h
index be09ae8..d3cc0ca 100644
--- a/sysdeps/ia64/dl-machine.h
+++ b/sysdeps/ia64/dl-machine.h
@@ -301,8 +301,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
"_start:\n" \
"0: { .mii\n" \
" .prologue\n" \
-" .save ar.pfs, r32\n" \
" .save rp, r0\n" \
+" .body\n" \
+" .prologue\n" \
+" .save ar.pfs, r32\n" \
" alloc loc0 = ar.pfs, 0, 3, 4, 0\n" \
" .body\n" \
" mov r2 = ip\n" \
@@ -332,8 +334,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
" .proc _dl_start_user#\n" \
"_dl_start_user:\n" \
" .prologue\n" \
-" .save ar.pfs, r32\n" \
" .save rp, r0\n" \
+" .body\n" \
+" .prologue\n" \
+" .save ar.pfs, r32\n" \
" .body\n" \
" { .mii\n" \
" /* Save the pointer to the user entry point fptr in loc2. */\n" \
diff --git a/sysdeps/ia64/elf/start.S b/sysdeps/ia64/elf/start.S
index a05ddfb..18eaf8e 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