llvm-6502/test/MC/ARM/eh-link.s
Rafael Espindola 76e71bd66e Write sections mostly in one pass.
During ELF writing, there is no need to further relax the sections, so we
should not be creating fragments. This patch avoids doing so in all cases
but debug section compression (that is next).

Also, the ELF format is fairly simple to write. We can do a single pass over
the sections to write them out and compute the section header table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236235 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-30 14:21:49 +00:00

91 lines
2.2 KiB
ArmAsm

@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
@ RUN: | llvm-readobj -s | FileCheck %s
@ Test that the ARM_EXIDX sections point (Link) to the corresponding text
@ sections.
@ FIXME: The section numbers are not important. If llvm-readobj printed the
@ name first we could use a FileCheck variable.
@ CHECK: Section {
@ CHECK: Index: 6
@ CHECK-NEXT: Name: .text
@ CHECK-NEXT: Type: SHT_PROGBITS
@ CHECK-NEXT: Flags [
@ CHECK-NEXT: SHF_ALLOC
@ CHECK-NEXT: SHF_EXECINSTR
@ CHECK-NEXT: SHF_GROUP
@ CHECK-NEXT: ]
@ CHECK-NEXT: Address: 0x0
@ CHECK-NEXT: Offset:
@ CHECK-NEXT: Size: 4
@ CHECK-NEXT: Link: 0
@ CHECK-NEXT: Info: 0
@ CHECK-NEXT: AddressAlignment: 1
@ CHECK-NEXT: EntrySize: 0
@ CHECK-NEXT: }
@ CHECK-NEXT: Section {
@ CHECK-NEXT: Index: 7
@ CHECK-NEXT: Name: .ARM.exidx
@ CHECK-NEXT: Type: SHT_ARM_EXIDX
@ CHECK-NEXT: Flags [
@ CHECK-NEXT: SHF_ALLOC
@ CHECK-NEXT: SHF_GROUP
@ CHECK-NEXT: SHF_LINK_ORDER
@ CHECK-NEXT: ]
@ CHECK-NEXT: Address: 0x0
@ CHECK-NEXT: Offset:
@ CHECK-NEXT: Size: 8
@ CHECK-NEXT: Link: 6
@ CHECK-NEXT: Info: 0
@ CHECK-NEXT: AddressAlignment: 4
@ CHECK-NEXT: EntrySize: 0
@ CHECK-NEXT: }
@ CHECK: Section {
@ CHECK: Index: 10
@ CHECK-NEXT: Name: .text
@ CHECK-NEXT: Type: SHT_PROGBITS
@ CHECK-NEXT: Flags [
@ CHECK-NEXT: SHF_ALLOC
@ CHECK-NEXT: SHF_EXECINSTR
@ CHECK-NEXT: SHF_GROUP
@ CHECK-NEXT: ]
@ CHECK-NEXT: Address: 0x0
@ CHECK-NEXT: Offset:
@ CHECK-NEXT: Size: 4
@ CHECK-NEXT: Link: 0
@ CHECK-NEXT: Info: 0
@ CHECK-NEXT: AddressAlignment: 1
@ CHECK-NEXT: EntrySize: 0
@ CHECK-NEXT: }
@ CHECK-NEXT: Section {
@ CHECK-NEXT: Index: 11
@ CHECK-NEXT: Name: .ARM.exidx
@ CHECK-NEXT: Type: SHT_ARM_EXIDX
@ CHECK-NEXT: Flags [
@ CHECK-NEXT: SHF_ALLOC
@ CHECK-NEXT: SHF_GROUP
@ CHECK-NEXT: SHF_LINK_ORDER
@ CHECK-NEXT: ]
@ CHECK-NEXT: Address: 0x0
@ CHECK-NEXT: Offset:
@ CHECK-NEXT: Size: 8
@ CHECK-NEXT: Link: 10
@ CHECK-NEXT: Info: 0
@ CHECK-NEXT: AddressAlignment: 4
@ CHECK-NEXT: EntrySize: 0
@ CHECK-NEXT: }
.section .text,"axG",%progbits,f,comdat
f:
.fnstart
mov pc, lr
.fnend
.section .text,"axG",%progbits,g,comdat
g:
.fnstart
mov pc, lr
.fnend