1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
Fangrui Song d33006d182 ELFObjectWriter: Don't sort non-local symbols
As we don't sort local symbols, don't sort non-local symbols.  This makes
non-local symbols appear in their register order, which matches GNU as. The
register order is nice in that you can write tests with interleaved CHECK
prefixes, e.g.

```
// CHECK: something about foo
.globl foo
foo:
// CHECK: something about bar
.globl bar
bar:
```

With the lexicographical order, the user needs to place lexicographical smallest
symbol first or keep CHECK prefixes in one place.
2021-02-13 10:32:27 -08:00

33 lines
948 B
ArmAsm

# RUN: llvm-mc -filetype=obj -triple=x86_64 %s | llvm-readelf -s - | FileCheck %s
// Test which symbols should be in the symbol table
# CHECK: Symbol table '.symtab' contains 5 entries:
# CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
# CHECK-NEXT: 1: 0000000000000000 0 NOTYPE LOCAL DEFAULT 4 .Lsym8
# CHECK-NEXT: 2: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND sym6
# CHECK-NEXT: 3: 0000000000000000 0 NOTYPE GLOBAL HIDDEN UND hidden
# CHECK-NEXT: 4: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND undef
.Lsym2:
.Lsym3:
.Lsym4 = .Lsym2 - .Lsym3
.long .Lsym4
.type .Lsym5,@object
.type sym6,@object
.long sym6
.section .rodata.str1.1,"aMS",@progbits,1
.Lsym7:
.Lsym8:
.text
movsd .Lsym8(%rip), %xmm1
.hidden hidden
test2_a = undef
test2_b = undef + 1