mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-24 09:43:36 +08:00
c2aaac080c
These are useless because they can't match any address. In fact, worse than useless because the .eh_frame_hdr lookup table matching addresses to FDEs does not contain information about the FDE range. The table is sorted by address; Range is inferred by the address delta from one entry to the next. So if a zero address range FDE is followed by a normal non-zero range FDE for the same address, everything is good. However, the qsort could just as easily sort the FDEs in the other order, in which case the normal FDE would effectively be seen to have a zero range. bfd/ PR 17447 * elf-bfd.h (struct eh_cie_fde): Comment re NULL u.fde.cie_inf. * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Mark zero address range FDEs for discarding. (vma_compare): Sort on range after address. (_bfd_elf_gc_mark_fdes): Test for NULL u.fde.cie_inf. (_bfd_elf_discard_section_eh_frame): Likewise. Write "FDE" in error message rather than "fde". (_bfd_elf_write_section_eh_frame_hdr): Write "PC" and "FDE" in error message. ld/testsuite/ * ld-elf/eh1.s: Don't create FDEs with zero address ranges. * ld-elf/eh3.s: Likewise. * ld-elf/eh1.d, * ld-elf/eh2.d, * ld-elf/eh3.d: Adjust. * ld-mips-elf/eh-frame1-n32.d: Warning match update. * ld-mips-elf/eh-frame1-n64.d: Likewise. * ld-mips-elf/eh-frame2-n32.d: Likewise. * ld-mips-elf/eh-frame2-n64.d: Likewise.
52 lines
675 B
ArmAsm
52 lines
675 B
ArmAsm
.text
|
|
.globl _start
|
|
.type _start, %function
|
|
_start:
|
|
.LFB2:
|
|
.space 8
|
|
.LCFI0:
|
|
.space 8
|
|
.LCFI1:
|
|
.space 8
|
|
.LFE2:
|
|
.size _start, .-_start
|
|
.section .eh_frame,"a",%progbits
|
|
.align 16
|
|
.Lframe1:
|
|
.long .LECIE1-.LSCIE1
|
|
.LSCIE1:
|
|
.long 0x0
|
|
.byte 0x1
|
|
.string ""
|
|
.uleb128 0x1
|
|
.sleb128 -8
|
|
.byte 0x10
|
|
.byte 0xc
|
|
.uleb128 0x7
|
|
.uleb128 0x8
|
|
.byte 0x90
|
|
.uleb128 0x1
|
|
.align 8
|
|
.LECIE1:
|
|
.LSFDE1:
|
|
.long .LEFDE1-.LASFDE1
|
|
.LASFDE1:
|
|
.long .LASFDE1-.Lframe1
|
|
.quad .LFB2
|
|
.quad .LFE2-.LFB2
|
|
.byte 0x4
|
|
.long .LCFI0-.LFB2
|
|
.byte 0xe
|
|
.uleb128 0x10
|
|
.byte 0x86
|
|
.uleb128 0x2
|
|
.byte 0x4
|
|
.long .LCFI1-.LCFI0
|
|
.byte 0xd
|
|
.uleb128 0x6
|
|
.byte 0x0
|
|
.byte 0x0
|
|
.byte 0x0
|
|
.byte 0x0
|
|
.LEFDE1:
|