Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Aug 2014 08:08:46 -0600
From:      Ian Lepore <ian@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        marcel@freebsd.org, Phil Shafer <phil@juniper.net>, John-Mark Gurney <jmg@funkthat.com>, "Simon J. Gerraty" <sjg@juniper.net>, arch@freebsd.org, Poul-Henning Kamp <phk@phk.freebsd.dk>
Subject:   Re: XML Output: libxo - provide single API to output TXT, XML, JSON and HTML
Message-ID:  <1408025326.56408.566.camel@revolution.hippie.lan>
In-Reply-To: <20140814085257.GN2737@kib.kiev.ua>
References:  <20140814052648.GM2737@kib.kiev.ua> <201408140606.s7E66XXA091972@idle.juniper.net> <20140814085257.GN2737@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2014-08-14 at 11:52 +0300, Konstantin Belousov wrote:
> On Thu, Aug 14, 2014 at 02:06:33AM -0400, Phil Shafer wrote:
> > Konstantin Belousov writes:
> > >Yes, the notes are used to communicate the information required by
> > >the dynamic linker to correctly activate the image. The mechanism has
> > >nothing to do with application-specific features, and overloading it for
> > >that purpose is severe and pointless layering violation.
> > 
> > The ELF spec says:
> > 
> >     Note Section
> > 
> >     Sometimes a vendor or system builder needs to mark an object
> >     file with special information that other programs will check
> >     for conformance, compatibility, etc. Sections of type SHT_NOTE
> >     and program header elements of type PT_NOTE can be used for
> >     this purpose. The note information in sections and program
> >     header elements holds any number of entries, each of which is
> >     an array of 4-byte words in the format of the target processor.
> >     Labels appear below to help explain note information organization,
> >     but they are not part of the specification.
> ELF standard scope is about build toolchain and C runtime, where the
> cited paragraph makes perfect sense.
> 

I disagree with this interpretation.  The cited paragraph can be found
in, for example, the Oracle documentation in a chapter named "object
file format".  There is nothing about the context that limits the
validity to toolchains and runtime support, it's just describing the
file layout.

It appears to me that the NOTE mechanism is purposely designed for
attaching arbitrary metadata of any size and type to an elf file.  A bit
of searching doesn't turn up any words that either recommend or forbid
certain types of info stored in NOTEs.

> > 
> > Marking the binary with a libxo-specific note tells the caller that
> > the binary is capable of rendering its output in a non-traditional
> > style and gives the caller a means of triggering those styles of
> > output.  In the libxo-enabled world, I see this as vital information
> > the caller needs to initialize the environment in which the command
> > will be run.  Isn't this exactly the sort of information ELF targets
> > for note sections?
> 
> How binary format has any relevance for an application level feature ?
> What would you do with the binaries which permissions are 'r-s--x--x',
> which is not unexpected for the tools which gather system information
> and have to access things like /dev/mem ?
> 
> You removed and did not answered a crusial question, which is a litmus
> test for your proposal.  Namely, how presence of the proposed note in
> the binary is different from DT_NEEDED tag for your library ?

DT_NEEDED only helps with dynamically linked executables, this whole
NOTEs discussion came up in the context of how to detect a statically
linked binary with libxo output support.

> 
> Definitely, I do not see an addition of the fashion-of-the-day
> text-mangling output shattering enough to justify imposing the
> architecture violation.

I don't think you've cited anything other than your own opinion that
using a note is any sort of architecture violation.  I don't know that
you're wrong, I just can't find anything with a bit of quick searching
that says you're right.

-- Ian





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1408025326.56408.566.camel>