mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00

bfd/ * elf32-tic6x.c (is_tic6x_elf_unwind_section_name, elf32_tic6x_fake_sections): New functions. (elf_backend_fake_sections): Define. gas/ * config/tc-tic6x.c (streq): Define. (tic6x_get_unwind): New. (s_tic6x_cantunwind, s_tic6x_handlerdata, s_tic6x_endp, s_tic6x_personalityindex, s_tic6x_personality): New functions. (md_pseudo_table): Add "endp", "handlerdata", "personalityindex", "personality" and "cantunwind". (tic6x_regname_to_dw2regnum, tic6x_frame_initial_instructions, tic6x_start_unwind_section, tic6x_unwind_frame_regs, tic6x_pop_rts_offset_little, tic6x_pop_rts_offset_big, tic6x_unwind_reg_from_dwarf, tic6x_flush_unwind_word, tic6x_unwind_byte, tic6x_unwind_2byte, tic6x_unwind_uleb, tic6x_cfi_startproc, output_exidx_entry, tic6x_output_unwinding, tic6x_cfi_endproc): New. * config/tc-tic6x.h (TIC6X_NUM_UNWIND_REGS): Define. (tic6x_unwind_info): New. (tic6x_segment_info_type): Add marked_pr_dependency, unwind and text_unwind. (TARGET_USE_CFIPOP, tc_regname_to_dw2regnum, tc_cfi_frame_initial_instructions, DWARF2_DEFAULT_RETURN_COLUMN, DWARF2_CIE_DATA_ALIGNMENT, tc_cfi_startproc, tc_cfi_endproc, tc_cfi_section_name): Define. * doc/c-tic6x.texi: Document new unwinding directives. * dw2gencfi.c (tc_cfi_startproc, tc_cfi_endproc): Add default definitions. (cfi_insn_data, fde_entry, CFI_adjust_cfa_offset, CFI_return_column, CFI_rel_offset, CFI_escape, CFI_signal_frame, CFI_val_encoded_addr): Move to dw2gencfi.h. (CFI_EMIT_target): Define. (dot_cfi_sections): Check tc_cfi_section_name. (dot_cfi_startproc): Use tc_cfi_startproc. (dot_cfi_endproc): Use tc_cfi_endproc. * dw2gencfi.h (cfi_insn_data, fde_entry, CFI_adjust_cfa_offset, CFI_return_column, CFI_rel_offset, CFI_escape, CFI_signal_frame, CFI_val_encoded_addr): Move to here from dw2gencfi.c. gas/testsuite: * gas/tic6x/unwind-1.d: New test. * gas/tic6x/unwind-1.s: New test. * gas/tic6x/unwind-2.d: New test. * gas/tic6x/unwind-2.s: New test. * gas/tic6x/unwind-3.d: New test. * gas/tic6x/unwind-3.s: New test. * gas/tic6x/unwind-bad-1.d: New test. * gas/tic6x/unwind-bad-1.s: New test. * gas/tic6x/unwind-bad-1.l: New test. * gas/tic6x/unwind-bad-2.d: New test. * gas/tic6x/unwind-bad-2.s: New test. * gas/tic6x/unwind-bad-2.l: New test. include/ * elf/tic6x.h (ELF_STRING_C6000_unwind, ELF_STRING_C6000_unwind_info, ELF_STRING_C6000_unwind_once, ELF_STRING_C6000_unwind_info_once): Define.
243 lines
3.6 KiB
ArmAsm
243 lines
3.6 KiB
ArmAsm
.cfi_sections .c6xabi.exidx
|
|
|
|
# standard layout
|
|
.p2align 8
|
|
f0:
|
|
.cfi_startproc
|
|
stw .d2t2 B3, *B15--(16)
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 19, 0
|
|
stw .d2t1 A11, *+B15(12)
|
|
.cfi_offset 11, -4
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# standard layout (pr0)
|
|
.p2align 8
|
|
f1:
|
|
.cfi_startproc
|
|
.cfi_def_cfa_offset 8
|
|
stw .d2t1 A11, *+B15(8)
|
|
.cfi_offset 11, -0
|
|
stw .d2t1 A10, *+B15(4)
|
|
.cfi_offset 10, -4
|
|
nop 4
|
|
.cfi_endproc
|
|
.personalityindex 0
|
|
.endp
|
|
|
|
# standard layout (pr1)
|
|
.p2align 8
|
|
f2:
|
|
.cfi_startproc
|
|
stw .d2t2 B15, *B15--(24)
|
|
.cfi_def_cfa_offset 24
|
|
.cfi_offset 31, 0
|
|
stw .d2t2 B10, *+B15(20)
|
|
.cfi_offset 26, -4
|
|
stw .d2t2 B3, *+B15(16)
|
|
.cfi_offset 19, -8
|
|
stdw .d2t1 A11:A10, *+B15(8)
|
|
.cfi_offset 11, -16
|
|
.cfi_offset 10, -12
|
|
nop 4
|
|
.cfi_endproc
|
|
.personalityindex 1
|
|
.endp
|
|
|
|
# standard layout (pr3)
|
|
.p2align 8
|
|
f3:
|
|
.cfi_startproc
|
|
stw .d2t2 B3, *B15--(16)
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 19, 0
|
|
stw .d2t1 A11, *+B15(12)
|
|
.cfi_offset 11, -4
|
|
nop 4
|
|
.cfi_endproc
|
|
.personalityindex 3
|
|
.endp
|
|
|
|
# compact layout
|
|
.p2align 8
|
|
f4:
|
|
.cfi_startproc
|
|
stw .d2t2 B3, *B15--(8)
|
|
.cfi_offset 19, 0
|
|
.cfi_def_cfa_offset 8
|
|
stw .d2t1 A11, *B15--(8)
|
|
.cfi_offset 11, -8
|
|
.cfi_def_cfa_offset 16
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# compact layout (pr0)
|
|
.p2align 8
|
|
f5:
|
|
.cfi_startproc
|
|
stw .d2t2 B3, *B15--(8)
|
|
.cfi_offset 19, 0
|
|
.cfi_def_cfa_offset 8
|
|
stw .d2t1 A11, *B15--(8)
|
|
.cfi_offset 11, -8
|
|
.cfi_def_cfa_offset 16
|
|
nop 4
|
|
.cfi_endproc
|
|
.personalityindex 0
|
|
.endp
|
|
|
|
# compact layout (pr4)
|
|
.p2align 8
|
|
f6:
|
|
.cfi_startproc
|
|
stw .d2t2 B3, *B15--(8)
|
|
.cfi_offset 19, 0
|
|
.cfi_def_cfa_offset 8
|
|
stw .d2t1 A11, *B15--(8)
|
|
.cfi_offset 11, -8
|
|
.cfi_def_cfa_offset 16
|
|
nop 4
|
|
.cfi_endproc
|
|
.personalityindex 4
|
|
.endp
|
|
|
|
# compact layout (aligned pair)
|
|
.p2align 8
|
|
f7:
|
|
.cfi_startproc
|
|
stw .d2t2 B10, *B15--(8)
|
|
.cfi_offset 26, 0
|
|
.cfi_def_cfa_offset 8
|
|
stw .d2t2 B3, *B15--(8)
|
|
.cfi_offset 19, -8
|
|
.cfi_def_cfa_offset 8
|
|
stdw .d2t1 A11:A10, *B15--(8)
|
|
.cfi_offset 11, -16
|
|
.cfi_offset 10, -12
|
|
.cfi_def_cfa_offset 24
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# compact layout (aligned pair + 1)
|
|
.p2align 8
|
|
f8:
|
|
.cfi_startproc
|
|
stw .d2t2 B3, *B15--(8)
|
|
.cfi_offset 19, 0
|
|
.cfi_def_cfa_offset 8
|
|
stdw .d2t1 A13:A12, *B15--(8)
|
|
.cfi_offset 13, -8
|
|
.cfi_offset 12, -4
|
|
.cfi_def_cfa_offset 16
|
|
stw .d2t1 A10, *B15--(8)
|
|
.cfi_offset 10, -16
|
|
.cfi_def_cfa_offset 24
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# compact layout (misaligned pair)
|
|
.p2align 8
|
|
f9:
|
|
.cfi_startproc
|
|
stw .d2t2 B11, *B15--(8)
|
|
.cfi_offset 27, 0
|
|
.cfi_def_cfa_offset 8
|
|
stw .d2t2 B10, *B15--(8)
|
|
.cfi_offset 26, -8
|
|
.cfi_def_cfa_offset 16
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# standard frame pointer
|
|
.p2align 8
|
|
fa:
|
|
.cfi_startproc
|
|
stw .d2t1 A15, *B15--(16)
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 15, 0
|
|
mv .s1x B15, A15
|
|
addk .s1 16, A15
|
|
.cfi_def_cfa 15, 0
|
|
stw .d2t1 A11, *+B15(12)
|
|
.cfi_offset 11, -4
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# compact frame pointer
|
|
.p2align 8
|
|
fb:
|
|
.cfi_startproc
|
|
stw .d2t1 A15, *B15--(8)
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 15, 0
|
|
mv .s1x B15, A15
|
|
addk .s1 16, A15
|
|
.cfi_def_cfa 15, 0
|
|
stw .d2t1 A11, *B15--(8)
|
|
.cfi_offset 11, -8
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# custom layout
|
|
.p2align 8
|
|
fc:
|
|
.cfi_startproc
|
|
sub .s2 B15, 16, B15
|
|
stw .d2t2 B3, *+B15(12)
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 19, -4
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# custom layout
|
|
.p2align 8
|
|
fd:
|
|
.cfi_startproc
|
|
sub .s2 B15, 16, B15
|
|
stw .d2t2 B3, *+B15(12)
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 19, -4
|
|
stw .d2t1 A11, *+B15(8)
|
|
.cfi_offset 11, -8
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# custom layout
|
|
.p2align 8
|
|
fe:
|
|
.cfi_startproc
|
|
sub .s2 B15, 16, B15
|
|
stw .d2t2 B3, *+B15(12)
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 19, -4
|
|
stw .d2t1 A11, *+B15(4)
|
|
.cfi_offset 11, -12
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|
|
# custom layout
|
|
.p2align 8
|
|
ff:
|
|
.cfi_startproc
|
|
addk .s2 -24, B15
|
|
stw .d2t2 B3, *+B15(24)
|
|
.cfi_def_cfa_offset 24
|
|
.cfi_offset 19, 0
|
|
stw .d2t1 A11, *+B15(4)
|
|
.cfi_offset 11, -20
|
|
nop 4
|
|
.cfi_endproc
|
|
.endp
|
|
|