We need to order atoms that exist in the same chain. This is to make sure that the command line order is preserved when we emit the atoms to the output file. Credits: BigCheese for finding the bug. Adds a test which otherwise would fail. llvm-svn: 190608
81 lines
2.3 KiB
Plaintext
81 lines
2.3 KiB
Plaintext
# Checks functionality of dynamic executables
|
|
RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
|
|
RUN: %p/Inputs/shared.so-x86-64 -o %t -e main --allow-shlib-undefined \
|
|
RUN: -rpath /l1:/l2 -rpath /l3
|
|
RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
|
|
RUN: %p/Inputs/shared.so-x86-64 -emit-yaml -o %t2 --allow-shlib-undefined \
|
|
RUN: --noinhibit-exec
|
|
RUN: llvm-objdump -p %t >> %t2
|
|
RUN: llvm-readobj -s -dyn-symbols -dynamic-table %t >> %t2
|
|
RUN: FileCheck %s < %t2
|
|
|
|
CHECK: type: got
|
|
CHECK: references:
|
|
CHECK: kind: R_X86_64_JUMP_SLOT
|
|
|
|
CHECK: name: main
|
|
CHECK: kind: R_X86_64_PC32
|
|
CHECK: offset: 18
|
|
CHECK: target: [[PLTNAME:[-a-zA-Z0-9_]+]]
|
|
|
|
CHECK: name: [[PLTNAME]]
|
|
CHECK: type: stub
|
|
|
|
CHECK: shared-library-atoms:
|
|
CHECK: name: foo
|
|
CHECK: load-name: shared.so-x86-64
|
|
|
|
CHECK: PHDR off 0x{{0+}}40
|
|
CHECK: INTERP
|
|
CHECK: flags r--
|
|
|
|
CHECK: Section {
|
|
CHECK: Name: .hash
|
|
CHECK-NEXT: Type: SHT_HASH
|
|
CHECK-NEXT: Flags [
|
|
CHECK-NEXT: SHF_ALLOC
|
|
CHECK-NEXT: ]
|
|
CHECK-NEXT: Address:
|
|
CHECK-NEXT: Offset:
|
|
CHECK-NEXT: Size: 32
|
|
CHECK-NEXT: Link:
|
|
CHECK-NEXT: Info:
|
|
CHECK-NEXT: AddressAlignment: 8
|
|
CHECK-NEXT: EntrySize:
|
|
CHECK-NEXT: }
|
|
|
|
CHECK: DynamicSymbols [
|
|
CHECK: Symbol {
|
|
CHECK: Name: foo
|
|
CHECK-NEXT: Value: 0
|
|
CHECK-NEXT: Size:
|
|
CHECK-NEXT: Binding: Global
|
|
CHECK-NEXT: Type: Function
|
|
CHECK: }
|
|
CHECK: Symbol {
|
|
CHECK: Name: i
|
|
CHECK-NEXT: Value: 0
|
|
CHECK-NEXT: Size:
|
|
CHECK-NEXT: Binding: Global
|
|
CHECK-NEXT: Type: Function
|
|
CHECK: }
|
|
|
|
CHECK: DynamicSection [ (15 entries)
|
|
CHECK: Tag Type Name/Value
|
|
CHECK: 0x0000000000000004 HASH
|
|
CHECK: 0x0000000000000005 STRTAB
|
|
CHECK: 0x0000000000000006 SYMTAB
|
|
CHECK: 0x000000000000000A STRSZ
|
|
CHECK: 0x000000000000000B SYMENT 24
|
|
CHECK: 0x0000000000000007 RELA
|
|
CHECK: 0x0000000000000008 RELASZ 24
|
|
CHECK: 0x0000000000000009 RELAENT 24
|
|
CHECK: 0x0000000000000002 PLTRELSZ 24
|
|
CHECK: 0x0000000000000003 PLTGOT
|
|
CHECK: 0x0000000000000014 PLTREL RELA
|
|
CHECK: 0x0000000000000017 JMPREL
|
|
CHECK: 0x0000000000000001 NEEDED SharedLibrary (shared.so-x86-64)
|
|
CHECK: 0x000000000000000F RPATH /l1:/l2:/l3
|
|
CHECK: 0x0000000000000000 NULL 0x0
|
|
CHECK: ]
|