aboutsummaryrefslogtreecommitdiff
path: root/gcc/frame.c
diff options
context:
space:
mode:
authorGeoff Keating <geoffk@cygnus.com>2000-02-09 01:57:21 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2000-02-09 01:57:21 +0000
commit3f388b42b08a542ab952cfa494b059a2f6aa23a4 (patch)
tree11e7f697d85ef54dbc47591bc4f45867fc164631 /gcc/frame.c
parent5568fb48cc080bfcf8164b60e90f489130b0ea2e (diff)
downloadgcc-3f388b42b08a542ab952cfa494b059a2f6aa23a4.zip
gcc-3f388b42b08a542ab952cfa494b059a2f6aa23a4.tar.gz
gcc-3f388b42b08a542ab952cfa494b059a2f6aa23a4.tar.bz2
dwarf2.h (DW_CFA_GNU_negative_offset_extended): New constant.
* dwarf2.h (DW_CFA_GNU_negative_offset_extended): New constant. * dwarf2out.c (dwarf_cfi_name): Print name of new constant. (reg_save): Use DW_CFA_GNU_negative_offset_extended when needed. (output_cfi): Handle output of DW_CFA_GNU_negative_offset_extended. * frame.c (execute_cfa_insn): Handle DW_CFA_GNU_negative_offset_extended. From-SVN: r31858
Diffstat (limited to 'gcc/frame.c')
-rw-r--r--gcc/frame.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/frame.c b/gcc/frame.c
index dc5d3a9c9..79ba78a 100644
--- a/gcc/frame.c
+++ b/gcc/frame.c
@@ -795,6 +795,14 @@ execute_cfa_insn (void *p, struct frame_state_internal *state,
state->s.args_size = offset;
break;
+ case DW_CFA_GNU_negative_offset_extended:
+ p = decode_uleb128 (p, &reg);
+ p = decode_uleb128 (p, &offset);
+ offset *= info->data_align;
+ state->s.saved[reg] = REG_SAVED_OFFSET;
+ state->s.reg_or_offset[reg] = -offset;
+ break;
+
default:
abort ();
}