diff options
author | Nick Clifton <nickc@redhat.com> | 2011-04-26 15:28:08 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2011-04-26 15:28:08 +0000 |
commit | 72b016b4ac0d7532a8f173fe3472e2e88ac49d45 (patch) | |
tree | e6d8dcd1c9cabcafcfe1713f55b366a2cbeefbec /gas/ehopt.c | |
parent | 4964e065b452a479b9ba0d636b28455c496ba9ab (diff) | |
download | gdb-72b016b4ac0d7532a8f173fe3472e2e88ac49d45.zip gdb-72b016b4ac0d7532a8f173fe3472e2e88ac49d45.tar.gz gdb-72b016b4ac0d7532a8f173fe3472e2e88ac49d45.tar.bz2 |
* dw2gencfi.c (dwcfi_seg_list): New struct.
(dwcfi_hash): New static hash variable.
(get_debugseg_name): New.
(alloc_debugseg_item): New.
(make_debug_seg): New.
(dwcfi_hash_insert): New.
(dwcfi_hash_find): New.
(dwcfi_hash_find_or_make): New.
(cfi_insn_data): New member cur_seg.
(cie_entry): Likewise.
(fde_entry): New cseg and handled members.
(alloc_fde_entry): Initialize cseg member.
(alloc_cfi_insn_data): Initialize cur_seg member.
(dot_cfi_sections): Compare for beginning of
section names via strncmp.
(get_cfi_seg): New.
(cfi_finish): Treat link-once sections.
(is_now_linkonce_segment): New local helper.
(output_cie): Ignore cie entries not member of current
segment.
(output_fde): Likewise.
(select_cie_for_fde): Likewise.
(cfi_change_reg_numbers): Add new argument for current segment
and ignore insn elements, if not part of current segment.
* ehopt.c (get_cie_info): Use strncmp for
section name matching.
(heck_eh_frame): Likewise.
* coffcode.h (sec_to_styp_flags): Allow linkonce for
debugging sections.
* scripttempl/pe.sc: Handle .eh_frame($|.)* sections.
* scripttempl/pep.sc: Likewise.
* ld-pe/pe.exp: Add cfi/cfi32 tests.
* ld-pe/cfi.d: New.
* ld-pe/cfi32.d: New.
* ld-pe/cfia.s: New.
* ld-pe/cfib.s: New.
Diffstat (limited to 'gas/ehopt.c')
-rw-r--r-- | gas/ehopt.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gas/ehopt.c b/gas/ehopt.c index c09eb15..70e1a00 100644 --- a/gas/ehopt.c +++ b/gas/ehopt.c @@ -120,7 +120,7 @@ get_cie_info (struct cie_info *info) /* First make sure that the CIE Identifier Tag is 0/-1. */ - if (strcmp (segment_name (now_seg), ".debug_frame") == 0) + if (strncmp (segment_name (now_seg), ".debug_frame", 12) == 0) CIE_id = (char)0xff; else CIE_id = 0; @@ -285,9 +285,10 @@ check_eh_frame (expressionS *exp, unsigned int *pnbytes) #endif /* Select the proper section data. */ - if (strcmp (segment_name (now_seg), ".eh_frame") == 0) + if (strncmp (segment_name (now_seg), ".eh_frame", 9) == 0 + && segment_name (now_seg)[9] != '_') d = &eh_frame_data; - else if (strcmp (segment_name (now_seg), ".debug_frame") == 0) + else if (strncmp (segment_name (now_seg), ".debug_frame", 12) == 0) d = &debug_frame_data; else return 0; |