diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-05-28 15:51:38 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-05-28 15:51:38 +0000 |
commit | 52bd330500339e9c176d1fec7c2733f34ac0aa85 (patch) | |
tree | d2eb804be1fbd94f88c9d8ce14cffdac1beec55d /llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp | |
parent | f49c7b157001dfd83f02e596c57577cfc0c08d17 (diff) | |
download | bcm5719-llvm-52bd330500339e9c176d1fec7c2733f34ac0aa85.tar.gz bcm5719-llvm-52bd330500339e9c176d1fec7c2733f34ac0aa85.zip |
Fix production of R_X86_64_GOTPCRELX/R_X86_64_REX_GOTPCRELX.
We were producing R_X86_64_GOTPCRELX for invalid instructions and
sometimes producing R_X86_64_GOTPCRELX instead of
R_X86_64_REX_GOTPCRELX.
llvm-svn: 271118
Diffstat (limited to 'llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp index 6fa479e4d7e..e5084f90f98 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp @@ -68,6 +68,8 @@ static X86_64RelType getType64(unsigned Kind, case FK_Data_4: case FK_PCRel_4: case X86::reloc_riprel_4byte: + case X86::reloc_riprel_4byte_relax: + case X86::reloc_riprel_4byte_relax_rex: case X86::reloc_riprel_4byte_movq_load: return RT64_32; case FK_PCRel_2: @@ -182,8 +184,9 @@ static unsigned getRelocType64(MCContext &Ctx, SMLoc Loc, switch (Kind) { default: return ELF::R_X86_64_GOTPCREL; - case X86::reloc_riprel_4byte: + case X86::reloc_riprel_4byte_relax: return ELF::R_X86_64_GOTPCRELX; + case X86::reloc_riprel_4byte_relax_rex: case X86::reloc_riprel_4byte_movq_load: return ELF::R_X86_64_REX_GOTPCRELX; } |