diff options
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 2 | ||||
-rw-r--r-- | llvm/test/MC/ELF/addrsig.s | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index db531f75c87..358c036f2a7 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -1273,6 +1273,8 @@ void ELFObjectWriter::executePostLayoutBinding(MCAssembler &Asm, for (const MCSymbol *&Sym : AddrsigSyms) { if (const MCSymbol *R = Renames.lookup(cast<MCSymbolELF>(Sym))) Sym = R; + if (Sym->isInSection() && Sym->getName().startswith(".L")) + Sym = Sym->getSection().getBeginSymbol(); Sym->setUsedInReloc(); } } diff --git a/llvm/test/MC/ELF/addrsig.s b/llvm/test/MC/ELF/addrsig.s index 256d8089d35..0587ad302fd 100644 --- a/llvm/test/MC/ELF/addrsig.s +++ b/llvm/test/MC/ELF/addrsig.s @@ -16,29 +16,29 @@ // CHECK-NEXT: AddressAlignment: 1 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 03050201 +// CHECK-NEXT: 0000: 03050102 // CHECK-NEXT: ) // CHECK-NEXT: } // CHECK-NEXT: Section { // CHECK-NEXT: Index: 4 // CHECK-NEXT: Name: .symtab -// CHECK: Name: .Llocal +// CHECK: Name: local // CHECK-NEXT: Value: // CHECK-NEXT: Size: // CHECK-NEXT: Binding: // CHECK-NEXT: Type: // CHECK-NEXT: Other: -// CHECK-NEXT: Section: +// CHECK-NEXT: Section: [[SEC:.*]] // CHECK-NEXT: } // CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: local +// CHECK-NEXT: Name: // CHECK-NEXT: Value: // CHECK-NEXT: Size: // CHECK-NEXT: Binding: // CHECK-NEXT: Type: // CHECK-NEXT: Other: -// CHECK-NEXT: Section: +// CHECK-NEXT: Section: [[SEC]] // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: g1 @@ -64,8 +64,8 @@ // CHECK: Addrsig [ // CHECK-NEXT: Sym: g1 (3) // CHECK-NEXT: Sym: g3 (5) -// CHECK-NEXT: Sym: local (2) -// CHECK-NEXT: Sym: .Llocal (1) +// CHECK-NEXT: Sym: local (1) +// CHECK-NEXT: Sym: (2) // CHECK-NEXT: ] // ASM: .addrsig |