mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Produce ELF::R_386_GOTPC relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116728 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
01b58f637c
commit
aa85c21633
@ -707,7 +707,12 @@ void ELFObjectWriterImpl::RecordRelocation(const MCAssembler &Asm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FK_Data_4: Type = ELF::R_386_32; break;
|
case FK_Data_4:
|
||||||
|
if (Symbol->getName() == "_GLOBAL_OFFSET_TABLE_")
|
||||||
|
Type = ELF::R_386_GOTPC;
|
||||||
|
else
|
||||||
|
Type = ELF::R_386_32;
|
||||||
|
break;
|
||||||
case FK_Data_2: Type = ELF::R_386_16; break;
|
case FK_Data_2: Type = ELF::R_386_16; break;
|
||||||
case X86::reloc_pcrel_1byte:
|
case X86::reloc_pcrel_1byte:
|
||||||
case FK_Data_1: Type = ELF::R_386_8; break;
|
case FK_Data_1: Type = ELF::R_386_8; break;
|
||||||
|
@ -72,6 +72,11 @@ static unsigned getRelaxedOpcode(unsigned Op) {
|
|||||||
default:
|
default:
|
||||||
return Op;
|
return Op;
|
||||||
|
|
||||||
|
// This is used on i386 with things like addl $foo, %ebx
|
||||||
|
// FIXME: Should the other *i8 instructions be here too? If not, it might
|
||||||
|
// be better to just select X86::ADD32ri instead of X86::ADD32ri8.
|
||||||
|
case X86::ADD32ri8: return X86::ADD32ri;
|
||||||
|
|
||||||
case X86::JAE_1: return X86::JAE_4;
|
case X86::JAE_1: return X86::JAE_4;
|
||||||
case X86::JA_1: return X86::JA_4;
|
case X86::JA_1: return X86::JA_4;
|
||||||
case X86::JBE_1: return X86::JBE_4;
|
case X86::JBE_1: return X86::JBE_4;
|
||||||
|
@ -16,6 +16,12 @@
|
|||||||
// CHECK-NEXT: (('r_offset',
|
// CHECK-NEXT: (('r_offset',
|
||||||
// CHECK-NEXT: ('r_sym',
|
// CHECK-NEXT: ('r_sym',
|
||||||
// CHECK-NEXT: ('r_type', 4)
|
// CHECK-NEXT: ('r_type', 4)
|
||||||
|
// CHECK-NEXT: ),
|
||||||
|
// CHECK-NEXT: # Relocation 2
|
||||||
|
// CHECK-NEXT: (('r_offset',
|
||||||
|
// CHECK-NEXT: ('r_sym',
|
||||||
|
// CHECK-NEXT: ('r_type', 10)
|
||||||
|
// CHECK-NEXT: ),
|
||||||
|
|
||||||
.text
|
.text
|
||||||
bar:
|
bar:
|
||||||
@ -24,6 +30,7 @@ bar:
|
|||||||
.global bar2
|
.global bar2
|
||||||
bar2:
|
bar2:
|
||||||
calll bar2@PLT
|
calll bar2@PLT
|
||||||
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||||
|
|
||||||
.section .rodata.str1.16,"aMS",@progbits,1
|
.section .rodata.str1.16,"aMS",@progbits,1
|
||||||
.Lfoo:
|
.Lfoo:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user