diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2012-06-23 11:42:29 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2012-06-23 11:42:29 +0200 |
commit | a9def8c49d22815801408e62bedca26810cfceb7 (patch) | |
tree | ecc8d402f31616e3de136520692ad1abee0fdb80 /sysdeps/unix | |
parent | 2a649725b939fe8a50089cce9644b9649ef4fe43 (diff) | |
download | glibc-a9def8c49d22815801408e62bedca26810cfceb7.tar.gz glibc-a9def8c49d22815801408e62bedca26810cfceb7.tar.xz glibc-a9def8c49d22815801408e62bedca26810cfceb7.zip |
SH: makecontext/.Lexitcode: Always initialize the GOT register before use.
This is only relevant when returning from a context with »uc_link == NULL«, which is not exercised in the testsuite.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/makecontext.S | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/sh/makecontext.S b/sysdeps/unix/sysv/linux/sh/makecontext.S index 4a0207a223..a847bb60b6 100644 --- a/sysdeps/unix/sysv/linux/sh/makecontext.S +++ b/sysdeps/unix/sysv/linux/sh/makecontext.S @@ -97,22 +97,26 @@ ENTRY(__makecontext) .align 5 .Lexitcode: - tst r8, r8 /* ucb->uc_link == NULL? */ - bt/s 2f - mov r8, r4 /* r4 <- ucb->uc_link */ #ifdef PIC mova .Lgot, r0 mov.l .Lgot, r12 add r0, r12 +#endif + tst r8, r8 /* ucb->uc_link == NULL? */ + bt/s 2f + mov r8, r4 /* r4 <- ucb->uc_link */ mov.l .Lsetcontext, r1 +#ifdef PIC bsrf r1 .LPCS0: nop #else - mov.l .Lsetcontext, r1 jsr @r1 nop #endif + /* If this returns (which can happen if the syscall fails) we'll exit + the program with the return error value (-1). */ + 2: mov.l .Lexit, r1 #ifdef PIC |