lld: Default image base address to 0x200000 on x86-64

Align to the large page size (known as a superpage or huge page).
FreeBSD automatically promotes large, superpage-aligned allocations.

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

llvm-svn: 287782
This commit is contained in:
Ed Maste 2016-11-23 17:44:02 +00:00
parent a3d2f703a5
commit 8fd0196c6f
71 changed files with 465 additions and 464 deletions

View File

@ -558,6 +558,9 @@ template <class ELFT> X86_64TargetInfo<ELFT>::X86_64TargetInfo() {
PltEntrySize = 16;
PltHeaderSize = 16;
TlsGdRelaxSkip = 2;
// Align to the large page size (known as a superpage or huge page).
// FreeBSD automatically promotes large, superpage-aligned allocations.
DefaultImageBase = 0x200000;
}
template <class ELFT>

View File

@ -64,12 +64,10 @@ public:
unsigned PageSize = 4096;
unsigned MaxPageSize = 4096;
// On freebsd x86_64 the first page cannot be mmaped.
// On linux that is controled by vm.mmap_min_addr. At least on some x86_64
// On FreeBSD x86_64 the first page cannot be mmaped.
// On Linux that is controled by vm.mmap_min_addr. At least on some x86_64
// installs that is 65536, so the first 15 pages cannot be used.
// Given that, the smallest value that can be used in here is 0x10000.
// If using 2MB pages, the smallest page aligned address that works is
// 0x200000, but it looks like every OS uses 4k pages for executables.
uint64_t DefaultImageBase = 0x10000;
uint32_t CopyRel;

View File

@ -15,10 +15,10 @@
# meet symbol should be used.
# CHECK: _bar:
# CHECK-NEXT: 11000: b8 01 00 00 00 movl $1, %eax
# CHECK-NEXT: 201000: b8 01 00 00 00 movl $1, %eax
# REVERT: _bar:
# REVERT-NEXT: 11000: b8 02 00 00 00 movl $2, %eax
# REVERT-NEXT: 201000: b8 02 00 00 00 movl $2, %eax
.globl _bar
.type _bar, @function

View File

@ -16,8 +16,8 @@ _start:
// CHECK-NEXT: ProgramHeader {
// CHECK-NEXT: Type: PT_PHDR (0x6)
// CHECK-NEXT: Offset: 0x40
// CHECK-NEXT: VirtualAddress: 0x10040
// CHECK-NEXT: PhysicalAddress: 0x10040
// CHECK-NEXT: VirtualAddress: 0x200040
// CHECK-NEXT: PhysicalAddress: 0x200040
// CHECK-NEXT: FileSize: 280
// CHECK-NEXT: MemSize: 280
// CHECK-NEXT: Flags [ (0x4)
@ -28,8 +28,8 @@ _start:
// CHECK-NEXT: ProgramHeader {
// CHECK-NEXT: Type: PT_LOAD (0x1)
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: VirtualAddress: 0x10000
// CHECK-NEXT: PhysicalAddress: 0x10000
// CHECK-NEXT: VirtualAddress: 0x200000
// CHECK-NEXT: PhysicalAddress: 0x200000
// CHECK-NEXT: FileSize: 344
// CHECK-NEXT: MemSize: 344
// CHECK-NEXT: Flags [ (0x4)
@ -40,8 +40,8 @@ _start:
// CHECK-NEXT: ProgramHeader {
// CHECK-NEXT: Type: PT_LOAD (0x1)
// CHECK-NEXT: Offset: 0x1000
// CHECK-NEXT: VirtualAddress: 0x11000
// CHECK-NEXT: PhysicalAddress: 0x11000
// CHECK-NEXT: VirtualAddress: 0x201000
// CHECK-NEXT: PhysicalAddress: 0x201000
// CHECK-NEXT: FileSize: 1
// CHECK-NEXT: MemSize: 1
// CHECK-NEXT: Flags [ (0x5)
@ -53,8 +53,8 @@ _start:
// CHECK-NEXT: ProgramHeader {
// CHECK-NEXT: Type: PT_TLS (0x7)
// CHECK-NEXT: Offset: 0x1001
// CHECK-NEXT: VirtualAddress: 0x11001
// CHECK-NEXT: PhysicalAddress: 0x11001
// CHECK-NEXT: VirtualAddress: 0x201001
// CHECK-NEXT: PhysicalAddress: 0x201001
// CHECK-NEXT: FileSize: 0
// CHECK-NEXT: MemSize: 4
// CHECK-NEXT: Flags [ (0x4)

View File

@ -60,7 +60,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_EXECINSTR (0x4)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x11000
# CHECK-NEXT: Address: 0x201000
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: Size: 16
# CHECK-NEXT: Link: 0
@ -151,8 +151,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_PHDR (0x6)
# CHECK-NEXT: Offset: 0x40
# CHECK-NEXT: VirtualAddress: 0x10040
# CHECK-NEXT: PhysicalAddress: 0x10040
# CHECK-NEXT: VirtualAddress: 0x200040
# CHECK-NEXT: PhysicalAddress: 0x200040
# CHECK-NEXT: FileSize: 224
# CHECK-NEXT: MemSize: 224
# CHECK-NEXT: Flags [ (0x4)
@ -163,8 +163,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
# CHECK-NEXT: VirtualAddress: 0x200000
# CHECK-NEXT: PhysicalAddress: 0x200000
# CHECK-NEXT: FileSize: 288
# CHECK-NEXT: MemSize: 288
# CHECK-NEXT: Flags [
@ -175,8 +175,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: VirtualAddress: 0x11000
# CHECK-NEXT: PhysicalAddress: 0x11000
# CHECK-NEXT: VirtualAddress: 0x201000
# CHECK-NEXT: PhysicalAddress: 0x201000
# CHECK-NEXT: FileSize: 16
# CHECK-NEXT: MemSize: 16
# CHECK-NEXT: Flags [ (0x5)

View File

@ -11,7 +11,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x11000
// CHECK-NEXT: Address: 0x201000
// CHECK-NEXT: Offset: 0x1000
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Link: 0

View File

@ -44,7 +44,7 @@ _start:
# DEFAULT: Contents of section .note.test:
# DEFAULT: Contents of section .note.gnu.build-id:
# DEFAULT-NEXT: 04000000 08000000 03000000 474e5500 ............GNU.
# DEFAULT-NEXT: 6a
# DEFAULT-NEXT: d08dafb4 e6294b62
# MD5: Contents of section .note.gnu.build-id:
# MD5-NEXT: 04000000 10000000 03000000 474e5500 ............GNU.
@ -52,7 +52,7 @@ _start:
# SHA1: Contents of section .note.gnu.build-id:
# SHA1-NEXT: 04000000 14000000 03000000 474e5500 ............GNU.
# SHA1-NEXT: 79
# SHA1-NEXT: 7a4f4eaf 69ceb948 4a7d6e51 2225e87c
# UUID: Contents of section .note.gnu.build-id:
# UUID-NEXT: 04000000 10000000 03000000 474e5500 ............GNU.

View File

@ -10,7 +10,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x11000
// CHECK-NEXT: Address: 0x201000
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 22
// CHECK-NEXT: Link: 0
@ -18,7 +18,7 @@
// CHECK-NEXT: AddressAlignment: 16
// CHECK: Name: sym1
// CHECK-NEXT: Value: 0x11004
// CHECK-NEXT: Value: 0x201004
// 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: 0x1100C
// CHECK-NEXT: Value: 0x20100C
// 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: 0x11014
// CHECK-NEXT: Value: 0x201014
// 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: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Object

View File

@ -40,7 +40,7 @@ _start:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None

View File

@ -37,7 +37,7 @@
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: foo1@
# CHECK-NEXT: Value: 0x11000
# CHECK-NEXT: Value: 0x201000
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Global (0x1)
# CHECK-NEXT: Type: None (0x0)
@ -64,7 +64,7 @@
# CHECK2-NEXT: }
# CHECK2-NEXT: Symbol {
# CHECK2-NEXT: Name: foo1@
# CHECK2-NEXT: Value: 0x11000
# CHECK2-NEXT: Value: 0x201000
# CHECK2-NEXT: Size: 0
# CHECK2-NEXT: Binding: Global (0x1)
# CHECK2-NEXT: Type: None (0x0)
@ -73,7 +73,7 @@
# CHECK2-NEXT: }
# CHECK2-NEXT: Symbol {
# CHECK2-NEXT: Name: foo2@
# CHECK2-NEXT: Value: 0x11001
# CHECK2-NEXT: Value: 0x201001
# CHECK2-NEXT: Size: 0
# CHECK2-NEXT: Binding: Global (0x1)
# CHECK2-NEXT: Type: None (0x0)
@ -82,7 +82,7 @@
# CHECK2-NEXT: }
# CHECK2-NEXT: Symbol {
# CHECK2-NEXT: Name: foo31@
# CHECK2-NEXT: Value: 0x11002
# CHECK2-NEXT: Value: 0x201002
# CHECK2-NEXT: Size: 0
# CHECK2-NEXT: Binding: Global (0x1)
# CHECK2-NEXT: Type: None (0x0)

View File

@ -8,7 +8,7 @@
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
// CHECK-NEXT: 0x13018 R_X86_64_JUMP_SLOT bar 0x0
// CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]

View File

@ -28,12 +28,12 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x11000
// CHECK-NEXT: Address: 0x201000
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x13018
// CHECK-NEXT: Offset: 0x203018
// CHECK-NEXT: Type: R_X86_64_JUMP_SLOT
// CHECK-NEXT: Symbol: bar
// CHECK-NEXT: Addend: 0x0

View File

@ -13,15 +13,15 @@
# CHECK: Sections:
# CHECK-NEXT: Idx Name Size Address Type
# CHECK-NEXT: 0 00000000 0000000000000000
# CHECK-NEXT: 1 .text 00000001 0000000000011000 TEXT DATA
# CHECK-NEXT: 2 .data 00000002 0000000000012000 DATA
# CHECK-NEXT: 3 .bss 00000006 0000000000012004 BSS
# CHECK-NEXT: 1 .text 00000001 0000000000201000 TEXT DATA
# CHECK-NEXT: 2 .data 00000002 0000000000202000 DATA
# CHECK-NEXT: 3 .bss 00000006 0000000000202004 BSS
# CHECK: SYMBOL TABLE:
# CHECK-NEXT: 0000000000000000 *UND* 00000000
# CHECK-NEXT: 0000000000012002 *ABS* 00000000 _edata
# CHECK-NEXT: 000000000001200a *ABS* 00000000 _end
# CHECK-NEXT: 0000000000011001 *ABS* 00000000 _etext
# CHECK-NEXT: 0000000000011000 .text 00000000 _start
# CHECK-NEXT: 0000000000202002 *ABS* 00000000 _edata
# CHECK-NEXT: 000000000020200a *ABS* 00000000 _end
# CHECK-NEXT: 0000000000201001 *ABS* 00000000 _etext
# CHECK-NEXT: 0000000000201000 .text 00000000 _start
# RUN: ld.lld -r %t.o -o %t2
# RUN: llvm-objdump -t %t2 | FileCheck %s --check-prefix=RELOCATABLE

View File

@ -5,10 +5,10 @@
# RUN: llvm-objdump -s %t2 | FileCheck %s
# CHECK: Contents of section .eh_frame_hdr:
# CHECK-NEXT: 101a0 011b033b b4ffffff 01000000 600e0000
# ^ FDE count
# CHECK-NEXT: 101b0 d0ffffff 00000000 00000000
# ^ FDE for f2
# CHECK-NEXT: 2001a0 011b033b b4ffffff 01000000 600e0000
# ^ FDE count
# CHECK-NEXT: 2001b0 d0ffffff 00000000 00000000
# ^ FDE for f2
.globl _start, f1, f2
_start:

View File

@ -32,13 +32,13 @@ _start:
//HDRDISASM: Disassembly of section foo:
//HDRDISASM-NEXT: foo:
//HDRDISASM-NEXT: 11000: 90 nop
//HDRDISASM-NEXT: 201000: 90 nop
//HDRDISASM-NEXT: Disassembly of section bar:
//HDRDISASM-NEXT: bar:
//HDRDISASM-NEXT: 11001: 90 nop
//HDRDISASM-NEXT: 201001: 90 nop
//HDRDISASM-NEXT: Disassembly of section dah:
//HDRDISASM-NEXT: dah:
//HDRDISASM-NEXT: 11002: 90 nop
//HDRDISASM-NEXT: 201002: 90 nop
// HDR: Sections [
// HDR: Section {
@ -48,7 +48,7 @@ _start:
// HDR-NEXT: Flags [
// HDR-NEXT: SHF_ALLOC
// HDR-NEXT: ]
// HDR-NEXT: Address: 0x10158
// HDR-NEXT: Address: 0x200158
// HDR-NEXT: Offset: 0x158
// HDR-NEXT: Size: 96
// HDR-NEXT: Link: 0
@ -64,16 +64,16 @@ _start:
// HDR-NEXT: 0050: 5A0E0000 01000000 00000000 00000000 |
// CIE: 14000000 00000000 017A5200 01781001 1B0C0708 90010000
// FDE(1): 14000000 1C000000 880E0000 01000000 00000000 00000000
// address of data (starts with 0x880E0000) = 0x10158 + 0x0020 = 0x10178
// The starting address to which this FDE applies = 0xE88 + 0x10178 = 0x11000
// address of data (starts with 0x880E0000) = 0x200158 + 0x0020 = 0x200178
// The starting address to which this FDE applies = 0xE88 + 0x200178 = 0x201000
// The number of bytes after the start address to which this FDE applies = 0x01000000 = 1
// FDE(2): 14000000 34000000 710E0000 01000000 00000000 00000000
// address of data (starts with 0x710E0000) = 0x10158 + 0x0038 = 0x10190
// The starting address to which this FDE applies = 0xE71 + 0x10190 = 0x11001
// address of data (starts with 0x710E0000) = 0x200158 + 0x0038 = 0x200190
// The starting address to which this FDE applies = 0xE71 + 0x200190 = 0x201001
// The number of bytes after the start address to which this FDE applies = 0x01000000 = 1
// FDE(3): 14000000 4C000000 5A0E0000 01000000 00000000 00000000
// address of data (starts with 0x5A0E0000) = 0x10158 + 0x0050 = 0x101A8
// The starting address to which this FDE applies = 0xE5A + 0x101A8 = 0x11002
// address of data (starts with 0x5A0E0000) = 0x200158 + 0x0050 = 0x2001A8
// The starting address to which this FDE applies = 0xE5A + 0x2001A8 = 0x201002
// The number of bytes after the start address to which this FDE applies = 0x01000000 = 1
// HDR-NEXT: )
// HDR-NEXT: }
@ -84,7 +84,7 @@ _start:
// HDR-NEXT: Flags [
// HDR-NEXT: SHF_ALLOC
// HDR-NEXT: ]
// HDR-NEXT: Address: 0x101B8
// HDR-NEXT: Address: 0x2001B8
// HDR-NEXT: Offset: 0x1B8
// HDR-NEXT: Size: 36
// HDR-NEXT: Link: 0
@ -96,28 +96,28 @@ _start:
// HDR-NEXT: 0010: B8FFFFFF 490E0000 D0FFFFFF 4A0E0000 |
// HDR-NEXT: 0020: E8FFFFFF |
// Header (always 4 bytes): 0x011B033B
// 9CFFFFFF = .eh_frame(0x10158) - .eh_frame_hdr(0x101B8) - 4
// 9CFFFFFF = .eh_frame(0x200158) - .eh_frame_hdr(0x2001B8) - 4
// 03000000 = 3 = the number of FDE pointers in the table.
// Entry(1): 480E0000 B8FFFFFF
// 480E0000 = 0x11000 - .eh_frame_hdr(0x101B8) = 0xE48
// B8FFFFFF = address of FDE(1) - .eh_frame_hdr(0x101B8) =
// = .eh_frame(0x10158) + 24 - 0x101B8 = 0xFFFFFFB8
// 480E0000 = 0x201000 - .eh_frame_hdr(0x2001B8) = 0xE48
// B8FFFFFF = address of FDE(1) - .eh_frame_hdr(0x2001B8) =
// = .eh_frame(0x200158) + 24 - 0x2001B8 = 0xFFFFFFB8
// Entry(2): 490E0000 D0FFFFFF
// 490E0000 = 0x11001 - .eh_frame_hdr(0x101B8) = 0xE49
// D0FFFFFF = address of FDE(2) - .eh_frame_hdr(0x101B8) =
// = .eh_frame(0x10158) + 24 + 24 - 0x101B8 = 0xFFFFFFD0
// 490E0000 = 0x201001 - .eh_frame_hdr(0x2001B8) = 0xE49
// D0FFFFFF = address of FDE(2) - .eh_frame_hdr(0x2001B8) =
// = .eh_frame(0x200158) + 24 + 24 - 0x2001B8 = 0xFFFFFFD0
// Entry(3): 4A0E0000 E8FFFFFF
// 4A0E0000 = 0x11002 - .eh_frame_hdr(0x101B8) = 0xE4A
// E8FFFFFF = address of FDE(2) - .eh_frame_hdr(0x101B8) =
// = .eh_frame(0x10158) + 24 + 24 - 0x101B8 = 0xFFFFFFE8
// 4A0E0000 = 0x201002 - .eh_frame_hdr(0x2001B8) = 0xE4A
// E8FFFFFF = address of FDE(2) - .eh_frame_hdr(0x2001B8) =
// = .eh_frame(0x200158) + 24 + 24 - 0x2001B8 = 0xFFFFFFE8
// HDR-NEXT: )
// HDR-NEXT: }
// HDR: ProgramHeaders [
// HDR: ProgramHeader {
// HDR: Type: PT_GNU_EH_FRAME
// HDR-NEXT: Offset: 0x1B8
// HDR-NEXT: VirtualAddress: 0x101B8
// HDR-NEXT: PhysicalAddress: 0x101B8
// HDR-NEXT: VirtualAddress: 0x2001B8
// HDR-NEXT: PhysicalAddress: 0x2001B8
// HDR-NEXT: FileSize: 36
// HDR-NEXT: MemSize: 36
// HDR-NEXT: Flags [

View File

@ -3,7 +3,7 @@
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
# RUN: ld.lld %t.o -o %t
# RUN: llvm-objdump -t %t | FileCheck %s
# CHECK: 0000000000010040 *ABS* 00000000 .hidden __ehdr_start
# CHECK: 0000000000200040 *ABS* 00000000 .hidden __ehdr_start
.text
.global _start, __ehdr_start

View File

@ -10,17 +10,17 @@
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x10120
// CHECK-NEXT: Address: 0x200120
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 48
// CHECK-NOT: .eh_frame
// 0x10120 = 65824
// 0x10120 + 5 = 65829
// 0x200120 = 2097440
// 0x200120 + 5 = 2097445
// DISASM: Disassembly of section .text:
// DISASM-NEXT: _start:
// DISASM-NEXT: 11000: {{.*}} movq 65824, %rax
// DISASM-NEXT: 11008: {{.*}} movq 65829, %rax
// DISASM-NEXT: 201000: {{.*}} movq 2097440, %rax
// DISASM-NEXT: 201008: {{.*}} movq 2097445, %rax
.section .eh_frame,"ax",@unwind

View File

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

View File

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

View File

@ -23,7 +23,7 @@
# WARN2: warning: entry symbol _start not found, assuming 0
# NOENTRY: Entry: 0x0
# SYM: Entry: 0x11000
# SYM: Entry: 0x201000
# DSO: Entry: 0x1000
# DEC: Entry: 0x1000
# HEX: Entry: 0xCAFE

View File

@ -6,7 +6,7 @@
# RUN: llvm-readobj -dyn-relocations %t | FileCheck %s
# CHECK: Dynamic Relocations {
# CHECK-NEXT: 0x120B0 R_X86_64_GLOB_DAT foo 0x0
# CHECK-NEXT: 0x2020B0 R_X86_64_GLOB_DAT foo 0x0
# CHECK-NEXT: }
.globl _start

View File

@ -22,8 +22,8 @@
// CHECK-NEXT: }
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
// CHECK-NEXT: 0x12018 R_X86_64_IRELATIVE
// CHECK-NEXT: 0x12020 R_X86_64_IRELATIVE
// CHECK-NEXT: 0x202018 R_X86_64_IRELATIVE
// CHECK-NEXT: 0x202020 R_X86_64_IRELATIVE
// CHECK-NEXT: }
// CHECK-NEXT: ]
// CHECK: Symbols [
@ -38,7 +38,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: __rela_iplt_end
// CHECK-NEXT: Value: 0x10188
// CHECK-NEXT: Value: 0x200188
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -60,7 +60,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x11002
// CHECK-NEXT: Value: 0x201002
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None
@ -69,7 +69,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: bar
// CHECK-NEXT: Value: 0x11001
// CHECK-NEXT: Value: 0x201001
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: GNU_IFunc
@ -78,7 +78,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: foo
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: GNU_IFunc
@ -89,26 +89,26 @@
// DISASM: Disassembly of section .text:
// DISASM-NEXT: foo:
// DISASM-NEXT: 11000: {{.*}} retq
// DISASM-NEXT: 201000: {{.*}} retq
// DISASM: bar:
// DISASM-NEXT: 11001: {{.*}} retq
// DISASM-NEXT: 201001: {{.*}} retq
// DISASM: _start:
// DISASM-NEXT: 11002: {{.*}} callq 41
// DISASM-NEXT: 11007: {{.*}} callq 52
// DISASM-NEXT: 1100c: {{.*}} movl $65880, %edx
// DISASM-NEXT: 11011: {{.*}} movl $65928, %edx
// DISASM-NEXT: 11016: {{.*}} movl $65929, %edx
// DISASM-NEXT: 201002: {{.*}} callq 41
// DISASM-NEXT: 201007: {{.*}} callq 52
// DISASM-NEXT: 20100c: {{.*}} movl $2097496, %edx
// DISASM-NEXT: 201011: {{.*}} movl $2097544, %edx
// DISASM-NEXT: 201016: {{.*}} movl $2097545, %edx
// DISASM-NEXT: Disassembly of section .plt:
// DISASM-NEXT: .plt:
// DISASM-NEXT: 11020: {{.*}} pushq 4066(%rip)
// DISASM-NEXT: 11026: {{.*}} jmpq *4068(%rip)
// DISASM-NEXT: 1102c: {{.*}} nopl (%rax)
// DISASM-NEXT: 11030: {{.*}} jmpq *4066(%rip)
// DISASM-NEXT: 11036: {{.*}} pushq $0
// DISASM-NEXT: 1103b: {{.*}} jmp -32
// DISASM-NEXT: 11040: {{.*}} jmpq *4058(%rip)
// DISASM-NEXT: 11046: {{.*}} pushq $1
// DISASM-NEXT: 1104b: {{.*}} jmp -48
// DISASM-NEXT: 201020: {{.*}} pushq 4066(%rip)
// DISASM-NEXT: 201026: {{.*}} jmpq *4068(%rip)
// DISASM-NEXT: 20102c: {{.*}} nopl (%rax)
// DISASM-NEXT: 201030: {{.*}} jmpq *4066(%rip)
// DISASM-NEXT: 201036: {{.*}} pushq $0
// DISASM-NEXT: 20103b: {{.*}} jmp -32
// DISASM-NEXT: 201040: {{.*}} jmpq *4058(%rip)
// DISASM-NEXT: 201046: {{.*}} pushq $1
// DISASM-NEXT: 20104b: {{.*}} jmp -48
.text
.type foo STT_GNU_IFUNC

View File

@ -12,7 +12,7 @@
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x120B0
// CHECK-NEXT: Address: 0x2020B0
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 16
// CHECK-NEXT: Link: 0
@ -21,22 +21,22 @@
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x120B0 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: 0x120B8 R_X86_64_GLOB_DAT zed 0x0
// CHECK-NEXT: 0x2020B0 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: 0x2020B8 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:
// 0x120B0 - (0x11000 + 2) - 4 = 4266
// 0x120B0 - (0x11006 + 2) - 4 = 4260
// 0x120A8 - (0x1100c + 2) - 4 = 4262
// 0x2020B0 - (0x201000 + 2) - 4 = 4266
// 0x2020B0 - (0x201006 + 2) - 4 = 4260
// 0x2020A8 - (0x20100c + 2) - 4 = 4262
// DISASM: _start:
// DISASM-NEXT: 11000: {{.*}} jmpq *4266(%rip)
// DISASM-NEXT: 11006: {{.*}} jmpq *4260(%rip)
// DISASM-NEXT: 1100c: {{.*}} jmpq *4262(%rip)
// DISASM-NEXT: 201000: {{.*}} jmpq *4266(%rip)
// DISASM-NEXT: 201006: {{.*}} jmpq *4260(%rip)
// DISASM-NEXT: 20100c: {{.*}} jmpq *4262(%rip)
.global _start
_start:

View File

@ -10,20 +10,20 @@
# SYMRELOC: Symbols [
# SYMRELOC: Symbol {
# SYMRELOC: Name: bar
# SYMRELOC-NEXT: Value: 0x12000
# SYMRELOC-NEXT: Value: 0x202000
## 73728 = 0x12000 (bar)
## 2105344 = 0x202000 (bar)
# DISASM: Disassembly of section .text:
# DISASM-NEXT: _start:
# DISASM-NEXT: 11000: {{.*}} adcq $73728, %rax
# DISASM-NEXT: 11007: {{.*}} addq $73728, %rbx
# DISASM-NEXT: 1100e: {{.*}} andq $73728, %rcx
# DISASM-NEXT: 11015: {{.*}} cmpq $73728, %rdx
# DISASM-NEXT: 1101c: {{.*}} orq $73728, %rdi
# DISASM-NEXT: 11023: {{.*}} sbbq $73728, %rsi
# DISASM-NEXT: 1102a: {{.*}} subq $73728, %rbp
# DISASM-NEXT: 11031: {{.*}} xorq $73728, %r8
# DISASM-NEXT: 11038: {{.*}} testq $73728, %r15
# DISASM-NEXT: 201000: {{.*}} adcq $2105344, %rax
# DISASM-NEXT: 201007: {{.*}} addq $2105344, %rbx
# DISASM-NEXT: 20100e: {{.*}} andq $2105344, %rcx
# DISASM-NEXT: 201015: {{.*}} cmpq $2105344, %rdx
# DISASM-NEXT: 20101c: {{.*}} orq $2105344, %rdi
# DISASM-NEXT: 201023: {{.*}} sbbq $2105344, %rsi
# DISASM-NEXT: 20102a: {{.*}} subq $2105344, %rbp
# DISASM-NEXT: 201031: {{.*}} xorq $2105344, %r8
# DISASM-NEXT: 201038: {{.*}} testq $2105344, %r15
# RUN: ld.lld -shared %t.o -o %t2
# RUN: llvm-readobj -s -r -d %t2 | FileCheck --check-prefix=SEC-PIC %s

View File

@ -8,17 +8,17 @@
# RELOC: Relocations [
# RELOC: ]
# 0x11003 + 7 - 10 = 0x11000
# 0x1100a + 7 - 17 = 0x11000
# 0x11011 + 7 - 23 = 0x11001
# 0x11018 + 7 - 30 = 0x11001
# 0x201003 + 7 - 10 = 0x201000
# 0x20100a + 7 - 17 = 0x201000
# 0x201011 + 7 - 23 = 0x201001
# 0x201018 + 7 - 30 = 0x201001
# DISASM: Disassembly of section .text:
# DISASM-NEXT: foo:
# DISASM-NEXT: 11000: 90 nop
# DISASM-NEXT: 201000: 90 nop
# DISASM: hid:
# DISASM-NEXT: 11001: 90 nop
# DISASM-NEXT: 201001: 90 nop
# DISASM: ifunc:
# DISASM-NEXT: 11002: c3 retq
# DISASM-NEXT: 201002: c3 retq
# DISASM: _start:
# DISASM-NEXT: leaq -10(%rip), %rax
# DISASM-NEXT: leaq -17(%rip), %rax

View File

@ -7,8 +7,8 @@
# CHECK: selected .text.f2
# CHECK: removed .text.f1
# ALIGN: 0000000000011000 .text 00000000 _start
# ALIGN: 0000000000011100 .text 00000000 f1
# ALIGN: 0000000000201000 .text 00000000 _start
# ALIGN: 0000000000201100 .text 00000000 f1
.globl _start, f1, f2
_start:

View File

@ -8,8 +8,8 @@
# CHECK: ProgramHeader {
# CHECK: Type: PT_LOAD
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
# CHECK-NEXT: VirtualAddress: 0x200000
# CHECK-NEXT: PhysicalAddress: 0x200000
# CHECK-NEXT: FileSize: 344
# CHECK-NEXT: MemSize: 344
# CHECK-NEXT: Flags [
@ -20,8 +20,8 @@
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD
# CHECK-NEXT: Offset: 0x4000
# CHECK-NEXT: VirtualAddress: 0x14000
# CHECK-NEXT: PhysicalAddress: 0x14000
# CHECK-NEXT: VirtualAddress: 0x204000
# CHECK-NEXT: PhysicalAddress: 0x204000
# CHECK-NEXT: FileSize: 1
# CHECK-NEXT: MemSize: 1
# CHECK-NEXT: Flags [
@ -33,8 +33,8 @@
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD
# CHECK-NEXT: Offset: 0x8000
# CHECK-NEXT: VirtualAddress: 0x18000
# CHECK-NEXT: PhysicalAddress: 0x18000
# CHECK-NEXT: VirtualAddress: 0x208000
# CHECK-NEXT: PhysicalAddress: 0x208000
# CHECK-NEXT: FileSize: 8
# CHECK-NEXT: MemSize: 8
# CHECK-NEXT: Flags [

View File

@ -50,7 +50,7 @@
# Check that we can do the same as above inside SECTIONS block.
# RUN: echo "SECTIONS { \
# RUN: . = 0x11000; \
# RUN: . = 0x201000; \
# RUN: .text : { *(.text) } \
# RUN: PROVIDE_HIDDEN(_begin_sec = ADDR(.text)); \
# RUN: PROVIDE_HIDDEN(_end_sec = ADDR(.text) + SIZEOF(.text)); }" > %t.script
@ -74,11 +74,11 @@
# SIMPLE-NEXT: 0000000000001018 .eh_frame_hdr 00000000 __eh_frame_hdr_end
# SIMPLE-NEXT: 0000000000001020 *ABS* 00000000 __eh_frame_hdr_end2
# NO-SEC: 0000000000011000 .text 00000000 .hidden _begin_sec
# NO-SEC-NEXT: 0000000000011001 .text 00000000 .hidden _end_sec
# NO-SEC: 0000000000201000 .text 00000000 .hidden _begin_sec
# NO-SEC-NEXT: 0000000000201001 .text 00000000 .hidden _end_sec
# IN-SEC: 0000000000011000 .text 00000000 .hidden _begin_sec
# IN-SEC-NEXT: 0000000000011001 .text 00000000 .hidden _end_sec
# IN-SEC: 0000000000201000 .text 00000000 .hidden _begin_sec
# IN-SEC-NEXT: 0000000000201001 .text 00000000 .hidden _end_sec
.global _start
_start:

View File

@ -14,14 +14,14 @@ _start:
foo:
nop
// 0x120B0 - 0x11000 - 5 = 4251
// 0x120B8 - 0x11005 - 5 = 4254
// 0x2020B0 - 0x201000 - 5 = 4251
// 0x2020B8 - 0x201005 - 5 = 4254
// DISASM: _start:
// DISASM-NEXT: 11000: {{.*}} callq 4267
// DISASM-NEXT: 11005: {{.*}} callq 4270
// DISASM-NEXT: 201000: {{.*}} callq 4267
// DISASM-NEXT: 201005: {{.*}} callq 4270
// DISASM: foo:
// DISASM-NEXT: 1100a: {{.*}} nop
// DISASM-NEXT: 20100a: {{.*}} nop
// CHECK: Name: .got
// CHECK-NEXT: Type: SHT_PROGBITS
@ -29,7 +29,7 @@ foo:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x120B0
// CHECK-NEXT: Address: 0x2020B0
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 16
// CHECK-NEXT: Link: 0
@ -37,12 +37,12 @@ foo:
// CHECK-NEXT: AddressAlignment: 8
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
// 0x1200a in little endian
// CHECK-NEXT: 0000: 00000000 00000000 0A100100 00000000
// 0x20200a in little endian
// CHECK-NEXT: 0000: 00000000 00000000 0A102000 00000000
// CHECK-NEXT: )
// CHECK: Relocations [
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x120B0 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: 0x2020B0 R_X86_64_GLOB_DAT bar 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]

View File

@ -46,7 +46,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: blah
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -55,7 +55,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: foo
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -64,7 +64,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: goo
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -73,7 +73,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None

View File

@ -18,7 +18,7 @@
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: bar
; CHECK-NEXT: Value: 0x11010
; CHECK-NEXT: Value: 0x201010
; CHECK-NEXT: Size: 8
; CHECK-NEXT: Binding: Local (0x0)
; CHECK-NEXT: Type: Function (0x2)
@ -29,7 +29,7 @@
; CHECK-NEXT: }
; CHECK-NEXT: Symbol {
; CHECK-NEXT: Name: foo
; CHECK-NEXT: Value: 0x11000
; CHECK-NEXT: Value: 0x201000
; CHECK-NEXT: Size: 8
; CHECK-NEXT: Binding: Global (0x1)
; CHECK-NEXT: Type: Function (0x2)

View File

@ -7,7 +7,7 @@
; RUN: llvm-readobj -dyn-symbols %t | FileCheck %s
; CHECK: Name: __progname@
; CHECK-NEXT: Value: 0x11010
; CHECK-NEXT: Value: 0x201010
; CHECK-NEXT: Size: 1
; CHECK-NEXT: Binding: Global (0x1)
; CHECK-NEXT: Type: Function

View File

@ -20,7 +20,7 @@ declare i32 @printf(i8*, ...)
; Check that puts symbol is present in the dynamic symbol table and
; there's a relocation for it.
; CHECK: Dynamic Relocations {
; CHECK-NEXT: 0x13018 R_X86_64_JUMP_SLOT puts 0x0
; CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT puts 0x0
; CHECK-NEXT: }
; CHECK: DynamicSymbols [

View File

@ -23,7 +23,7 @@ zed:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_MERGE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x10120
// CHECK-NEXT: Address: 0x200120
// CHECK-NEXT: Offset: 0x120
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Link: 0
@ -35,13 +35,13 @@ zed:
// CHECK-NEXT: )
// Address of the constant 0x10 = 0x10120 = 65824
// Address of the constant 0x42 = 0x10124 = 65828
// Address of the constant 0x10 = 0x200120 = 2097440
// Address of the constant 0x42 = 0x200124 = 2097444
// CHECK: Symbols [
// CHECK: Name: bar
// CHECK-NEXT: Value: 0x10124
// CHECK-NEXT: Value: 0x200124
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Loca
// CHECK-NEXT: Type: None
@ -49,7 +49,7 @@ zed:
// CHECK-NEXT: Section: .mysec
// CHECK: Name: zed
// CHECK-NEXT: Value: 0x10124
// CHECK-NEXT: Value: 0x200124
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -57,7 +57,7 @@ zed:
// CHECK-NEXT: Section: .mysec
// CHECK: Name: foo
// CHECK-NEXT: Value: 0x10124
// CHECK-NEXT: Value: 0x200124
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -75,37 +75,37 @@ _start:
// DISASM-NEXT: _start:
movl .mysec, %eax
// addr(0x10) = 65824
// DISASM-NEXT: movl 65824, %eax
// addr(0x10) = 2097440
// DISASM-NEXT: movl 2097440, %eax
movl .mysec+7, %eax
// addr(0x42) + 3 = 65828 + 3 = 65831
// DISASM-NEXT: movl 65831, %eax
// addr(0x42) + 3 = 2097444 + 3 = 2097447
// DISASM-NEXT: movl 2097447, %eax
movl .mysec+8, %eax
// addr(0x42) = 65828
// DISASM-NEXT: movl 65828, %eax
// addr(0x42) = 2097444
// DISASM-NEXT: movl 2097444, %eax
movl bar+7, %eax
// addr(0x42) + 7 = 65828 + 7 = 65835
// DISASM-NEXT: movl 65835, %eax
// addr(0x42) + 7 = 2097444 + 7 = 2097451
// DISASM-NEXT: movl 2097451, %eax
movl bar+8, %eax
// addr(0x42) + 8 = 65828 + 8 = 65836
// DISASM-NEXT: movl 65836, %eax
// addr(0x42) + 8 = 2097444 + 8 = 2097452
// DISASM-NEXT: movl 2097452, %eax
movl foo, %eax
// addr(0x42) = 65828
// DISASM-NEXT: movl 65828, %eax
// addr(0x42) = 2097444
// DISASM-NEXT: movl 2097444, %eax
movl foo+7, %eax
// addr(0x42) + 7 = = 65828 + 7 = 65835
// DISASM-NEXT: movl 65835, %eax
// addr(0x42) + 7 = = 2097444 + 7 = 2097451
// DISASM-NEXT: movl 2097451, %eax
movl foo+8, %eax
// addr(0x42) + 8 = = 65828 + 8 = 65836
// DISASM-NEXT: movl 65836, %eax
// addr(0x42) + 8 = = 2097444 + 8 = 2097452
// DISASM-NEXT: movl 2097452, %eax
// From the other file: movl .mysec, %eax
// addr(0x42) = 65828
// DISASM-NEXT: movl 65828, %eax
// addr(0x42) = 2097444
// DISASM-NEXT: movl 2097444, %eax

View File

@ -6,7 +6,7 @@
# CHECK: Disassembly of section .text:
# CHECK-NEXT: _start
# CHECK-NEXT: 11000: {{.*}} callq -69637
# CHECK-NEXT: 201000: {{.*}} callq -2101253
# next code will not link without noinhibit-exec flag
# because of undefined symbol _bar

View File

@ -10,8 +10,8 @@
# CHECK: Relocations [
# CHECK-NEXT: Section ({{.*}}) .rela.dyn {
# CHECK-NEXT: 0x120B0 R_X86_64_GLOB_DAT bar 0x0
# CHECK-NEXT: 0x120B8 R_X86_64_GLOB_DAT zed 0x0
# CHECK-NEXT: 0x2020B0 R_X86_64_GLOB_DAT bar 0x0
# CHECK-NEXT: 0x2020B8 R_X86_64_GLOB_DAT zed 0x0
# CHECK-NEXT: }
# CHECK-NEXT: ]

View File

@ -6,8 +6,8 @@
# CHECK: ProgramHeader {
# CHECK: Type: PT_OPENBSD_RANDOMIZE (0x65A3DBE6)
# CHECK-NEXT: Offset: 0x158
# CHECK-NEXT: VirtualAddress: 0x10158
# CHECK-NEXT: PhysicalAddress: 0x10158
# CHECK-NEXT: VirtualAddress: 0x200158
# CHECK-NEXT: PhysicalAddress: 0x200158
# CHECK-NEXT: FileSize: 8
# CHECK-NEXT: MemSize: 8
# CHECK-NEXT: Flags [ (0x4)

View File

@ -37,7 +37,7 @@
// CHECK2-NEXT: SHF_ALLOC
// CHECK2-NEXT: SHF_EXECINSTR
// CHECK2-NEXT: ]
// CHECK2-NEXT: Address: 0x11020
// CHECK2-NEXT: Address: 0x201020
// CHECK2-NEXT: Offset:
// CHECK2-NEXT: Size: 48
// CHECK2-NEXT: Link: 0
@ -46,8 +46,8 @@
// CHECK2: Relocations [
// CHECK2-NEXT: Section ({{.*}}) .rela.plt {
// CHECK2-NEXT: 0x13018 R_X86_64_JUMP_SLOT bar 0x0
// CHECK2-NEXT: 0x13020 R_X86_64_JUMP_SLOT zed 0x0
// CHECK2-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar 0x0
// CHECK2-NEXT: 0x203020 R_X86_64_JUMP_SLOT zed 0x0
// CHECK2-NEXT: }
// CHECK2-NEXT: ]
@ -84,32 +84,32 @@
// DISASM-NEXT: 1056: 68 02 00 00 00 pushq $2
// DISASM-NEXT: 105b: e9 c0 ff ff ff jmp -64 <.plt>
// 0x11030 - (0x11000 + 1) - 4 = 43
// 0x11030 - (0x11005 + 1) - 4 = 38
// 0x11040 - (0x1100a + 1) - 4 = 49
// 0x11000 - (0x1100f + 1) - 4 = -20
// 0x201030 - (0x201000 + 1) - 4 = 43
// 0x201030 - (0x201005 + 1) - 4 = 38
// 0x201040 - (0x20100a + 1) - 4 = 49
// 0x201000 - (0x20100f + 1) - 4 = -20
// DISASM2: _start:
// DISASM2-NEXT: 11000: e9 {{.*}} jmp 43
// DISASM2-NEXT: 11005: e9 {{.*}} jmp 38
// DISASM2-NEXT: 1100a: e9 {{.*}} jmp 49
// DISASM2-NEXT: 1100f: e9 {{.*}} jmp -20
// DISASM2-NEXT: 201000: e9 {{.*}} jmp 43
// DISASM2-NEXT: 201005: e9 {{.*}} jmp 38
// DISASM2-NEXT: 20100a: e9 {{.*}} jmp 49
// DISASM2-NEXT: 20100f: e9 {{.*}} jmp -20
// 0x13018 - 0x11036 = 4242
// 0x13020 - 0x11046 = 4234
// 0x203018 - 0x201036 = 4242
// 0x203020 - 0x201046 = 4234
// DISASM2: Disassembly of section .plt:
// DISASM2-NEXT: .plt:
// DISASM2-NEXT: 11020: ff 35 e2 1f 00 00 pushq 8162(%rip)
// DISASM2-NEXT: 11026: ff 25 e4 1f 00 00 jmpq *8164(%rip)
// DISASM2-NEXT: 1102c: 0f 1f 40 00 nopl (%rax)
// DISASM2-NEXT: 11030: ff 25 e2 1f 00 00 jmpq *8162(%rip)
// DISASM2-NEXT: 11036: 68 00 00 00 00 pushq $0
// DISASM2-NEXT: 1103b: e9 e0 ff ff ff jmp -32 <.plt>
// DISASM2-NEXT: 11040: ff 25 da 1f 00 00 jmpq *8154(%rip)
// DISASM2-NEXT: 11046: 68 01 00 00 00 pushq $1
// DISASM2-NEXT: 1104b: e9 d0 ff ff ff jmp -48 <.plt>
// DISASM2-NOT: 110C0
// DISASM2-NEXT: 201020: ff 35 e2 1f 00 00 pushq 8162(%rip)
// DISASM2-NEXT: 201026: ff 25 e4 1f 00 00 jmpq *8164(%rip)
// DISASM2-NEXT: 20102c: 0f 1f 40 00 nopl (%rax)
// DISASM2-NEXT: 201030: ff 25 e2 1f 00 00 jmpq *8162(%rip)
// DISASM2-NEXT: 201036: 68 00 00 00 00 pushq $0
// DISASM2-NEXT: 20103b: e9 e0 ff ff ff jmp -32 <.plt>
// DISASM2-NEXT: 201040: ff 25 da 1f 00 00 jmpq *8154(%rip)
// DISASM2-NEXT: 201046: 68 01 00 00 00 pushq $1
// DISASM2-NEXT: 20104b: e9 d0 ff ff ff jmp -48 <.plt>
// DISASM2-NOT: 2010C0
.global _start
_start:

View File

@ -63,7 +63,7 @@ _start:
// CHECK-NEXT: ]
// CHECK: Name: __fini_array_end
// CHECK-NEXT: Value: 0x1201B
// CHECK-NEXT: Value: 0x20201B
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -85,7 +85,7 @@ _start:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: __init_array_end
// CHECK-NEXT: Value: 0x12008
// CHECK-NEXT: Value: 0x202008
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -107,7 +107,7 @@ _start:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: __preinit_array_end
// CHECK-NEXT: Value: 0x12011
// CHECK-NEXT: Value: 0x202011
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -137,16 +137,16 @@ _start:
// CHECK: FINI_ARRAYSZ [[FINI_SIZE]] (bytes)
// 0x12008 - (0x11000 + 5) = 4099
// 0x12011 - (0x11005 + 5) = 4103
// 0x12000 - (0x1100a + 5) = 4081
// 0x12008 - (0x1100f + 5) = 4084
// 0x12011 - (0x11014 + 5) = 4088
// 0x1201B - (0x11019 + 5) = 4093
// 0x202008 - (0x201000 + 5) = 4099
// 0x202011 - (0x201005 + 5) = 4103
// 0x202000 - (0x20100a + 5) = 4081
// 0x202008 - (0x20100f + 5) = 4084
// 0x202011 - (0x201014 + 5) = 4088
// 0x20201B - (0x201019 + 5) = 4093
// DISASM: _start:
// DISASM-NEXT: 11000: e8 {{.*}} callq 4099
// DISASM-NEXT: 11005: e8 {{.*}} callq 4103
// DISASM-NEXT: 1100a: e8 {{.*}} callq 4081
// DISASM-NEXT: 1100f: e8 {{.*}} callq 4084
// DISASM-NEXT: 11014: e8 {{.*}} callq 4088
// DISASM-NEXT: 11019: e8 {{.*}} callq 4093
// DISASM-NEXT: 201000: e8 {{.*}} callq 4099
// DISASM-NEXT: 201005: e8 {{.*}} callq 4103
// DISASM-NEXT: 20100a: e8 {{.*}} callq 4081
// DISASM-NEXT: 20100f: e8 {{.*}} callq 4084
// DISASM-NEXT: 201014: e8 {{.*}} callq 4088
// DISASM-NEXT: 201019: e8 {{.*}} callq 4093

View File

@ -13,18 +13,18 @@ _start:
call __fini_array_end
// With no .init_array section the symbols resolve to 0
// 0 - (0x11000 + 5) = -69637
// 0 - (0x11005 + 5) = -69642
// 0 - (0x1100a + 5) = -69647
// 0 - (0x1100f + 5) = -69652
// 0 - (0x11014 + 5) = -69657
// 0 - (0x11019 + 5) = -69662
// 0 - (0x201000 + 5) = -2101253
// 0 - (0x201005 + 5) = -2101258
// 0 - (0x20100a + 5) = -2101263
// 0 - (0x20100f + 5) = -2101268
// 0 - (0x201014 + 5) = -2101273
// 0 - (0x201019 + 5) = -2101278
// CHECK: Disassembly of section .text:
// CHECK-NEXT: _start:
// CHECK-NEXT: 11000: e8 fb ef fe ff callq -69637
// CHECK-NEXT: 11005: e8 f6 ef fe ff callq -69642
// CHECK-NEXT: 1100a: e8 f1 ef fe ff callq -69647
// CHECK-NEXT: 1100f: e8 ec ef fe ff callq -69652
// CHECK-NEXT: 11014: e8 e7 ef fe ff callq -69657
// CHECK-NEXT: 11019: e8 e2 ef fe ff callq -69662
// CHECK-NEXT: 201000: e8 fb ef df ff callq -2101253
// CHECK-NEXT: 201005: e8 f6 ef df ff callq -2101258
// CHECK-NEXT: 20100a: e8 f1 ef df ff callq -2101263
// CHECK-NEXT: 20100f: e8 ec ef df ff callq -2101268
// CHECK-NEXT: 201014: e8 e7 ef df ff callq -2101273
// CHECK-NEXT: 201019: e8 e2 ef df ff callq -2101278

View File

@ -35,8 +35,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_PHDR (0x6)
# CHECK-NEXT: Offset: 0x40
# CHECK-NEXT: VirtualAddress: 0x10040
# CHECK-NEXT: PhysicalAddress: 0x10040
# CHECK-NEXT: VirtualAddress: 0x200040
# CHECK-NEXT: PhysicalAddress: 0x200040
# CHECK-NEXT: FileSize: 280
# CHECK-NEXT: MemSize: 280
# CHECK-NEXT: Flags [ (0x4)

View File

@ -79,7 +79,7 @@
# CHECKEXE-NEXT: Type: Executable
# CHECKEXE-NEXT: Machine: EM_X86_64
# CHECKEXE-NEXT: Version: 1
# CHECKEXE-NEXT: Entry: 0x11000
# CHECKEXE-NEXT: Entry: 0x201000
# CHECKEXE-NEXT: ProgramHeaderOffset: 0x40
# CHECKEXE-NEXT: SectionHeaderOffset: 0x11F8
# CHECKEXE-NEXT: Flags [

View File

@ -10,5 +10,5 @@ _start:
.global sym1
.comm sym1,4,4
// CHECK: 11000: {{.*}} movl $1, 4086(%rip)
// CHECK: 0000000000012000 g .bss 00000004 sym1
// CHECK: 201000: {{.*}} movl $1, 4086(%rip)
// CHECK: 0000000000202000 g .bss 00000004 sym1

View File

@ -22,7 +22,7 @@ _start:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x11000
// CHECK-NEXT: Address: 0x201000
// CHECK-NEXT: Offset: 0x1000
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Link: 0
@ -30,7 +30,7 @@ _start:
// CHECK-NEXT: AddressAlignment: 4
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 10300100
// CHECK-NEXT: 0000: 10302000
// CHECK-NEXT: )
// CHECK: Name: bar
@ -39,7 +39,7 @@ _start:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x13000
// CHECK-NEXT: Address: 0x203000
// CHECK-NEXT: Offset: 0x3000
// CHECK-NEXT: Size: 8
// CHECK-NEXT: Link: 0
@ -67,7 +67,7 @@ _start:
// CHECK: Relocations [
// CHECK-NEXT: Section (4) .rela.dyn {
// CHECK-NEXT: 0x13010 R_X86_64_COPY x 0x0
// CHECK-NEXT: 0x13000 R_X86_64_64 z 0x0
// CHECK-NEXT: 0x203010 R_X86_64_COPY x 0x0
// CHECK-NEXT: 0x203000 R_X86_64_64 z 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]

View File

@ -22,7 +22,7 @@ movl $z, %edx
// CHECK-NEXT: SHF_ALLOC (0x2)
// CHECK-NEXT: SHF_WRITE (0x1)
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x13000
// CHECK-NEXT: Address: 0x203000
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 24
// CHECK-NEXT: Link: 0
@ -53,15 +53,15 @@ movl $z, %edx
// CHECK-NEXT: }
// CHECK-NEXT: ]
// 77824 = 0x13000
// 2109440 = 0x203000
// 16 is alignment here
// 77840 = 0x13000 + 16
// 77844 = 0x13000 + 16 + 4
// 2109456 = 0x203000 + 16
// 2109460 = 0x203000 + 16 + 4
// CODE: Disassembly of section .text:
// CODE-NEXT: _start:
// CODE-NEXT: 11000: {{.*}} movl $5, 77824
// CODE-NEXT: 1100b: {{.*}} movl $7, 77840
// CODE-NEXT: 11016: {{.*}} movl $9, 77844
// CODE-NEXT: 11021: {{.*}} movl $77824, %edx
// CODE-NEXT: 11026: {{.*}} movl $77840, %edx
// CODE-NEXT: 1102b: {{.*}} movl $77844, %edx
// 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

View File

@ -20,7 +20,7 @@ R_X86_64_32:
// constants in hex.
// CHECK: Disassembly of section .text2:
// CHECK-NEXT: R_X86_64_32:
// CHECK-NEXT: 11009: {{.*}} movl $69641, %edx
// CHECK-NEXT: 201009: {{.*}} movl $2101257, %edx
.section .R_X86_64_32S,"ax",@progbits
R_X86_64_32S:
@ -28,11 +28,11 @@ R_X86_64_32S:
// CHECK: Disassembly of section .R_X86_64_32S:
// CHECK-NEXT: R_X86_64_32S:
// CHECK-NEXT: {{.*}}: {{.*}} movq -978935, %rdx
// CHECK-NEXT: {{.*}}: {{.*}} movq 1052681, %rdx
.section .R_X86_64_64,"a",@progbits
R_X86_64_64:
.quad R_X86_64_64
// CHECK: Contents of section .R_X86_64_64:
// CHECK-NEXT: 10120 20010100 00000000
// CHECK-NEXT: 200120 20012000 00000000

View File

@ -7,48 +7,48 @@
// RELOCSHARED: Relocations [
// RELOCSHARED-NEXT: Section ({{.*}}) .rela.dyn {
// RELOCSHARED-NEXT: 0x13018 R_X86_64_SIZE64 fooshared 0xFFFFFFFFFFFFFFFF
// RELOCSHARED-NEXT: 0x13020 R_X86_64_SIZE64 fooshared 0x0
// RELOCSHARED-NEXT: 0x13028 R_X86_64_SIZE64 fooshared 0x1
// RELOCSHARED-NEXT: 0x13048 R_X86_64_SIZE32 fooshared 0xFFFFFFFFFFFFFFFF
// RELOCSHARED-NEXT: 0x1304F R_X86_64_SIZE32 fooshared 0x0
// RELOCSHARED-NEXT: 0x13056 R_X86_64_SIZE32 fooshared 0x1
// RELOCSHARED-NEXT: 0x203018 R_X86_64_SIZE64 fooshared 0xFFFFFFFFFFFFFFFF
// RELOCSHARED-NEXT: 0x203020 R_X86_64_SIZE64 fooshared 0x0
// RELOCSHARED-NEXT: 0x203028 R_X86_64_SIZE64 fooshared 0x1
// RELOCSHARED-NEXT: 0x203048 R_X86_64_SIZE32 fooshared 0xFFFFFFFFFFFFFFFF
// RELOCSHARED-NEXT: 0x20304F R_X86_64_SIZE32 fooshared 0x0
// RELOCSHARED-NEXT: 0x203056 R_X86_64_SIZE32 fooshared 0x1
// RELOCSHARED-NEXT: }
// RELOCSHARED-NEXT:]
// DISASM: Disassembly of section test
// DISASM: _data:
// DISASM-NEXT: 13000: 19 00
// DISASM-NEXT: 13002: 00 00
// DISASM-NEXT: 13004: 00 00
// DISASM-NEXT: 13006: 00 00
// DISASM-NEXT: 13008: 1a 00
// DISASM-NEXT: 1300a: 00 00
// DISASM-NEXT: 1300c: 00 00
// DISASM-NEXT: 1300e: 00 00
// DISASM-NEXT: 13010: 1b 00
// DISASM-NEXT: 13012: 00 00
// DISASM-NEXT: 13014: 00 00
// DISASM-NEXT: 13016: 00 00
// DISASM-NEXT: 13018: 00 00
// DISASM-NEXT: 1301a: 00 00
// DISASM-NEXT: 1301c: 00 00
// DISASM-NEXT: 1301e: 00 00
// DISASM-NEXT: 13020: 00 00
// DISASM-NEXT: 13022: 00 00
// DISASM-NEXT: 13024: 00 00
// DISASM-NEXT: 13026: 00 00
// DISASM-NEXT: 13028: 00 00
// DISASM-NEXT: 1302a: 00 00
// DISASM-NEXT: 1302c: 00 00
// DISASM-NEXT: 1302e: 00 00
// DISASM-NEXT: 203000: 19 00
// DISASM-NEXT: 203002: 00 00
// DISASM-NEXT: 203004: 00 00
// DISASM-NEXT: 203006: 00 00
// DISASM-NEXT: 203008: 1a 00
// DISASM-NEXT: 20300a: 00 00
// DISASM-NEXT: 20300c: 00 00
// DISASM-NEXT: 20300e: 00 00
// DISASM-NEXT: 203010: 1b 00
// DISASM-NEXT: 203012: 00 00
// DISASM-NEXT: 203014: 00 00
// DISASM-NEXT: 203016: 00 00
// DISASM-NEXT: 203018: 00 00
// DISASM-NEXT: 20301a: 00 00
// DISASM-NEXT: 20301c: 00 00
// DISASM-NEXT: 20301e: 00 00
// DISASM-NEXT: 203020: 00 00
// DISASM-NEXT: 203022: 00 00
// DISASM-NEXT: 203024: 00 00
// DISASM-NEXT: 203026: 00 00
// DISASM-NEXT: 203028: 00 00
// DISASM-NEXT: 20302a: 00 00
// DISASM-NEXT: 20302c: 00 00
// DISASM-NEXT: 20302e: 00 00
// DISASM: _start:
// DISASM-NEXT: 13030: 8b 04 25 19 00 00 00 movl 25, %eax
// DISASM-NEXT: 13037: 8b 04 25 1a 00 00 00 movl 26, %eax
// DISASM-NEXT: 1303e: 8b 04 25 1b 00 00 00 movl 27, %eax
// DISASM-NEXT: 13045: 8b 04 25 00 00 00 00 movl 0, %eax
// DISASM-NEXT: 1304c: 8b 04 25 00 00 00 00 movl 0, %eax
// DISASM-NEXT: 13053: 8b 04 25 00 00 00 00 movl 0, %eax
// DISASM-NEXT: 203030: 8b 04 25 19 00 00 00 movl 25, %eax
// DISASM-NEXT: 203037: 8b 04 25 1a 00 00 00 movl 26, %eax
// DISASM-NEXT: 20303e: 8b 04 25 1b 00 00 00 movl 27, %eax
// DISASM-NEXT: 203045: 8b 04 25 00 00 00 00 movl 0, %eax
// DISASM-NEXT: 20304c: 8b 04 25 00 00 00 00 movl 0, %eax
// DISASM-NEXT: 203053: 8b 04 25 00 00 00 00 movl 0, %eax
.data
.global foo

View File

@ -11,37 +11,37 @@
// DISASM: Disassembly of section test:
// DISASM-NEXT: _data:
// DISASM-NEXT: 12000: 19 00
// DISASM-NEXT: 12002: 00 00
// DISASM-NEXT: 12004: 00 00
// DISASM-NEXT: 12006: 00 00
// DISASM-NEXT: 12008: 1a 00
// DISASM-NEXT: 1200a: 00 00
// DISASM-NEXT: 1200c: 00 00
// DISASM-NEXT: 1200e: 00 00
// DISASM-NEXT: 12010: 1b 00
// DISASM-NEXT: 12012: 00 00
// DISASM-NEXT: 12014: 00 00
// DISASM-NEXT: 12016: 00 00
// DISASM-NEXT: 12018: 19 00
// DISASM-NEXT: 1201a: 00 00
// DISASM-NEXT: 1201c: 00 00
// DISASM-NEXT: 1201e: 00 00
// DISASM-NEXT: 12020: 1a 00
// DISASM-NEXT: 12022: 00 00
// DISASM-NEXT: 12024: 00 00
// DISASM-NEXT: 12026: 00 00
// DISASM-NEXT: 12028: 1b 00
// DISASM-NEXT: 1202a: 00 00
// DISASM-NEXT: 1202c: 00 00
// DISASM-NEXT: 1202e: 00 00
// DISASM-NEXT: 202000: 19 00
// DISASM-NEXT: 202002: 00 00
// DISASM-NEXT: 202004: 00 00
// DISASM-NEXT: 202006: 00 00
// DISASM-NEXT: 202008: 1a 00
// DISASM-NEXT: 20200a: 00 00
// DISASM-NEXT: 20200c: 00 00
// DISASM-NEXT: 20200e: 00 00
// DISASM-NEXT: 202010: 1b 00
// DISASM-NEXT: 202012: 00 00
// DISASM-NEXT: 202014: 00 00
// DISASM-NEXT: 202016: 00 00
// DISASM-NEXT: 202018: 19 00
// DISASM-NEXT: 20201a: 00 00
// DISASM-NEXT: 20201c: 00 00
// DISASM-NEXT: 20201e: 00 00
// DISASM-NEXT: 202020: 1a 00
// DISASM-NEXT: 202022: 00 00
// DISASM-NEXT: 202024: 00 00
// DISASM-NEXT: 202026: 00 00
// DISASM-NEXT: 202028: 1b 00
// DISASM-NEXT: 20202a: 00 00
// DISASM-NEXT: 20202c: 00 00
// DISASM-NEXT: 20202e: 00 00
// DISASM: _start:
// DISASM-NEXT: 12030: 8b 04 25 19 00 00 00 movl 25, %eax
// DISASM-NEXT: 12037: 8b 04 25 1a 00 00 00 movl 26, %eax
// DISASM-NEXT: 1203e: 8b 04 25 1b 00 00 00 movl 27, %eax
// DISASM-NEXT: 12045: 8b 04 25 19 00 00 00 movl 25, %eax
// DISASM-NEXT: 1204c: 8b 04 25 1a 00 00 00 movl 26, %eax
// DISASM-NEXT: 12053: 8b 04 25 1b 00 00 00 movl 27, %eax
// DISASM-NEXT: 202030: 8b 04 25 19 00 00 00 movl 25, %eax
// DISASM-NEXT: 202037: 8b 04 25 1a 00 00 00 movl 26, %eax
// DISASM-NEXT: 20203e: 8b 04 25 1b 00 00 00 movl 27, %eax
// DISASM-NEXT: 202045: 8b 04 25 19 00 00 00 movl 25, %eax
// DISASM-NEXT: 20204c: 8b 04 25 1a 00 00 00 movl 26, %eax
// DISASM-NEXT: 202053: 8b 04 25 1b 00 00 00 movl 27, %eax
// RELOCSHARED: Relocations [
// RELOCSHARED-NEXT: Section ({{.*}}) .rela.dyn {

View File

@ -18,10 +18,10 @@ _start:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x11000
// CHECK-NEXT: Address: 0x201000
// Unfortunately FileCheck can't do math, so we have to check for explicit
// values:
// R_86_64_PC32 = 0 + (-8 - (0x11000 + 2)) = -69642
// R_86_64_PC32 = 0 + (-8 - (0x201000 + 2)) = -2101258
// DISASM: movl $1, -69642(%rip)
// DISASM: movl $1, -2101258(%rip)

View File

@ -12,7 +12,7 @@
// SEC-NEXT: SHF_ALLOC
// SEC-NEXT: SHF_EXECINSTR
// SEC-NEXT: ]
// SEC-NEXT: Address: 0x11030
// SEC-NEXT: Address: 0x201030
// SEC-NEXT: Offset: 0x1030
// SEC-NEXT: Size: 48
@ -22,7 +22,7 @@
// SEC-NEXT: SHF_ALLOC
// SEC-NEXT: SHF_WRITE
// SEC-NEXT: ]
// SEC-NEXT: Address: 0x120F0
// SEC-NEXT: Address: 0x2020F0
// SEC-NEXT: Offset:
// SEC-NEXT: Size: 8
// SEC-NEXT: Link: 0
@ -37,7 +37,7 @@
// SEC-NEXT: SHF_ALLOC
// SEC-NEXT: SHF_WRITE
// SEC-NEXT: ]
// SEC-NEXT: Address: 0x13000
// SEC-NEXT: Address: 0x203000
// SEC-NEXT: Offset: 0x3000
// SEC-NEXT: Size: 40
// SEC-NEXT: Link: 0
@ -59,11 +59,11 @@ lulz:
// CHECK: Disassembly of section .text:
// CHECK-NEXT: _start:
// CHECK-NEXT: 11000: e8 04 00 00 00 callq 4
// CHECK-NEXT: 11005:
// CHECK-NEXT: 201000: e8 04 00 00 00 callq 4
// CHECK-NEXT: 201005:
// CHECK: lulz:
// CHECK-NEXT: 11009: 90 nop
// CHECK-NEXT: 201009: 90 nop
.section .text2,"ax",@progbits
@ -75,7 +75,7 @@ R_X86_64_32:
// constants in hex.
// CHECK: Disassembly of section .text2:
// CHECK-NEXT: R_X86_64_32:
// CHECK-NEXT: 1100a: {{.*}} movl $69642, %edx
// CHECK-NEXT: 20100a: {{.*}} movl $2101258, %edx
.section .R_X86_64_32S,"ax",@progbits
.global R_X86_64_32S
@ -84,7 +84,7 @@ R_X86_64_32S:
// CHECK: Disassembly of section .R_X86_64_32S:
// CHECK-NEXT: R_X86_64_32S:
// CHECK-NEXT: {{.*}}: {{.*}} movq -978935, %rdx
// CHECK-NEXT: {{.*}}: {{.*}} movq 1052681, %rdx
.section .R_X86_64_PC32,"ax",@progbits
.global R_X86_64_PC32
@ -92,20 +92,20 @@ R_X86_64_PC32:
call bar
movl $bar, %eax
//16 is a size of PLT[0]
// 0x11030 + 16 - (0x11017 + 5) = 20
// 0x201030 + 16 - (0x201017 + 5) = 20
// CHECK: Disassembly of section .R_X86_64_PC32:
// CHECK-NEXT: R_X86_64_PC32:
// CHECK-NEXT: 11017: {{.*}} callq 36
// CHECK-NEXT: 1101c: {{.*}} movl $69696, %eax
// CHECK-NEXT: 201017: {{.*}} callq 36
// CHECK-NEXT: 20101c: {{.*}} movl $2101312, %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 0x11030. The second plt entry is at 0x11050 == 69712
// plt is at 0x201030. The second plt entry is at 0x201050 == 69712
// CHECK: Disassembly of section .R_X86_64_32S_2:
// CHECK-NEXT: R_X86_64_32S_2:
// CHECK-NEXT: 11021: {{.*}} movl 69712, %eax
// CHECK-NEXT: 201021: {{.*}} movl 2101328, %eax
.section .R_X86_64_64,"a",@progbits
.global R_X86_64_64
@ -113,17 +113,17 @@ R_X86_64_64:
.quad R_X86_64_64
// CHECK: Contents of section .R_X86_64_64:
// CHECK-NEXT: 101c8 c8010100 00000000
// CHECK-NEXT: 2001c8 c8012000 00000000
.section .R_X86_64_GOTPCREL,"a",@progbits
.global R_X86_64_GOTPCREL
R_X86_64_GOTPCREL:
.long zed@gotpcrel
// 0x120F8 - 0x101D8 = 7952
// 0x2020F8 - 0x2001D8 = 7952
// 7952 = 0x101f0000 in little endian
// CHECK: Contents of section .R_X86_64_GOTPCREL
// CHECK-NEXT: 101d0 201f0000
// CHECK-NEXT: 2001d0 201f0000
.section .R_X86_64_GOT32,"a",@progbits
.global R_X86_64_GOT32

View File

@ -17,7 +17,7 @@
// FULLRELRO-NEXT: SHF_ALLOC
// FULLRELRO-NEXT: SHF_WRITE
// FULLRELRO-NEXT: ]
// FULLRELRO-NEXT: Address: 0x12110
// FULLRELRO-NEXT: Address: 0x202110
// FULLRELRO-NEXT: Offset: 0x2110
// FULLRELRO-NEXT: Size: 8
// FULLRELRO-NEXT: Link: 0
@ -36,7 +36,7 @@
// FULLRELRO-NEXT: SHF_ALLOC
// FULLRELRO-NEXT: SHF_WRITE
// FULLRELRO-NEXT: ]
// FULLRELRO-NEXT: Address: 0x12118
// FULLRELRO-NEXT: Address: 0x202118
// FULLRELRO-NEXT: Offset: 0x2118
// FULLRELRO-NEXT: Size: 32
// FULLRELRO-NEXT: Link: 0
@ -56,7 +56,7 @@
// FULLRELRO-NEXT: SHF_ALLOC
// FULLRELRO-NEXT: SHF_WRITE
// FULLRELRO-NEXT: ]
// FULLRELRO-NEXT: Address: 0x13000
// FULLRELRO-NEXT: Address: 0x203000
// FULLRELRO-NEXT: Offset: 0x3000
// FULLRELRO-NEXT: Size: 12
// FULLRELRO-NEXT: Link: 0
@ -75,7 +75,7 @@
// FULLRELRO-NEXT: SHF_ALLOC
// FULLRELRO-NEXT: SHF_WRITE
// FULLRELRO-NEXT: ]
// FULLRELRO-NEXT: Address: 0x1300C
// FULLRELRO-NEXT: Address: 0x20300C
// FULLRELRO-NEXT: Offset: 0x300C
// FULLRELRO-NEXT: Size: 0
// FULLRELRO-NEXT: Link: 0
@ -119,7 +119,7 @@
// PARTRELRO-NEXT: SHF_ALLOC
// PARTRELRO-NEXT: SHF_WRITE
// PARTRELRO-NEXT: ]
// PARTRELRO-NEXT: Address: 0x120F0
// PARTRELRO-NEXT: Address: 0x2020F0
// PARTRELRO-NEXT: Offset: 0x20F0
// PARTRELRO-NEXT: Size: 8
// PARTRELRO-NEXT: Link: 0
@ -138,7 +138,7 @@
// PARTRELRO-NEXT: SHF_ALLOC
// PARTRELRO-NEXT: SHF_WRITE
// PARTRELRO-NEXT: ]
// PARTRELRO-NEXT: Address: 0x13000
// PARTRELRO-NEXT: Address: 0x203000
// PARTRELRO-NEXT: Offset: 0x3000
// PARTRELRO-NEXT: Size: 12
// PARTRELRO-NEXT: Link: 0
@ -157,7 +157,7 @@
// PARTRELRO-NEXT: SHF_ALLOC
// PARTRELRO-NEXT: SHF_WRITE
// PARTRELRO-NEXT: ]
// PARTRELRO-NEXT: Address: 0x1300C
// PARTRELRO-NEXT: Address: 0x20300C
// PARTRELRO-NEXT: Offset: 0x300C
// PARTRELRO-NEXT: Size: 0
// PARTRELRO-NEXT: Link: 0
@ -175,7 +175,7 @@
// PARTRELRO-NEXT: SHF_ALLOC
// PARTRELRO-NEXT: SHF_WRITE
// PARTRELRO-NEXT: ]
// PARTRELRO-NEXT: Address: 0x13010
// PARTRELRO-NEXT: Address: 0x203010
// PARTRELRO-NEXT: Offset: 0x3010
// PARTRELRO-NEXT: Size: 32
// PARTRELRO-NEXT: Link: 0
@ -195,7 +195,7 @@
// PARTRELRO-NEXT: SHF_ALLOC
// PARTRELRO-NEXT: SHF_WRITE
// PARTRELRO-NEXT: ]
// PARTRELRO-NEXT: Address: 0x13030
// PARTRELRO-NEXT: Address: 0x203030
// PARTRELRO-NEXT: Offset: 0x3030
// PARTRELRO-NEXT: Size: 0
// PARTRELRO-NEXT: Link: 0

View File

@ -308,7 +308,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global (0x1)
// CHECK-NEXT: Type: None (0x0)

View File

@ -12,13 +12,13 @@
# RUN: llvm-objdump -d %tout | FileCheck -check-prefix=DISASM %s
# DISASM: _start:
# DISASM-NEXT: 11000: 90 nop
# DISASM-NEXT: 201000: 90 nop
# DISASM-NEXT: Disassembly of section foo:
# DISASM-NEXT: foo:
# DISASM-NEXT: 11001: 90 nop
# DISASM-NEXT: 201001: 90 nop
# DISASM-NEXT: Disassembly of section bar:
# DISASM-NEXT: bar:
# DISASM-NEXT: 11002: 90 nop
# DISASM-NEXT: 201002: 90 nop
.global _start
.text

View File

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

View File

@ -14,7 +14,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: s3
// CHECK-NEXT: Value: 0x10125
// CHECK-NEXT: Value: 0x200125
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local (0x0)
// CHECK-NEXT: Type: Object (0x1)
@ -23,7 +23,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: s1
// CHECK-NEXT: Value: 0x10120
// CHECK-NEXT: Value: 0x200120
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local (0x0)
// CHECK-NEXT: Type: Object (0x1)
@ -34,7 +34,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global (0x1)
// CHECK-NEXT: Type: Function (0x2)

View File

@ -19,7 +19,7 @@ _start:
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x10120
// CHECK-NEXT: Address: 0x200120
// CHECK: Name: foobar
// CHECK-NEXT: Type: SHT_PROGBITS

View File

@ -4,7 +4,7 @@
# RUN: llvm-objdump -s %t.out| FileCheck %s --check-prefix=BEFORE
# BEFORE: Contents of section .foo:
# BEFORE-NEXT: 11000 11223344 5566
# BEFORE-NEXT: 201000 11223344 5566
# RUN: echo "_foo4 " > %t_order.txt
# RUN: echo " _foo3" >> %t_order.txt
@ -19,7 +19,7 @@
# RUN: llvm-objdump -s %t2.out| FileCheck %s --check-prefix=AFTER
# AFTER: Contents of section .foo:
# AFTER-NEXT: 11000 44335566 2211
# AFTER-NEXT: 201000 44335566 2211
.section .foo,"ax",@progbits,unique,1
_foo1:

View File

@ -25,7 +25,7 @@
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: foo
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Function

View File

@ -50,7 +50,7 @@ internal:
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x10158
// CHECK-NEXT: Address: 0x200158
// CHECK: Name: .text
// CHECK-NEXT: Type: SHT_PROGBITS
@ -58,7 +58,7 @@ internal:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x1100
// CHECK-NEXT: Address: 0x201000
// 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: 0x12000
// CHECK-NEXT: Address: 0x202000
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 4
@ -82,7 +82,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: hidden
// CHECK-NEXT: Value: 0x10160
// CHECK-NEXT: Value: 0x200160
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -93,7 +93,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: internal
// CHECK-NEXT: Value: 0x10160
// CHECK-NEXT: Value: 0x200160
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
@ -104,7 +104,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: _start
// CHECK-NEXT: Value: 0x11000
// CHECK-NEXT: Value: 0x201000
// 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: 0x12000
// CHECK-NEXT: Value: 0x202000
// 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: 0x11000
// CHECK-NEXT: Value: 0x201000
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Weak (0x2)
// CHECK-NEXT: Type: Object
@ -149,7 +149,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: protected
// CHECK-NEXT: Value: 0x10160
// CHECK-NEXT: Value: 0x200160
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None
@ -160,7 +160,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: zed
// CHECK-NEXT: Value: 0x10158
// CHECK-NEXT: Value: 0x200158
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global (0x1)
// CHECK-NEXT: Type: None
@ -169,7 +169,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: zed2
// CHECK-NEXT: Value: 0x1015C
// CHECK-NEXT: Value: 0x20015C
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None
@ -178,7 +178,7 @@ internal:
// CHECK-NEXT: }
// CHECK-NEXT: Symbol {
// CHECK-NEXT: Name: zed3
// CHECK-NEXT: Value: 0x10160
// CHECK-NEXT: Value: 0x200160
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None

View File

@ -24,23 +24,23 @@
// CHECK: Relocations [
// CHECK-NEXT: Section (4) .rela.dyn {
// CHECK-NEXT: 0x120B8 R_X86_64_TPOFF64 tls0 0x0
// CHECK-NEXT: 0x2020B8 R_X86_64_TPOFF64 tls0 0x0
// CHECK-NEXT: [[ADDR]] R_X86_64_TPOFF64 tls1 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]
//0x11000 + 4249 + 7 = 0x120B0
//0x1100A + 4247 + 7 = 0x120B8
//0x11014 + 4237 + 7 = 0x120B8
//0x201000 + 4249 + 7 = 0x2020B0
//0x20100A + 4247 + 7 = 0x2020B8
//0x201014 + 4237 + 7 = 0x2020B8
//DISASM: Disassembly of section .text:
//DISASM-NEXT: main:
//DISASM-NEXT: 11000: 48 8b 05 a9 10 00 00 movq 4265(%rip), %rax
//DISASM-NEXT: 11007: 64 8b 00 movl %fs:(%rax), %eax
//DISASM-NEXT: 1100a: 48 8b 05 a7 10 00 00 movq 4263(%rip), %rax
//DISASM-NEXT: 11011: 64 8b 00 movl %fs:(%rax), %eax
//DISASM-NEXT: 11014: 48 8b 05 9d 10 00 00 movq 4253(%rip), %rax
//DISASM-NEXT: 1101b: 64 8b 00 movl %fs:(%rax), %eax
//DISASM-NEXT: 1101e: c3 retq
//DISASM-NEXT: 201000: 48 8b 05 a9 10 00 00 movq 4265(%rip), %rax
//DISASM-NEXT: 201007: 64 8b 00 movl %fs:(%rax), %eax
//DISASM-NEXT: 20100a: 48 8b 05 a7 10 00 00 movq 4263(%rip), %rax
//DISASM-NEXT: 201011: 64 8b 00 movl %fs:(%rax), %eax
//DISASM-NEXT: 201014: 48 8b 05 9d 10 00 00 movq 4253(%rip), %rax
//DISASM-NEXT: 20101b: 64 8b 00 movl %fs:(%rax), %eax
//DISASM-NEXT: 20101e: c3 retq
.section .tdata,"awT",@progbits

View File

@ -30,7 +30,7 @@ _start:
// CHECK-NEXT: SHF_TLS
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x12000
// CHECK-NEXT: Address: 0x202000
// CHECK-NEXT: Offset: 0x2000
// CHECK-NEXT: Size: 4
@ -41,7 +41,7 @@ _start:
// CHECK-NEXT: SHF_TLS
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x12010
// CHECK-NEXT: Address: 0x202010
// CHECK-NEXT: Offset: 0x2004
// CHECK-NEXT: Size: 16
@ -51,6 +51,6 @@ _start:
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x12004
// CHECK-NEXT: Address: 0x202004
// CHECK-NEXT: Offset: 0x2004
// CHECK-NEXT: Size: 4

View File

@ -13,7 +13,7 @@
//RELOC-NEXT: SHF_ALLOC
//RELOC-NEXT: SHF_WRITE
//RELOC-NEXT: ]
//RELOC-NEXT: Address: 0x120B0
//RELOC-NEXT: Address: 0x2020B0
//RELOC-NEXT: Offset: 0x20B0
//RELOC-NEXT: Size: 16
//RELOC-NEXT: Link: 0
@ -23,19 +23,19 @@
//RELOC-NEXT: }
//RELOC: Relocations [
//RELOC-NEXT: Section (4) .rela.dyn {
//RELOC-NEXT: 0x120B0 R_X86_64_TPOFF64 tlsshared0 0x0
//RELOC-NEXT: 0x120B8 R_X86_64_TPOFF64 tlsshared1 0x0
//RELOC-NEXT: 0x2020B0 R_X86_64_TPOFF64 tlsshared0 0x0
//RELOC-NEXT: 0x2020B8 R_X86_64_TPOFF64 tlsshared1 0x0
//RELOC-NEXT: }
//RELOC-NEXT: ]
//0x11009 + (4256 + 7) = 0x120B0
//0x11019 + (4248 + 7) = 0x120B8
//0x201009 + (4256 + 7) = 0x2020B0
//0x201019 + (4248 + 7) = 0x2020B8
// DISASM: Disassembly of section .text:
// DISASM-NEXT: _start:
// DISASM-NEXT: 11000: {{.*}} movq %fs:0, %rax
// DISASM-NEXT: 11009: {{.*}} addq 4256(%rip), %rax
// DISASM-NEXT: 11010: {{.*}} movq %fs:0, %rax
// DISASM-NEXT: 11019: {{.*}} addq 4248(%rip), %rax
// DISASM-NEXT: 201000: {{.*}} movq %fs:0, %rax
// DISASM-NEXT: 201009: {{.*}} addq 4256(%rip), %rax
// DISASM-NEXT: 201010: {{.*}} movq %fs:0, %rax
// DISASM-NEXT: 201019: {{.*}} addq 4248(%rip), %rax
.section .text
.globl _start

View File

@ -8,18 +8,18 @@
// DISASM: Disassembly of section .text:
// DISASM-NEXT: _start:
// DISASM-NEXT: 11000: 48 c7 c0 f8 ff ff ff movq $-8, %rax
// DISASM-NEXT: 11007: 49 c7 c7 f8 ff ff ff movq $-8, %r15
// DISASM-NEXT: 1100e: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
// DISASM-NEXT: 11015: 4d 8d bf f8 ff ff ff leaq -8(%r15), %r15
// DISASM-NEXT: 1101c: 48 81 c4 f8 ff ff ff addq $-8, %rsp
// DISASM-NEXT: 11023: 49 81 c4 f8 ff ff ff addq $-8, %r12
// DISASM-NEXT: 1102a: 48 c7 c0 fc ff ff ff movq $-4, %rax
// DISASM-NEXT: 11031: 49 c7 c7 fc ff ff ff movq $-4, %r15
// DISASM-NEXT: 11038: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
// DISASM-NEXT: 1103f: 4d 8d bf fc ff ff ff leaq -4(%r15), %r15
// DISASM-NEXT: 11046: 48 81 c4 fc ff ff ff addq $-4, %rsp
// DISASM-NEXT: 1104d: 49 81 c4 fc ff ff ff addq $-4, %r12
// DISASM-NEXT: 201000: 48 c7 c0 f8 ff ff ff movq $-8, %rax
// DISASM-NEXT: 201007: 49 c7 c7 f8 ff ff ff movq $-8, %r15
// DISASM-NEXT: 20100e: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
// DISASM-NEXT: 201015: 4d 8d bf f8 ff ff ff leaq -8(%r15), %r15
// DISASM-NEXT: 20101c: 48 81 c4 f8 ff ff ff addq $-8, %rsp
// DISASM-NEXT: 201023: 49 81 c4 f8 ff ff ff addq $-8, %r12
// DISASM-NEXT: 20102a: 48 c7 c0 fc ff ff ff movq $-4, %rax
// DISASM-NEXT: 201031: 49 c7 c7 fc ff ff ff movq $-4, %r15
// DISASM-NEXT: 201038: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
// DISASM-NEXT: 20103f: 4d 8d bf fc ff ff ff leaq -4(%r15), %r15
// DISASM-NEXT: 201046: 48 81 c4 fc ff ff ff addq $-4, %rsp
// DISASM-NEXT: 20104d: 49 81 c4 fc ff ff ff addq $-4, %r12
.section .tbss,"awT",@nobits

View File

@ -7,36 +7,36 @@
// NORELOC-NEXT: ]
// DISASM: _start:
// DISASM-NEXT: 11000: 48 c7 c0 f8 ff ff ff movq $-8, %rax
// DISASM-NEXT: 11007: 49 c7 c7 f8 ff ff ff movq $-8, %r15
// DISASM-NEXT: 1100e: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
// DISASM-NEXT: 11015: 4d 8d bf f8 ff ff ff leaq -8(%r15), %r15
// DISASM-NEXT: 1101c: 48 81 c4 f8 ff ff ff addq $-8, %rsp
// DISASM-NEXT: 11023: 49 81 c4 f8 ff ff ff addq $-8, %r12
// DISASM-NEXT: 1102a: 48 c7 c0 fc ff ff ff movq $-4, %rax
// DISASM-NEXT: 11031: 49 c7 c7 fc ff ff ff movq $-4, %r15
// DISASM-NEXT: 11038: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
// DISASM-NEXT: 1103f: 4d 8d bf fc ff ff ff leaq -4(%r15), %r15
// DISASM-NEXT: 11046: 48 81 c4 fc ff ff ff addq $-4, %rsp
// DISASM-NEXT: 1104d: 49 81 c4 fc ff ff ff addq $-4, %r12
// DISASM-NEXT: 201000: 48 c7 c0 f8 ff ff ff movq $-8, %rax
// DISASM-NEXT: 201007: 49 c7 c7 f8 ff ff ff movq $-8, %r15
// DISASM-NEXT: 20100e: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
// DISASM-NEXT: 201015: 4d 8d bf f8 ff ff ff leaq -8(%r15), %r15
// DISASM-NEXT: 20101c: 48 81 c4 f8 ff ff ff addq $-8, %rsp
// DISASM-NEXT: 201023: 49 81 c4 f8 ff ff ff addq $-8, %r12
// DISASM-NEXT: 20102a: 48 c7 c0 fc ff ff ff movq $-4, %rax
// DISASM-NEXT: 201031: 49 c7 c7 fc ff ff ff movq $-4, %r15
// DISASM-NEXT: 201038: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
// DISASM-NEXT: 20103f: 4d 8d bf fc ff ff ff leaq -4(%r15), %r15
// DISASM-NEXT: 201046: 48 81 c4 fc ff ff ff addq $-4, %rsp
// DISASM-NEXT: 20104d: 49 81 c4 fc ff ff ff addq $-4, %r12
// LD to LE:
// DISASM-NEXT: 11054: 66 66 66 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 11060: 48 8d 88 f8 ff ff ff leaq -8(%rax), %rcx
// DISASM-NEXT: 11067: 66 66 66 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 11073: 48 8d 88 fc ff ff ff leaq -4(%rax), %rcx
// DISASM-NEXT: 201054: 66 66 66 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 201060: 48 8d 88 f8 ff ff ff leaq -8(%rax), %rcx
// DISASM-NEXT: 201067: 66 66 66 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 201073: 48 8d 88 fc ff ff ff leaq -4(%rax), %rcx
// GD to LE:
// DISASM-NEXT: 1107a: 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 11083: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
// DISASM-NEXT: 1108a: 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 11093: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
// DISASM-NEXT: 20107a: 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 201083: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
// DISASM-NEXT: 20108a: 64 48 8b 04 25 00 00 00 00 movq %fs:0, %rax
// DISASM-NEXT: 201093: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
// LD to LE:
// DISASM: _DTPOFF64_1:
// DISASM-NEXT: 1109a: f8 clc
// DISASM-NEXT: 20109a: f8 clc
// DISASM: _DTPOFF64_2:
// DISASM-NEXT: 110a3: fc cld
// DISASM-NEXT: 2010a3: fc cld
.type tls0,@object
.section .tbss,"awT",@nobits

View File

@ -90,9 +90,9 @@ d:
// CHECK-NEXT: SHF_WRITE
// CHECK-NEXT: ]
// 0x1200C = TBSS_ADDR + 4
// 0x20200C = TBSS_ADDR + 4
// CHECK-NEXT: Address: 0x1200C
// CHECK-NEXT: Address: 0x20200C
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 4
// CHECK-NEXT: Link:
@ -164,7 +164,7 @@ d:
// DIS: Disassembly of section .text:
// DIS-NEXT: _start:
// DIS-NEXT: 11000: {{.+}} movl %fs:-8, %eax
// DIS-NEXT: 11008: {{.+}} movl %fs:-16, %eax
// DIS-NEXT: 11010: {{.+}} movl %fs:-4, %eax
// DIS-NEXT: 11018: {{.+}} movl %fs:-12, %eax
// DIS-NEXT: 201000: {{.+}} movl %fs:-8, %eax
// DIS-NEXT: 201008: {{.+}} movl %fs:-16, %eax
// DIS-NEXT: 201010: {{.+}} movl %fs:-4, %eax
// DIS-NEXT: 201018: {{.+}} movl %fs:-12, %eax

View File

@ -19,13 +19,13 @@ movabsq $set_data, %rax
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x11010
// CHECK-NEXT: Address: 0x201010
// CHECK: Section ({{.*}}) .rela.dyn {
// CHECK-NEXT: 0x13000 R_X86_64_64 foo 0x0
// CHECK-NEXT: 0x203000 R_X86_64_64 foo 0x0
// CHECK-NEXT: }
// CHECK-NEXT: Section ({{.*}}) .rela.plt {
// CHECK-NEXT: 0x13020 R_X86_64_JUMP_SLOT set_data 0x0
// CHECK-NEXT: 0x203020 R_X86_64_JUMP_SLOT set_data 0x0
// CHECK-NEXT: }
// CHECK: Name: foo
@ -37,7 +37,7 @@ movabsq $set_data, %rax
// CHECK-NEXT: Section: Undefined
// CHECK: Name: set_data
// CHECK-NEXT: Value: 0x11020
// CHECK-NEXT: Value: 0x201020
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: Function

View File

@ -122,7 +122,7 @@
# EXE-NEXT: }
# EXE-NEXT: Symbol {
# EXE-NEXT: Name: a@V1
# EXE-NEXT: Value: 0x11020
# EXE-NEXT: Value: 0x201020
# 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: 0x11030
# EXE-NEXT: Value: 0x201030
# 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: 0x11040
# EXE-NEXT: Value: 0x201040
# EXE-NEXT: Size: 0
# EXE-NEXT: Binding: Global
# EXE-NEXT: Type: Function
@ -150,7 +150,7 @@
# EXE-NEXT: ]
# EXE-NEXT: Version symbols {
# EXE-NEXT: Section Name: .gnu.version
# EXE-NEXT: Address: 0x10228
# EXE-NEXT: Address: 0x200228
# EXE-NEXT: Offset: 0x228
# EXE-NEXT: Link: 1
# EXE-NEXT: Symbols [

View File

@ -70,7 +70,7 @@
# MAIN: Version symbols {
# MAIN-NEXT: Section Name: .gnu.version
# MAIN-NEXT: Address: 0x10228
# MAIN-NEXT: Address: 0x200228
# MAIN-NEXT: Offset: 0x228
# MAIN-NEXT: Link: 1
# MAIN-NEXT: Symbols [

View File

@ -10,7 +10,7 @@
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x101C8
# CHECK-NEXT: Address: 0x2001C8
# CHECK-NEXT: Offset: 0x1C8
# CHECK-NEXT: Size: 96
# CHECK-NEXT: Link: 5
@ -24,7 +24,7 @@
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x10228
# CHECK-NEXT: Address: 0x200228
# CHECK-NEXT: Offset: 0x228
# CHECK-NEXT: Size: 8
# CHECK-NEXT: Link: 1
@ -38,7 +38,7 @@
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x10230
# CHECK-NEXT: Address: 0x200230
# CHECK-NEXT: Offset: 0x230
# CHECK-NEXT: Size: 80
# CHECK-NEXT: Link: 5
@ -52,7 +52,7 @@
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x102A8
# CHECK-NEXT: Address: 0x2002A8
# CHECK-NEXT: Offset: 0x2A8
# CHECK-NEXT: Size: 47
# CHECK-NEXT: Link: 0
@ -105,13 +105,13 @@
# CHECK-NEXT: }
# CHECK-NEXT: ]
# CHECK: 0x000000006FFFFFF0 VERSYM 0x10228
# CHECK-NEXT: 0x000000006FFFFFFE VERNEED 0x10230
# CHECK: 0x000000006FFFFFF0 VERSYM 0x200228
# CHECK-NEXT: 0x000000006FFFFFFE VERNEED 0x200230
# CHECK-NEXT: 0x000000006FFFFFFF VERNEEDNUM 2
# CHECK: Version symbols {
# CHECK-NEXT: Section Name: .gnu.version
# CHECK-NEXT: Address: 0x10228
# CHECK-NEXT: Address: 0x200228
# CHECK-NEXT: Offset: 0x228
# CHECK-NEXT: Link: 1
# CHECK-NEXT: Symbols [

View File

@ -126,7 +126,7 @@
# EXE-NEXT: }
# EXE-NEXT: Symbol {
# EXE-NEXT: Name: foo1@
# EXE-NEXT: Value: 0x11000
# EXE-NEXT: Value: 0x201000
# EXE-NEXT: Size: 0
# EXE-NEXT: Binding: Global (0x1)
# EXE-NEXT: Type: None (0x0)

View File

@ -6,7 +6,7 @@
// RUN: llvm-readobj -t %t.exe | FileCheck %s
// CHECK: Name: bar
// CHECK-NEXT: Value: 0x11020
// CHECK-NEXT: Value: 0x201020
// CHECK-NEXT: Size: 0
// CHECK-NEXT: Binding: Weak
// CHECK-NEXT: Type: Function