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)  #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: |