diff options
author | 2017-08-14 19:41:30 +0000 | |
---|---|---|
committer | 2017-08-14 19:41:30 +0000 | |
commit | 84a83e238ec8f89c0ce5bb1a5d6f3f5cc1612949 (patch) | |
tree | e4608c3785b8b13d288d9afd0803f182d38085cc /gnu/usr.bin/binutils/gdb/dwarf2expr.c | |
parent | catch ENOENT and display a proper error message when a specified disk image is (diff) | |
download | wireguard-openbsd-84a83e238ec8f89c0ce5bb1a5d6f3f5cc1612949.tar.xz wireguard-openbsd-84a83e238ec8f89c0ce5bb1a5d6f3f5cc1612949.zip |
Add improvements to the DWARF frame unwinder to support xorguard.
ok mortimer@
Diffstat (limited to 'gnu/usr.bin/binutils/gdb/dwarf2expr.c')
-rw-r--r-- | gnu/usr.bin/binutils/gdb/dwarf2expr.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gnu/usr.bin/binutils/gdb/dwarf2expr.c b/gnu/usr.bin/binutils/gdb/dwarf2expr.c index a60e5a90e86..4267bbdf4eb 100644 --- a/gnu/usr.bin/binutils/gdb/dwarf2expr.c +++ b/gnu/usr.bin/binutils/gdb/dwarf2expr.c @@ -505,6 +505,20 @@ execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr, goto no_push; } + case DW_OP_swap: + { + CORE_ADDR t1, t2; + + if (ctx->stack_len < 2) + error ("Not enough elements for DW_OP_swap. Need 2, have %d\n", + ctx->stack_len); + t1 = ctx->stack[ctx->stack_len - 1]; + t2 = ctx->stack[ctx->stack_len - 2]; + ctx->stack[ctx->stack_len - 1] = t2; + ctx->stack[ctx->stack_len - 2] = t1; + goto no_push; + } + case DW_OP_deref: case DW_OP_deref_size: case DW_OP_abs: |