[RFC] Collision between NT_GNU_BUILD_ATTRIBUTE_OPEN and NT_PPC_VMX
Alan Modra
amodra@gmail.com
Sat Aug 12 08:14:00 GMT 2017
More information about the Binutils mailing list
Sat Aug 12 08:14:00 GMT 2017
- Previous message (by thread): [RFC] Collision between NT_GNU_BUILD_ATTRIBUTE_OPEN and NT_PPC_VMX
- Next message (by thread): [RFC] Collision between NT_GNU_BUILD_ATTRIBUTE_OPEN and NT_PPC_VMX
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Aug 12, 2017 at 10:52:51AM +0930, Alan Modra wrote: > On Fri, Aug 11, 2017 at 04:03:26PM -0700, H.J. Lu wrote: > > This is wrong. pnote->type is unique only for a given pnote->namedata. > > That is true. According to the gABI, the name is supposed to be the > originator of the note, and the type is decoded depending on the name. > > > NT_GNU_* should be be checked for "GNU" notes. > > Well, yes, but NT_GNU_BUILD_ATTRIBUTE_* doesn't use "GNU". The > proposal at https://fedoraproject.org/wiki/Toolchain/Watermark says > they ought to start with "GA", and even that stretches the gABI > description of notes, but the support and testcases Nick committed > omit "GA". So we don't have anything remotely like an originator > string. The name dives straight into data. :-( OK, so I thought I'd have another look at this (escaping outside work in the garden). It seems from the objcopy code that the "GA" style is version 2 of these notes. Good! Here is what I'm going to commit. * readelf.c (process_note): Qualify NT_GNU_BUILD_ATTRIBUTE notes by name data. diff --git a/binutils/readelf.c b/binutils/readelf.c index 2b15f0f..0fc6562 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -17477,8 +17477,11 @@ process_note (Elf_Internal_Note * pnote, printf (" "); - if (pnote->type == NT_GNU_BUILD_ATTRIBUTE_OPEN - || pnote->type == NT_GNU_BUILD_ATTRIBUTE_FUNC) + if (((const_strneq (pnote->namedata, "GA") + && strchr ("*$!+", pnote->namedata[2]) != NULL) + || strchr ("*$!+", pnote->namedata[0]) != NULL) + && (pnote->type == NT_GNU_BUILD_ATTRIBUTE_OPEN + || pnote->type == NT_GNU_BUILD_ATTRIBUTE_FUNC)) print_gnu_build_attribute_name (pnote); else print_symbol (-20, name); @@ -17496,8 +17499,11 @@ process_note (Elf_Internal_Note * pnote, return print_stapsdt_note (pnote); else if (const_strneq (pnote->namedata, "CORE")) return print_core_note (pnote); - else if (pnote->type == NT_GNU_BUILD_ATTRIBUTE_OPEN - || pnote->type == NT_GNU_BUILD_ATTRIBUTE_FUNC) + else if (((const_strneq (pnote->namedata, "GA") + && strchr ("*$!+", pnote->namedata[2]) != NULL) + || strchr ("*$!+", pnote->namedata[0]) != NULL) + && (pnote->type == NT_GNU_BUILD_ATTRIBUTE_OPEN + || pnote->type == NT_GNU_BUILD_ATTRIBUTE_FUNC)) return print_gnu_build_attribute_description (pnote, file); if (pnote->descsz) -- Alan Modra Australia Development Lab, IBM
- Previous message (by thread): [RFC] Collision between NT_GNU_BUILD_ATTRIBUTE_OPEN and NT_PPC_VMX
- Next message (by thread): [RFC] Collision between NT_GNU_BUILD_ATTRIBUTE_OPEN and NT_PPC_VMX
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list