2002-06-07 H.J. Lu <hjl@gnu.org>
* readelf.c (DW_CFA_GNU_args_size): Don't define. (DW_CFA_GNU_negative_offset_extended): Likewise. (DW_CFA_GNU_window_save): Likewise. (display_debug_frames): Handle DW_CFA_offset_extended_sf, DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf.
This commit is contained in:
parent
8dda97708f
commit
91a106e65e
|
@ -1,3 +1,11 @@
|
|||
2002-06-07 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* readelf.c (DW_CFA_GNU_args_size): Don't define.
|
||||
(DW_CFA_GNU_negative_offset_extended): Likewise.
|
||||
(DW_CFA_GNU_window_save): Likewise.
|
||||
(display_debug_frames): Handle DW_CFA_offset_extended_sf,
|
||||
DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf.
|
||||
|
||||
2002-06-07 Elias Athanasopoulos <eathan@otenet.gr>
|
||||
|
||||
* nm.c: When computing size of symbols for an ELF target use the
|
||||
|
|
|
@ -8473,15 +8473,20 @@ display_debug_frames (section, start, file)
|
|||
case DW_CFA_def_cfa_offset:
|
||||
LEB ();
|
||||
break;
|
||||
#ifndef DW_CFA_GNU_args_size
|
||||
#define DW_CFA_GNU_args_size 0x2e
|
||||
#endif
|
||||
case DW_CFA_offset_extended_sf:
|
||||
reg = LEB (); SLEB ();
|
||||
frame_need_space (fc, reg);
|
||||
fc->col_type[reg] = DW_CFA_undefined;
|
||||
break;
|
||||
case DW_CFA_def_cfa_sf:
|
||||
LEB (); SLEB ();
|
||||
break;
|
||||
case DW_CFA_def_cfa_offset_sf:
|
||||
SLEB ();
|
||||
break;
|
||||
case DW_CFA_GNU_args_size:
|
||||
LEB ();
|
||||
break;
|
||||
#ifndef DW_CFA_GNU_negative_offset_extended
|
||||
#define DW_CFA_GNU_negative_offset_extended 0x2f
|
||||
#endif
|
||||
case DW_CFA_GNU_negative_offset_extended:
|
||||
reg = LEB (); LEB ();
|
||||
frame_need_space (fc, reg);
|
||||
|
@ -8676,9 +8681,31 @@ display_debug_frames (section, start, file)
|
|||
printf (" DW_CFA_nop\n");
|
||||
break;
|
||||
|
||||
#ifndef DW_CFA_GNU_window_save
|
||||
#define DW_CFA_GNU_window_save 0x2d
|
||||
#endif
|
||||
case DW_CFA_offset_extended_sf:
|
||||
reg = LEB ();
|
||||
l = SLEB ();
|
||||
frame_need_space (fc, reg);
|
||||
if (! do_debug_frames_interp)
|
||||
printf (" DW_CFA_offset_extended_sf: r%ld at cfa%+ld\n",
|
||||
reg, l * fc->data_factor);
|
||||
fc->col_type[reg] = DW_CFA_offset;
|
||||
fc->col_offset[reg] = l * fc->data_factor;
|
||||
break;
|
||||
|
||||
case DW_CFA_def_cfa_sf:
|
||||
fc->cfa_reg = LEB ();
|
||||
fc->cfa_offset = SLEB ();
|
||||
if (! do_debug_frames_interp)
|
||||
printf (" DW_CFA_def_cfa_sf: r%d ofs %d\n",
|
||||
fc->cfa_reg, fc->cfa_offset);
|
||||
break;
|
||||
|
||||
case DW_CFA_def_cfa_offset_sf:
|
||||
fc->cfa_offset = SLEB ();
|
||||
if (! do_debug_frames_interp)
|
||||
printf (" DW_CFA_def_cfa_offset_sf: %d\n", fc->cfa_offset);
|
||||
break;
|
||||
|
||||
case DW_CFA_GNU_window_save:
|
||||
if (! do_debug_frames_interp)
|
||||
printf (" DW_CFA_GNU_window_save\n");
|
||||
|
@ -8701,6 +8728,17 @@ display_debug_frames (section, start, file)
|
|||
fc->col_offset[reg] = l * fc->data_factor;
|
||||
break;
|
||||
|
||||
/* FIXME: How do we handle these? */
|
||||
case DW_CFA_def_cfa_expression:
|
||||
fprintf (stderr, "unsupported DW_CFA_def_cfa_expression\n");
|
||||
start = block_end;
|
||||
break;
|
||||
|
||||
case DW_CFA_expression:
|
||||
fprintf (stderr, "unsupported DW_CFA_expression\n");
|
||||
start = block_end;
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf (stderr, "unsupported or unknown DW_CFA_%d\n", op);
|
||||
start = block_end;
|
||||
|
|
Loading…
Reference in New Issue