blob: cb9adc864852ac9e15faec26919a0bec083ca99e [file] [log] [blame]
Fangrui Songb6772b82018-06-26 22:20:041// REQUIRES: x86
Davide Italiano6d328d32015-09-16 20:45:572// Check that symbol table is correctly populated with local symbols.
George Rimaraf58b072016-10-10 09:59:343// RUN: llvm-mc -save-temp-labels -filetype=obj -triple=x86_64-pc-linux %s -o %t
Rafael Espindola9c8904f2015-11-18 06:11:014// RUN: ld.lld %t -o %t1
Davide Italiano6d328d32015-09-16 20:45:575// RUN: llvm-readobj -t -s %t1 | FileCheck %s
Davide Italiano6d328d32015-09-16 20:45:576
7// Check that Info is equal to the number of local symbols.
8// CHECK: Section {
9// CHECK: Name: .symtab
10// CHECK-NEXT: Type: SHT_SYMTAB
11// CHECK-NEXT: Flags [
12// CHECK-NEXT: ]
13// CHECK-NEXT: Address:
14// CHECK-NEXT: Offset:
15// CHECK-NEXT: Size:
16// CHECK-NEXT: Link:
George Rimaraf58b072016-10-10 09:59:3417// CHECK-NEXT: Info: 6
Davide Italiano6d328d32015-09-16 20:45:5718
19// CHECK: Symbols [
20// CHECK-NEXT: Symbol {
21// CHECK-NEXT: Name:
22// CHECK-NEXT: Value: 0x0
23// CHECK-NEXT: Size: 0
24// CHECK-NEXT: Binding: Local
25// CHECK-NEXT: Type: None
26// CHECK-NEXT: Other: 0
27// CHECK-NEXT: Section: Undefined
28// CHECK-NEXT: }
29// CHECK-NEXT: Symbol {
George Rimaraf58b072016-10-10 09:59:3430// CHECK-NEXT: Name: .Labs
Rafael Espindolad6b42ee2016-12-05 22:16:3231// CHECK-NEXT: Value:
George Rimaraf58b072016-10-10 09:59:3432// CHECK-NEXT: Size: 0
33// CHECK-NEXT: Binding: Local
34// CHECK-NEXT: Type: None
35// CHECK-NEXT: Other: 0
36// CHECK-NEXT: Section: Absolute
37// CHECK-NEXT: }
38// CHECK-NEXT: Symbol {
Rafael Espindoladfc72002015-09-28 18:29:4739// CHECK-NEXT: Name: abs
Rafael Espindolad6b42ee2016-12-05 22:16:3240// CHECK-NEXT: Value:
Rafael Espindoladfc72002015-09-28 18:29:4741// CHECK-NEXT: Size: 0
42// CHECK-NEXT: Binding: Local
43// CHECK-NEXT: Type: None
44// CHECK-NEXT: Other: 0
45// CHECK-NEXT: Section: Absolute
46// CHECK-NEXT: }
47// CHECK-NEXT: Symbol {
Davide Italiano6d328d32015-09-16 20:45:5748// CHECK-NEXT: Name: blah
Rafael Espindolad6b42ee2016-12-05 22:16:3249// CHECK-NEXT: Value:
Davide Italiano6d328d32015-09-16 20:45:5750// CHECK-NEXT: Size: 0
51// CHECK-NEXT: Binding: Local
52// CHECK-NEXT: Type: None
53// CHECK-NEXT: Other: 0
Davide Italianob5b47b42015-09-18 01:08:1754// CHECK-NEXT: Section: .text
Davide Italiano6d328d32015-09-16 20:45:5755// CHECK-NEXT: }
56// CHECK-NEXT: Symbol {
57// CHECK-NEXT: Name: foo
Rafael Espindolad6b42ee2016-12-05 22:16:3258// CHECK-NEXT: Value:
Davide Italiano6d328d32015-09-16 20:45:5759// CHECK-NEXT: Size: 0
60// CHECK-NEXT: Binding: Local
61// CHECK-NEXT: Type: None
62// CHECK-NEXT: Other: 0
Davide Italianob5b47b42015-09-18 01:08:1763// CHECK-NEXT: Section: .text
Davide Italiano6d328d32015-09-16 20:45:5764// CHECK-NEXT: }
65// CHECK-NEXT: Symbol {
66// CHECK-NEXT: Name: goo
Rafael Espindolad6b42ee2016-12-05 22:16:3267// CHECK-NEXT: Value:
Davide Italiano6d328d32015-09-16 20:45:5768// CHECK-NEXT: Size: 0
69// CHECK-NEXT: Binding: Local
70// CHECK-NEXT: Type: None
71// CHECK-NEXT: Other: 0
Davide Italianob5b47b42015-09-18 01:08:1772// CHECK-NEXT: Section: .text
Davide Italiano6d328d32015-09-16 20:45:5773// CHECK-NEXT: }
74// CHECK-NEXT: Symbol {
75// CHECK-NEXT: Name: _start
Rafael Espindolad6b42ee2016-12-05 22:16:3276// CHECK-NEXT: Value:
Davide Italiano6d328d32015-09-16 20:45:5777// CHECK-NEXT: Size: 0
78// CHECK-NEXT: Binding: Global
79// CHECK-NEXT: Type: None
80// CHECK-NEXT: Other: 0
81// CHECK-NEXT: Section: .text
82// CHECK-NEXT: }
83// CHECK-NEXT: ]
84
85.global _start
86_start:
87
88blah:
89foo:
90goo:
Rafael Espindoladfc72002015-09-28 18:29:4791abs = 42
George Rimaraf58b072016-10-10 09:59:3492.Labs = 43