Skip to content

Commit

Permalink
SH: Optimize assembler code in context of call to __fortify_fail.
Browse files Browse the repository at this point in the history
__fortify_fail has »__attribute__ ((__noreturn__))«.
  • Loading branch information
Thomas Schwinge committed Jun 23, 2012
1 parent db9b505 commit 1518f58
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 17 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
2012-06-23 Thomas Schwinge <thomas@codesourcery.com>

* sysdeps/sh/____longjmp_chk.S (CALL_FAIL): Don't plan for the call to
__fortify_fail returning.
* sysdeps/unix/sysv/linux/sh/____longjmp_chk.S (CALL_FAIL): Likewise.

* sysdeps/unix/sysv/linux/sh/____longjmp_chk.S: New file, based on
sysdeps/sh/____longjmp_chk.S.
* sysdeps/unix/sysv/linux/sh/sigaltstack-offsets.sym: New file, based
Expand Down
14 changes: 5 additions & 9 deletions sysdeps/sh/____longjmp_chk.S
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (C) 2009 Free Software Foundation, Inc.
/* Copyright (C) 2009-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -33,31 +33,27 @@ longjmp_msg:
add r0, r12; \
bsrf r1; \
add r12, r4; \
/* Unreachable. */ \
.Lfail0: \
bra 0f; \
nop; \
.align 2; \
.Lgot: \
.long _GLOBAL_OFFSET_TABLE_; \
.Lstr: \
.long longjmp_msg@GOTOFF; \
.Lfail: \
.long __GI___fortify_fail@PLT-(.Lfail0-.); \
0:
.long __GI___fortify_fail@PLT-(.Lfail0-.);
#else
# define CALL_FAIL \
mov.l .Lfail, r1; \
mov.l .Lstr, r4; \
jsr @r1; \
nop; \
bra 0f; \
nop; \
/* Unreachable. */ \
.align 2; \
.Lstr: \
.long longjmp_msg; \
.Lfail: \
.long __fortify_fail; \
0:
.long __fortify_fail;
#endif

#define CHECK_SP(reg) \
Expand Down
12 changes: 4 additions & 8 deletions sysdeps/unix/sysv/linux/sh/____longjmp_chk.S
Original file line number Diff line number Diff line change
Expand Up @@ -38,30 +38,26 @@ longjmp_msg:
bsrf r1; \
add r12, r4; \
.Lfail0: \
bra 0f; \
nop; \
/* Unreachable. */ \
.align 2; \
.Lgot: \
.long _GLOBAL_OFFSET_TABLE_; \
.Lstr: \
.long longjmp_msg@GOTOFF; \
.Lfail: \
.long __GI___fortify_fail@PLT-(.Lfail0-.); \
0:
.long __GI___fortify_fail@PLT-(.Lfail0-.);
#else
# define CALL_FAIL \
mov.l .Lfail, r1; \
mov.l .Lstr, r4; \
jsr @r1; \
nop; \
bra 0f; \
nop; \
/* Unreachable. */ \
.align 2; \
.Lstr: \
.long longjmp_msg; \
.Lfail: \
.long __fortify_fail; \
0:
.long __fortify_fail;
#endif

#define CHECK_SP(reg) \
Expand Down

0 comments on commit 1518f58

Please sign in to comment.