From patchwork Fri Jan 29 08:53:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 10664 Received: (qmail 30050 invoked by alias); 29 Jan 2016 08:54:04 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 30030 invoked by uid 89); 29 Jan 2016 08:54:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=reserved X-HELO: mx1.redhat.com Date: Fri, 29 Jan 2016 09:53:59 +0100 From: Mark Wielaard To: "H.J. Lu" Cc: GNU C Library Subject: Re: [PATCH] elf/elf.h: Add new 386 and X86_64 relocations from binutils. Message-ID: <20160129085359.GF2721@blokker.redhat.com> References: <1453985706-30030-1-git-send-email-mjw@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) On Thu, Jan 28, 2016 at 05:03:28AM -0800, H.J. Lu wrote: > On Thu, Jan 28, 2016 at 4:55 AM, Mark Wielaard 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 > > https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I > > > > X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in > > https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0 > > > > 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. OK, if we cannot reuse them, then it makes sense to just add them and mark them deprecated in the comments. Then at least we got the name and number for tools to recognize them. Adjusted patch attached. Thanks, Mark From 41fb17254b3278eeb888fa23c26acf4f02fa23da Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 29 Jan 2016 09:49:01 +0100 Subject: [PATCH] elf/elf.h: Add new 386 and X86_64 relocations from binutils. 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 https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0 There also used to be R_X86_64_PC32_BND and R_X86_64_PLT32_BND but those already got deprecated in https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ * elf/elf.h (R_386_GOT32X): New. (R_386_NUM): Update. (R_X86_64_PC32_BND): New, but deprecated. (R_X86_64_PLT32_BND): New, but deprecated. (R_X86_64_GOTPCRELX: New. (R_X86_64_REX_GOTPCRELX): New. (R_X86_64_NUM): Update. --- ChangeLog | 10 ++++++++++ elf/elf.h | 15 ++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9cb8df3..ca05793 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2016-01-29 Mark Wielaard + + * elf/elf.h (R_386_GOT32X): New. + (R_386_NUM): Update. + (R_X86_64_PC32_BND): New, but deprecated. + (R_X86_64_PLT32_BND): New, but deprecated. + (R_X86_64_GOTPCRELX: New. + (R_X86_64_REX_GOTPCRELX): New. + (R_X86_64_NUM): Update. + 2016-01-28 Steve Ellcey Joseph Myers diff --git a/elf/elf.h b/elf/elf.h index 15f5a75..f0375fa 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 +#define R_X86_64_PC32_BND 39 /* Deprecated. */ +#define R_X86_64_PLT32_BND 40 /* Deprecated. */ +#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. */