diff options
author | Paul Brook <paul@codesourcery.com> | 2004-05-20 22:34:58 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2004-05-20 22:34:58 +0000 |
commit | 0ef54a47cf6012a588dc89ce63d2cf8d3106414f (patch) | |
tree | 278ca55e31dd743391ce22e513a63554e8ff213a /gcc | |
parent | f4085d4c0b2c20282d8197507f6ffb35522aa2e6 (diff) | |
download | gcc-0ef54a47cf6012a588dc89ce63d2cf8d3106414f.zip gcc-0ef54a47cf6012a588dc89ce63d2cf8d3106414f.tar.gz gcc-0ef54a47cf6012a588dc89ce63d2cf8d3106414f.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/unwind-dw2-fde.c | 5 | ||||
-rw-r--r-- | gcc/unwind-dw2.c | 7 |
3 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc2efca..60fe09b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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> PR middle-end/3074 diff --git a/gcc/unwind-dw2-fde.c b/gcc/unwind-dw2-fde.c index 74e64e5..2a81e36 100644 --- a/gcc/unwind-dw2-fde.c +++ b/gcc/unwind-dw2-fde.c @@ -276,7 +276,10 @@ get_cie_encoding (const struct dwarf_cie *cie) p = aug + strlen (aug) + 1; /* Skip the augmentation string. */ p = read_uleb128 (p, &utmp); /* Skip code 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' */ p = read_uleb128 (p, &utmp); /* Skip augmentation length. */ diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c index 70d3221..b99b700 100644 --- a/gcc/unwind-dw2.c +++ b/gcc/unwind-dw2.c @@ -133,7 +133,7 @@ typedef struct _Unwind_Personality_Fn personality; _Unwind_Sword data_align; _Unwind_Word code_align; - unsigned char retaddr_column; + _Unwind_Word retaddr_column; unsigned char fde_encoding; unsigned char lsda_encoding; unsigned char saw_z; @@ -337,7 +337,10 @@ extract_cie_info (const struct dwarf_cie *cie, struct _Unwind_Context *context, data alignment and return address column. */ p = read_uleb128 (p, &fs->code_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; /* If the augmentation starts with 'z', then a uleb128 immediately |