72b016b4ac
(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.
28 lines
633 B
Makefile
28 lines
633 B
Makefile
#source: cfia.s
|
|
#source: cfib.s
|
|
#ld: --file-align 1 --section-align 1
|
|
#objdump: -Wf
|
|
|
|
#...
|
|
00000000 00000010 ffffffff CIE
|
|
Version: 1
|
|
Augmentation: ""
|
|
Code alignment factor: 1
|
|
Data alignment factor: \-4
|
|
Return address column: 8
|
|
|
|
DW_CFA_def_cfa: r4 \(esp\) ofs 4
|
|
DW_CFA_offset: r8 \(eip\) at cfa\-4
|
|
DW_CFA_nop
|
|
DW_CFA_nop
|
|
|
|
00000014 00000018 00000000 FDE cie=00000000 pc=.*
|
|
DW_CFA_advance_loc: 4 to .*
|
|
DW_CFA_def_cfa_offset: 16
|
|
DW_CFA_offset: r6 \(esi\) at cfa\-16
|
|
DW_CFA_advance_loc: 4 to .*
|
|
DW_CFA_def_cfa: r7 \(edi\) ofs 8
|
|
DW_CFA_restore: r6 \(esi\)
|
|
DW_CFA_nop
|
|
DW_CFA_nop
|
|
#pass
|