diff options
Diffstat (limited to 'arch/x86/tools/relocs.c')
-rw-r--r-- | arch/x86/tools/relocs.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 3a6c8ebc8032..0b08067c45f3 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c | |||
@@ -196,6 +196,7 @@ static const char *rel_type(unsigned type) | |||
196 | #if ELF_BITS == 64 | 196 | #if ELF_BITS == 64 |
197 | REL_TYPE(R_X86_64_NONE), | 197 | REL_TYPE(R_X86_64_NONE), |
198 | REL_TYPE(R_X86_64_64), | 198 | REL_TYPE(R_X86_64_64), |
199 | REL_TYPE(R_X86_64_PC64), | ||
199 | REL_TYPE(R_X86_64_PC32), | 200 | REL_TYPE(R_X86_64_PC32), |
200 | REL_TYPE(R_X86_64_GOT32), | 201 | REL_TYPE(R_X86_64_GOT32), |
201 | REL_TYPE(R_X86_64_PLT32), | 202 | REL_TYPE(R_X86_64_PLT32), |
@@ -782,6 +783,15 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, | |||
782 | add_reloc(&relocs32neg, offset); | 783 | add_reloc(&relocs32neg, offset); |
783 | break; | 784 | break; |
784 | 785 | ||
786 | case R_X86_64_PC64: | ||
787 | /* | ||
788 | * Only used by jump labels | ||
789 | */ | ||
790 | if (is_percpu_sym(sym, symname)) | ||
791 | die("Invalid R_X86_64_PC64 relocation against per-CPU symbol %s\n", | ||
792 | symname); | ||
793 | break; | ||
794 | |||
785 | case R_X86_64_32: | 795 | case R_X86_64_32: |
786 | case R_X86_64_32S: | 796 | case R_X86_64_32S: |
787 | case R_X86_64_64: | 797 | case R_X86_64_64: |