diff options
author | Nick Clifton <nickc@redhat.com> | 2004-05-13 14:41:18 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2004-05-13 14:41:18 +0000 |
commit | 0da76f83eb29135ae1bd52ba5962721fb1d0c6fc (patch) | |
tree | 216775d9b34d02cfc91fa714163ab9703a49577f /bfd | |
parent | 4b363073298671c9a2a096d2ba70dd7586315c4c (diff) | |
download | gdb-0da76f83eb29135ae1bd52ba5962721fb1d0c6fc.zip gdb-0da76f83eb29135ae1bd52ba5962721fb1d0c6fc.tar.gz gdb-0da76f83eb29135ae1bd52ba5962721fb1d0c6fc.tar.bz2 |
Handle dwarf3 format CIE entries.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf-eh-frame.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7465e46..1c91d5d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2004-05-13 Paul Brook <paul@codesourcery.com> + + * eh-frame.c (_bfd_elf_discard_section_eh_frame): Handle dwarf3 + format CIE entries. + 2004-05-13 Joel Sherrill <joel@oarcorp.com> * config.bfd (or32-*-rtems*): Switch to elf. diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index d3777b4..7608e77 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -1,5 +1,5 @@ /* .eh_frame section optimization. - Copyright 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Jakub Jelinek <jakub@redhat.com>. This file is part of BFD, the Binary File Descriptor library. @@ -410,7 +410,7 @@ _bfd_elf_discard_section_eh_frame cie.version = *buf++; /* Cannot handle unknown versions. */ - if (cie.version != 1) + if (cie.version != 1 && cie.version != 3) goto free_no_table; if (strlen (buf) > sizeof (cie.augmentation) - 1) goto free_no_table; @@ -434,7 +434,10 @@ _bfd_elf_discard_section_eh_frame ports this will not matter as the value will be less than 128. For the others (eg FRV, SH, MMIX, IA64) they need a fixed GCC which conforms to the DWARF3 standard. */ - read_uleb128 (cie.ra_column, buf); + if (cie.version == 1) + cie.ra_column = *buf++; + else + read_uleb128 (cie.ra_column, buf); ENSURE_NO_RELOCS (buf); cie.lsda_encoding = DW_EH_PE_omit; cie.fde_encoding = DW_EH_PE_omit; |