# REQUIRES: x86
# RUN: echo '.text; ret; .data; .quad 0' > %t.s
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %t.s -o %t.o
# RUN: ld.lld -o %t --script %s %t.o -shared
# RUN: llvm-readelf -S --symbols -l %t | FileCheck %s

PHDRS {
  text PT_LOAD FLAGS(0x5);
  data PT_LOAD FLAGS(0x6);
}

SECTIONS {
  . = SIZEOF_HEADERS;
  .text : { *(.text) } : text
  . = ALIGN(CONSTANT(MAXPAGESIZE));
  foo : { __start_foo = .; *(foo); __end_foo = .; } : data
  .data : { *(.data) }
  .dynamic : { *(.dynamic) }
}

## Check that foo, the symbol only section, has the expected aligned address and
## file offset. Also check that the section's symbols and the data segment's
## offset and addresses match.

# CHECK: Section Headers
# CHECK:      foo   PROGBITS 0000000000[[ADDR:[0-9a-f]*]] [[ADDR]]
# CHECK-NEXT: .data PROGBITS 0000000000[[ADDR]] [[ADDR]]

# CHECK: Program Headers
# CHECK:      LOAD
# CHECK-NEXT: LOAD 0x[[ADDR]] 0x0000000000[[ADDR]] 0x0000000000[[ADDR]]

# CHECK: Symbol table
# CHECK: 0000000000[[ADDR]] 0 NOTYPE GLOBAL DEFAULT {{[0-9]+}} __start_foo
# CHECK: 0000000000[[ADDR]] 0 NOTYPE GLOBAL DEFAULT {{[0-9]+}} __end_foo
