// REQUIRES: arm, aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-android %s -o %t.o // RUN: ld.lld -shared %t.o -o %t.so --pack-dyn-relocs=android -z norelro -z separate-code // RUN: llvm-readobj -S %t.so | FileCheck %s // This test is making sure the Android packed relocation support doesn't // cause an infinite loop due to the size of the section oscillating // (because the size of the section impacts the layout of the following // sections). // This test is very sensitive to the exact section sizes and offsets, // so check that they don't change. // CHECK: Name: .rela.dyn (33) // CHECK-NEXT: Type: SHT_ANDROID_RELA (0x60000002) // CHECK-NEXT: Flags [ (0x2) // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x1D8 // CHECK-NEXT: Offset: 0x1D8 // CHECK-NEXT: Size: 21 // CHECK: Name: x (43) // CHECK-NEXT: Type: SHT_PROGBITS (0x1) // CHECK-NEXT: Flags [ (0x2) // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x1ED // CHECK-NEXT: Offset: 0x1ED // CHECK-NEXT: Size: 65036 // CHECK: Name: barr (45) // CHECK-NEXT: Type: SHT_PROGBITS (0x1) // CHECK-NEXT: Flags [ (0x2) // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0xFFFA // CHECK-NEXT: Offset: 0xFFFA // CHECK-NEXT: Size: 0 // CHECK: Name: foo (62) // CHECK-NEXT: Type: SHT_PROGBITS (0x1) // CHECK-NEXT: Flags [ (0x3) // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: SHF_WRITE (0x1) // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x10004 // CHECK-NEXT: Offset: 0x10004 // CHECK-NEXT: Size: 24 .data .long 0 .section foo,"aw" foof: .quad foof .quad bar-53 .quad bar .section x,"a" .zero 65036 .section barr,"a" .p2align 1 bar: