This is alternative to D28857 which was incorrect. One of linux scripts contains: vvar_start = . - 2 * (1 << 12); vvar_page = vvar_start; vvar_vsyscall_gtod_data = vvar_page + 128; Previously we did not mark first expression as non-absolute, though it contains location counter. And LLD failed with error: relocation R_X86_64_PC32 cannot refer to absolute symbol This patch should fix the issue, and opens road for doing the same for other operators (though not clear if that is needed). Differential revision: https://reviews.llvm.org/D29332 llvm-svn: 293748
31 lines
804 B
ArmAsm
31 lines
804 B
ArmAsm
# REQUIRES: x86
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
|
|
# RUN: echo "SECTIONS { A = . - 0x10; B = A + 0x1; }" > %t.script
|
|
# RUN: ld.lld -shared %t1.o --script %t.script -o %t
|
|
# RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=DUMP
|
|
# RUN: llvm-readobj -t %t | FileCheck %s --check-prefix=SYMBOL
|
|
|
|
# DUMP: Disassembly of section .text:
|
|
# DUMP-NEXT: foo:
|
|
# DUMP-NEXT: 0: {{.*}} -21(%rip), %eax
|
|
|
|
# SYMBOL: Symbol {
|
|
# SYMBOL: Name: B
|
|
# SYMBOL-NEXT: Value: 0xFFFFFFFFFFFFFFF1
|
|
# SYMBOL-NEXT: Size: 0
|
|
# SYMBOL-NEXT: Binding: Local
|
|
# SYMBOL-NEXT: Type: None
|
|
# SYMBOL-NEXT: Other [
|
|
# SYMBOL-NEXT: STV_HIDDEN
|
|
# SYMBOL-NEXT: ]
|
|
# SYMBOL-NEXT: Section: .text
|
|
# SYMBOL-NEXT: }
|
|
|
|
.text
|
|
.globl foo
|
|
.type foo, @function
|
|
foo:
|
|
movl B(%rip), %eax
|
|
|
|
.hidden B
|