[ELF][X86] Allow PT_LOAD to have overlapping p_offset ranges on EM_X86_64

Port the D64906 technique to EM_X86_64.

Differential Revision: https://reviews.llvm.org/D67482

llvm-svn: 371958
This commit is contained in:
Fangrui Song 2019-09-16 07:05:34 +00:00
parent 06bb7dfbd4
commit d4306e90cb
119 changed files with 791 additions and 786 deletions

View File

@ -2218,8 +2218,7 @@ template <class ELFT> void Writer<ELFT>::fixSectionAlignments() {
// previous segment anyway.
//
// TODO Enable this technique on all targets.
bool enable = config->emachine != EM_HEXAGON &&
config->emachine != EM_X86_64;
bool enable = config->emachine != EM_HEXAGON;
if (!enable ||
(config->zSeparateCode && prev &&

View File

@ -10,4 +10,4 @@ bar:
.weak zed
.type zed, @object
zed = 0x1000
zed = 0x1288

View File

@ -6,7 +6,7 @@ foo:
.section .tbss,"awT",@nobits
.global tfoo
.skip 0x2000
.skip 0x3358
.type tfoo,@object
.size tfoo, 4
tfoo:

View File

@ -8,11 +8,11 @@
# CHECK: There are no relocations in this file.
# CHECK: section '.got':
# CHECK: 0x00001070 2a000000 00000000
# CHECK: 0x000022b8 2a000000 00000000
## .got - (.data+8) = 0xfffff068
## .got - (.data+8) = 0xfffff0ef
# CHECK: section '.data':
# CHECK: 0x00002000 2a000000 00000000 68f0ffff
# CHECK: 0x000032c0 2a000000 00000000 f0efffff
.data
.quad foo

View File

@ -14,7 +14,7 @@
# CHECK: Name: .got
# CHECK: Address: 0x[[GOT:.*]]
# CHECK: SectionData (
# APPLY-NEXT: 0000: 00200000 00000000 |
# APPLY-NEXT: 0000: 30220000 00000000 |
# NOAPPLY-NEXT: 0000: 00000000 00000000 |
# CHECK-NEXT: )
@ -25,7 +25,7 @@
# CHECK-NEXT: ]
# CHECK: Type: PT_DYNAMIC
# CHECK-NEXT: Offset: 0x[[ADDEND]]
# CHECK-NEXT: Offset: 0x230
# CHECK-NEXT: VirtualAddress: 0x[[ADDEND]]
# CHECK-NEXT: PhysicalAddress: 0x[[ADDEND]]

View File

@ -39,9 +39,9 @@ _start:
// CHECK-NEXT: }
// CHECK-NEXT: ProgramHeader {
// CHECK-NEXT: Type: PT_LOAD (0x1)
// CHECK-NEXT: Offset: 0x1000
// CHECK-NEXT: VirtualAddress: 0x201000
// CHECK-NEXT: PhysicalAddress: 0x201000
// CHECK-NEXT: Offset: 0x158
// CHECK-NEXT: VirtualAddress: 0x201158
// CHECK-NEXT: PhysicalAddress: 0x201158
// CHECK-NEXT: FileSize: 1
// CHECK-NEXT: MemSize: 1
// CHECK-NEXT: Flags [ (0x5)
@ -52,9 +52,9 @@ _start:
// CHECK-NEXT: }
// CHECK-NEXT: ProgramHeader {
// CHECK-NEXT: Type: PT_TLS (0x7)
// CHECK-NEXT: Offset: 0x1001
// CHECK-NEXT: VirtualAddress: 0x201001
// CHECK-NEXT: PhysicalAddress: 0x201001
// CHECK-NEXT: Offset: 0x159
// CHECK-NEXT: VirtualAddress: 0x201159
// CHECK-NEXT: PhysicalAddress: 0x201159
// CHECK-NEXT: FileSize: 0
// CHECK-NEXT: MemSize: 4
// CHECK-NEXT: Flags [ (0x4)

View File

@ -28,7 +28,7 @@ _start:
# CHECK-NEXT: Version: 1
# CHECK-NEXT: Entry: [[ENTRY:0x[0-9A-F]+]]
# CHECK-NEXT: ProgramHeaderOffset: 0x40
# CHECK-NEXT: SectionHeaderOffset: 0x1080
# CHECK-NEXT: SectionHeaderOffset: 0x1A0
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: HeaderSize: 64
@ -61,8 +61,8 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_EXECINSTR (0x4)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x201000
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: Address: 0x201120
# CHECK-NEXT: Offset: 0x120
# CHECK-NEXT: Size: 16
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@ -78,7 +78,7 @@ _start:
# CHECK-NEXT: SHF_STRINGS (0x20)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
# CHECK-NEXT: Offset: 0x1010
# CHECK-NEXT: Offset: 0x130
# CHECK-NEXT: Size: 8
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@ -92,7 +92,7 @@ _start:
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
# CHECK-NEXT: Offset: 0x1018
# CHECK-NEXT: Offset: 0x138
# CHECK-NEXT: Size: 48
# CHECK-NEXT: Link: 5
# CHECK-NEXT: Info: 1
@ -106,7 +106,7 @@ _start:
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
# CHECK-NEXT: Offset: 0x1048
# CHECK-NEXT: Offset: 0x168
# CHECK-NEXT: Size: 42
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@ -120,7 +120,7 @@ _start:
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
# CHECK-NEXT: Offset: 0x1072
# CHECK-NEXT: Offset: 0x192
# CHECK-NEXT: Size: 8
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@ -175,9 +175,9 @@ _start:
# CHECK-NEXT: }
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: VirtualAddress: 0x201000
# CHECK-NEXT: PhysicalAddress: 0x201000
# CHECK-NEXT: Offset: 0x120
# CHECK-NEXT: VirtualAddress: 0x201120
# CHECK-NEXT: PhysicalAddress: 0x201120
# CHECK-NEXT: FileSize: 16
# CHECK-NEXT: MemSize: 16
# CHECK-NEXT: Flags [ (0x5)

View File

@ -65,15 +65,15 @@ _start:
# DEFAULT: Contents of section .note.test:
# DEFAULT: Contents of section .note.gnu.build-id:
# DEFAULT-NEXT: 04000000 08000000 03000000 474e5500 ............GNU.
# DEFAULT-NEXT: 605e19a6 30469e00
# DEFAULT-NEXT: 7e8ddeff 3ed41fa3
# MD5: Contents of section .note.gnu.build-id:
# MD5-NEXT: 04000000 10000000 03000000 474e5500 ............GNU.
# MD5-NEXT: adbf65c5 42b4a428 184fd7c9 099cdc29
# MD5-NEXT: 7b00fd9e 054ceb4b 06f64d0e 482cb476
# SHA1: Contents of section .note.gnu.build-id:
# SHA1-NEXT: 04000000 14000000 03000000 474e5500 ............GNU.
# SHA1-NEXT: fe148fd4 1add2878 6b298b61 5880148b
# SHA1-NEXT: 221a99da dd1d2bf3 05e48a91 dde8a0cb
# UUID: Contents of section .note.gnu.build-id:
# UUID-NEXT: 04000000 10000000 03000000 474e5500 ............GNU.

View File

@ -51,20 +51,20 @@ I:
.fill 13, 1, 0
# CHECK: Name: B
# CHECK-NEXT: Value: 0x201011
# CHECK-NEXT: Value: 0x201131
# CHECK: Name: C
# CHECK-NEXT: Value: 0x20100F
# CHECK-NEXT: Value: 0x20112F
# CHECK: Name: D
# CHECK-NEXT: Value: 0x2013F9
# CHECK-NEXT: Value: 0x201519
# CHECK: Name: E
# CHECK-NEXT: Value: 0x201010
# CHECK-NEXT: Value: 0x201130
# CHECK: Name: F
# CHECK-NEXT: Value: 0x2017E1
# CHECK-NEXT: Value: 0x201901
# CHECK: Name: G
# CHECK-NEXT: Value: 0x3017E0
# CHECK-NEXT: Value: 0x301900
# CHECK: Name: H
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK: Name: I
# CHECK-NEXT: Value: 0x201001
# CHECK-NEXT: Value: 0x201121
# CHECK: Name: A
# CHECK-NEXT: Value: 0x20100E
# CHECK-NEXT: Value: 0x20112E

View File

@ -35,19 +35,19 @@ A:
retq
# CHECK: Name: A
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK: Name: B
# CHECK-NEXT: Value: 0x201010
# CHECK-NEXT: Value: 0x201130
# CHECK: Name: C
# CHECK-NEXT: Value: 0x201008
# CHECK-NEXT: Value: 0x201128
# CHECK: Name: D
# CHECK-NEXT: Value: 0x201008
# CHECK-NEXT: Value: 0x201128
# NOICF: Name: A
# NOICF-NEXT: Value: 0x201000
# NOICF-NEXT: Value: 0x201120
# NOICF: Name: B
# NOICF-NEXT: Value: 0x201008
# NOICF-NEXT: Value: 0x201128
# NOICF: Name: C
# NOICF-NEXT: Value: 0x201010
# NOICF-NEXT: Value: 0x201130
# NOICF: Name: D
# NOICF-NEXT: Value: 0x201018
# NOICF-NEXT: Value: 0x201138

View File

@ -33,12 +33,12 @@ Aa:
.cg_profile B, C, 30
.cg_profile C, D, 90
# CHECK: 0000000000201003 t D
# CHECK: 0000000000201000 T A
# CHECK: 0000000000201001 T B
# CHECK: 0000000000201002 T C
# CHECK: 0000000000201123 t D
# CHECK: 0000000000201120 T A
# CHECK: 0000000000201121 T B
# CHECK: 0000000000201122 T C
# NO-CG: 0000000000201000 t D
# NO-CG: 0000000000201003 T A
# NO-CG: 0000000000201002 T B
# NO-CG: 0000000000201001 T C
# NO-CG: 0000000000201120 t D
# NO-CG: 0000000000201123 T A
# NO-CG: 0000000000201122 T B
# NO-CG: 0000000000201121 T C

View File

@ -10,13 +10,13 @@
# RUN: llvm-readobj --symbols %t2 | FileCheck %s
# CHECK: Name: A
# CHECK-NEXT: Value: 0x201003
# CHECK-NEXT: Value: 0x201123
# CHECK: Name: B
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK: Name: C
# CHECK-NEXT: Value: 0x201001
# CHECK-NEXT: Value: 0x201121
# CHECK: Name: D
# CHECK-NEXT: Value: 0x201002
# CHECK-NEXT: Value: 0x201122
.section .text.A,"ax",@progbits
.globl A

View File

@ -135,51 +135,51 @@ TooManyPreds10:
retq
# CHECK: Name: D
# CHECK-NEXT: Value: 0x201003
# CHECK-NEXT: Value: 0x201123
# CHECK: Name: TooManyPreds
# CHECK-NEXT: Value: 0x201004
# CHECK-NEXT: Value: 0x201124
# CHECK: Name: TooManyPreds10
# CHECK-NEXT: Value: 0x201018
# CHECK-NEXT: Value: 0x201138
# CHECK: Name: A
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK: Name: B
# CHECK-NEXT: Value: 0x201001
# CHECK-NEXT: Value: 0x201121
# CHECK: Name: C
# CHECK-NEXT: Value: 0x201002
# CHECK-NEXT: Value: 0x201122
# CHECK: Name: GB
# CHECK-NEXT: Value: 0x20101F
# CHECK-NEXT: Value: 0x20113F
# CHECK: Name: PP
# CHECK-NEXT: Value: 0x20101C
# CHECK-NEXT: Value: 0x20113C
# CHECK: Name: QC
# CHECK-NEXT: Value: 0x20101E
# CHECK-NEXT: Value: 0x20113E
# CHECK: Name: TS
# CHECK-NEXT: Value: 0x20101D
# CHECK-NEXT: Value: 0x20113D
# CHECK: Name: _init
# CHECK-NEXT: Value: 0x201020
# CHECK-NEXT: Value: 0x201140
# CHECK: Name: _init2
# CHECK-NEXT: Value: 0x201021
# CHECK-NEXT: Value: 0x201141
# NOSORT: Name: D
# NOSORT-NEXT: Value: 0x201000
# NOSORT-NEXT: Value: 0x201120
# NOSORT: Name: TooManyPreds
# NOSORT-NEXT: Value: 0x201004
# NOSORT-NEXT: Value: 0x201124
# NOSORT: Name: TooManyPreds10
# NOSORT-NEXT: Value: 0x201018
# NOSORT-NEXT: Value: 0x201138
# NOSORT: Name: A
# NOSORT-NEXT: Value: 0x201003
# NOSORT-NEXT: Value: 0x201123
# NOSORT: Name: B
# NOSORT-NEXT: Value: 0x201002
# NOSORT-NEXT: Value: 0x201122
# NOSORT: Name: C
# NOSORT-NEXT: Value: 0x201001
# NOSORT-NEXT: Value: 0x201121
# NOSORT: Name: GB
# NOSORT-NEXT: Value: 0x20101C
# NOSORT-NEXT: Value: 0x20113C
# NOSORT: Name: PP
# NOSORT-NEXT: Value: 0x20101A
# NOSORT-NEXT: Value: 0x20113A
# NOSORT: Name: QC
# NOSORT-NEXT: Value: 0x20101B
# NOSORT-NEXT: Value: 0x20113B
# NOSORT: Name: TS
# NOSORT-NEXT: Value: 0x201019
# NOSORT-NEXT: Value: 0x201139
# NOSORT: Name: _init
# NOSORT-NEXT: Value: 0x20101D
# NOSORT-NEXT: Value: 0x20113D
# NOSORT: Name: _init2
# NOSORT-NEXT: Value: 0x20101E
# NOSORT-NEXT: Value: 0x20113E

View File

@ -9,13 +9,13 @@
# RUN: llvm-readobj --symbols %t2 | FileCheck %s
# CHECK: Name: A
# CHECK-NEXT: Value: 0x201003
# CHECK-NEXT: Value: 0x201123
# CHECK: Name: B
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK: Name: C
# CHECK-NEXT: Value: 0x201001
# CHECK-NEXT: Value: 0x201121
# CHECK: Name: D
# CHECK-NEXT: Value: 0x201002
# CHECK-NEXT: Value: 0x201122
.section .text.A,"ax",@progbits
.globl A

View File

@ -14,12 +14,12 @@
# CHECK: Relocations [
# CHECK-NEXT: Section ({{.*}}) .rela.dyn {
# CHECK-NEXT: 0x3020 R_X86_64_RELATIVE - 0x3028
# CHECK-NEXT: 0x20B0 R_X86_64_GLOB_DAT aaa 0x0
# CHECK-NEXT: 0x3000 R_X86_64_64 aaa 0x0
# CHECK-NEXT: 0x3018 R_X86_64_64 aaa 0x0
# CHECK-NEXT: 0x3010 R_X86_64_64 bbb 0x0
# CHECK-NEXT: 0x3008 R_X86_64_64 ccc 0x0
# CHECK-NEXT: 0x3428 R_X86_64_RELATIVE - 0x3430
# CHECK-NEXT: 0x2400 R_X86_64_GLOB_DAT aaa 0x0
# CHECK-NEXT: 0x3408 R_X86_64_64 aaa 0x0
# CHECK-NEXT: 0x3420 R_X86_64_64 aaa 0x0
# CHECK-NEXT: 0x3418 R_X86_64_64 bbb 0x0
# CHECK-NEXT: 0x3410 R_X86_64_64 ccc 0x0
# CHECK-NEXT: }
# CHECK: DynamicSection [
# CHECK: RELACOUNT 1
@ -29,12 +29,12 @@
# NOCOMB: Relocations [
# NOCOMB-NEXT: Section ({{.*}}) .rela.dyn {
# NOCOMB-NEXT: 0x3000 R_X86_64_64 aaa 0x0
# NOCOMB-NEXT: 0x3008 R_X86_64_64 ccc 0x0
# NOCOMB-NEXT: 0x3010 R_X86_64_64 bbb 0x0
# NOCOMB-NEXT: 0x3018 R_X86_64_64 aaa 0x0
# NOCOMB-NEXT: 0x3020 R_X86_64_RELATIVE - 0x3028
# NOCOMB-NEXT: 0x20A0 R_X86_64_GLOB_DAT aaa 0x0
# NOCOMB-NEXT: 0x33F8 R_X86_64_64 aaa 0x0
# NOCOMB-NEXT: 0x3400 R_X86_64_64 ccc 0x0
# NOCOMB-NEXT: 0x3408 R_X86_64_64 bbb 0x0
# NOCOMB-NEXT: 0x3410 R_X86_64_64 aaa 0x0
# NOCOMB-NEXT: 0x3418 R_X86_64_RELATIVE - 0x3420
# NOCOMB-NEXT: 0x23F0 R_X86_64_GLOB_DAT aaa 0x0
# NOCOMB-NEXT: }
# NOCOMB: DynamicSection [
# NOCOMB-NOT: RELACOUNT

View File

@ -21,7 +21,7 @@ foo:
// CHECK: Disassembly of section .text2:
// CHECK-EMPTY:
// CHECK-NEXT: foo:
// CHECK-NEXT: 1000: {{.*}} nop
// CHECK-NEXT: 1234: {{.*}} nop
// CHECK-NOT: nop
.section bar, "ax"
@ -30,8 +30,8 @@ foo:
// CHECK: Disassembly of section bar:
// CHECK-EMPTY:
// CHECK-NEXT: bar:
// 0x1000 - 0x1001 - 5 = -6
// CHECK-NEXT: 1001: {{.*}} callq -6
// 0x1234 - 0x1235 - 5 = -6
// CHECK-NEXT: 1235: {{.*}} callq -6
.section .text3,"axG",@progbits,zed,comdat,unique,0
@ -71,7 +71,7 @@ foo:
// READ-NEXT: }
// READ-NEXT: Symbol {
// READ-NEXT: Name: _DYNAMIC
// READ-NEXT: Value: 0x2000
// READ-NEXT: Value: 0x2240
// READ-NEXT: Size: 0
// READ-NEXT: Binding: Local
// READ-NEXT: Type: None

View File

@ -37,8 +37,8 @@ _start:
# CHECK-MAX-NEXT: SHF_ALLOC (0x2)
# CHECK-MAX-NEXT: SHF_EXECINSTR (0x4)
# CHECK-MAX-NEXT: ]
# CHECK-MAX-NEXT: Address: 0x210000
# CHECK-MAX-NEXT: Offset: 0x10000
# CHECK-MAX-NEXT: Address: 0x210120
# CHECK-MAX-NEXT: Offset: 0x120
# CHECK-MAX-NEXT: Size: 1
# CHECK-MAX-NEXT: Link: 0
# CHECK-MAX-NEXT: Info: 0
@ -54,7 +54,7 @@ _start:
# CHECK-MAX-NEXT: SHF_STRINGS (0x20)
# CHECK-MAX-NEXT: ]
# CHECK-MAX-NEXT: Address: 0x0
# CHECK-MAX-NEXT: Offset: 0x10001
# CHECK-MAX-NEXT: Offset: 0x121
# CHECK-MAX-NEXT: Size: 8
# CHECK-MAX-NEXT: Link: 0
# CHECK-MAX-NEXT: Info: 0
@ -88,9 +88,9 @@ _start:
# CHECK-MAX-NEXT: }
# CHECK-MAX-NEXT: ProgramHeader {
# CHECK-MAX-NEXT: Type: PT_LOAD (0x1)
# CHECK-MAX-NEXT: Offset: 0x10000
# CHECK-MAX-NEXT: VirtualAddress: 0x210000
# CHECK-MAX-NEXT: PhysicalAddress: 0x210000
# CHECK-MAX-NEXT: Offset: 0x120
# CHECK-MAX-NEXT: VirtualAddress: 0x210120
# CHECK-MAX-NEXT: PhysicalAddress: 0x210120
# CHECK-MAX-NEXT: FileSize: 1
# CHECK-MAX-NEXT: MemSize: 1
# CHECK-MAX-NEXT: Flags [ (0x5)
@ -147,8 +147,8 @@ _start:
# CHECK-COMMON-NEXT: SHF_ALLOC (0x2)
# CHECK-COMMON-NEXT: SHF_EXECINSTR (0x4)
# CHECK-COMMON-NEXT: ]
# CHECK-COMMON-NEXT: Address: 0x210000
# CHECK-COMMON-NEXT: Offset: 0x10000
# CHECK-COMMON-NEXT: Address: 0x210120
# CHECK-COMMON-NEXT: Offset: 0x120
# CHECK-COMMON-NEXT: Size: 1
# CHECK-COMMON-NEXT: Link: 0
# CHECK-COMMON-NEXT: Info: 0
@ -164,7 +164,7 @@ _start:
# CHECK-COMMON-NEXT: SHF_STRINGS (0x20)
# CHECK-COMMON-NEXT: ]
# CHECK-COMMON-NEXT: Address: 0x0
# CHECK-COMMON-NEXT: Offset: 0x10001
# CHECK-COMMON-NEXT: Offset: 0x121
# CHECK-COMMON-NEXT: Size: 8
# CHECK-COMMON-NEXT: Link: 0
# CHECK-COMMON-NEXT: Info: 0
@ -198,9 +198,9 @@ _start:
# CHECK-COMMON-NEXT: }
# CHECK-COMMON-NEXT: ProgramHeader {
# CHECK-COMMON-NEXT: Type: PT_LOAD (0x1)
# CHECK-COMMON-NEXT: Offset: 0x10000
# CHECK-COMMON-NEXT: VirtualAddress: 0x210000
# CHECK-COMMON-NEXT: PhysicalAddress: 0x210000
# CHECK-COMMON-NEXT: Offset: 0x120
# CHECK-COMMON-NEXT: VirtualAddress: 0x210120
# CHECK-COMMON-NEXT: PhysicalAddress: 0x210120
# CHECK-COMMON-NEXT: FileSize: 1
# CHECK-COMMON-NEXT: MemSize: 1
# CHECK-COMMON-NEXT: Flags [ (0x5)

View File

@ -10,7 +10,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x201000
// CHECK-NEXT: Address: 0x202160
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 36
// CHECK-NEXT: Link: 0
@ -18,7 +18,7 @@
// CHECK-NEXT: AddressAlignment: 16
// CHECK: Name: sym1
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Value: 0x202160
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Object
@ -26,7 +26,7 @@
// CHECK-NEXT: Section: .bss
// CHECK: Name: sym2
// CHECK-NEXT: Value: 0x201008
// CHECK-NEXT: Value: 0x202168
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Object
@ -34,7 +34,7 @@
// CHECK-NEXT: Section: .bss
// CHECK: Name: sym3
// CHECK-NEXT: Value: 0x201010
// CHECK-NEXT: Value: 0x202170
// CHECK-NEXT: Size: 2
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Object
@ -42,7 +42,7 @@
// CHECK-NEXT: Section: .bss
// CHECK: Name: sym4
// CHECK-NEXT: Value: 0x201020
// CHECK-NEXT: Value: 0x202180
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Object

View File

@ -2,7 +2,7 @@
## Test symbols larger than 2**32 can be copy relocated.
# RUN: echo '.globl foo; .type foo,@object; foo: .size foo, 0x100000001' | \
# RUN: echo '.globl foo; .type foo,@object; foo: .byte 0; .size foo, 0x100000001' | \
# RUN: llvm-mc -filetype=obj -triple=x86_64 - -o %t1.o
# RUN: ld.lld -shared %t1.o -o %t1.so
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o

View File

@ -6,8 +6,8 @@
// RUN: llvm-nm %t1.so | FileCheck %s
// RUN: llvm-nm %t | FileCheck --check-prefix=TLS %s
// foo and tfoo have the same st_value but we should not copy tfoo.
// CHECK: 2000 B foo
// CHECK: 2000 B tfoo
// CHECK: 0000000000003358 B foo
// CHECK: 0000000000003358 B tfoo
// TLS-NOT: tfoo
.global _start

View File

@ -17,10 +17,10 @@
# RUN: llvm-readobj --symbols -S %t | FileCheck %s --check-prefix=EXPR
# EXPR: Symbol {
# EXPR: Name: foo2
# EXPR-NEXT: Value: 0x201007
# EXPR-NEXT: Value: 0x201127
# EXPR: Symbol {
# EXPR: Name: etext
# EXPR-NEXT: Value: 0x201005
# EXPR-NEXT: Value: 0x201125
.globl foo1
foo1 = 0x123

View File

@ -14,17 +14,17 @@
# CHECK: Sections:
# CHECK-NEXT: Idx Name Size VMA Type
# CHECK-NEXT: 0 00000000 0000000000000000
# CHECK-NEXT: 1 .text 00000001 0000000000201000 TEXT
# CHECK-NEXT: 2 .data 00000002 0000000000202000 DATA
# CHECK-NEXT: 3 .bss 00000006 0000000000202004 BSS
# CHECK-NEXT: 1 .text 00000001 0000000000201158 TEXT
# CHECK-NEXT: 2 .data 00000002 0000000000202159 DATA
# CHECK-NEXT: 3 .bss 00000006 000000000020215c BSS
# CHECK: SYMBOL TABLE:
# CHECK-NEXT: 0000000000202002 .data 00000000 _edata
# CHECK-NEXT: 000000000020200a .bss 00000000 _end
# CHECK-NEXT: 0000000000201001 .text 00000000 _etext
# CHECK-NEXT: 0000000000201000 .text 00000000 _start
# CHECK-NEXT: 0000000000202002 .data 00000000 edata
# CHECK-NEXT: 000000000020200a .bss 00000000 end
# CHECK-NEXT: 0000000000201001 .text 00000000 etext
# CHECK-NEXT: 000000000020215b .data 00000000 _edata
# CHECK-NEXT: 0000000000202162 .bss 00000000 _end
# CHECK-NEXT: 0000000000201159 .text 00000000 _etext
# CHECK-NEXT: 0000000000201158 .text 00000000 _start
# CHECK-NEXT: 000000000020215b .data 00000000 edata
# CHECK-NEXT: 0000000000202162 .bss 00000000 end
# CHECK-NEXT: 0000000000201159 .text 00000000 etext
# RUN: ld.lld -r %t.o -o %t2
# RUN: llvm-objdump -t %t2 | FileCheck %s --check-prefix=RELOCATABLE

View File

@ -6,9 +6,9 @@
# RUN: ld.lld %t.o -o %t --gc-sections
# RUN: llvm-objdump -t -section-headers %t | FileCheck %s
# CHECK: .data 00000008 0000000000202000 DATA
# CHECK: .data 00000008 000000000020215c DATA
# CHECK: 0000000000202008 .data 00000000 _edata
# CHECK: 0000000000202164 .data 00000000 _edata
.text
.globl _start

View File

@ -51,7 +51,7 @@ bar:
// CHECK-NEXT: EntrySize:
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 1C000000 00000000 017A5052 00017810
// CHECK-NEXT: 0010: 061BF60D 00001B0C 07089001 00000000
// CHECK-NEXT: 0020: 14000000 24000000 E00D0000 00000000
// CHECK-NEXT: 0010: 061B2A10 00001B0C 07089001 00000000
// CHECK-NEXT: 0020: 14000000 24000000 14100000 00000000
// CHECK-NEXT: 0030: 00000000 00000000
// CHECK-NEXT: )

View File

@ -8,12 +8,12 @@
# RUN: llvm-objdump -s -dwarf=frames %t | FileCheck %s
# CHECK: Contents of section .eh_frame_hdr:
# CHECK-NEXT: 200190 011b033b 14000000 01000000 700e0000
# CHECK-NEXT: 200190 011b033b 14000000 01000000 54100000
# ^-- 0x201000 - 0x200190
# .text - .eh_frame_hdr
# CHECK-NEXT: 2001a0 30000000
# CHECK: Contents of section .text:
# CHECK-NEXT: 201000 90
# CHECK-NEXT: 2011e4 90
# CHECK: Augmentation: "zLR"
# CHECK: Augmentation data: 00 1B

View File

@ -11,7 +11,7 @@
// CHECK-NEXT: Code alignment factor: 1
// CHECK-NEXT: Data alignment factor: -8
// CHECK-NEXT: Return address column: 16
// CHECK-NEXT: Personality Address: 0000000000000dad
// CHECK-NEXT: Personality Address: 0000000000001029
// CHECK-NEXT: Augmentation data:
// CHECK: DW_CFA_def_cfa: reg7 +8
@ -19,8 +19,8 @@
// CHECK-NEXT: DW_CFA_nop:
// CHECK-NEXT: DW_CFA_nop:
// CHECK: 00000020 00000014 00000024 FDE cie=00000024 pc=00000d98...00000d98
// CHECK-NEXT: LSDA Address: 0000000000000d8f
// CHECK: 00000020 00000014 00000024 FDE cie=00000024 pc=00001014...00001014
// CHECK-NEXT: LSDA Address: 000000000000100b
// CHECK-NEXT: DW_CFA_nop:
// CHECK-NEXT: DW_CFA_nop:
// CHECK-NEXT: DW_CFA_nop:

View File

@ -32,10 +32,10 @@
# CHECK-NEXT: AddressAlignment:
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: SectionData (
# CHECK-NEXT: 0000: 011B033B 1C000000 02000000 A80E0000
# CHECK-NEXT: 0000: 011B033B 1C000000 02000000 6C100000
## ^ ^-- FDE(1) PC
## ^-- Number of FDEs
# CHECK-NEXT: 0010: 38000000 AA0E0000 50000000
# CHECK-NEXT: 0010: 38000000 6E100000 50000000
## ^-- FDE(2) PC
# CHECK-NEXT: )
# CHECK-NEXT: }
@ -60,8 +60,8 @@
# CHECK-NEXT: SectionData (
# CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
# CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
# CHECK-NEXT: 0020: 680E0000 01000000 00000000 00000000
# CHECK-NEXT: 0030: 14000000 34000000 520E0000 01000000
# CHECK-NEXT: 0020: 2C100000 01000000 00000000 00000000
# CHECK-NEXT: 0030: 14000000 34000000 16100000 01000000
# CHECK-NEXT: 0040: 00000000 00000000 00000000
# CHECK-NEXT: )
# CHECK-NEXT: }
@ -74,7 +74,7 @@
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: SHF_EXECINSTR
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x201000
# CHECK-NEXT: Address: 0x2011C4
.section .text.f1, "ax"
.cfi_startproc

View File

@ -41,17 +41,17 @@ _start:
// HDRDISASM: Disassembly of section foo:
// HDRDISASM-EMPTY:
// HDRDISASM-NEXT: foo:
// HDRDISASM-NEXT: 201000: 90 nop
// HDRDISASM-NEXT: 2011e4: 90 nop
// HDRDISASM-EMPTY:
// HDRDISASM-NEXT: Disassembly of section bar:
// HDRDISASM-EMPTY:
// HDRDISASM-NEXT: bar:
// HDRDISASM-NEXT: 201001: 90 nop
// HDRDISASM-NEXT: 2011e5: 90 nop
// HDRDISASM-EMPTY:
// HDRDISASM-NEXT: Disassembly of section dah:
// HDRDISASM-EMPTY:
// HDRDISASM-NEXT: dah:
// HDRDISASM-NEXT: 201002: 90 nop
// HDRDISASM-NEXT: 2011e6: 90 nop
// HDR: Section {
// HDR: Index:
@ -68,23 +68,23 @@ _start:
// HDR-NEXT: AddressAlignment: 4
// HDR-NEXT: EntrySize: 0
// HDR-NEXT: SectionData (
// HDR-NEXT: 0000: 011B033B 24000000 03000000 A80E0000
// HDR-NEXT: 0010: 40000000 A90E0000 58000000 AA0E0000
// HDR-NEXT: 0000: 011B033B 24000000 03000000 8C100000
// HDR-NEXT: 0010: 40000000 8D100000 58000000 8E100000
// HDR-NEXT: 0020: 70000000
// HDR-NEXT: )
// Header (always 4 bytes): 0x011B033B
// 24000000 = .eh_frame(0x200180) - .eh_frame_hdr(0x200158) - 4
// 03000000 = 3 = the number of FDE pointers in the table.
// Entry(1): A80E0000 40000000
// 480E0000 = 0x201000 - .eh_frame_hdr(0x200158) = 0xEA8
// Entry(1): 8C100000 40000000
// 480E0000 = 0x2011e4 - .eh_frame_hdr(0x200158) = 0x108C
// 40000000 = address of FDE(1) - .eh_frame_hdr(0x200158) =
// = .eh_frame(0x200180) + 24 - 0x200158 = 0x40
// Entry(2): A90E0000 58000000
// A90E0000 = 0x201001 - .eh_frame_hdr(0x200158) = 0xEA9
// Entry(2): 8D100000 58000000
// A90E0000 = 0x2011e5 - .eh_frame_hdr(0x200158) = 0x108D
// 58000000 = address of FDE(2) - .eh_frame_hdr(0x200158) =
// = .eh_frame(0x200180) + 24 + 24 - 0x200158 = 0x58
// Entry(3): AA0E0000 70000000
// AA0E0000 = 0x201002 - .eh_frame_hdr(0x200158) = 0xEAA
// Entry(3): 8E100000 70000000
// AA0E0000 = 0x2011e6 - .eh_frame_hdr(0x200158) = 0x108E
// 70000000 = address of FDE(3) - .eh_frame_hdr(0x200158) =
// = .eh_frame(0x200180) + 24 + 24 + 24 - 0x200158 = 0x70
// HDR-NEXT: }
@ -105,10 +105,10 @@ _start:
// HDR-NEXT: SectionData (
// HDR-NEXT: 0000: 14000000 00000000 017A5200 01781001
// HDR-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// HDR-NEXT: 0020: 600E0000 01000000 00000000 00000000
// HDR-NEXT: 0030: 14000000 34000000 490E0000 01000000
// HDR-NEXT: 0020: 44100000 01000000 00000000 00000000
// HDR-NEXT: 0030: 14000000 34000000 2D100000 01000000
// HDR-NEXT: 0040: 00000000 00000000 14000000 4C000000
// HDR-NEXT: 0050: 320E0000 01000000 00000000 00000000
// HDR-NEXT: 0050: 16100000 01000000 00000000 00000000
// HDR-NEXT: 0060: 00000000
// HDR-NEXT: )
// CIE: 14000000 00000000 017A5200 01781001 1B0C0708 90010000

View File

@ -35,10 +35,10 @@
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001 |
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 |
// CHECK-NEXT: 0020: E80D0000 01000000 00000000 00000000 |
// CHECK-NEXT: 0030: 14000000 34000000 D20D0000 02000000 |
// CHECK-NEXT: 0020: 44100000 01000000 00000000 00000000 |
// CHECK-NEXT: 0030: 14000000 34000000 2E100000 02000000 |
// CHECK-NEXT: 0040: 00000000 00000000 14000000 4C000000 |
// CHECK-NEXT: 0050: B90D0000 01000000 00000000 00000000 |
// CHECK-NEXT: 0050: 15100000 01000000 00000000 00000000 |
// CHECK-NEXT: 0060: 00000000
// CHECK-NEXT: )
@ -48,7 +48,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x1000
// CHECK-NEXT: Address: 0x125C
// CHECK: Name: bar
// CHECK-NEXT: Type: SHT_PROGBITS
@ -56,4 +56,4 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x1002
// CHECK-NEXT: Address: 0x125E

View File

@ -4,7 +4,7 @@
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/eh-frame-pcrel-overflow.s -o %t1.o
# RUN: ld.lld --eh-frame-hdr -Ttext=0x90000000 %t.o -o /dev/null
# RUN: not ld.lld --eh-frame-hdr %t.o %t1.o -o /dev/null 2>&1 | FileCheck %s
# CHECK: error: {{.*}}.o:(.eh_frame): PC offset is too large: 0x90000eac
# CHECK: error: {{.*}}.o:(.eh_frame): PC offset is too large: 0x90001054
.text
.global _start

View File

@ -13,20 +13,20 @@
# CHECK-NEXT: Flags [
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x2000
# CHECK-NEXT: Offset: 0x2000
# CHECK-NEXT: Address: 0x2004
# CHECK-NEXT: Offset: 0x1004
# CHECK-NEXT: Size: 20
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
# CHECK-NEXT: AddressAlignment: 4
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: SectionData (
# CHECK-NEXT: 0000: 011B033B 10000000 01000000 34F2FFFF
# CHECK-NEXT: 0000: 011B033B 10000000 01000000 30F2FFFF
# CHECK-NEXT: 0010: 24000000
# Header (always 4 bytes): 011B033B
# 10000000 = .eh_frame(0x2014) - .eh_frame_hdr(0x2000) - 4
# 10000000 = .eh_frame(0x2018) - .eh_frame_hdr(0x2004) - 4
# 01000000 = 1 = the number of FDE pointers in the table.
# 34F2FFFF = foo(0x1000) - 0x234(addend) - .eh_frame_hdr(0x2000)
# 30F2FFFF = foo(0x1000) - 0x234(addend) - .eh_frame_hdr(0x2004)
# CHECK: Section {
# CHECK: Index:
@ -35,8 +35,8 @@
# CHECK-NEXT: Flags [
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x2014
# CHECK-NEXT: Offset: 0x2014
# CHECK-NEXT: Address: 0x2018
# CHECK-NEXT: Offset: 0x1018
# CHECK-NEXT: Size:
# CHECK-NEXT: Link:
# CHECK-NEXT: Info:

View File

@ -13,20 +13,20 @@
# CHECK-NEXT: Flags [
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x2000
# CHECK-NEXT: Offset: 0x2000
# CHECK-NEXT: Address: 0x2004
# CHECK-NEXT: Offset: 0x1004
# CHECK-NEXT: Size: 20
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
# CHECK-NEXT: AddressAlignment: 4
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: SectionData (
# CHECK-NEXT: 0000: 011B033B 10000000 01000000 34F2FFFF
# CHECK-NEXT: 0000: 011B033B 10000000 01000000 30F2FFFF
# CHECK-NEXT: 0010: 24000000
# Header (always 4 bytes): 011B033B
# 10000000 = .eh_frame(0x2014) - .eh_frame_hdr(0x2000) - 4
# 10000000 = .eh_frame(0x2018) - .eh_frame_hdr(0x2004) - 4
# 01000000 = 1 = the number of FDE pointers in the table.
# 34F2FFFF = foo(0x1000) - 0x234(addend) - .eh_frame_hdr(0x2000)
# 30F2FFFF = foo(0x1000) - 0x234(addend) - .eh_frame_hdr(0x2004)
# CHECK: Section {
# CHECK: Index:
@ -35,8 +35,8 @@
# CHECK-NEXT: Flags [
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x2014
# CHECK-NEXT: Offset: 0x2014
# CHECK-NEXT: Address: 0x2018
# CHECK-NEXT: Offset: 0x1018
# CHECK-NEXT: Size:
# CHECK-NEXT: Link:
# CHECK-NEXT: Info:

View File

@ -20,8 +20,8 @@
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: _start:
// DISASM-NEXT: 201000: {{.*}} movq 2097440, %rax
// DISASM-NEXT: 201008: {{.*}} movq 2097445, %rax
// DISASM-NEXT: 201154: {{.*}} movq 2097440, %rax
// DISASM-NEXT: 20115c: {{.*}} movq 2097445, %rax
.section .eh_frame,"ax",@unwind

View File

@ -5,9 +5,9 @@
# CHECK: Relocations [
# CHECK-NEXT: Section (3) .rela.text {
# CHECK-NEXT: 0x201000 R_X86_64_64 .text 0x11
# CHECK-NEXT: 0x201008 R_X86_64_64 .text 0x11
# CHECK-NEXT: 0x201011 R_X86_64_64 .rodata 0x0
# CHECK-NEXT: 0x201128 R_X86_64_64 .text 0x11
# CHECK-NEXT: 0x201130 R_X86_64_64 .text 0x11
# CHECK-NEXT: 0x201139 R_X86_64_64 .rodata 0x0
# CHECK-NEXT: }
# CHECK-NEXT: ]

View File

@ -27,10 +27,10 @@
# CHECK: Relocations [
# CHECK-NEXT: Section {{.*}} .rela.foo {
# CHECK-NEXT: 0x201000 R_X86_64_64 .strings 0x0
# CHECK-NEXT: 0x201008 R_X86_64_64 .strings 0x8
# CHECK-NEXT: 0x201010 R_X86_64_64 .strings 0x8
# CHECK-NEXT: 0x201018 R_X86_64_64 .strings 0x4
# CHECK-NEXT: 0x201120 R_X86_64_64 .strings 0x0
# CHECK-NEXT: 0x201128 R_X86_64_64 .strings 0x8
# CHECK-NEXT: 0x201130 R_X86_64_64 .strings 0x8
# CHECK-NEXT: 0x201138 R_X86_64_64 .strings 0x4
# CHECK-NEXT: }
# CHECK-NEXT: ]

View File

@ -20,10 +20,10 @@
# CHECK-NEXT: ]
# CHECK: Relocations [
# CHECK-NEXT: Section ({{.*}}) .rela.text {
# CHECK-NEXT: 0x201002 R_X86_64_32 .text 0x1
# CHECK-NEXT: 0x201007 R_X86_64_PLT32 fn 0xFFFFFFFFFFFFFFFC
# CHECK-NEXT: 0x20100E R_X86_64_32 .text 0xD
# CHECK-NEXT: 0x201013 R_X86_64_PLT32 fn2 0xFFFFFFFFFFFFFFFC
# CHECK-NEXT: 0x201122 R_X86_64_32 .text 0x1
# CHECK-NEXT: 0x201127 R_X86_64_PLT32 fn 0xFFFFFFFFFFFFFFFC
# CHECK-NEXT: 0x20112E R_X86_64_32 .text 0xD
# CHECK-NEXT: 0x201133 R_X86_64_PLT32 fn2 0xFFFFFFFFFFFFFFFC
# CHECK-NEXT: }
# CHECK-NEXT: ]
# CHECK-NEXT: Symbols [
@ -38,7 +38,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: bar
# CHECK-NEXT: Value: 0x201001
# CHECK-NEXT: Value: 0x201121
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Local
# CHECK-NEXT: Type: None
@ -47,7 +47,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: foo
# CHECK-NEXT: Value: 0x20100D
# CHECK-NEXT: Value: 0x20112D
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Local
# CHECK-NEXT: Type: None
@ -56,7 +56,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name:
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Local
# CHECK-NEXT: Type: Section
@ -74,7 +74,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: fn
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Value: 0x201120
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Global
# CHECK-NEXT: Type: Function
@ -83,7 +83,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: fn2
# CHECK-NEXT: Value: 0x20100C
# CHECK-NEXT: Value: 0x20112C
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Global
# CHECK-NEXT: Type: Function

View File

@ -1,8 +1,8 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/resolution-end.s -o %t2.o
# RUN: ld.lld -shared -o %t2.so %t2.o
# RUN: ld.lld --hash-style=sysv %t1.o %t2.so -o %t
# RUN: ld.lld -shared -soname=so -o %t2.so %t2.o
# RUN: ld.lld %t1.o %t2.so -o %t
# RUN: llvm-readobj --symbols -S --section-data %t | FileCheck %s
# Test that we resolve _end to the this executable.
@ -21,16 +21,16 @@
# CHECK-NEXT: AddressAlignment:
# CHECK-NEXT: EntrySize:
# CHECK-NEXT: SectionData (
# CHECK-NEXT: 0000: 80202000 00000000 80202000 00000000
# CHECK-NEXT: 0000: 08232000 00000000 08232000 00000000
# CHECK-NEXT: )
# CHECK: Symbol {
# CHECK: Name: _end
# CHECK-NEXT: Value: 0x202080
# CHECK-NEXT: Value: 0x202308
# CHECK: Symbol {
# CHECK: Name: end
# CHECK-NEXT: Value: 0x202080
# CHECK-NEXT: Value: 0x202308
.global _start
_start:

View File

@ -12,13 +12,13 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x202000
// CHECK-NEXT: Address: 0x202159
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 6
// CHECK: ]
// CHECK: Symbols [
// CHECK: Name: end
// CHECK-NEXT: Value: 0x202006
// CHECK-NEXT: Value: 0x20215F
// CHECK: ]
.global _start,end

View File

@ -14,13 +14,13 @@
// DEFAULT-NEXT: SHF_ALLOC
// DEFAULT-NEXT: SHF_WRITE
// DEFAULT-NEXT: ]
// DEFAULT-NEXT: Address: 0x202002
// DEFAULT-NEXT: Address: 0x20215B
// DEFAULT-NEXT: Offset:
// DEFAULT-NEXT: Size: 6
// DEFAULT: ]
// DEFAULT: Symbols [
// DEFAULT: Name: _end
// DEFAULT-NEXT: Value: 0x202008
// DEFAULT-NEXT: Value: 0x202161
// DEFAULT: ]
// RUN: ld.lld -r %t.o -o %t2

View File

@ -4,14 +4,14 @@
# RUN: ld.lld -e foobar %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN1 %s
# RUN: llvm-readobj --file-headers %t2 | FileCheck -check-prefix=TEXT %s
# WARN1: warning: cannot find entry symbol foobar; defaulting to 0x201000
# TEXT: Entry: 0x201000
# WARN1: warning: cannot find entry symbol foobar; defaulting to 0x201120
# TEXT: Entry: 0x201120
# RUN: ld.lld %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN2 %s
# WARN2: warning: cannot find entry symbol _start; defaulting to 0x201000
# WARN2: warning: cannot find entry symbol _start; defaulting to 0x201120
# RUN: ld.lld -shared -e foobar %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN3 %s
# WARN3: warning: cannot find entry symbol foobar; defaulting to 0x1000
# WARN3: warning: cannot find entry symbol foobar; defaulting to 0x1238
# RUN: ld.lld -shared --fatal-warnings -e entry %t1 -o %t2
# RUN: ld.lld -shared --fatal-warnings %t1 -o %t2
@ -29,11 +29,11 @@
# RUN: ld.lld %t1 -o %t2 -e entry
# RUN: llvm-readobj --file-headers %t2 | FileCheck -check-prefix=SYM %s
# SYM: Entry: 0x201008
# SYM: Entry: 0x201128
# RUN: ld.lld %t1 --fatal-warnings -shared -o %t2 -e entry
# RUN: llvm-readobj --file-headers %t2 | FileCheck -check-prefix=DSO %s
# DSO: Entry: 0x1008
# DSO: Entry: 0x1240
# RUN: ld.lld %t1 -o %t2 --entry=4096
# RUN: llvm-readobj --file-headers %t2 | FileCheck -check-prefix=DEC %s

View File

@ -17,7 +17,8 @@
# CHECK: ProgramHeader {
# CHECK: Type: PT_LOAD
# CHECK: Offset: 0x1000
# PAD: Offset: 0x1000
# NOPAD: Offset: 0x120
# CHECK-NEXT: VirtualAddress:
# CHECK-NEXT: PhysicalAddress:
# PAD-NEXT: FileSize: 4096

View File

@ -5,8 +5,8 @@
# CHECK: .gdb_index contents:
# CHECK: Address area offset = 0x28, has 2 entries:
# CHECK-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201003, 0x201006) (Size: 0x3), CU id = 0
# CHECK-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201123, 0x201126) (Size: 0x3), CU id = 0
.text
.globl foo

View File

@ -4,7 +4,7 @@
# RUN: llvm-dwarfdump -gdb-index %t | FileCheck %s
# CHECK: Address area offset = 0x28, has 1 entries:
# CHECK-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0
.text
.globl main

View File

@ -4,7 +4,7 @@
# RUN: llvm-dwarfdump -gdb-index %t2 | FileCheck %s
# CHECK: Address area offset = 0x28, has 1 entries:
# CHECK-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201154, 0x201155) (Size: 0x1), CU id = 0
# Generated with: (clang r302976)
# echo "void _start() {} void dead() {}" | \

View File

@ -5,7 +5,7 @@
# CHECK: .gdb_index contents:
# CHECK: Address area offset = 0x28, has 1 entries:
# CHECK-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0
## .debug_ranges contains 2 entries. .Lfunc_end0 is defined in the discarded
## .text.foo. Test we resolve it to a non-zero value, otherwise the address area

View File

@ -5,8 +5,8 @@
# CHECK: .gdb_index contents:
# CHECK: Address area offset = 0x28, has 2 entries:
# CHECK-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201001, 0x201003) (Size: 0x2), CU id = 0
# CHECK-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201121, 0x201123) (Size: 0x2), CU id = 0
.section .text.foo1,"ax",@progbits
.Lfunc_begin0:

View File

@ -14,8 +14,8 @@
# CHECK: .gdb_index contents:
# CHECK: Address area offset = 0x28, has 2 entries:
# CHECK-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201001, 0x201003) (Size: 0x2), CU id = 0
# CHECK-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0
# CHECK-NEXT: Low/High address = [0x201121, 0x201123) (Size: 0x2), CU id = 0
.text
.section .text._Z3zedv,"ax",@progbits

View File

@ -32,8 +32,8 @@
# DWARF-NEXT: 0: Offset = 0x0, Length = 0x34
# DWARF-NEXT: 1: Offset = 0x34, Length = 0x34
# DWARF: Address area offset = 0x38, has 2 entries:
# DWARF-NEXT: Low/High address = [0x201000, 0x201001) (Size: 0x1), CU id = 0
# DWARF-NEXT: Low/High address = [0x201004, 0x201006) (Size: 0x2), CU id = 1
# DWARF-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0
# DWARF-NEXT: Low/High address = [0x201124, 0x201126) (Size: 0x2), CU id = 1
# DWARF: Symbol table offset = 0x60, size = 1024, filled slots:
# DWARF-NEXT: 512: Name offset = 0x1c, CU vector offset = 0x0
# DWARF-NEXT: String name: aaaaaaaaaaaaaaaa, CU vector index: 0

View File

@ -5,7 +5,7 @@
.long _GLOBAL_OFFSET_TABLE_ - .
// CHECK: Name: _GLOBAL_OFFSET_TABLE_
// CHECK-NEXT: Value: 0x3000
// CHECK-NEXT: Value: 0x3290
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None

View File

@ -59,18 +59,18 @@
// Make sure the static relocations look right, both with and without headers.
// DUMP: Contents of section .plt:
// DUMP-NEXT: 201010
// DUMP-NEXT: 2011f0
// DUMP: Contents of section .got:
// DUMP-NEXT: 202000 10102000 00000000
// DUMP-NEXT: 202200 f0112000 00000000
// DUMP: Contents of section .data:
// DUMP-NEXT: 203000 10102000 00000000 11102000 00000000
// DUMP-NEXT: 203208 f0112000 00000000 f1112000 00000000
// DUMP2: Contents of section .plt:
// DUMP2-NEXT: 201010
// DUMP2-NEXT: 2011f0
// DUMP2: Contents of section .got:
// DUMP2-NEXT: 202000 40102000 00000000
// DUMP2-NEXT: 202240 20122000 00000000
// DUMP2: Contents of section .data:
// DUMP2-NEXT: 203000 40102000 00000000 41102000 00000000
// DUMP2-NEXT: 203248 20122000 00000000 21122000 00000000
lea ifunc@gotpcrel(%rip), %rbx

View File

@ -9,7 +9,7 @@
# CHECK: Name Size VMA
# CHECK: .rela.dyn 00000030 0000000000000248
# CHECK: .got.plt 00000010 0000000000003000
# CHECK: .got.plt 00000010 00000000000033a0
# TAGS: Relocations [
# TAGS-NEXT: Section {{.*}} .rela.dyn {
@ -23,7 +23,7 @@
# TAGS: 0x0000000000000008 RELASZ 48 (bytes)
# TAGS: 0x0000000000000017 JMPREL 0x0
# TAGS: 0x0000000000000002 PLTRELSZ 0 (bytes)
# TAGS: 0x0000000000000003 PLTGOT 0x3000
# TAGS: 0x0000000000000003 PLTGOT 0x33A0
# TAGS: 0x0000000000000014 PLTREL RELA
.text

View File

@ -12,45 +12,45 @@
// Check that we emitted relocations for the ifunc calls
// CHECK: Relocations [
// CHECK-NEXT: Section (4) .rela.dyn {
// CHECK-NEXT: 0x201008 R_X86_64_PLT32 bar 0xFFFFFFFFFFFFFFFC
// CHECK-NEXT: 0x201003 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
// CHECK-NEXT: 0x201328 R_X86_64_PLT32 bar 0xFFFFFFFFFFFFFFFC
// CHECK-NEXT: 0x201323 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
// CHECK-NEXT: }
// CHECK-NEXT: Section (5) .rela.plt {
// CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar2 0x0
// CHECK-NEXT: 0x203020 R_X86_64_JUMP_SLOT zed2 0x0
// CHECK-NEXT: 0x203498 R_X86_64_JUMP_SLOT bar2 0x0
// CHECK-NEXT: 0x2034A0 R_X86_64_JUMP_SLOT zed2 0x0
// CHECK-NEXT: }
// Check that ifunc call sites still require relocation
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: 0000000000201000 foo:
// DISASM-NEXT: 201000: retq
// DISASM-NEXT: 0000000000201320 foo:
// DISASM-NEXT: 201320: retq
// DISASM-EMPTY:
// DISASM-NEXT: 0000000000201001 bar:
// DISASM-NEXT: 201001: retq
// DISASM-NEXT: 0000000000201321 bar:
// DISASM-NEXT: 201321: retq
// DISASM-EMPTY:
// DISASM-NEXT: 0000000000201002 _start:
// DISASM-NEXT: 201002: callq 0 <_start+0x5>
// DISASM-NEXT: 201007: callq 0 <_start+0xa>
// DISASM-NEXT: 20100c: callq 31 <bar2@plt>
// DISASM-NEXT: 201011: callq 42 <zed2@plt>
// DISASM-NEXT: 0000000000201322 _start:
// DISASM-NEXT: 201322: callq 0 <_start+0x5>
// DISASM-NEXT: 201327: callq 0 <_start+0xa>
// DISASM-NEXT: 20132c: callq 31 <bar2@plt>
// DISASM-NEXT: 201331: callq 42 <zed2@plt>
// DISASM-EMPTY:
// DISASM-NEXT: Disassembly of section .plt:
// DISASM-EMPTY:
// DISASM-NEXT: 0000000000201020 .plt:
// DISASM-NEXT: 201020: pushq 8162(%rip)
// DISASM-NEXT: 201026: jmpq *8164(%rip)
// DISASM-NEXT: 20102c: nopl (%rax)
// DISASM-NEXT: 0000000000201340 .plt:
// DISASM-NEXT: 201340: pushq 8514(%rip)
// DISASM-NEXT: 201346: jmpq *8516(%rip)
// DISASM-NEXT: 20134c: nopl (%rax)
// DISASM-EMPTY:
// DISASM-NEXT: 0000000000201030 bar2@plt:
// DISASM-NEXT: 201030: jmpq *8162(%rip)
// DISASM-NEXT: 201036: pushq $0
// DISASM-NEXT: 20103b: jmp -32 <.plt>
// DISASM-NEXT: 0000000000201350 bar2@plt:
// DISASM-NEXT: 201350: jmpq *8514(%rip)
// DISASM-NEXT: 201356: pushq $0
// DISASM-NEXT: 20135b: jmp -32 <.plt>
// DISASM-EMPTY:
// DISASM-NEXT: 0000000000201040 zed2@plt:
// DISASM-NEXT: 201040: jmpq *8154(%rip)
// DISASM-NEXT: 201046: pushq $1
// DISASM-NEXT: 20104b: jmp -48 <.plt>
// DISASM-NEXT: 0000000000201360 zed2@plt:
// DISASM-NEXT: 201360: jmpq *8506(%rip)
// DISASM-NEXT: 201366: pushq $1
// DISASM-NEXT: 20136b: jmp -48 <.plt>
.text
.type foo STT_GNU_IFUNC

View File

@ -13,20 +13,20 @@
// Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt
// CHECK: Relocations [
// CHECK-NEXT: Section (4) .rela.dyn {
// CHECK-NEXT: 0x203028 R_X86_64_IRELATIVE - 0x201000
// CHECK-NEXT: 0x203030 R_X86_64_IRELATIVE - 0x201001
// CHECK-NEXT: 0x203458 R_X86_64_IRELATIVE - 0x2012D8
// CHECK-NEXT: 0x203460 R_X86_64_IRELATIVE - 0x2012D9
// CHECK-NEXT: }
// CHECK-NEXT: Section (5) .rela.plt {
// CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar2 0x0
// CHECK-NEXT: 0x203020 R_X86_64_JUMP_SLOT zed2 0x0
// CHECK-NEXT: 0x203448 R_X86_64_JUMP_SLOT bar2 0x0
// CHECK-NEXT: 0x203450 R_X86_64_JUMP_SLOT zed2 0x0
// CHECK-NEXT: }
// Check that .got.plt entries point back to PLT header
// GOTPLT: Contents of section .got.plt:
// GOTPLT-NEXT: 203000 00202000 00000000 00000000 00000000
// GOTPLT-NEXT: 203010 00000000 00000000 36102000 00000000
// GOTPLT-NEXT: 203020 46102000 00000000 56102000 00000000
// GOTPLT-NEXT: 203030 66102000 00000000
// GOTPLT-NEXT: 203430 40232000 00000000 00000000 00000000
// GOTPLT-NEXT: 203440 00000000 00000000 06132000 00000000
// GOTPLT-NEXT: 203450 16132000 00000000 26132000 00000000
// GOTPLT-NEXT: 203460 36132000 00000000
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
// CHECK: DynamicSection [
@ -37,37 +37,37 @@
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: foo:
// DISASM-NEXT: 201000: retq
// DISASM-NEXT: 2012d8: retq
// DISASM: bar:
// DISASM-NEXT: 201001: retq
// DISASM-NEXT: 2012d9: retq
// DISASM: _start:
// DISASM-NEXT: 201002: callq 73
// DISASM-NEXT: 201007: callq 84
// DISASM-NEXT: 2012da: callq 65
// DISASM-NEXT: 2012df: callq 76
// DISASM-NEXT: callq {{.*}} <bar2@plt>
// DISASM-NEXT: callq {{.*}} <zed2@plt>
// DISASM-EMPTY:
// DISASM-NEXT: Disassembly of section .plt:
// DISASM-EMPTY:
// DISASM-NEXT: .plt:
// DISASM-NEXT: 201020: pushq 8162(%rip)
// DISASM-NEXT: 201026: jmpq *8164(%rip)
// DISASM-NEXT: 20102c: nopl (%rax)
// DISASM-NEXT: 2012f0: pushq 8514(%rip)
// DISASM-NEXT: 2012f6: jmpq *8516(%rip)
// DISASM-NEXT: 2012fc: nopl (%rax)
// DISASM-EMPTY:
// DISASM-NEXT: bar2@plt:
// DISASM-NEXT: 201030: jmpq *8162(%rip)
// DISASM-NEXT: 201036: pushq $0
// DISASM-NEXT: 20103b: jmp -32 <.plt>
// DISASM-NEXT: 201300: jmpq *8514(%rip)
// DISASM-NEXT: 201306: pushq $0
// DISASM-NEXT: 20130b: jmp -32 <.plt>
// DISASM-EMPTY:
// DISASM-NEXT: zed2@plt:
// DISASM-NEXT: 201040: jmpq *8154(%rip)
// DISASM-NEXT: 201046: pushq $1
// DISASM-NEXT: 20104b: jmp -48 <.plt>
// DISASM-NEXT: 201050: jmpq *8146(%rip)
// DISASM-NEXT: 201056: pushq $0
// DISASM-NEXT: 20105b: jmp -32 <zed2@plt>
// DISASM-NEXT: 201060: jmpq *8138(%rip)
// DISASM-NEXT: 201066: pushq $1
// DISASM-NEXT: 20106b: jmp -48 <zed2@plt>
// DISASM-NEXT: 201310: jmpq *8506(%rip)
// DISASM-NEXT: 201316: pushq $1
// DISASM-NEXT: 20131b: jmp -48 <.plt>
// DISASM-NEXT: 201320: jmpq *8498(%rip)
// DISASM-NEXT: 201326: pushq $0
// DISASM-NEXT: 20132b: jmp -32 <zed2@plt>
// DISASM-NEXT: 201330: jmpq *8490(%rip)
// DISASM-NEXT: 201336: pushq $1
// DISASM-NEXT: 20133b: jmp -48 <zed2@plt>
.text
.type foo STT_GNU_IFUNC

View File

@ -12,44 +12,44 @@
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: fct:
// DISASM-NEXT: 1000: retq
// DISASM-NEXT: 1308: retq
// DISASM: fct2:
// DISASM-NEXT: 1001: retq
// DISASM-NEXT: 1309: retq
// DISASM: f1:
// DISASM-NEXT: 1002: callq 73
// DISASM-NEXT: 1007: callq 36
// DISASM-NEXT: 100c: callq 47
// DISASM-NEXT: 1011: retq
// DISASM-NEXT: 130a: callq 65
// DISASM-NEXT: 130f: callq 28
// DISASM-NEXT: 1314: callq 39
// DISASM-NEXT: 1319: retq
// DISASM: f2:
// DISASM-NEXT: 1012: retq
// DISASM-NEXT: 131a: retq
// DISASM-EMPTY:
// DISASM-NEXT: Disassembly of section .plt:
// DISASM-EMPTY:
// DISASM-NEXT: .plt:
// DISASM-NEXT: 1020: pushq 8162(%rip)
// DISASM-NEXT: 1026: jmpq *8164(%rip)
// DISASM-NEXT: 102c: nopl (%rax)
// DISASM-NEXT: 1320: pushq 8482(%rip)
// DISASM-NEXT: 1326: jmpq *8484(%rip)
// DISASM-NEXT: 132c: nopl (%rax)
// DISASM-EMPTY:
// DISASM-NEXT: fct2@plt:
// DISASM-NEXT: 1030: jmpq *8162(%rip)
// DISASM-NEXT: 1036: pushq $0
// DISASM-NEXT: 103b: jmp -32 <.plt>
// DISASM-NEXT: 1330: jmpq *8482(%rip)
// DISASM-NEXT: 1336: pushq $0
// DISASM-NEXT: 133b: jmp -32 <.plt>
// DISASM-EMPTY:
// DISASM-NEXT: f2@plt:
// DISASM-NEXT: 1040: jmpq *8154(%rip)
// DISASM-NEXT: 1046: pushq $1
// DISASM-NEXT: 104b: jmp -48 <.plt>
// DISASM-NEXT: 1050: jmpq *8146(%rip)
// DISASM-NEXT: 1056: pushq $0
// DISASM-NEXT: 105b: jmp -32 <f2@plt>
// DISASM-NEXT: 1340: jmpq *8474(%rip)
// DISASM-NEXT: 1346: pushq $1
// DISASM-NEXT: 134b: jmp -48 <.plt>
// DISASM-NEXT: 1350: jmpq *8466(%rip)
// DISASM-NEXT: 1356: pushq $0
// DISASM-NEXT: 135b: jmp -32 <f2@plt>
// CHECK: Relocations [
// CHECK-NEXT: Section (5) .rela.dyn {
// CHECK-NEXT: 0x3028 R_X86_64_IRELATIVE - 0x1000
// CHECK-NEXT: 0x3468 R_X86_64_IRELATIVE - 0x1308
// CHECK-NEXT: }
// CHECK-NEXT: Section (6) .rela.plt {
// CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT fct2 0x0
// CHECK-NEXT: 0x3020 R_X86_64_JUMP_SLOT f2 0x0
// CHECK-NEXT: 0x3458 R_X86_64_JUMP_SLOT fct2 0x0
// CHECK-NEXT: 0x3460 R_X86_64_JUMP_SLOT f2 0x0
// CHECK-NEXT: }
// Hidden expect IRELATIVE

View File

@ -24,8 +24,8 @@
// CHECK-NEXT: Name: .got.plt
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x202000 R_X86_64_IRELATIVE
// CHECK-NEXT: 0x202008 R_X86_64_IRELATIVE
// CHECK-NEXT: 0x2021D0 R_X86_64_IRELATIVE
// CHECK-NEXT: 0x2021D8 R_X86_64_IRELATIVE
// CHECK-NEXT: }
// CHECK-NEXT: ]
// CHECK: Symbols [
@ -62,7 +62,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x201002
// CHECK-NEXT: Value: 0x20118A
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None
@ -71,7 +71,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: bar
// CHECK-NEXT: Value: 0x201001
// CHECK-NEXT: Value: 0x201189
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: GNU_IFunc
@ -80,7 +80,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: foo
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Value: 0x201188
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: GNU_IFunc
@ -92,25 +92,25 @@
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: foo:
// DISASM-NEXT: 201000: {{.*}} retq
// DISASM-NEXT: 201188: {{.*}} retq
// DISASM: bar:
// DISASM-NEXT: 201001: {{.*}} retq
// DISASM-NEXT: 201189: {{.*}} retq
// DISASM: _start:
// DISASM-NEXT: 201002: {{.*}} callq 25
// DISASM-NEXT: 201007: {{.*}} callq 36
// DISASM-NEXT: 20100c: {{.*}} movl $2097496, %edx
// DISASM-NEXT: 201011: {{.*}} movl $2097544, %edx
// DISASM-NEXT: 201016: {{.*}} movl $2097545, %edx
// DISASM-NEXT: 20118a: {{.*}} callq 33
// DISASM-NEXT: 20118f: {{.*}} callq 44
// DISASM-NEXT: 201194: {{.*}} movl $2097496, %edx
// DISASM-NEXT: 201199: {{.*}} movl $2097544, %edx
// DISASM-NEXT: 20119e: {{.*}} movl $2097545, %edx
// DISASM-EMPTY:
// DISASM-NEXT: Disassembly of section .plt:
// DISASM-EMPTY:
// DISASM-NEXT: .plt:
// DISASM-NEXT: 201020: {{.*}} jmpq *4058(%rip)
// DISASM-NEXT: 201026: {{.*}} pushq $0
// DISASM-NEXT: 20102b: {{.*}} jmp -32 <_start+0xe>
// DISASM-NEXT: 201030: {{.*}} jmpq *4050(%rip)
// DISASM-NEXT: 201036: {{.*}} pushq $1
// DISASM-NEXT: 20103b: {{.*}} jmp -48 <_start+0xe>
// DISASM-NEXT: 2011b0: {{.*}} jmpq *4122(%rip)
// DISASM-NEXT: 2011b6: {{.*}} pushq $0
// DISASM-NEXT: 2011bb: {{.*}} jmp -32 <_start+0x16>
// DISASM-NEXT: 2011c0: {{.*}} jmpq *4114(%rip)
// DISASM-NEXT: 2011c6: {{.*}} pushq $1
// DISASM-NEXT: 2011cb: {{.*}} jmp -48 <_start+0x16>
.text
.type foo STT_GNU_IFUNC

View File

@ -1,7 +1,7 @@
// REQUIRES: x86
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2.o
// RUN: ld.lld -shared %t2.o -o %t2.so
// RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so
// RUN: ld.lld --hash-style=sysv %t.o %t2.so -o %t
// RUN: llvm-readobj -S -r %t | FileCheck %s
// RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
@ -12,7 +12,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x2020B0
// CHECK-NEXT: Address: 0x202338
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 16
// CHECK-NEXT: Link: 0
@ -21,22 +21,22 @@
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x2020B0 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: 0x2020B8 R_X86_64_GLOB_DAT zed 0x0
// CHECK-NEXT: 0x202338 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: 0x202340 R_X86_64_GLOB_DAT zed 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]
// Unfortunately FileCheck can't do math, so we have to check for explicit
// values:
// 0x2020B0 - (0x201000 + 2) - 4 = 4266
// 0x2020B0 - (0x201006 + 2) - 4 = 4260
// 0x2020A8 - (0x20100c + 2) - 4 = 4262
// 0x202338 - (0x201270 + 2) - 4 = 4290
// 0x202338 - (0x201276 + 2) - 4 = 4284
// 0x202340 - (0x20127c + 2) - 4 = 4286
// DISASM: _start:
// DISASM-NEXT: 201000: {{.*}} jmpq *4266(%rip)
// DISASM-NEXT: 201006: {{.*}} jmpq *4260(%rip)
// DISASM-NEXT: 20100c: {{.*}} jmpq *4262(%rip)
// DISASM-NEXT: 201270: {{.*}} jmpq *4290(%rip)
// DISASM-NEXT: 201276: {{.*}} jmpq *4284(%rip)
// DISASM-NEXT: 20127c: {{.*}} jmpq *4286(%rip)
.global _start
_start:

View File

@ -44,9 +44,9 @@ _start:
# CHECK-NEXT: }
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: VirtualAddress: 0x1001000
# CHECK-NEXT: PhysicalAddress: 0x1001000
# CHECK-NEXT: Offset: 0x120
# CHECK-NEXT: VirtualAddress: 0x1001120
# CHECK-NEXT: PhysicalAddress: 0x1001120
# CHECK-NEXT: FileSize: 1
# CHECK-NEXT: MemSize: 1
# CHECK-NEXT: Flags [ (0x5)

View File

@ -6,7 +6,7 @@
# RUN: ld.lld -just-symbols=%t1.exe -o %t2.exe
# RUN: llvm-readelf -symbols %t2.exe | FileCheck %s
# CHECK: 0000000000011000 40 OBJECT GLOBAL DEFAULT ABS bar
# CHECK: 0000000000011001 40 OBJECT GLOBAL DEFAULT ABS bar
# CHECK: 0000000000010000 0 NOTYPE GLOBAL DEFAULT ABS foo
.globl foo, bar

View File

@ -19,7 +19,7 @@
# CHECK-NEXT: }
# CHECK-RHS: Name: foo
# CHECK-RHS-NEXT: Value: 0x201001
# CHECK-RHS-NEXT: Value: 0x201121
# CHECK-RHS-NEXT: Size:
# CHECK-RHS-NEXT: Binding:
# CHECK-RHS-NEXT: Type:

View File

@ -19,9 +19,9 @@
# CHECK-NEXT: }
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD
# CHECK-NEXT: Offset: 0x4000
# CHECK-NEXT: VirtualAddress: 0x204000
# CHECK-NEXT: PhysicalAddress: 0x204000
# CHECK-NEXT: Offset: 0x158
# CHECK-NEXT: VirtualAddress: 0x204158
# CHECK-NEXT: PhysicalAddress: 0x204158
# CHECK-NEXT: FileSize: 1
# CHECK-NEXT: MemSize: 1
# CHECK-NEXT: Flags [
@ -32,9 +32,9 @@
# CHECK-NEXT: }
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD
# CHECK-NEXT: Offset: 0x8000
# CHECK-NEXT: VirtualAddress: 0x208000
# CHECK-NEXT: PhysicalAddress: 0x208000
# CHECK-NEXT: Offset: 0x159
# CHECK-NEXT: VirtualAddress: 0x208159
# CHECK-NEXT: PhysicalAddress: 0x208159
# CHECK-NEXT: FileSize: 8
# CHECK-NEXT: MemSize: 8
# CHECK-NEXT: Flags [

View File

@ -34,7 +34,7 @@
# RUN: ld.lld -o %t1 %t %t.script
# RUN: llvm-objdump -t %t1 | FileCheck --check-prefix=RELATIVE %s
# RELATIVE: 0000000000202005 .text 00000000 .hidden newsym
# RELATIVE: 0000000000201007 .text 00000000 _end
# RELATIVE: 0000000000201127 .text 00000000 _end
# RUN: echo "PROVIDE_HIDDEN(newsym = ALIGN(_end, CONSTANT(MAXPAGESIZE)) + 5);" > %t.script
# RUN: ld.lld -o %t1 --script %p/Inputs/symbol-reserved.script %t %t.script

View File

@ -7,5 +7,5 @@
PROVIDE_HIDDEN(_begin_sec = _start);
PROVIDE_HIDDEN(_end_sec = ADDR(.text) + SIZEOF(.text));
# CHECK: 0000000000201000 .text 00000000 .hidden _begin_sec
# CHECK-NEXT: 0000000000201001 .text 00000000 .hidden _end_sec
# CHECK: 00000000002011ac .text 00000000 .hidden _begin_sec
# CHECK-NEXT: 00000000002011ad .text 00000000 .hidden _end_sec

View File

@ -13,13 +13,13 @@ _start:
foo:
nop
// 0x20B0 - 1001 - 5 = 4266
// 0x22C8 - 0x1210 - 5 = 4275
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: _start:
// DISASM-NEXT: 1000: {{.*}} callq 4267
// DISASM-NEXT: 1210: {{.*}} callq 4275
// DISASM: foo:
// DISASM-NEXT: 1005: {{.*}} nop
// DISASM-NEXT: 1215: {{.*}} nop
// CHECK: Name: .got
// CHECK-NEXT: Type: SHT_PROGBITS
@ -27,13 +27,13 @@ foo:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x20B0
// CHECK-NEXT: Address: 0x22C8
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 8
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x20B0 R_X86_64_RELATIVE - 0x1005
// CHECK-NEXT: 0x22C8 R_X86_64_RELATIVE - 0x1215
// CHECK-NEXT: }
// CHECK-NEXT: ]
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1

View File

@ -12,12 +12,12 @@ bar:
foo:
nop
// 0x20B0 - 0x1000 - 5 = 4267
// 0x22E0 - 0x1228 - 5 = 4275
// DISASM: bar:
// DISASM-NEXT: 1000: callq 4267
// DISASM-NEXT: 1228: callq 4275
// DISASM: foo:
// DISASM-NEXT: 1005: nop
// DISASM-NEXT: 122d: nop
// CHECK: Name: .got
// CHECK-NEXT: Type: SHT_PROGBITS
@ -25,13 +25,13 @@ foo:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x20B0
// CHECK-NEXT: Address: 0x22E0
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 8
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x20B0 R_X86_64_RELATIVE - 0x1005
// CHECK-NEXT: 0x22E0 R_X86_64_RELATIVE - 0x122D
// CHECK-NEXT: }
// CHECK-NEXT: ]
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1

View File

@ -15,14 +15,14 @@ _start:
foo:
nop
// 0x2020C0 - 0x201000 - 5 = 4283
// 0x2020C8 - 0x201005 - 5 = 4286
// 0x202320 - 0x201250 - 5 = 4299
// 0x202328 - 0x201255 - 5 = 4302
// DISASM: _start:
// DISASM-NEXT: 201000: callq 4283
// DISASM-NEXT: 201005: callq 4286
// DISASM: foo:
// DISASM-NEXT: 20100a: nop
// DISASM-NEXT: 201250: callq 4299
// DISASM-NEXT: 201255: callq 4302
// DISASM: foo:
// DISASM-NEXT: 20125a: nop
// CHECK: Name: .got
// CHECK-NEXT: Type: SHT_PROGBITS
@ -30,7 +30,7 @@ foo:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x2020C0
// CHECK-NEXT: Address: 0x202320
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 16
// CHECK-NEXT: Link: 0
@ -38,11 +38,11 @@ foo:
// CHECK-NEXT: AddressAlignment: 8
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 00000000 00000000 0A102000 00000000
// CHECK-NEXT: 0000: 00000000 00000000 5A122000 00000000
// CHECK-NEXT: )
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x2020C0 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: 0x202320 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]

View File

@ -57,44 +57,43 @@ labs = 0x1AB5
// CHECK-NEXT: 200368 200368 2c 1 {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x0)
// CHECK-NEXT: 200398 200398 14 1 {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x2c)
// CHECK-NEXT: 2003b0 2003b0 18 1 {{.*}}{{/|\\}}map-file.s.tmp2.o:(.eh_frame+0x18)
// CHECK-NEXT: 201000 201000 2d 4 .text
// CHECK-NEXT: 201000 201000 28 4 {{.*}}{{/|\\}}map-file.s.tmp1.o:(.text)
// CHECK-NEXT: 201000 201000 0 1 _start
// CHECK-NEXT: 20101f 20101f 0 1 f(int)
// CHECK-NEXT: 201028 201028 0 1 local
// CHECK-NEXT: 201028 201028 2 4 {{.*}}{{/|\\}}map-file.s.tmp2.o:(.text)
// CHECK-NEXT: 201028 201028 0 1 foo
// CHECK-NEXT: 201029 201029 0 1 bar
// CHECK-NEXT: 20102a 20102a 0 1 {{.*}}{{/|\\}}map-file.s.tmp2.o:(.text.zed)
// CHECK-NEXT: 20102a 20102a 0 1 zed
// CHECK-NEXT: 20102c 20102c 0 4 {{.*}}{{/|\\}}map-file.s.tmp3.o:(.text)
// CHECK-NEXT: 20102c 20102c 0 1 bah
// CHECK-NEXT: 20102c 20102c 1 4 {{.*}}{{/|\\}}map-file.s.tmp4.a(map-file.s.tmp4.o):(.text)
// CHECK-NEXT: 20102c 20102c 0 1 baz
// CHECK-NEXT: 201030 201030 30 16 .plt
// CHECK-NEXT: 201030 201030 30 16 <internal>:(.plt)
// CHECK-NEXT: 201040 201040 0 1 sharedFunc1
// CHECK-NEXT: 201050 201050 0 1 sharedFunc2
// CHECK-NEXT: 202000 202000 100 8 .dynamic
// CHECK-NEXT: 202000 202000 100 8 <internal>:(.dynamic)
// CHECK-NEXT: 203000 203000 28 8 .got.plt
// CHECK-NEXT: 203000 203000 28 8 <internal>:(.got.plt)
// CHECK-NEXT: 203030 203030 10 16 .bss
// CHECK-NEXT: 203030 203030 4 16 {{.*}}{{/|\\}}map-file.s.tmp1.o:(COMMON)
// CHECK-NEXT: 203030 203030 4 1 common
// CHECK-NEXT: 203034 203034 4 1 <internal>:(.bss)
// CHECK-NEXT: 203034 203034 4 1 sharedFoo
// CHECK-NEXT: 203038 203038 8 1 <internal>:(.bss)
// CHECK-NEXT: 203038 203038 8 1 sharedBar
// CHECK-NEXT: 0 0 8 1 .comment
// CHECK-NEXT: 0 0 8 1 <internal>:(.comment)
// CHECK-NEXT: 0 0 198 8 .symtab
// CHECK-NEXT: 0 0 198 8 <internal>:(.symtab)
// CHECK-NEXT: 0 0 84 1 .shstrtab
// CHECK-NEXT: 0 0 84 1 <internal>:(.shstrtab)
// CHECK-NEXT: 0 0 6d 1 .strtab
// CHECK-NEXT: 0 0 6d 1 <internal>:(.strtab)
// CHECK-NEXT: 2013cc 2013cc 2d 4 .text
// CHECK-NEXT: 2013cc 2013cc 28 4 {{.*}}{{/|\\}}map-file.s.tmp1.o:(.text)
// CHECK-NEXT: 2013cc 2013cc 0 1 _start
// CHECK-NEXT: 2013eb 2013eb 0 1 f(int)
// CHECK-NEXT: 2013f4 2013f4 0 1 local
// CHECK-NEXT: 2013f4 2013f4 2 4 {{.*}}{{/|\\}}map-file.s.tmp2.o:(.text)
// CHECK-NEXT: 2013f4 2013f4 0 1 foo
// CHECK-NEXT: 2013f5 2013f5 0 1 bar
// CHECK-NEXT: 2013f6 2013f6 0 1 {{.*}}{{/|\\}}map-file.s.tmp2.o:(.text.zed)
// CHECK-NEXT: 2013f6 2013f6 0 1 zed
// CHECK-NEXT: 2013f8 2013f8 0 4 {{.*}}{{/|\\}}map-file.s.tmp3.o:(.text)
// CHECK-NEXT: 2013f8 2013f8 0 1 bah
// CHECK-NEXT: 2013f8 2013f8 1 4 {{.*}}{{/|\\}}map-file.s.tmp4.a(map-file.s.tmp4.o):(.text)
// CHECK-NEXT: 2013f8 2013f8 0 1 baz
// CHECK-NEXT: 201400 201400 30 16 .plt
// CHECK-NEXT: 201400 201400 30 16 <internal>:(.plt)
// CHECK-NEXT: 201410 201410 0 1 sharedFunc1
// CHECK-NEXT: 201420 201420 0 1 sharedFunc2
// CHECK-NEXT: 202430 202430 100 8 .dynamic
// CHECK-NEXT: 202430 202430 100 8 <internal>:(.dynamic)
// CHECK-NEXT: 203530 203530 28 8 .got.plt
// CHECk-NEXT: 203530 203530 28 8 <internal>:(.got.plt)
// CHECk-NEXT: 203560 203560 10 16 .bss
// CHECk-NEXT: 203560 203560 4 16 {{.*}}{{/|\\}}map-file.s.tmp1.o:(COMMON)
// CHECk-NEXT: 203560 203560 4 1 common
// CHECk-NEXT: 203564 203564 4 1 <internal>:(.bss)
// CHECk-NEXT: 203564 203564 4 1 sharedFoo
// CHECk-NEXT: 203568 203568 8 1 <internal>:(.bss)
// CHECk-NEXT: 203568 203568 8 1 sharedBar
// CHECk-NEXT: 0 0 48 1 .comment
// CHECk-NEXT: 0 0 48 1 <internal>:(.comment)
// CHECk-NEXT: 0 0 198 8 .symtab
// CHECk-NEXT: 0 0 198 8 <internal>:(.symtab)
// CHECk-NEXT: 0 0 84 1 .shstrtab
// CHECk-NEXT: 0 0 84 1 <internal>:(.shstrtab)
// CHECk-NEXT: 0 0 6d 1 .strtab
// CHECk-NEXT: 0 0 6d 1 <internal>:(.strtab)
// RUN: not ld.lld %t1.o %t2.o %t3.o %t4.a -o %t -Map=/ 2>&1 \
// RUN: | FileCheck -check-prefix=FAIL %s

View File

@ -8,7 +8,7 @@
# CHECK: Disassembly of section .text:
# CHECK-EMPTY:
# CHECK-NEXT: _start
# CHECK-NEXT: 201000: {{.*}} callq -2101253
# CHECK-NEXT: 201120: {{.*}} callq -2101541
# RELOC: Relocations [
# RELOC-NEXT: ]

View File

@ -22,7 +22,7 @@
// CHECK-NEXT: Displaying notes
// CHECK-NEXT: Owner
// CHECK-NEXT: GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
// CHECK-NEXT: Build ID: 0f4d5297cbbe52e4bea558eeb792944670de22e1
// CHECK-NEXT: Build ID: 08b93eab87177a2356d1b0d1148339463f98dac2
.section .llvm_sympart,"",@llvm_sympart
.asciz "part1"

View File

@ -15,17 +15,19 @@
// CHECK: Section Headers:
// CHECK: .rela.dyn ANDROID_RELA {{0*}}[[ANDROID_RELA_ADDR:[^ ]*]]
// CHECK: .relr.dyn RELR {{0*}}[[RELR_ADDR:[^ ]*]]
// CHECK: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]000
// PART0: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]378
// PART1: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]340
// CHECK: Relocation section '.rela.dyn'
// CHECK-NEXT: Offset
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]008 {{.*}} R_X86_64_64 000000000000[[DATA_SEGMENT]]000 p0 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]008 {{.*}} R_X86_64_64 000000000000[[DATA_SEGMENT]]000 p1 + 0
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]380 {{.*}} R_X86_64_64 000000000000[[DATA_SEGMENT]]378 p0 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]348 {{.*}} R_X86_64_64 000000000000[[DATA_SEGMENT]]340 p1 + 0
// CHECK-EMPTY:
// CHECK: Relocation section '.relr.dyn'
// CHECK-NEXT: Offset
// CHECK-NEXT: 000000000000[[DATA_SEGMENT]]000 {{.*}} R_X86_64_RELATIVE
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]378 {{.*}} R_X86_64_RELATIVE
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]340 {{.*}} R_X86_64_RELATIVE
// CHECK-EMPTY:
// CHECK: Dynamic section

View File

@ -41,7 +41,8 @@
// PART0-NEXT: .plt PROGBITS
// PART0-NEXT: .init_array INIT_ARRAY {{0*}}[[INIT_ARRAY_ADDR:[^ ]*]]
// CHECK-NEXT: .dynamic DYNAMIC {{0*}}[[DYNAMIC_ADDR:[^ ]*]]
// CHECK-NEXT: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]000
// PART0-NEXT: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]178
// PART1-NEXT: .data PROGBITS 000000000000[[DATA_SEGMENT:.]]130
// PART0-NEXT: .got.plt PROGBITS {{0*}}[[GOT_PLT_ADDR:[^ ]*]]
// PART0-NEXT: .part.end NOBITS {{0*}}[[PART_END_ADDR:[^ ]*]]
// CHECK-NEXT: .comment PROGBITS
@ -52,18 +53,18 @@
// CHECK: Relocation section '.rela.dyn'
// CHECK-NEXT: Offset
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]000 {{.*}} R_X86_64_64 {{.*}} f1@v3 + 0
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]178 {{.*}} R_X86_64_64 {{.*}} f1@v3 + 0
// PART0-NEXT: {{0*}}[[INIT_ARRAY_ADDR]] {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]018 {{.*}} R_X86_64_RELATIVE 3000
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]000 {{.*}} R_X86_64_64 {{.*}} f2@v2 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]008 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]010 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]148 {{.*}} R_X86_64_RELATIVE 3178
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]130 {{.*}} R_X86_64_64 {{.*}} f2@v2 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]138 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
// PART1-NEXT: 000000000000[[DATA_SEGMENT]]140 {{.*}} R_X86_64_64 {{.*}} p0@@x1 + 0
// CHECK-EMPTY:
// PART0: Relocation section '.rela.plt'
// PART0-NEXT: Offset
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]020 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f1@v3 + 0
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]028 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f2@v2 + 0
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]198 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f1@v3 + 0
// PART0-NEXT: 000000000000[[DATA_SEGMENT]]1a0 {{.*}} R_X86_64_JUMP_SLOT {{.*}} f2@v2 + 0
// PART0-EMPTY:
// CHECK: Symbol table '.dynsym'
@ -85,7 +86,7 @@
// PART-INDEX: Contents of section .rodata:
// 0x48c + 0xffffff26 = 0x3b2
// 0x490 + 0x3b70 = 0x4000
// PART-INDEX-NEXT: 048c 26ffffff 703b0000 00400000
// PART-INDEX-NEXT: 048c 26ffffff 703b0000 50410000
// CHECK: {{.*}}EH_FRAME Header
// CHECK: Address: 0x[[EH_FRAME_HDR_ADDR]]
@ -137,12 +138,12 @@
// PART0-NEXT: LOAD 0x000000 0x0000000000000000 0x0000000000000000 {{.*}} R 0x1000
// PART0-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 {{.*}} R E 0x1000
// PART0-NEXT: LOAD 0x002000 0x0000000000002000 0x0000000000002000 {{.*}} RW 0x1000
// PART0-NEXT: LOAD 0x003000 0x0000000000003000 0x0000000000003000 {{.*}} RW 0x1000
// PART0-NEXT: LOAD 0x004000 0x0000000000008000 0x0000000000008000 0x000000 0x001000 RW 0x1000
// PART0-NEXT: LOAD 0x002178 0x0000000000003178 0x0000000000003178 {{.*}} RW 0x1000
// PART0-NEXT: LOAD 0x003150 0x0000000000008150 0x0000000000008150 0x000000 0x001000 RW 0x1000
// PART1-NEXT: LOAD 0x000000 0x0000000000004000 0x0000000000004000 {{.*}} R 0x1000
// PART1-NEXT: LOAD 0x001000 0x0000000000005000 0x0000000000005000 {{.*}} R E 0x1000
// PART1-NEXT: LOAD 0x002000 0x0000000000006000 0x0000000000006000 {{.*}} RW 0x1000
// PART1-NEXT: LOAD 0x003000 0x0000000000007000 0x0000000000007000 {{.*}} RW 0x1000
// PART1-NEXT: LOAD 0x002130 0x0000000000007130 0x0000000000007130 {{.*}} RW 0x1000
// CHECK-NEXT: DYNAMIC {{.*}} 0x{{0*}}[[DYNAMIC_ADDR]] 0x{{0*}}[[DYNAMIC_ADDR]] {{.*}} RW 0x8
// PART0-NEXT: GNU_RELRO 0x002000 0x0000000000002000 0x0000000000002000 {{.*}} R 0x1
// PART1-NEXT: GNU_RELRO 0x002000 0x0000000000006000 0x0000000000006000 {{.*}} R 0x1
@ -191,9 +192,9 @@
// FILL-NEXT: *
// FILL-NEXT: 002000
// FILL: 005010 cccc cccc cccc cccc cccc cccc cccc cccc
// FILL: 004010 cccc cccc cccc cccc cccc cccc cccc cccc
// FILL-NEXT: *
// FILL-NEXT: 006000
// FILL-NEXT: 005000
.section .llvm_sympart,"",@llvm_sympart
.asciz "part1"

View File

@ -15,14 +15,14 @@ _start:
call __fini_array_end
// With no .init_array section the symbols resolve to .text.
// 0x201000 - (0x201000 + 5) = -5
// 0x201000 - (0x201005 + 5) = -10
// 0x201120 - (0x201120 + 5) = -5
// 0x201120 - (0x201125 + 5) = -10
// ...
// CHECK: Disassembly of section .text:
// CHECK-EMPTY:
// CHECK-NEXT: _start:
// CHECK-NEXT: 201000: callq -5
// CHECK-NEXT: 201120: callq -5
// CHECK-NEXT: callq -10
// CHECK-NEXT: callq -15
// CHECK-NEXT: callq -20
@ -34,7 +34,7 @@ _start:
// PIE: Disassembly of section .text:
// PIE-EMPTY:
// PIE-NEXT: _start:
// PIE-NEXT: 1000: callq -5
// PIE-NEXT: 1210: callq -5
// PIE-NEXT: callq -10
// PIE-NEXT: callq -15
// PIE-NEXT: callq -20

View File

@ -10,6 +10,6 @@
.quad foo
// CHECK: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x2000 R_X86_64_64 foo 0x0
// CHECK-NEXT: 0x2008 R_X86_64_64 foo 0x0
// CHECK-NEXT: 0x3340 R_X86_64_64 foo 0x0
// CHECK-NEXT: 0x3348 R_X86_64_64 foo 0x0
// CHECK-NEXT: }

View File

@ -6,9 +6,9 @@
## Test that we create R_X86_64_RELATIVE relocations with -pie.
# CHECK: Relocations [
# CHECK-NEXT: Section ({{.*}}) .rela.dyn {
# CHECK-NEXT: 0x3000 R_X86_64_RELATIVE - 0x3000
# CHECK-NEXT: 0x3008 R_X86_64_RELATIVE - 0x3008
# CHECK-NEXT: 0x3010 R_X86_64_RELATIVE - 0x3009
# CHECK-NEXT: 0x3358 R_X86_64_RELATIVE - 0x3358
# CHECK-NEXT: 0x3360 R_X86_64_RELATIVE - 0x3360
# CHECK-NEXT: 0x3368 R_X86_64_RELATIVE - 0x3361
# CHECK-NEXT: }
# CHECK-NEXT: ]

View File

@ -92,9 +92,9 @@
# CHECKEXE-NEXT: Type: Executable
# CHECKEXE-NEXT: Machine: EM_X86_64
# CHECKEXE-NEXT: Version: 1
# CHECKEXE-NEXT: Entry: 0x201000
# CHECKEXE-NEXT: Entry: 0x201160
# CHECKEXE-NEXT: ProgramHeaderOffset: 0x40
# CHECKEXE-NEXT: SectionHeaderOffset: 0x21A0
# CHECKEXE-NEXT: SectionHeaderOffset: 0x358
# CHECKEXE-NEXT: Flags [
# CHECKEXE-NEXT: ]
# CHECKEXE-NEXT: HeaderSize: 64

View File

@ -10,5 +10,5 @@ _start:
.global sym1
.comm sym1,4,4
# CHECK: 201000: {{.*}} movl $1, 4086(%rip)
# CHECK: 0000000000202000 g O .bss 00000004 sym1
# CHECK: 201158: {{.*}} movl $1, 4098(%rip)
# CHECK: 0000000000202164 g O .bss 00000004 sym1

View File

@ -18,8 +18,8 @@
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: SHF_WRITE
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x203000
# CHECK-NEXT: Offset: 0x3000
# CHECK-NEXT: Address: 0x203360
# CHECK-NEXT: Offset: 0x360
# CHECK-NEXT: Size: 64
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@ -29,7 +29,7 @@
# CHECK: Relocations [
# CHECK-NEXT: Section {{.*}} .rela.dyn {
# CHECK-NEXT: 0x203020 R_X86_64_COPY foo 0x0
# CHECK-NEXT: 0x203380 R_X86_64_COPY foo 0x0
# CHECK-NEXT: }
# CHECK-NEXT: ]

View File

@ -21,7 +21,7 @@ _start:
// CHECK: Name: .text
// CHECK: SectionData (
// CHECK-NEXT: 0000: 10302000
// CHECK-NEXT: 0000: 90332000
// CHECK-NEXT: )
// CHECK: Name: bar
@ -30,8 +30,8 @@ _start:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x203000
// CHECK-NEXT: Offset: 0x3000
// CHECK-NEXT: Address: 0x203380
// CHECK-NEXT: Offset: 0x380
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
@ -46,7 +46,7 @@ _start:
// CHECK-NEXT: Flags [
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x0
// CHECK-NEXT: Offset: 0x3008
// CHECK-NEXT: Offset: 0x388
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
@ -58,7 +58,7 @@ _start:
// CHECK: Relocations [
// CHECK-NEXT: Section (4) .rela.dyn {
// CHECK-NEXT: 0x203010 R_X86_64_COPY x 0x0
// CHECK-NEXT: 0x203000 R_X86_64_64 z 0x0
// CHECK-NEXT: 0x203390 R_X86_64_COPY x 0x0
// CHECK-NEXT: 0x203380 R_X86_64_64 z 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]

View File

@ -14,19 +14,19 @@
// CHECK-NEXT: SHF_ALLOC (0x2)
// CHECK-NEXT: SHF_WRITE (0x1)
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x2020C0
// CHECK-NEXT: Offset: 0x20C0
// CHECK-NEXT: Address: 0x202368
// CHECK-NEXT: Offset: 0x368
// CHECK-NEXT: Size: 8
// CHECK: 0x2020C0 R_X86_64_COPY a 0x0
// CHECK: 0x2020C4 R_X86_64_COPY b 0x0
// CHECK: 0x202368 R_X86_64_COPY a 0x0
// CHECK: 0x20236C R_X86_64_COPY b 0x0
// CHECK: Type: PT_GNU_RELRO (0x6474E552)
// CHECK-NEXT: Offset: 0x2000
// CHECK-NEXT: VirtualAddress: 0x202000
// CHECK-NEXT: PhysicalAddress: 0x202000
// CHECK-NEXT: Offset: 0x2A8
// CHECK-NEXT: VirtualAddress: 0x2022A8
// CHECK-NEXT: PhysicalAddress: 0x2022A8
// CHECK-NEXT: FileSize: 192
// CHECK-NEXT: MemSize: 4096
// CHECK-NEXT: MemSize: 3416
.text
.global _start

View File

@ -1,10 +1,10 @@
// REQUIRES: x86
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/relocation-copy.s -o %t2.o
// RUN: ld.lld -shared %t2.o -o %t.so
// RUN: ld.lld -shared %t2.o -soname=so -o %t.so
// RUN: ld.lld %t.o %t.so -o %t3
// RUN: llvm-readobj -S -r --expand-relocs %t3 | FileCheck %s
// RUN: llvm-objdump -d %t3 | FileCheck -check-prefix=CODE %s
// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t3 | FileCheck -check-prefix=CODE %s
.text
.global _start
@ -22,7 +22,7 @@ movl $z, %edx
// CHECK-NEXT: SHF_ALLOC (0x2)
// CHECK-NEXT: SHF_WRITE (0x1)
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x203000
// CHECK-NEXT: Address: 0x203400
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 24
// CHECK-NEXT: Link: 0
@ -53,16 +53,13 @@ movl $z, %edx
// CHECK-NEXT: }
// CHECK-NEXT: ]
// 2109440 = 0x203000
// 16 is alignment here
// 2109456 = 0x203000 + 16
// 2109460 = 0x203000 + 16 + 4
// CODE: Disassembly of section .text:
// CODE-EMPTY:
// CODE-NEXT: _start:
// CODE-NEXT: 201000: {{.*}} movl $5, 2109440
// CODE-NEXT: 20100b: {{.*}} movl $7, 2109456
// CODE-NEXT: 201016: {{.*}} movl $9, 2109460
// CODE-NEXT: 201021: {{.*}} movl $2109440, %edx
// CODE-NEXT: 201026: {{.*}} movl $2109456, %edx
// CODE-NEXT: 20102b: {{.*}} movl $2109460, %edx
// CODE-NEXT: movl $0x5, 0x203400
// CODE-NEXT: movl $0x7, 0x203410
// CODE-NEXT: movl $0x9, 0x203414
// CODE-NEXT: movl $0x203400, %edx
// CODE-NEXT: movl $0x203410, %edx
// CODE-NEXT: movl $0x203414, %edx

View File

@ -15,15 +15,15 @@
// APPLYDYNREL-NEXT: SHF_ALLOC
// APPLYDYNREL-NEXT: SHF_WRITE
// APPLYDYNREL-NEXT: ]
// APPLYDYNREL-NEXT: Address: 0x2000
// APPLYDYNREL-NEXT: Offset: 0x2000
// APPLYDYNREL-NEXT: Address: 0x3350
// APPLYDYNREL-NEXT: Offset: 0x350
// APPLYDYNREL-NEXT: Size: 16
// APPLYDYNREL-NEXT: Link: 0
// APPLYDYNREL-NEXT: Info: 0
// APPLYDYNREL-NEXT: AddressAlignment: 1
// APPLYDYNREL-NEXT: EntrySize: 0
// APPLYDYNREL-NEXT: SectionData (
// APPLYDYNREL-NEXT: 0000: 00200000 00000000 00000000 00000000
// APPLYDYNREL-NEXT: 0000: 50330000 00000000 00000000 00000000
// APPLYDYNREL-NEXT: )
// NOAPPLYDYNREL: Name: .data
@ -32,8 +32,8 @@
// NOAPPLYDYNREL-NEXT: SHF_ALLOC
// NOAPPLYDYNREL-NEXT: SHF_WRITE
// NOAPPLYDYNREL-NEXT: ]
// NOAPPLYDYNREL-NEXT: Address: 0x2000
// NOAPPLYDYNREL-NEXT: Offset: 0x2000
// NOAPPLYDYNREL-NEXT: Address: 0x3350
// NOAPPLYDYNREL-NEXT: Offset: 0x350
// NOAPPLYDYNREL-NEXT: Size: 16
// NOAPPLYDYNREL-NEXT: Link: 0
// NOAPPLYDYNREL-NEXT: Info: 0
@ -55,14 +55,14 @@
// CHECK-NEXT: AddressAlignment: 1
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 00200000 00000000 00200000 00000000
// CHECK-NEXT: 0010: 00200000 00000000 00200000 00000000
// CHECK-NEXT: 0000: 50330000 00000000 50330000 00000000
// CHECK-NEXT: 0010: 50330000 00000000 50330000 00000000
// CHECK-NEXT: )
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.}}) .rela.dyn {
// CHECK-NEXT: 0x2000 R_X86_64_RELATIVE - 0x2000
// CHECK-NEXT: 0x2008 R_X86_64_64 zed 0x0
// CHECK-NEXT: 0x3350 R_X86_64_RELATIVE - 0x3350
// CHECK-NEXT: 0x3358 R_X86_64_64 zed 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]

View File

@ -14,4 +14,4 @@ _start:
.weak sym1
# CHECK: 201000: movl $0x1, -0x20100a(%rip)
# CHECK: 201120: movl $0x1, -0x20112a(%rip)

View File

@ -12,8 +12,8 @@
// SEC-NEXT: SHF_ALLOC
// SEC-NEXT: SHF_EXECINSTR
// SEC-NEXT: ]
// SEC-NEXT: Address: 0x201030
// SEC-NEXT: Offset: 0x1030
// SEC-NEXT: Address: 0x201340
// SEC-NEXT: Offset: 0x340
// SEC-NEXT: Size: 48
// SEC: Name: .got
@ -22,7 +22,7 @@
// SEC-NEXT: SHF_ALLOC
// SEC-NEXT: SHF_WRITE
// SEC-NEXT: ]
// SEC-NEXT: Address: 0x2020F0
// SEC-NEXT: Address: 0x202460
// SEC-NEXT: Offset:
// SEC-NEXT: Size: 8
// SEC-NEXT: Link: 0
@ -37,8 +37,8 @@
// SEC-NEXT: SHF_ALLOC
// SEC-NEXT: SHF_WRITE
// SEC-NEXT: ]
// SEC-NEXT: Address: 0x203000
// SEC-NEXT: Offset: 0x3000
// SEC-NEXT: Address: 0x203468
// SEC-NEXT: Offset: 0x468
// SEC-NEXT: Size: 40
// SEC-NEXT: Link: 0
// SEC-NEXT: Info: 0
@ -60,11 +60,11 @@ lulz:
// CHECK: Disassembly of section .text:
// CHECK-EMPTY:
// CHECK-NEXT: _start:
// CHECK-NEXT: 201000: e8 04 00 00 00 callq 4
// CHECK-NEXT: 201005:
// CHECK-NEXT: 201310: e8 04 00 00 00 callq 4
// CHECK-NEXT: 201315:
// CHECK: lulz:
// CHECK-NEXT: 201009: 90 nop
// CHECK-NEXT: 201319: 90 nop
.section .text2,"ax",@progbits
@ -77,7 +77,7 @@ R_X86_64_32:
// CHECK: Disassembly of section .text2:
// CHECK-EMPTY:
// CHECK-NEXT: R_X86_64_32:
// CHECK-NEXT: 20100a: {{.*}} movl $2101258, %edx
// CHECK-NEXT: 20131a: {{.*}} movl $2102042, %edx
.section .R_X86_64_32S,"ax",@progbits
.global R_X86_64_32S
@ -87,7 +87,7 @@ R_X86_64_32S:
// CHECK: Disassembly of section .R_X86_64_32S:
// CHECK-EMPTY:
// CHECK-NEXT: R_X86_64_32S:
// CHECK-NEXT: {{.*}}: {{.*}} movq 1052681, %rdx
// CHECK-NEXT: {{.*}}: {{.*}} movq 1053465, %rdx
.section .R_X86_64_PC32,"ax",@progbits
.global R_X86_64_PC32
@ -95,22 +95,22 @@ R_X86_64_PC32:
call bar
movl $bar, %eax
//16 is a size of PLT[0]
// 0x201030 + 16 - (0x201017 + 5) = 20
// 0x201340 + 16 - (0x201327 + 5) = 36
// CHECK: Disassembly of section .R_X86_64_PC32:
// CHECK-EMPTY:
// CHECK-NEXT: R_X86_64_PC32:
// CHECK-NEXT: 201017: {{.*}} callq 36
// CHECK-NEXT: 20101c: {{.*}} movl $2101312, %eax
// CHECK-NEXT: 201327: {{.*}} callq 36
// CHECK-NEXT: 20132c: {{.*}} movl $2102096, %eax
.section .R_X86_64_32S_2,"ax",@progbits
.global R_X86_64_32S_2
R_X86_64_32S_2:
mov bar2, %eax
// plt is at 0x201030. The second plt entry is at 0x201050 == 69712
// plt is at 0x201340. The second plt entry is at 0x201360 == 2102112
// CHECK: Disassembly of section .R_X86_64_32S_2:
// CHECK-EMPTY:
// CHECK-NEXT: R_X86_64_32S_2:
// CHECK-NEXT: 201021: {{.*}} movl 2101328, %eax
// CHECK-NEXT: 201331: {{.*}} movl 2102112, %eax
.section .R_X86_64_64,"a",@progbits
.global R_X86_64_64
@ -125,9 +125,9 @@ R_X86_64_64:
R_X86_64_GOTPCREL:
.long zed@gotpcrel
// 0x2020F0(.got) - 0x2002c8(.R_X86_64_GOTPCREL) = 0x1e28
// 0x202460(.got) - 0x200300(.R_X86_64_GOTPCREL) = 0x2160
// CHECK: Contents of section .R_X86_64_GOTPCREL
// CHECK-NEXT: 200300 f01d0000
// CHECK-NEXT: 200300 60210000
.section .R_X86_64_GOT32,"a",@progbits
.global R_X86_64_GOT32
@ -135,11 +135,11 @@ R_X86_64_GOT32:
.long zed@got
// CHECK: Contents of section .R_X86_64_GOT32:
// CHECK-NEXT: f0f0ffff
// CHECK-NEXT: f8efffff
// CHECK: Contents of section .R_X86_64_GOT64:
// CHECK-NEXT: f0f0ffff ffffffff
// CHECK-NEXT: f8efffff ffffffff
.section .R_X86_64_GOT64,"a",@progbits
.global R_X86_64_GOT64
R_X86_64_GOT64:

View File

@ -9,10 +9,10 @@
# Because .bss.rel.ro (nobits) doesn't take space, p_filesz < p_memsz.
# Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
# SEG: LOAD 0x001000 0x0000000000201000 0x0000000000201000 0x000001 0x000001 R E 0x1000
# SEG-NEXT: LOAD 0x002000 0x0000000000202000 0x0000000000202000 0x000001 0x002001 RW 0x1000
# SEG-NEXT: LOAD 0x003000 0x0000000000205000 0x0000000000205000 0x000001 0x000002 RW 0x1000
# SEG-NEXT: GNU_RELRO 0x002000 0x0000000000202000 0x0000000000202000 0x000001 0x003000 R 0x1
# SEG: LOAD 0x0001c8 0x00000000002011c8 0x00000000002011c8 0x000001 0x000001 R E 0x1000
# SEG-NEXT: LOAD 0x0001c9 0x00000000002021c9 0x00000000002021c9 0x000001 0x002001 RW 0x1000
# SEG-NEXT: LOAD 0x0001ca 0x00000000002051ca 0x00000000002051ca 0x000001 0x000002 RW 0x1000
# SEG-NEXT: GNU_RELRO 0x0001c9 0x00000000002021c9 0x00000000002021c9 0x000001 0x002e37 R 0x1
# SEG-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x0
# SEG: .text
@ -22,10 +22,10 @@
# And .data is placed in the next page (sh_offset = alignTo(0x2001, 4096) = 0x3000).
# [Nr] Name Type Address Off Size
# CHECK: .data.rel.ro PROGBITS 0000000000202000 002000 000001
# CHECK-NEXT: .bss.rel.ro NOBITS 0000000000202001 002001 002000
# CHECK-NEXT: .data PROGBITS 0000000000205000 003000 000001
# CHECK-NEXT: .bss NOBITS 0000000000205001 003001 000001
# CHECK: .data.rel.ro PROGBITS 00000000002021c9 0001c9 000001
# CHECK-NEXT: .bss.rel.ro NOBITS 00000000002021ca 0001ca 002000
# CHECK-NEXT: .data PROGBITS 00000000002051ca 0001ca 000001
# CHECK-NEXT: .bss NOBITS 00000000002051cb 0001cb 000001
.globl _start
_start:

View File

@ -9,9 +9,9 @@
## Currently p_memsz of PT_GNU_RELRO is rounded up to protect the last page.
# CHECK: Type: PT_GNU_RELRO
# CHECK: VirtualAddress: 0x201000
# CHECK: VirtualAddress: 0x2021C8
# CHECK: FileSize: 4
# CHECK-NEXT: MemSize: 4096
# CHECK-NEXT: MemSize: 3640
# CHECK: Alignment: 1
.section .foo,"awT",@progbits

View File

@ -20,7 +20,7 @@
# ROSEGMENT-NEXT: }
# ROSEGMENT-NEXT: ProgramHeader {
# ROSEGMENT-NEXT: Type: PT_LOAD
# ROSEGMENT-NEXT: Offset: 0x1000
# ROSEGMENT-NEXT: Offset: 0x15C
# ROSEGMENT-NEXT: VirtualAddress:
# ROSEGMENT-NEXT: PhysicalAddress:
# ROSEGMENT-NEXT: FileSize:
@ -33,7 +33,7 @@
# ROSEGMENT-NEXT: }
# ROSEGMENT-NEXT: ProgramHeader {
# ROSEGMENT-NEXT: Type: PT_LOAD
# ROSEGMENT-NEXT: Offset: 0x2000
# ROSEGMENT-NEXT: Offset: 0x15E
# ROSEGMENT-NEXT: VirtualAddress:
# ROSEGMENT-NEXT: PhysicalAddress:
# ROSEGMENT-NEXT: FileSize: 1
@ -63,7 +63,7 @@
# NOROSEGMENT-NEXT: }
# NOROSEGMENT-NEXT: ProgramHeader {
# NOROSEGMENT-NEXT: Type: PT_LOAD
# NOROSEGMENT-NEXT: Offset: 0x1000
# NOROSEGMENT-NEXT: Offset: 0x126
# NOROSEGMENT-NEXT: VirtualAddress:
# NOROSEGMENT-NEXT: PhysicalAddress:
# NOROSEGMENT-NEXT: FileSize:

View File

@ -8,10 +8,10 @@
// RUN: ld.lld -o %t %t2.o %t.so
// RUN: llvm-objdump -s -h %t | FileCheck %s
// CHECK: foo 00000000 0000000000201008
// CHECK: foo 00000000 0000000000201248
// CHECK: Contents of section .text:
// CHECK-NEXT: 201000 08102000 00000000
// CHECK-NEXT: 201240 48122000 00000000
.quad __start_foo
.section foo,"ax"

View File

@ -5,19 +5,19 @@
// RUN: llvm-readobj --symbols -r %t.so | FileCheck -check-prefix=SYMBOL %s
// DISASM: _start:
// DISASM: 1000: callq 10 <__start_foo>
// DISASM: 1005: callq 8 <__start_bar>
// DISASM: 100a: callq 3 <__start_bar>
// DISASM: 1330: callq 10 <__start_foo>
// DISASM: 1335: callq 8 <__start_bar>
// DISASM: 133a: callq 3 <__start_bar>
// DISASM: Disassembly of section foo:
// DISASM-EMPTY:
// DISASM: __start_foo:
// DISASM: 100f: nop
// DISASM: 133f: nop
// DISASM: nop
// DISASM: nop
// DISASM: Disassembly of section bar:
// DISASM-EMPTY:
// DISASM: __start_bar:
// DISASM: 1012: nop
// DISASM: 1342: nop
// DISASM: nop
// DISASM: nop
@ -32,33 +32,33 @@
// SYMBOL: Symbol {
// SYMBOL: Name: __start_bar
// SYMBOL: Value: 0x1012
// SYMBOL: Value: 0x1342
// SYMBOL: STV_HIDDEN
// SYMBOL: Section: bar
// SYMBOL: }
// SYMBOL-NOT: Section: __stop_bar
// SYMBOL: Symbol {
// SYMBOL: Name: __start_foo
// SYMBOL: Value: 0x100F
// SYMBOL: Value: 0x133F
// SYMBOL: STV_HIDDEN
// SYMBOL: Section: foo
// SYMBOL: }
// SYMBOL: Symbol {
// SYMBOL: Name: __stop_foo
// SYMBOL: Value: 0x1012
// SYMBOL: Value: 0x1342
// SYMBOL: STV_HIDDEN
// SYMBOL: Section: foo
// SYMBOL: }
// SYMBOL: Symbol {
// SYMBOL: Name: __stop_zed1
// SYMBOL: Value: 0x3010
// SYMBOL: Value: 0x3408
// SYMBOL: STV_PROTECTED
// SYMBOL: Section: zed1
// SYMBOL: }
// SYMBOL: Symbol {
// SYMBOL: Name: __stop_zed2
// SYMBOL: Value: 0x3020
// SYMBOL: Value: 0x3418
// SYMBOL: STV_PROTECTED
// SYMBOL: Section: zed2
// SYMBOL: }

View File

@ -2,18 +2,18 @@
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
// RUN: ld.lld -e A %t.o --no-call-graph-profile-sort -o %t
// RUN: llvm-nm --numeric-sort %t | FileCheck %s --check-prefix=NO_ORDERING
// NO_ORDERING: 0000000000201000 t D
// NO_ORDERING-NEXT: 0000000000201001 T C
// NO_ORDERING-NEXT: 0000000000201002 T B
// NO_ORDERING-NEXT: 0000000000201003 T A
// NO_ORDERING: 0000000000201120 t D
// NO_ORDERING-NEXT: 0000000000201121 T C
// NO_ORDERING-NEXT: 0000000000201122 T B
// NO_ORDERING-NEXT: 0000000000201123 T A
// RUN: ld.lld -e A %t.o -o %t
// RUN: llvm-nm --numeric-sort %t | FileCheck %s --check-prefix=CALL_GRAPH
// CALL_GRAPH: 0000000000201000 T A
// CALL_GRAPH-NEXT: 0000000000201000 t Aa
// CALL_GRAPH-NEXT: 0000000000201001 T B
// CALL_GRAPH-NEXT: 0000000000201002 T C
// CALL_GRAPH-NEXT: 0000000000201003 t D
// CALL_GRAPH: 0000000000201120 T A
// CALL_GRAPH-NEXT: 0000000000201120 t Aa
// CALL_GRAPH-NEXT: 0000000000201121 T B
// CALL_GRAPH-NEXT: 0000000000201122 T C
// CALL_GRAPH-NEXT: 0000000000201123 t D
// RUN: rm -f %t.symbol_order
// RUN: echo "C" >> %t.symbol_order
@ -23,10 +23,10 @@
// RUN: ld.lld -e A %t.o --symbol-ordering-file %t.symbol_order -o %t
// RUN: llvm-nm --numeric-sort %t | FileCheck %s --check-prefix=SYMBOL_ORDER
// SYMBOL_ORDER: 0000000000201000 T C
// SYMBOL_ORDER-NEXT: 0000000000201001 T B
// SYMBOL_ORDER-NEXT: 0000000000201002 t D
// SYMBOL_ORDER-NEXT: 0000000000201003 T A
// SYMBOL_ORDER: 0000000000201120 T C
// SYMBOL_ORDER-NEXT: 0000000000201121 T B
// SYMBOL_ORDER-NEXT: 0000000000201122 t D
// SYMBOL_ORDER-NEXT: 0000000000201123 T A
// RUN: rm -f %t.call_graph
// RUN: echo "A B 5" > %t.call_graph

View File

@ -8,9 +8,9 @@
## Check that after ICF merges 'foo' and 'zed' we still
## place them before 'bar', in according to ordering file.
# CHECK-DAG: 0000000000001000 T foo
# CHECK-DAG: 0000000000001000 T zed
# CHECK-DAG: 0000000000001004 T bar
# CHECK-DAG: 0000000000001288 T foo
# CHECK-DAG: 0000000000001288 T zed
# CHECK-DAG: 000000000000128c T bar
.section .text.foo,"ax",@progbits
.align 4

View File

@ -58,7 +58,7 @@ internal:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x201000
// CHECK-NEXT: Address: 0x201160
// CHECK: Name: .bss
// CHECK-NEXT: Type: SHT_NOBITS
@ -66,7 +66,7 @@ internal:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x202000
// CHECK-NEXT: Address: 0x202164
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 4
@ -104,7 +104,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Value: 0x201160
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global (0x1)
// CHECK-NEXT: Type: Function
@ -131,7 +131,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: common
// CHECK-NEXT: Value: 0x202000
// CHECK-NEXT: Value: 0x202164
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Object
@ -140,7 +140,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: foo
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Value: 0x201160
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Weak (0x2)
// CHECK-NEXT: Type: Object

View File

@ -1,7 +1,7 @@
// REQUIRES: x86
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
// RUN: ld.lld %t -o %tout
// RUN: llvm-readobj -S %tout | FileCheck %s
// RUN: llvm-readobj -S %tout | FileCheck --check-prefixes=CHECK,CHECK1 %s
// RUN: echo "SECTIONS { \
// RUN: . = 0x201000; \
// RUN: .text : { *(.text) } \
@ -11,7 +11,7 @@
// RUN: .data.rel.ro : { *(.data.rel.ro) } \
// RUN: }" > %t.script
// RUN: ld.lld -T %t.script %t -o %tout2
// RUN: llvm-readobj -S %tout2 | FileCheck %s
// RUN: llvm-readobj -S %tout2 | FileCheck --check-prefixes=CHECK,CHECK2 %s
.global _start
_start:
retq
@ -32,34 +32,40 @@ _start:
// gets out of sync what we get a runtime is different from what the section
// table says.
// CHECK: Name: .tdata
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_TLS
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x202000
// CHECK-NEXT: Offset: 0x2000
// CHECK-NEXT: Size: 4
// CHECK: Name: .tdata
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_TLS
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK1-NEXT: Address: 0x2021D0
// CHECK1-NEXT: Offset: 0x1D0
// CHECK2-NEXT: Address: 0x202000
// CHECK2-NEXT: Offset: 0x2000
// CHECK-NEXT: Size: 4
// CHECK: Name: .tbss
// CHECK-NEXT: Type: SHT_NOBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_TLS
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x202010
// CHECK-NEXT: Offset: 0x2004
// CHECK-NEXT: Size: 16
// CHECK: Name: .tbss
// CHECK-NEXT: Type: SHT_NOBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_TLS
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK1-NEXT: Address: 0x2021E0
// CHECK1-NEXT: Offset: 0x1D4
// CHECK2-NEXT: Address: 0x202010
// CHECK2-NEXT: Offset: 0x2004
// CHECK-NEXT: Size: 16
// CHECK: Name: .data.rel.ro
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x202004
// CHECK-NEXT: Offset: 0x2004
// CHECK-NEXT: Size: 4
// CHECK: Name: .data.rel.ro
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK1-NEXT: Address: 0x2021D4
// CHECK1-NEXT: Offset: 0x1D4
// CHECK2-NEXT: Address: 0x202004
// CHECK2-NEXT: Offset: 0x2004
// CHECK-NEXT: Size: 4

View File

@ -90,9 +90,9 @@ d:
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// 0x20200C = TBSS_ADDR + 4
// 0x2021F4 = TBSS_ADDR + 4
// CHECK-NEXT: Address: 0x20200C
// CHECK-NEXT: Address: 0x2021F4
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Link:

View File

@ -5,10 +5,10 @@
# RUN: ld.lld %t.o -o %t1
# RUN: llvm-readelf -S -l %t1 | FileCheck %s
# CHECK: .rodata PROGBITS 0000000000200158 000158 000008
# CHECK-NEXT: .text PROGBITS 0000000000201000 001000 000001
# CHECK-NEXT: .aw PROGBITS 0000000000202000 002000 000008
# CHECK-NEXT: .data PROGBITS 0000000000202008 002008 000008
# CHECK-NEXT: .bss NOBITS 0000000000202010 002010 000008
# CHECK-NEXT: .text PROGBITS 0000000000201160 000160 000001
# CHECK-NEXT: .aw PROGBITS 0000000000202161 000161 000008
# CHECK-NEXT: .data PROGBITS 0000000000202169 000169 000008
# CHECK-NEXT: .bss NOBITS 0000000000202171 000171 000008
# CHECK: Type
# CHECK-NEXT: PHDR
# CHECK-NEXT: LOAD 0x000000 0x0000000000200000
@ -21,8 +21,8 @@
# USER1: .text PROGBITS 0000000000000000 001000 000001
# USER1-NEXT: .data PROGBITS 0000000000004000 002000 000008
# USER1-NEXT: .bss NOBITS 0000000000008000 002008 000008
# USER1-NEXT: .rodata PROGBITS 0000000000009000 003000 000008
# USER1-NEXT: .aw PROGBITS 000000000000a000 004000 000008
# USER1-NEXT: .rodata PROGBITS 0000000000009008 002008 000008
# USER1-NEXT: .aw PROGBITS 000000000000a010 002010 000008
# USER1: Type
# USER1-NEXT: PHDR 0x000040 0x0000000000200040
# USER1-NEXT: LOAD 0x000000 0x0000000000200000
@ -34,8 +34,8 @@
# USER2: .text PROGBITS 0000000000001000 001000 000001
# USER2-NEXT: .data PROGBITS 0000000000004000 002000 000008
# USER2-NEXT: .bss NOBITS 0000000000008000 002008 000008
# USER2-NEXT: .rodata PROGBITS 0000000000009000 003000 000008
# USER2-NEXT: .aw PROGBITS 000000000000a000 004000 000008
# USER2-NEXT: .rodata PROGBITS 0000000000009008 002008 000008
# USER2-NEXT: .aw PROGBITS 000000000000a010 002010 000008
# USER2: Type
# USER2-NEXT: PHDR 0x000040 0x0000000000000040
# USER2-NEXT: LOAD 0x000000 0x0000000000000000

View File

@ -22,13 +22,13 @@ movabsq $set_data, %rax
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x201010
// CHECK-NEXT: Address: 0x2012E0
// CHECK: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x203000 R_X86_64_64 foo 0x0
// CHECK-NEXT: 0x203400 R_X86_64_64 foo 0x0
// CHECK-NEXT: }
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
// CHECK-NEXT: 0x203020 R_X86_64_JUMP_SLOT set_data 0x0
// CHECK-NEXT: 0x203420 R_X86_64_JUMP_SLOT set_data 0x0
// CHECK-NEXT: }
// CHECK: Name: foo
@ -40,7 +40,7 @@ movabsq $set_data, %rax
// CHECK-NEXT: Section: Undefined
// CHECK: Name: set_data
// CHECK-NEXT: Value: 0x201020
// CHECK-NEXT: Value: 0x2012F0
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Function

View File

@ -18,7 +18,7 @@
# DSO-NEXT: }
# DSO-NEXT: Symbol {
# DSO-NEXT: Name: a@@V1
# DSO-NEXT: Value: 0x1000
# DSO-NEXT: Value: 0x12E8
# DSO-NEXT: Size: 0
# DSO-NEXT: Binding: Global
# DSO-NEXT: Type: Function
@ -27,7 +27,7 @@
# DSO-NEXT: }
# DSO-NEXT: Symbol {
# DSO-NEXT: Name: b@@V2
# DSO-NEXT: Value: 0x1002
# DSO-NEXT: Value: 0x12EA
# DSO-NEXT: Size: 0
# DSO-NEXT: Binding: Global
# DSO-NEXT: Type: Function
@ -36,7 +36,7 @@
# DSO-NEXT: }
# DSO-NEXT: Symbol {
# DSO-NEXT: Name: b@V1
# DSO-NEXT: Value: 0x1001
# DSO-NEXT: Value: 0x12E9
# DSO-NEXT: Size: 0
# DSO-NEXT: Binding: Global
# DSO-NEXT: Type: Function
@ -45,7 +45,7 @@
# DSO-NEXT: }
# DSO-NEXT: Symbol {
# DSO-NEXT: Name: c@@V2
# DSO-NEXT: Value: 0x1003
# DSO-NEXT: Value: 0x12EB
# DSO-NEXT: Size: 0
# DSO-NEXT: Binding: Global
# DSO-NEXT: Type: Function
@ -122,7 +122,7 @@
# EXE-NEXT: }
# EXE-NEXT: Symbol {
# EXE-NEXT: Name: a@V1
# EXE-NEXT: Value: 0x201020
# EXE-NEXT: Value: 0x201340
# EXE-NEXT: Size: 0
# EXE-NEXT: Binding: Global
# EXE-NEXT: Type: Function
@ -131,7 +131,7 @@
# EXE-NEXT: }
# EXE-NEXT: Symbol {
# EXE-NEXT: Name: b@V2
# EXE-NEXT: Value: 0x201030
# EXE-NEXT: Value: 0x201350
# EXE-NEXT: Size: 0
# EXE-NEXT: Binding: Global
# EXE-NEXT: Type: Function
@ -140,7 +140,7 @@
# EXE-NEXT: }
# EXE-NEXT: Symbol {
# EXE-NEXT: Name: c@V2
# EXE-NEXT: Value: 0x201040
# EXE-NEXT: Value: 0x201360
# EXE-NEXT: Size: 0
# EXE-NEXT: Binding: Global
# EXE-NEXT: Type: Function

View File

@ -12,7 +12,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x2000
// CHECK-NEXT: Address: 0x22B0
// CHECK: Name: .got.plt
// CHECK-NEXT: Type: SHT_PROGBITS
@ -20,12 +20,12 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x3000
// CHECK-NEXT: Offset: 0x3000
// CHECK-NEXT: Address: 0x3360
// CHECK-NEXT: Offset: 0x360
// CHECK-NEXT: Size: 32
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
// CHECK-NEXT: AddressAlignment: 8
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 00200000 00000000 00000000 00000000
// CHECK-NEXT: 0000: B0220000 00000000 00000000 00000000

View File

@ -10,21 +10,21 @@
# SYMRELOC: Symbols [
# SYMRELOC: Symbol {
# SYMRELOC: Name: bar
# SYMRELOC-NEXT: Value: 0x202000
# SYMRELOC-NEXT: Value: 0x202197
## 2105344 = 0x202000 (bar)
## 2105751 = 0x202197 (bar)
# DISASM: Disassembly of section .text:
# DISASM-EMPTY:
# DISASM-NEXT: _start:
# DISASM-NEXT: 201000: adcq $2105344, %rax
# DISASM-NEXT: addq $2105344, %rbx
# DISASM-NEXT: andq $2105344, %rcx
# DISASM-NEXT: cmpq $2105344, %rdx
# DISASM-NEXT: orq $2105344, %rdi
# DISASM-NEXT: sbbq $2105344, %rsi
# DISASM-NEXT: subq $2105344, %rbp
# DISASM-NEXT: xorq $2105344, %r8
# DISASM-NEXT: testq $2105344, %r15
# DISASM-NEXT: 201158: adcq $2105751, %rax
# DISASM-NEXT: addq $2105751, %rbx
# DISASM-NEXT: andq $2105751, %rcx
# DISASM-NEXT: cmpq $2105751, %rdx
# DISASM-NEXT: orq $2105751, %rdi
# DISASM-NEXT: sbbq $2105751, %rsi
# DISASM-NEXT: subq $2105751, %rbp
# DISASM-NEXT: xorq $2105751, %r8
# DISASM-NEXT: testq $2105751, %r15
# RUN: ld.lld --hash-style=sysv -shared %t.o -o %t2
# RUN: llvm-readobj -S -r -d %t2 | FileCheck --check-prefix=SEC-PIC %s
@ -37,8 +37,8 @@
# SEC-PIC-NEXT: SHF_ALLOC
# SEC-PIC-NEXT: SHF_WRITE
# SEC-PIC-NEXT: ]
# SEC-PIC-NEXT: Address: 0x20A0
# SEC-PIC-NEXT: Offset: 0x20A0
# SEC-PIC-NEXT: Address: 0x2348
# SEC-PIC-NEXT: Offset: 0x348
# SEC-PIC-NEXT: Size: 8
# SEC-PIC-NEXT: Link:
# SEC-PIC-NEXT: Info:
@ -47,7 +47,7 @@
# SEC-PIC-NEXT: }
# SEC-PIC: Relocations [
# SEC-PIC-NEXT: Section ({{.*}}) .rela.dyn {
# SEC-PIC-NEXT: 0x20A0 R_X86_64_RELATIVE - 0x3000
# SEC-PIC-NEXT: 0x2348 R_X86_64_RELATIVE - 0x3350
# SEC-PIC-NEXT: }
# SEC-PIC-NEXT: ]
# SEC-PIC: 0x000000006FFFFFF9 RELACOUNT 1
@ -58,15 +58,15 @@
# DISASM-PIC: Disassembly of section .text:
# DISASM-PIC-EMPTY:
# DISASM-PIC-NEXT: _start:
# DISASM-PIC-NEXT: 1000: adcq 4249(%rip), %rax
# DISASM-PIC-NEXT: addq 4242(%rip), %rbx
# DISASM-PIC-NEXT: andq 4235(%rip), %rcx
# DISASM-PIC-NEXT: cmpq 4228(%rip), %rdx
# DISASM-PIC-NEXT: orq 4221(%rip), %rdi
# DISASM-PIC-NEXT: sbbq 4214(%rip), %rsi
# DISASM-PIC-NEXT: subq 4207(%rip), %rbp
# DISASM-PIC-NEXT: xorq 4200(%rip), %r8
# DISASM-PIC-NEXT: testq %r15, 4193(%rip)
# DISASM-PIC-NEXT: 1268: adcq 4313(%rip), %rax
# DISASM-PIC-NEXT: addq 4306(%rip), %rbx
# DISASM-PIC-NEXT: andq 4299(%rip), %rcx
# DISASM-PIC-NEXT: cmpq 4292(%rip), %rdx
# DISASM-PIC-NEXT: orq 4285(%rip), %rdi
# DISASM-PIC-NEXT: sbbq 4278(%rip), %rsi
# DISASM-PIC-NEXT: subq 4271(%rip), %rbp
# DISASM-PIC-NEXT: xorq 4264(%rip), %r8
# DISASM-PIC-NEXT: testq %r15, 4257(%rip)
.data
.type bar, @object

View File

@ -23,22 +23,22 @@
# DISASM: hid:
# DISASM-NEXT: nop
# DISASM: _start:
# DISASM-NEXT: movq 4247(%rip), %rax
# DISASM-NEXT: movq 4240(%rip), %rax
# DISASM-NEXT: movq 4241(%rip), %rax
# DISASM-NEXT: movq 4234(%rip), %rax
# DISASM-NEXT: movq 4367(%rip), %rax
# DISASM-NEXT: movq 4360(%rip), %rax
# DISASM-NEXT: movq 4361(%rip), %rax
# DISASM-NEXT: movq 4354(%rip), %rax
# DISASM-NEXT: leaq -36(%rip), %rax
# DISASM-NEXT: leaq -43(%rip), %rax
# DISASM-NEXT: movq 4221(%rip), %rax
# DISASM-NEXT: movq 4214(%rip), %rax
# DISASM-NEXT: movq 4191(%rip), %rax
# DISASM-NEXT: movq 4184(%rip), %rax
# DISASM-NEXT: movq 4185(%rip), %rax
# DISASM-NEXT: movq 4178(%rip), %rax
# DISASM-NEXT: movq 4341(%rip), %rax
# DISASM-NEXT: movq 4334(%rip), %rax
# DISASM-NEXT: movq 4311(%rip), %rax
# DISASM-NEXT: movq 4304(%rip), %rax
# DISASM-NEXT: movq 4305(%rip), %rax
# DISASM-NEXT: movq 4298(%rip), %rax
# DISASM-NEXT: leaq -92(%rip), %rax
# DISASM-NEXT: leaq -99(%rip), %rax
# DISASM-NEXT: movq 4165(%rip), %rax
# DISASM-NEXT: movq 4158(%rip), %rax
# DISASM-NEXT: movq 4285(%rip), %rax
# DISASM-NEXT: movq 4278(%rip), %rax
.text
.globl foo

View File

@ -8,37 +8,37 @@
# RELOC: Relocations [
# RELOC: ]
# 0x201003 + 7 - 10 = 0x201000
# 0x20100a + 7 - 17 = 0x201000
# 0x201011 + 7 - 23 = 0x201001
# 0x201018 + 7 - 30 = 0x201001
# 0x201173 + 7 - 10 = 0x201170
# 0x20117a + 7 - 17 = 0x201170
# 0x201181 + 7 - 23 = 0x201171
# 0x201188 + 7 - 30 = 0x201171
# DISASM: Disassembly of section .text:
# DISASM-EMPTY:
# DISASM-NEXT: foo:
# DISASM-NEXT: 201000: 90 nop
# DISASM-NEXT: 201170: 90 nop
# DISASM: hid:
# DISASM-NEXT: 201001: 90 nop
# DISASM-NEXT: 201171: 90 nop
# DISASM: ifunc:
# DISASM-NEXT: 201002: c3 retq
# DISASM-NEXT: 201172: c3 retq
# DISASM: _start:
# DISASM-NEXT: leaq -10(%rip), %rax
# DISASM-NEXT: leaq -17(%rip), %rax
# DISASM-NEXT: leaq -23(%rip), %rax
# DISASM-NEXT: leaq -30(%rip), %rax
# DISASM-NEXT: movq 4058(%rip), %rax
# DISASM-NEXT: movq 4051(%rip), %rax
# DISASM-NEXT: movq 4234(%rip), %rax
# DISASM-NEXT: movq 4227(%rip), %rax
# DISASM-NEXT: leaq -52(%rip), %rax
# DISASM-NEXT: leaq -59(%rip), %rax
# DISASM-NEXT: leaq -65(%rip), %rax
# DISASM-NEXT: leaq -72(%rip), %rax
# DISASM-NEXT: movq 4016(%rip), %rax
# DISASM-NEXT: movq 4009(%rip), %rax
# DISASM-NEXT: movq 4192(%rip), %rax
# DISASM-NEXT: movq 4185(%rip), %rax
# DISASM-NEXT: callq -93 <foo>
# DISASM-NEXT: callq -99 <foo>
# DISASM-NEXT: callq -104 <hid>
# DISASM-NEXT: callq -110 <hid>
# DISASM-NEXT: callq *3979(%rip)
# DISASM-NEXT: callq *3973(%rip)
# DISASM-NEXT: callq *4155(%rip)
# DISASM-NEXT: callq *4149(%rip)
# DISASM-NEXT: jmp -128 <foo>
# DISASM-NEXT: nop
# DISASM-NEXT: jmp -134 <foo>
@ -47,8 +47,8 @@
# DISASM-NEXT: nop
# DISASM-NEXT: jmp -145 <hid>
# DISASM-NEXT: nop
# DISASM-NEXT: jmpq *3943(%rip)
# DISASM-NEXT: jmpq *3937(%rip)
# DISASM-NEXT: jmpq *4119(%rip)
# DISASM-NEXT: jmpq *4113(%rip)
.text
.globl foo

View File

@ -8,16 +8,16 @@
// RUN: llvm-objdump -s -j .got.plt %t1.exe | FileCheck %s
// CHECK: Contents of section .got.plt:
// CHECK-NEXT: cafe00003000 00200000 feca0000 00000000 00000000
// CHECK-NEXT: cafe00003010 00000000 00000000 26100000 feca0000
// CHECK-NEXT: cafe00003380 b0220000 feca0000 00000000 00000000
// CHECK-NEXT: cafe00003390 00000000 00000000 a6120000 feca0000
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t2.o
// RUN: ld.lld -o %t2.exe %t2.o %t.so -image-base=0xcafe00000000 -z retpolineplt
// RUN: llvm-objdump -s -j .got.plt %t2.exe | FileCheck -check-prefix=RETPOLINE %s
// RETPOLINE: Contents of section .got.plt:
// RETPOLINE-NEXT: cafe00003000 00200000 feca0000 00000000 00000000
// RETPOLINE-NEXT: cafe00003010 00000000 00000000 51100000 feca0000
// RETPOLINE-NEXT: cafe000033b0 e0220000 feca0000 00000000 00000000
// RETPOLINE-NEXT: cafe000033c0 00000000 00000000 d1120000 feca0000
.global _start
_start:

Some files were not shown because too many files have changed in this diff Show More