Commit 0ef54a47 by Paul Brook Committed by Paul Brook

unwind-dw2-fde.c (get_cie_encoding): Handle dwarf3 CIE format.

	* unwind-dw2-fde.c (get_cie_encoding): Handle dwarf3 CIE format.
	* unwind-dw2.c (extract_cie_info): Ditto.
	(_Unwind_FrameState): Change retaddr_column to word type.

From-SVN: r82072
parent f4085d4c
2004-05-20 Paul Brook <paul@codesourcery.com>
* unwind-dw2-fde.c (get_cie_encoding): Handle dwarf3 CIE format.
* unwind-dw2.c (extract_cie_info): Ditto.
(_Unwind_FrameState): Change retaddr_column to word type.
2004-05-20 Roger Sayle <roger@eyesopen.com> 2004-05-20 Roger Sayle <roger@eyesopen.com>
PR middle-end/3074 PR middle-end/3074
......
...@@ -276,7 +276,10 @@ get_cie_encoding (const struct dwarf_cie *cie) ...@@ -276,7 +276,10 @@ get_cie_encoding (const struct dwarf_cie *cie)
p = aug + strlen (aug) + 1; /* Skip the augmentation string. */ p = aug + strlen (aug) + 1; /* Skip the augmentation string. */
p = read_uleb128 (p, &utmp); /* Skip code alignment. */ p = read_uleb128 (p, &utmp); /* Skip code alignment. */
p = read_sleb128 (p, &stmp); /* Skip data alignment. */ p = read_sleb128 (p, &stmp); /* Skip data alignment. */
p++; /* Skip return address column. */ if (cie->version == 1) /* Skip return address column. */
p++;
else
p = read_uleb128 (p, &utmp);
aug++; /* Skip 'z' */ aug++; /* Skip 'z' */
p = read_uleb128 (p, &utmp); /* Skip augmentation length. */ p = read_uleb128 (p, &utmp); /* Skip augmentation length. */
......
...@@ -133,7 +133,7 @@ typedef struct ...@@ -133,7 +133,7 @@ typedef struct
_Unwind_Personality_Fn personality; _Unwind_Personality_Fn personality;
_Unwind_Sword data_align; _Unwind_Sword data_align;
_Unwind_Word code_align; _Unwind_Word code_align;
unsigned char retaddr_column; _Unwind_Word retaddr_column;
unsigned char fde_encoding; unsigned char fde_encoding;
unsigned char lsda_encoding; unsigned char lsda_encoding;
unsigned char saw_z; unsigned char saw_z;
...@@ -337,7 +337,10 @@ extract_cie_info (const struct dwarf_cie *cie, struct _Unwind_Context *context, ...@@ -337,7 +337,10 @@ extract_cie_info (const struct dwarf_cie *cie, struct _Unwind_Context *context,
data alignment and return address column. */ data alignment and return address column. */
p = read_uleb128 (p, &fs->code_align); p = read_uleb128 (p, &fs->code_align);
p = read_sleb128 (p, &fs->data_align); p = read_sleb128 (p, &fs->data_align);
fs->retaddr_column = *p++; if (cie->version == 1)
fs->retaddr_column = *p++;
else
p = read_uleb128 (p, &fs->retaddr_column);
fs->lsda_encoding = DW_EH_PE_omit; fs->lsda_encoding = DW_EH_PE_omit;
/* If the augmentation starts with 'z', then a uleb128 immediately /* If the augmentation starts with 'z', then a uleb128 immediately
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment