1# REQUIRES: x86 2# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t 3 4# RUN: echo "SECTIONS { \ 5# RUN: symbol = CONSTANT(MAXPAGESIZE); \ 6# RUN: symbol2 = symbol + 0x1234; \ 7# RUN: symbol3 = symbol2; \ 8# RUN: symbol4 = symbol + -4; \ 9# RUN: symbol5 = symbol - ~0xfffb; \ 10# RUN: symbol6 = symbol - ~(0xfff0 + 0xb); \ 11# RUN: symbol7 = symbol - ~ 0xfffb + 4; \ 12# RUN: symbol8 = ~ 0xffff + 4; \ 13# RUN: symbol9 = - 4; \ 14# RUN: symbol10 = 0xfedcba9876543210; \ 15# RUN: symbol11 = ((0x28000 + 0x1fff) & ~(0x1000 + -1)); \ 16# RUN: symbol12 = 0x1234; \ 17# RUN: symbol12 += 1; \ 18# RUN: symbol13 = !1; \ 19# RUN: symbol14 = !0; \ 20# RUN: symbol15 = 0!=1; \ 21# RUN: bar = 0x5678; \ 22# RUN: baz = 0x9abc; \ 23# RUN: }" > %t.script 24# RUN: ld.lld -o %t1 --script %t.script %t 25# RUN: llvm-objdump -t %t1 | FileCheck %s 26 27# CHECK: SYMBOL TABLE: 28# CHECK-NEXT: 0000000000000000 .text 00000000 _start 29# CHECK-NEXT: 0000000000005678 *ABS* 00000000 bar 30# CHECK-NEXT: 0000000000009abc *ABS* 00000000 baz 31# CHECK-NEXT: 0000000000000001 .text 00000000 foo 32# CHECK-NEXT: 0000000000001000 *ABS* 00000000 symbol 33# CHECK-NEXT: 0000000000002234 *ABS* 00000000 symbol2 34# CHECK-NEXT: 0000000000002234 *ABS* 00000000 symbol3 35# CHECK-NEXT: 0000000000000ffc *ABS* 00000000 symbol4 36# CHECK-NEXT: 0000000000010ffc *ABS* 00000000 symbol5 37# CHECK-NEXT: 0000000000010ffc *ABS* 00000000 symbol6 38# CHECK-NEXT: 0000000000011000 *ABS* 00000000 symbol7 39# CHECK-NEXT: ffffffffffff0004 *ABS* 00000000 symbol8 40# CHECK-NEXT: fffffffffffffffc *ABS* 00000000 symbol9 41# CHECK-NEXT: fedcba9876543210 *ABS* 00000000 symbol10 42# CHECK-NEXT: 0000000000029000 *ABS* 00000000 symbol11 43# CHECK-NEXT: 0000000000001235 *ABS* 00000000 symbol12 44# CHECK-NEXT: 0000000000000000 *ABS* 00000000 symbol13 45# CHECK-NEXT: 0000000000000001 *ABS* 00000000 symbol14 46# CHECK-NEXT: 0000000000000001 *ABS* 00000000 symbol15 47 48# RUN: echo "SECTIONS { symbol2 = symbol; }" > %t2.script 49# RUN: not ld.lld -o /dev/null --script %t2.script %t 2>&1 \ 50# RUN: | FileCheck -check-prefix=ERR %s 51# ERR: {{.*}}.script:1: symbol not found: symbol 52 53.global _start 54_start: 55 nop 56 57.global foo 58foo: 59 nop 60 61.global bar 62bar = 0x1234 63 64.comm baz,8,8 65