|
@@ -196,6 +196,7 @@ static const char *rel_type(unsigned type)
|
|
|
#if ELF_BITS == 64
|
|
|
REL_TYPE(R_X86_64_NONE),
|
|
|
REL_TYPE(R_X86_64_64),
|
|
|
+ REL_TYPE(R_X86_64_PC64),
|
|
|
REL_TYPE(R_X86_64_PC32),
|
|
|
REL_TYPE(R_X86_64_GOT32),
|
|
|
REL_TYPE(R_X86_64_PLT32),
|
|
@@ -782,6 +783,15 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym,
|
|
|
add_reloc(&relocs32neg, offset);
|
|
|
break;
|
|
|
|
|
|
+ case R_X86_64_PC64:
|
|
|
+ /*
|
|
|
+ * Only used by jump labels
|
|
|
+ */
|
|
|
+ if (is_percpu_sym(sym, symname))
|
|
|
+ die("Invalid R_X86_64_PC64 relocation against per-CPU symbol %s\n",
|
|
|
+ symname);
|
|
|
+ break;
|
|
|
+
|
|
|
case R_X86_64_32:
|
|
|
case R_X86_64_32S:
|
|
|
case R_X86_64_64:
|