Re: [PATCH v7 22/27] binfmt_elf: Extract .note.gnu.property from an ELF file
flat view
From: Peter Zijlstra <peterz@infradead.org>
Date: 2019-06-18 12:42:00
Also in:
linux-arch, linux-doc, linux-mm, lkml
On Tue, Jun 18, 2019 at 10:12:50AM +0100, Dave Martin wrote:
On Mon, Jun 17, 2019 at 02:20:40PM +0200, Thomas Gleixner wrote:quoted
On Mon, 17 Jun 2019, Florian Weimer wrote:quoted
* Dave Martin:quoted
On Tue, Jun 11, 2019 at 12:31:34PM -0700, Yu-cheng Yu wrote:quoted
We can probably check PT_GNU_PROPERTY first, and fallback (based on ld-linux version?) to PT_NOTE scanning?For arm64, we can check for PT_GNU_PROPERTY and then give up unconditionally. For x86, we would fall back to PT_NOTE scanning, but this will add a bit of cost to binaries that don't have NT_GNU_PROPERTY_TYPE_0. The ld.so version doesn't tell you what ELF ABI a given executable conforms to. Since this sounds like it's largely a distro-specific issue, maybe there could be a Kconfig option to turn the fallback PT_NOTE scanning on?I'm worried that this causes interop issues similarly to what we see with VSYSCALL today. If we need both and a way to disable it, it should be something like a personality flag which can be configured for each process tree separately. Ideally, we'd settle on one correct approach (i.e., either always process both, or only process PT_GNU_PROPERTY) and enforce that.Chose one and only the one which makes technically sense and is not some horrible vehicle. Everytime we did those 'oh we need to make x fly workarounds' we regretted it sooner than later.So I guess that points to keeping PT_NOTE scanning always available as a fallback on x86. This sucks a bit, but if there are binaries already in the wild that rely on this, I don't think we have much choice...
I'm not sure I read Thomas' comment like that. In my reading keeping the PT_NOTE fallback is exactly one of those 'fly workarounds'. By not supporting PT_NOTE only the 'fine' people already shit^Hpping this out of tree are affected, and we don't have to care about them at all.