aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2012-06-23 11:47:39 +0200
committerThomas Schwinge <thomas@codesourcery.com>2012-06-23 11:47:39 +0200
commit967705fee12b4c02456fedbeb4c0dc6e79469ca7 (patch)
treec4fa9875cec66046b7f721c4ebcfdfb7db694181
parenta9def8c49d22815801408e62bedca26810cfceb7 (diff)
downloadglibc-967705fee12b4c02456fedbeb4c0dc6e79469ca7.zip
glibc-967705fee12b4c02456fedbeb4c0dc6e79469ca7.tar.gz
glibc-967705fee12b4c02456fedbeb4c0dc6e79469ca7.tar.bz2
SH: ABORT_INSTRUCTION.
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/sh/abort-instr.h3
-rw-r--r--sysdeps/unix/sysv/linux/sh/makecontext.S7
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 751797d..1ec2e00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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