1# REQUIRES: x86
2# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
3# RUN: ld.lld %t.o -o %t
4# RUN: llvm-objdump -t --section-headers %t | FileCheck %s
5
6## This checks that:
7## 1) Address of _etext is the first location after the last read-only loadable segment.
8## 2) Address of _edata points to the end of the last non SHT_NOBITS section.
9##    That is how gold/bfd do. At the same time specs says: "If the address of _edata is
10##    greater than the address of _etext, the address of _end is same as the address
11##    of _edata." (https://docs.oracle.com/cd/E53394_01/html/E54766/u-etext-3c.html).
12## 3) Address of _end is different from _edata because of 2.
13## 4) Addresses of _edata == edata, _end == end and _etext == etext.
14# CHECK:      Sections:
15# CHECK-NEXT:  Idx Name          Size     VMA              Type
16# CHECK-NEXT:    0               00000000 0000000000000000
17# CHECK-NEXT:    1 .text         00000001 0000000000201158 TEXT
18# CHECK-NEXT:    2 .data         00000002 0000000000202159 DATA
19# CHECK-NEXT:    3 .bss          00000006 000000000020215c BSS
20# CHECK:      SYMBOL TABLE:
21# CHECK-NEXT:  000000000020215b g       .data 0000000000000000 _edata
22# CHECK-NEXT:  0000000000202162 g       .bss  0000000000000000 _end
23# CHECK-NEXT:  0000000000201159 g       .text 0000000000000000 _etext
24# CHECK-NEXT:  0000000000201158 g       .text 0000000000000000 _start
25# CHECK-NEXT:  000000000020215b g       .data 0000000000000000 edata
26# CHECK-NEXT:  0000000000202162 g       .bss  0000000000000000 end
27# CHECK-NEXT:  0000000000201159 g       .text 0000000000000000 etext
28
29# RUN: ld.lld -r %t.o -o %t2
30# RUN: llvm-objdump -t %t2 | FileCheck %s --check-prefix=RELOCATABLE
31# RELOCATABLE:       0000000000000000 *UND* 0000000000000000 _edata
32# RELOCATABLE-NEXT:  0000000000000000 *UND* 0000000000000000 _end
33# RELOCATABLE-NEXT:  0000000000000000 *UND* 0000000000000000 _etext
34
35.global _start,_end,_etext,_edata,end,etext,edata
36.text
37_start:
38  nop
39.data
40  .word 1
41.bss
42  .align 4
43  .space 6
44