* 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
|
@ -1,3 +1,8 @@
|
||||||
|
2003-06-01 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* dwarf2-frame.c (struct dwarf2_cie): Add saw_z_augmentation.
|
||||||
|
(decode_frame_entry): Set it. Skip FDE augmentation.
|
||||||
|
|
||||||
2003-06-01 Richard Henderson <rth@redhat.com>
|
2003-06-01 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* dwarf2-frame.c (dwarf2_frame_cache): Handle retaddr_column
|
* dwarf2-frame.c (dwarf2_frame_cache): Handle retaddr_column
|
||||||
|
|
|
@ -65,6 +65,9 @@ struct dwarf2_cie
|
||||||
/* Encoding of addresses. */
|
/* Encoding of addresses. */
|
||||||
unsigned char encoding;
|
unsigned char encoding;
|
||||||
|
|
||||||
|
/* True if a 'z' augmentation existed. */
|
||||||
|
unsigned char saw_z_augmentation;
|
||||||
|
|
||||||
struct dwarf2_cie *next;
|
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);
|
cie->return_address_register = read_1_byte (unit->abfd, buf);
|
||||||
buf += 1;
|
buf += 1;
|
||||||
|
|
||||||
if (*augmentation == 'z')
|
cie->saw_z_augmentation = (*augmentation == 'z');
|
||||||
|
if (cie->saw_z_augmentation)
|
||||||
{
|
{
|
||||||
ULONGEST length;
|
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);
|
read_encoded_value (unit, fde->cie->encoding & 0x0f, buf, &bytes_read);
|
||||||
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->instructions = buf;
|
||||||
fde->end = end;
|
fde->end = end;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue