139 lines · plain
1@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \2@ RUN: | llvm-readobj -S --sd --sr --symbols - > %t3@ RUN: FileCheck %s < %t4@ RUN: FileCheck --check-prefix=RELOC %s < %t5 6@ Check whether the section is switched back properly.7 8@ The assembler should switch the section back to the corresponding section9@ after it have emitted the exception handling indices and tables. In this10@ test case, we are checking whether the section is correct when .section11@ directives is used.12 13@ In this example, func1 and func2 should be defined in .TEST1 section.14@ It is incorrect if the func2 is in .text, .ARM.extab.TEST1, or15@ .ARM.exidx.TEST1 sections.16 17 .syntax unified18 19 .section .TEST120 21 .globl func122 .align 223 .type func1,%function24 .fnstart25func1:26 bx lr27 .personality __gxx_personality_v028 .handlerdata29 .fnend30 31 .globl func232 .align 233 .type func2,%function34 .fnstart35func2:36 bx lr37 .personality __gxx_personality_v038 .handlerdata39 .fnend40 41 42@-------------------------------------------------------------------------------43@ Check the .text section. This should be empty.44@-------------------------------------------------------------------------------45@ CHECK: Sections [46@ CHECK: Section {47@ CHECK: Name: .text48@ CHECK: SectionData (49@ CHECK: )50@ CHECK: }51 52 53@-------------------------------------------------------------------------------54@ Check the .TEST1 section. There should be two "bx lr" instructions.55@-------------------------------------------------------------------------------56@ CHECK: Section {57@ CHECK: Index: 358@ CHECK-NEXT: Name: .TEST159@ CHECK: SectionData (60@ CHECK: 0000: 1EFF2FE1 1EFF2FE1 |../.../.|61@ CHECK: )62@ CHECK: }63 64 65 66@-------------------------------------------------------------------------------67@ Check the .ARM.extab.TEST1 section.68@-------------------------------------------------------------------------------69@ CHECK: Section {70@ CHECK: Name: .ARM.extab.TEST171@ CHECK: SectionData (72@ CHECK: 0000: 00000000 B0B0B000 00000000 B0B0B000 |................|73@ CHECK: )74@ CHECK: }75 76@ RELOC: Section {77@ RELOC: Name: .rel.ARM.extab.TEST178@ RELOC: Relocations [79@ RELOC: 0x0 R_ARM_PREL31 __gxx_personality_v080@ RELOC: 0x8 R_ARM_PREL31 __gxx_personality_v081@ RELOC: ]82@ RELOC: }83 84 85@-------------------------------------------------------------------------------86@ Check the .ARM.exidx.TEST1 section.87@-------------------------------------------------------------------------------88@ CHECK: Section {89@ CHECK: Name: .ARM.exidx.TEST190@ CHECK: Link: 391@-------------------------------------------------------------------------------92@ The first word should be the offset to .TEST1.93@ The second word should be the offset to .ARM.extab.TEST194@-------------------------------------------------------------------------------95@ CHECK: SectionData (96@ CHECK: 0000: 00000000 00000000 04000000 08000000 |................|97@ CHECK: )98@ CHECK: }99@-------------------------------------------------------------------------------100@ The first word of each entry should be relocated to .TEST1 section.101@ The second word of each entry should be relocated to102@ .ARM.extab.TESET1 section.103@-------------------------------------------------------------------------------104 105@ RELOC: Section {106@ RELOC: Name: .rel.ARM.exidx.TEST1107@ RELOC: Relocations [108@ RELOC: 0x0 R_ARM_PREL31 .TEST1109@ RELOC: 0x4 R_ARM_PREL31 .ARM.extab.TEST1110@ RELOC: 0x8 R_ARM_PREL31 .TEST1111@ RELOC: 0xC R_ARM_PREL31 .ARM.extab.TEST1112@ RELOC: ]113@ RELOC: }114 115 116@-------------------------------------------------------------------------------117@ Check the symbols "func1" and "func2". They should belong to .TEST1 section.118@-------------------------------------------------------------------------------119@ CHECK: Symbols [120@ CHECK: Symbol {121@ CHECK: Name: func1122@ CHECK: Value: 0x0123@ CHECK: Size: 0124@ CHECK: Binding: Global (0x1)125@ CHECK: Type: Function (0x2)126@ CHECK: Other: 0127@ CHECK: Section: .TEST1128@ CHECK: }129@ CHECK: Symbol {130@ CHECK: Name: func2131@ CHECK: Value: 0x4132@ CHECK: Size: 0133@ CHECK: Binding: Global (0x1)134@ CHECK: Type: Function (0x2)135@ CHECK: Other: 0136@ CHECK: Section: .TEST1137@ CHECK: }138@ CHECK: ]139