mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
2375592ce3
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. llvm-svn: 236235
91 lines
2.2 KiB
ArmAsm
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
|