]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
amdgcn: Fix early-debug relocations
authorAndrew Stubbs <ams@codesourcery.com>
Thu, 22 Oct 2020 12:27:47 +0000 (13:27 +0100)
committerAndrew Stubbs <ams@codesourcery.com>
Sat, 6 Mar 2021 15:57:00 +0000 (15:57 +0000)
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)

gcc/config/gcn/mkoffload.c

index 7efbbd83ee384e4b63b04c1423e02a5aabf64c4e..60794c1043468176a2641136f04f3022c030f9e9 100644 (file)
@@ -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 ();