diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2012-06-23 11:47:39 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2012-06-23 11:47:39 +0200 |
commit | 967705fee12b4c02456fedbeb4c0dc6e79469ca7 (patch) | |
tree | c4fa9875cec66046b7f721c4ebcfdfb7db694181 | |
parent | a9def8c49d22815801408e62bedca26810cfceb7 (diff) | |
download | glibc-967705fee12b4c02456fedbeb4c0dc6e79469ca7.zip glibc-967705fee12b4c02456fedbeb4c0dc6e79469ca7.tar.gz glibc-967705fee12b4c02456fedbeb4c0dc6e79469ca7.tar.bz2 |
SH: ABORT_INSTRUCTION.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/sh/abort-instr.h | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/makecontext.S | 7 |
3 files changed, 11 insertions, 3 deletions
@@ -1,5 +1,9 @@ 2012-06-23 Thomas Schwinge <thomas@codesourcery.com> + * sysdeps/sh/abort-instr.h: New file. + * sysdeps/unix/sysv/linux/sh/makecontext.S (.Lexitcode): Terminate the + process in case exit returns. + * sysdeps/unix/sysv/linux/sh/makecontext.S (.Lexitcode): Always initialize the GOT register before use. diff --git a/sysdeps/sh/abort-instr.h b/sysdeps/sh/abort-instr.h new file mode 100644 index 0000000..69381ae --- /dev/null +++ b/sysdeps/sh/abort-instr.h @@ -0,0 +1,3 @@ +/* An instruction which should crash any program is `sleep'. */ +#define ABORT_INSTRUCTION_ASM sleep +#define ABORT_INSTRUCTION asm ("sleep") diff --git a/sysdeps/unix/sysv/linux/sh/makecontext.S b/sysdeps/unix/sysv/linux/sh/makecontext.S index a847bb6..ec9ce91 100644 --- a/sysdeps/unix/sysv/linux/sh/makecontext.S +++ b/sysdeps/unix/sysv/linux/sh/makecontext.S @@ -17,6 +17,7 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> +#include <abort-instr.h> #include "ucontext_i.h" @@ -124,9 +125,9 @@ ENTRY(__makecontext) #endif jsr @r1 mov r0, r4 -0: - bra 0b - nop + /* The 'exit' call should never return. In case it does cause the + process to terminate. */ + ABORT_INSTRUCTION_ASM .align 2 #ifdef PIC |