summaryrefslogtreecommitdiff
path: root/opcodes/z8k-dis.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2014-05-02 08:27:16 -0700
committerH.J. Lu <hjl.tools@gmail.com>2014-05-02 08:27:16 -0700
commit8df14d78dc753a5286bb6461a14d8baa1e13e3cd (patch)
tree1a32494aa203d9064ba8df8f0880265222904a0a /opcodes/z8k-dis.c
parent2f67d686330300d4d27ff99ec47a970d744df8bb (diff)
downloadbinutils-gdb-8df14d78dc753a5286bb6461a14d8baa1e13e3cd.tar.gz
Use sigsetjmp/siglongjmp in opcodes
sigsetjmp/siglongjmp without saving the signal mask is faster than setjmp/longjmp on systems where the signal mask is saved. This patch uses sigsetjmp/siglongjmp without saving the signal mask if possible. PR binutils/16886 * config.in: Regenerated. * configure: Likewise. * configure.in: Check if sigsetjmp is available. * h8500-dis.c (private): Replace jmp_buf with OPCODES_SIGJMP_BUF. (fetch_data): Replace longjmp with OPCODES_SIGLONGJMP. (print_insn_h8500): Replace setjmp with OPCODES_SIGSETJMP. * i386-dis.c (dis_private): Replace jmp_buf with OPCODES_SIGJMP_BUF. (fetch_data): Replace longjmp with OPCODES_SIGLONGJMP. (print_insn): Replace setjmp with OPCODES_SIGSETJMP. * ns32k-dis.c (private): Replace jmp_buf with OPCODES_SIGJMP_BUF. (fetch_data): Replace longjmp with OPCODES_SIGLONGJMP. (print_insn_ns32k): Replace setjmp with OPCODES_SIGSETJMP. * sysdep.h (OPCODES_SIGJMP_BUF): New macro. (OPCODES_SIGSETJMP): Likewise. (OPCODES_SIGLONGJMP): Likewise. * vax-dis.c (private): Replace jmp_buf with OPCODES_SIGJMP_BUF. (fetch_data): Replace longjmp with OPCODES_SIGLONGJMP. (print_insn_vax): Replace setjmp with OPCODES_SIGSETJMP. * xtensa-dis.c (dis_private): Replace jmp_buf with OPCODES_SIGJMP_BUF. (fetch_data): Replace longjmp with OPCODES_SIGLONGJMP. (print_insn_xtensa): Replace setjmp with OPCODES_SIGSETJMP. * z8k-dis.c(instr_data_s): Replace jmp_buf with OPCODES_SIGJMP_BUF. (fetch_data): Replace longjmp with OPCODES_SIGLONGJMP. (print_insn_z8k): Replace setjmp with OPCODES_SIGSETJMP.
Diffstat (limited to 'opcodes/z8k-dis.c')
-rw-r--r--opcodes/z8k-dis.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/opcodes/z8k-dis.c b/opcodes/z8k-dis.c
index cc54fb5a629..ea7fd3bad16 100644
--- a/opcodes/z8k-dis.c
+++ b/opcodes/z8k-dis.c
@@ -37,7 +37,7 @@ typedef struct
/* Nibble number of first word not yet fetched. */
int max_fetched;
bfd_vma insn_start;
- jmp_buf bailout;
+ OPCODES_SIGJMP_BUF bailout;
int tabl_index;
char instr_asmsrc[80];
@@ -76,7 +76,7 @@ fetch_data (struct disassemble_info *info, int nibble)
if (status != 0)
{
(*info->memory_error_func) (status, priv->insn_start, info);
- longjmp (priv->bailout, 1);
+ OPCODES_SIGLONGJMP (priv->bailout, 1);
}
{
@@ -149,7 +149,7 @@ print_insn_z8k (bfd_vma addr, disassemble_info *info, int is_segmented)
info->private_data = (PTR) &instr_data;
instr_data.max_fetched = 0;
instr_data.insn_start = addr;
- if (setjmp (instr_data.bailout) != 0)
+ if (OPCODES_SIGSETJMP (instr_data.bailout) != 0)
/* Error return. */
return -1;