aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2020-10-22 13:27:47 +0100
committerAndrew Stubbs <ams@codesourcery.com>2021-03-06 15:57:00 +0000
commit74171a08a1be64f807632b6d3408c2a17defeadd (patch)
tree3bcf048fd714226f679e98df9764769861b8f56c
parentd556f783e9947fece98537f2a335a9af70b52e3b (diff)
downloadgcc-74171a08a1be64f807632b6d3408c2a17defeadd.zip
gcc-74171a08a1be64f807632b6d3408c2a17defeadd.tar.gz
gcc-74171a08a1be64f807632b6d3408c2a17defeadd.tar.bz2
amdgcn: Fix early-debug relocations
The relocation symbols were inadvertantly wiped when the type was set in mkoffload. gcc/ChangeLog * config/gcn/mkoffload.c (copy_early_debug_info): Don't wipe relocation symbols. (cherry picked from commit d24a4c8c4256cc287ebf4ad80368b4f1edb1733e)
-rw-r--r--gcc/config/gcn/mkoffload.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/config/gcn/mkoffload.c b/gcc/config/gcn/mkoffload.c
index 7efbbd8..60794c1 100644
--- a/gcc/config/gcn/mkoffload.c
+++ b/gcc/config/gcn/mkoffload.c
@@ -335,19 +335,24 @@ copy_early_debug_info (const char *infile, const char *outfile)
{
case R_X86_64_32:
case R_X86_64_32S:
- reloc->r_info = R_AMDGPU_ABS32;
+ reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ R_AMDGPU_ABS32);
break;
case R_X86_64_PC32:
- reloc->r_info = R_AMDGPU_REL32;
+ reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ R_AMDGPU_REL32);
break;
case R_X86_64_PC64:
- reloc->r_info = R_AMDGPU_REL64;
+ reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ R_AMDGPU_REL64);
break;
case R_X86_64_64:
- reloc->r_info = R_AMDGPU_ABS64;
+ reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ R_AMDGPU_ABS64);
break;
case R_X86_64_RELATIVE:
- reloc->r_info = R_AMDGPU_RELATIVE64;
+ reloc->r_info = ELF32_R_INFO(ELF32_R_SYM(reloc->r_info),
+ R_AMDGPU_RELATIVE64);
break;
default:
gcc_unreachable ();