File: defined.test

package info (click to toggle)
llvm-toolchain-20 1%3A20.1.8-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,111,388 kB
  • sloc: cpp: 7,438,767; ansic: 1,393,871; asm: 1,012,926; python: 241,728; f90: 86,635; objc: 75,411; lisp: 42,144; pascal: 17,286; sh: 10,027; ml: 5,082; perl: 4,730; awk: 3,523; makefile: 3,349; javascript: 2,251; xml: 892; fortran: 672
file content (45 lines) | stat: -rw-r--r-- 1,698 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64 %p/Inputs/define.s -o %t.o
# RUN: ld.lld -o %t --defsym vv=1 --script %s %t.o
# RUN: llvm-readelf -S -s %t | FileCheck %s

# CHECK:      [Nr] Name   Type     Address          Off    Size   ES Flg Lk Inf Al
# CHECK-NEXT: [ 0]        NULL     0000000000000000 000000 000000 00      0   0  0
# CHECK-NEXT: [ 1] .foo   PROGBITS 0000000000011000 001000 000008 00   A  0   0  1
# CHECK-NEXT: [ 2] .bar   PROGBITS 0000000000013000 003000 000008 00   A  0   0  1
# CHECK-NEXT: [ 3] .test  PROGBITS 0000000000015000 005000 000008 00   A  0   0  1
# CHECK-NEXT: [ 4] .text  PROGBITS 0000000000015008 005008 000000 00  AX  0   0  4

# CHECK:         Value          Size Type    Bind   Vis       Ndx Name
# CHECK-DAG:  0000000000000001     0 NOTYPE  GLOBAL DEFAULT   ABS vv
# CHECK-DAG:  0000000000000009     0 NOTYPE  GLOBAL DEFAULT   ABS ww
# CHECK-DAG:  0000000000000001     0 NOTYPE  GLOBAL DEFAULT   ABS x1
# CHECK-DAG:  0000000000000002     0 NOTYPE  GLOBAL DEFAULT   ABS x2
# CHECK-DAG:  0000000000000001     0 NOTYPE  GLOBAL DEFAULT   ABS y1
# CHECK-DAG:  0000000000000002     0 NOTYPE  GLOBAL DEFAULT   ABS y2

EXTERN(extern_defined)
SECTIONS {
  . = DEFINED(defined) ? 0x11000 : .;
  .foo : { *(.foo*) }
  . = DEFINED(notdefined) ? 0x12000 : 0x13000;
  .bar : { *(.bar*) }
  . = DEFINED(extern_defined) ? 0x14000 : 0x15000;

## Take the value from --defsym.
  vv = DEFINED(vv) ? vv : 9;
## 9 as ww is undefined.
  ww = DEFINED(ww) ? ww : 9;

## 1 as xx is not yet defined.
  x1 = DEFINED(xx) ? 2 : 1;
  .test : {
    xx = .;
    *(.test*)
  }
  x2 = DEFINED(xx) ? 2 : 1;

  y1 = DEFINED(yy) ? 2 : 1;
  yy = .;
  y2 = DEFINED(yy) ? 2 : 1;
}