* dwarf2-frame.c (struct dwarf2_cie): Add saw_z_augmentation.
(decode_frame_entry): Set it. Skip FDE augmentation.
This commit is contained in:
parent
f3e0f90b5d
commit
7131cb6efd
2 changed files with 22 additions and 1 deletions
|
@ -65,6 +65,9 @@ struct dwarf2_cie
|
|||
/* Encoding of addresses. */
|
||||
unsigned char encoding;
|
||||
|
||||
/* True if a 'z' augmentation existed. */
|
||||
unsigned char saw_z_augmentation;
|
||||
|
||||
struct dwarf2_cie *next;
|
||||
};
|
||||
|
||||
|
@ -1111,7 +1114,8 @@ decode_frame_entry (struct comp_unit *unit, char *buf, int eh_frame_p)
|
|||
cie->return_address_register = read_1_byte (unit->abfd, buf);
|
||||
buf += 1;
|
||||
|
||||
if (*augmentation == 'z')
|
||||
cie->saw_z_augmentation = (*augmentation == 'z');
|
||||
if (cie->saw_z_augmentation)
|
||||
{
|
||||
ULONGEST length;
|
||||
|
||||
|
@ -1200,6 +1204,18 @@ decode_frame_entry (struct comp_unit *unit, char *buf, int eh_frame_p)
|
|||
read_encoded_value (unit, fde->cie->encoding & 0x0f, buf, &bytes_read);
|
||||
buf += bytes_read;
|
||||
|
||||
/* A 'z' augmentation in the CIE implies the presence of an
|
||||
augmentation field in the FDE as well. The only thing known
|
||||
to be in here at present is the LSDA entry for EH. So we
|
||||
can skip the whole thing. */
|
||||
if (fde->cie->saw_z_augmentation)
|
||||
{
|
||||
ULONGEST length;
|
||||
|
||||
length = read_unsigned_leb128 (unit->abfd, buf, &bytes_read);
|
||||
buf += bytes_read + length;
|
||||
}
|
||||
|
||||
fde->instructions = buf;
|
||||
fde->end = end;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue