forked from OSchip/llvm-project
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:
parent
a3d2f703a5
commit
8fd0196c6f
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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: ]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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: ]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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: ]
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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: ]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue