xref: /llvm-project-15.0.7/lld/test/ELF/map-file.s (revision 59cd8933)
1// REQUIRES: x86
2
3// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
4// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/map-file2.s -o %t2.o
5// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/map-file3.s -o %t3.o
6// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/map-file4.s -o %t4.o
7// RUN: rm -f %t4.a
8// RUN: llvm-ar rc %t4.a %t4.o
9// RUN: ld.lld %t1.o %t2.o %t3.o %t4.a -o %t -M | FileCheck %s
10// RUN: ld.lld %t1.o %t2.o %t3.o %t4.a -o %t -print-map | FileCheck %s
11// RUN: ld.lld %t1.o %t2.o %t3.o %t4.a -o %t -Map=%t.map
12// RUN: FileCheck %s < %t.map
13
14.global _start
15_start:
16        call baz
17.global _Z1fi
18_Z1fi:
19.cfi_startproc
20.cfi_endproc
21nop
22.weak bar
23bar:
24.long bar - .
25.long zed - .
26local:
27.comm   common,4,16
28
29// CHECK:      Address          Size             Align Out     In      File    Symbol
30// CHECK-NEXT: 0000000000200158 0000000000000034     8 .eh_frame
31// CHECK-NEXT: 0000000000200158 0000000000000034     8         .eh_frame
32// CHECK-NEXT: 0000000000201000 0000000000000015     4 .text
33// CHECK-NEXT: 0000000000201000 000000000000000e     4         .text
34// CHECK-NEXT: 0000000000201000 000000000000000e     4                 {{.*}}{{/|\\}}map-file.s.tmp1.o
35// CHECK-NEXT: 000000000020100e 0000000000000000     0                         local
36// CHECK-NEXT: 0000000000201005 0000000000000000     0                         f(int)
37// CHECK-NEXT: 0000000000201000 0000000000000000     0                         _start
38// CHECK-NEXT: 0000000000201010 0000000000000002     4                 {{.*}}{{/|\\}}map-file.s.tmp2.o
39// CHECK-NEXT: 0000000000201010 0000000000000000     0                         foo
40// CHECK-NEXT: 0000000000201011 0000000000000000     0                         bar
41// CHECK-NEXT: 0000000000201012 0000000000000000     1         .text.zed
42// CHECK-NEXT: 0000000000201012 0000000000000000     1                 {{.*}}{{/|\\}}map-file.s.tmp2.o
43// CHECK-NEXT: 0000000000201012 0000000000000000     0                         zed
44// CHECK-NEXT: 0000000000201014 0000000000000000     4         .text
45// CHECK-NEXT: 0000000000201014 0000000000000000     4                 {{.*}}{{/|\\}}map-file.s.tmp3.o
46// CHECK-NEXT: 0000000000201014 0000000000000000     0                         bah
47// CHECK-NEXT: 0000000000201014 0000000000000001     4                 {{.*}}{{/|\\}}map-file.s.tmp4.a(map-file.s.tmp4.o)
48// CHECK-NEXT: 0000000000201014 0000000000000000     0                         baz
49// CHECK-NEXT: 0000000000202000 0000000000000004    16 .bss
50// CHECK-NEXT: 0000000000202000 0000000000000004    16         COMMON
51// CHECK-NEXT: 0000000000000000 0000000000000008     1 .comment
52// CHECK-NEXT: 0000000000000000 0000000000000008     1         .comment
53// CHECK-NEXT: 0000000000000000 00000000000000f0     8 .symtab
54// CHECK-NEXT: 0000000000000000 00000000000000f0     8         .symtab
55// CHECK-NEXT: 0000000000000000 0000000000000039     1 .shstrtab
56// CHECK-NEXT: 0000000000000000 0000000000000039     1         .shstrtab
57// CHECK-NEXT: 0000000000000000 000000000000002f     1 .strtab
58// CHECK-NEXT: 0000000000000000 000000000000002f     1         .strtab
59
60// RUN: not ld.lld %t1.o %t2.o %t3.o %t4.a -o %t -Map=/ 2>&1 \
61// RUN:  | FileCheck -check-prefix=FAIL %s
62// FAIL: cannot open /
63