141 lines · plain
1// REQUIRES: arm2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t3// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-exidx-cantunwind.s -o %tcantunwind4// Check that relocatable link maintains SHF_LINK_ORDER5// RUN: ld.lld -r %t %tcantunwind -o %t46// RUN: llvm-readobj -S %t4 | FileCheck %s7 8// RUN: llvm-mc -filetype=obj -triple=armv7aeb-none-linux-gnueabi -mcpu=cortex-a8 %s -o %t9// RUN: llvm-mc -filetype=obj -triple=armv7aeb-none-linux-gnueabi -mcpu=cortex-a8 %S/Inputs/arm-exidx-cantunwind.s -o %tcantunwind10// Check that relocatable link maintains SHF_LINK_ORDER for big endian11// RUN: ld.lld -r %t %tcantunwind -o %t412// RUN: llvm-readobj -S %t4 | FileCheck %s13// RUN: ld.lld --be8 -r %t %tcantunwind -o %t414// RUN: llvm-readobj -S %t4 | FileCheck %s15 16// Each assembler created .ARM.exidx section has the SHF_LINK_ORDER flag set17// with the sh_link containing the section index of the executable section18// containing the function it describes. To maintain this property in19// relocatable links we pass through the .ARM.exidx section, the section it20// it has a sh_link to, and the associated relocation sections uncombined.21 22 .syntax unified23 .section .text, "ax",%progbits24 .globl _start25_start:26 .fnstart27 bx lr28 .cantunwind29 .fnend30 31 .section .text.f1, "ax", %progbits32 .globl f133f1:34 .fnstart35 bx lr36 .cantunwind37 .fnend38 39 .section .text.f2, "ax", %progbits40 .globl f241f2:42 .fnstart43 bx lr44 .cantunwind45 .fnend46 .globl f347f3:48 .fnstart49 bx lr50 .cantunwind51 .fnend52 53// CHECK: Index: 154// CHECK-NEXT: Name: .text55 56// CHECK: Name: .ARM.exidx57// CHECK-NEXT: Type: SHT_ARM_EXIDX (0x70000001)58// CHECK-NEXT: Flags [ (0x82)59// CHECK-NEXT: SHF_ALLOC (0x2)60// CHECK-NEXT: SHF_LINK_ORDER (0x80)61// CHECK-NEXT: ]62// CHECK-NEXT: Address63// CHECK-NEXT: Offset:64// CHECK-NEXT: Size: 2465// CHECK-NEXT: Link: 166 67 68// CHECK: Index: 469// CHECK-NEXT: Name: .text.f170 71// CHECK: Name: .ARM.exidx.text.f172// CHECK-NEXT: Type: SHT_ARM_EXIDX (0x70000001)73// CHECK-NEXT: Flags [ (0x82)74// CHECK-NEXT: SHF_ALLOC (0x2)75// CHECK-NEXT: SHF_LINK_ORDER (0x80)76// CHECK-NEXT: ]77// CHECK-NEXT: Address78// CHECK-NEXT: Offset:79// CHECK-NEXT: Size: 880// CHECK-NEXT: Link: 481 82 83// CHECK: Index: 784// CHECK-NEXT: Name: .text.f285 86// CHECK: Name: .ARM.exidx.text.f287// CHECK-NEXT: Type: SHT_ARM_EXIDX (0x70000001)88// CHECK-NEXT: Flags [ (0x82)89// CHECK-NEXT: SHF_ALLOC (0x2)90// CHECK-NEXT: SHF_LINK_ORDER (0x80)91// CHECK-NEXT: ]92// CHECK-NEXT: Address93// CHECK-NEXT: Offset:94// CHECK-NEXT: Size: 1695// CHECK-NEXT: Link: 796 97 98// CHECK: Index: 1099// CHECK-NEXT: Name: .func1100 101// CHECK: Name: .ARM.exidx.func1102// CHECK-NEXT: Type: SHT_ARM_EXIDX (0x70000001)103// CHECK-NEXT: Flags [ (0x82)104// CHECK-NEXT: SHF_ALLOC (0x2)105// CHECK-NEXT: SHF_LINK_ORDER (0x80)106// CHECK-NEXT: ]107// CHECK-NEXT: Address108// CHECK-NEXT: Offset:109// CHECK-NEXT: Size: 8110// CHECK-NEXT: Link: 10111 112 113// CHECK: Index: 13114// CHECK-NEXT: Name: .func2115 116// CHECK: Name: .ARM.exidx.func2117// CHECK-NEXT: Type: SHT_ARM_EXIDX (0x70000001)118// CHECK-NEXT: Flags [ (0x82)119// CHECK-NEXT: SHF_ALLOC (0x2)120// CHECK-NEXT: SHF_LINK_ORDER (0x80)121// CHECK-NEXT: ]122// CHECK-NEXT: Address123// CHECK-NEXT: Offset:124// CHECK-NEXT: Size: 8125// CHECK-NEXT: Link: 13126 127 128// CHECK: Index: 16129// CHECK-NEXT: Name: .func3130 131// CHECK: Name: .ARM.exidx.func3132// CHECK-NEXT: Type: SHT_ARM_EXIDX (0x70000001)133// CHECK-NEXT: Flags [ (0x82)134// CHECK-NEXT: SHF_ALLOC (0x2)135// CHECK-NEXT: SHF_LINK_ORDER (0x80)136// CHECK-NEXT: ]137// CHECK-NEXT: Address138// CHECK-NEXT: Offset:139// CHECK-NEXT: Size: 8140// CHECK-NEXT: Link: 16141