mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-18 13:34:04 +00:00
Do not recurse into symbol refs that have a variant kind. This prevents us
from losing the variant when producing a relocation on an alias. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117037 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0b9325c97d
commit
8c8bc05a38
@ -306,7 +306,7 @@ bool MCExpr::EvaluateAsRelocatableImpl(MCValue &Res,
|
||||
const MCSymbol &Sym = SRE->getSymbol();
|
||||
|
||||
// Evaluate recursively if this is a variable.
|
||||
if (Sym.isVariable())
|
||||
if (Sym.isVariable() && SRE->getKind() == MCSymbolRefExpr::VK_None)
|
||||
return Sym.getVariableValue()->EvaluateAsRelocatableImpl(Res, Layout,
|
||||
true);
|
||||
|
||||
|
16
test/MC/ELF/alias-reloc.s
Normal file
16
test/MC/ELF/alias-reloc.s
Normal file
@ -0,0 +1,16 @@
|
||||
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
|
||||
|
||||
// Test that this produces a R_X86_64_PLT32. We produce a relocation with foo
|
||||
// and gas with bar, but both should be OK as long as the type is correct.
|
||||
.globl foo
|
||||
foo:
|
||||
bar = foo
|
||||
call bar@PLT
|
||||
|
||||
// CHECK: # Relocation 0
|
||||
// CHECK-NEXT: (('r_offset',
|
||||
// CHECK-NEXT: ('r_sym',
|
||||
// CHECK-NEXT: ('r_type', 0x00000004)
|
||||
// CHECK-NEXT: ('r_addend',
|
||||
// CHECK-NEXT: ),
|
||||
// CHECK-NEXT: ])
|
Loading…
x
Reference in New Issue
Block a user