This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] elf/elf.h: Add new 386 and X86_64 relocations from binutils.
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Mark Wielaard <mjw at redhat dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 28 Jan 2016 05:03:28 -0800
- Subject: Re: [PATCH] elf/elf.h: Add new 386 and X86_64 relocations from binutils.
- Authentication-results: sourceware.org; auth=none
- References: <1453985706-30030-1-git-send-email-mjw at redhat dot com>
On Thu, Jan 28, 2016 at 4:55 AM, Mark Wielaard <firstname.lastname@example.org> wrote:
> The following new 386 and X86_64 were added to binutils. They are
> non-dynamic relocations, so don't need direct handling in glibc.
> But other programs, like elfutils, use the glibc elf.h definitions
> for the names and numbers when inspecting ET_REL files.
> R_386_GOT32X was proposed in
> X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in
> There also used to be R_X86_64_PC32_BND (39) and R_X86_64_PLT32_BND (40)
> but those already got deprecated and now the numbers are simply reserved.
We can't use them for anything else and linker still supports them, But
assembler won't generate them.
> See https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ
> They are still in current binutils master, but given that they should
> not be used I didn't add them to elf.h.
> * elf/elf.h (R_386_GOT32X): New.
> (R_386_NUM): Update.
> (R_X86_64_GOTPCRELX: New.
> (R_X86_64_REX_GOTPCRELX): New.
> (R_X86_64_NUM): Update.
> OK to commit?
> diff --git a/elf/elf.h b/elf/elf.h
> index 15f5a75..1a7000b 100644
> --- a/elf/elf.h
> +++ b/elf/elf.h
> @@ -1269,8 +1269,10 @@ typedef struct
> argument, returning the TLS
> offset for the symbol. */
> #define R_386_IRELATIVE 42 /* Adjust indirectly by program base */
> +#define R_386_GOT32X 43 /* Load from 32 bit GOT entry,
> + relaxable. */
> /* Keep this the last entry. */
> -#define R_386_NUM 43
> +#define R_386_NUM 44
> /* SUN SPARC specific definitions. */
> @@ -3144,8 +3146,15 @@ enum
> #define R_X86_64_TLSDESC 36 /* TLS descriptor. */
> #define R_X86_64_IRELATIVE 37 /* Adjust indirectly by program base */
> #define R_X86_64_RELATIVE64 38 /* 64-bit adjust by program base */
> -#define R_X86_64_NUM 39
> + /* 39 Reserved was R_X86_64_PC32_BND */
> + /* 40 Reserved was R_X86_64_PLT32_BND */
> +#define R_X86_64_GOTPCRELX 41 /* Load from 32 bit signed pc relative
> + offset to GOT entry without REX
> + prefix, relaxable. */
> +#define R_X86_64_REX_GOTPCRELX 42 /* Load from 32 bit signed pc relative
> + offset to GOT entry with REX prefix,
> + relaxable. */
> +#define R_X86_64_NUM 43
> /* AM33 relocations. */
Looks good to me.