1# REQUIRES: x86 2# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t 3# RUN: echo "SECTIONS { \ 4# RUN: .aaa 0x2000 : \ 5# RUN: { \ 6# RUN: *(.aaa) \ 7# RUN: } \ 8# RUN: .bbb 0x1 ? 0x3000 : 0x4000 : \ 9# RUN: { \ 10# RUN: *(.bbb) \ 11# RUN: } \ 12# RUN: .ccc ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : \ 13# RUN: { \ 14# RUN: *(.ccc) \ 15# RUN: } \ 16# RUN: .ddd 0x5001 : \ 17# RUN: { \ 18# RUN: *(.ddd) \ 19# RUN: } \ 20# RUN: }" > %t.script 21# RUN: ld.lld %t --script %t.script -o %tout 22# RUN: llvm-readobj -s %tout | FileCheck %s 23 24## Check: 25## 1) Simple constant as address. 26## 2) That something that contains ":" character, like ternary 27## operator works as expression. 28## 3) That complex expressions work. 29## 4) That section alignment still applied to explicitly specified address. 30 31#CHECK:Sections [ 32#CHECK: Section { 33#CHECK: Index: 0 34#CHECK: Name: 35#CHECK: Type: SHT_NULL 36#CHECK: Flags [ 37#CHECK: ] 38#CHECK: Address: 0x0 39#CHECK: Offset: 0x0 40#CHECK: Size: 0 41#CHECK: Link: 0 42#CHECK: Info: 0 43#CHECK: AddressAlignment: 0 44#CHECK: EntrySize: 0 45#CHECK: } 46#CHECK: Section { 47#CHECK: Index: 1 48#CHECK: Name: .aaa 49#CHECK: Type: SHT_PROGBITS 50#CHECK: Flags [ 51#CHECK: SHF_ALLOC 52#CHECK: ] 53#CHECK: Address: 0x2000 54#CHECK: Offset: 0x1000 55#CHECK: Size: 8 56#CHECK: Link: 0 57#CHECK: Info: 0 58#CHECK: AddressAlignment: 1 59#CHECK: EntrySize: 0 60#CHECK: } 61#CHECK: Section { 62#CHECK: Index: 2 63#CHECK: Name: .bbb 64#CHECK: Type: SHT_PROGBITS 65#CHECK: Flags [ 66#CHECK: SHF_ALLOC 67#CHECK: ] 68#CHECK: Address: 0x3000 69#CHECK: Offset: 0x2000 70#CHECK: Size: 8 71#CHECK: Link: 0 72#CHECK: Info: 0 73#CHECK: AddressAlignment: 1 74#CHECK: EntrySize: 0 75#CHECK: } 76#CHECK: Section { 77#CHECK: Index: 3 78#CHECK: Name: .ccc 79#CHECK: Type: SHT_PROGBITS 80#CHECK: Flags [ 81#CHECK: SHF_ALLOC 82#CHECK: ] 83#CHECK: Address: 0x4008 84#CHECK: Offset: 0x3008 85#CHECK: Size: 8 86#CHECK: Link: 0 87#CHECK: Info: 0 88#CHECK: AddressAlignment: 1 89#CHECK: EntrySize: 0 90#CHECK: } 91#CHECK: Section { 92#CHECK: Index: 4 93#CHECK: Name: .ddd 94#CHECK: Type: SHT_PROGBITS 95#CHECK: Flags [ 96#CHECK: SHF_ALLOC 97#CHECK: ] 98#CHECK: Address: 0x5010 99#CHECK: Offset: 0x4010 100#CHECK: Size: 8 101#CHECK: Link: 0 102#CHECK: Info: 0 103#CHECK: AddressAlignment: 16 104#CHECK: EntrySize: 0 105#CHECK: } 106 107.globl _start 108_start: 109nop 110 111.section .aaa, "a" 112.quad 0 113 114.section .bbb, "a" 115.quad 0 116 117.section .ccc, "a" 118.quad 0 119 120.section .ddd, "a" 121.align 16 122.quad 0 123