Re: binutils executables capture paths from build machine

Steven Taschuk <[email protected]>
Newsgroups gmane.comp.gcc.cross-compiling
Message-ID <20180107172557.GB8958@femur>
Quoth Alexey Neyman:
> On 01/06/2018 11:27 AM, Steven Taschuk wrote:
> > I've understood correctly, the bash function do_binutils_for_host
> > configures binutils with --prefix=${CT_PREFIX_DIR} and installs the
> > executables with make install.  This procedure results in paths from
> > the build machine being embedded in the binaries, in at least two
> > places: the use of BINDIR at binutils-2.28/bfd/plugin.c:337; and
> > the various uses of DEBUGDIR in binutils-2.28/bfd/dwarf2.c (where
> > DEBUGDIR=${libdir}/debug; see binutils-2.28/bfd/configure.ac:108).
> 
> It is not just that. Also, NLS code embeds some build-time paths
> into the code, etc. [...]

I think in my situation, for binutils, it actually is just these
two spots.

(Details: My config has NLS disabled.  To handle debugging
information, I patch the build->host cross toolchain to support
BUILD_PATH_PREFIX_MAP from the Debian reproducible builds project.
I'm not sure what else you had in mind for "etc", but if I tweak
the binutils source in the two places I mentioned to use hard-coded
paths, the binutils executables become reproducible in my build,
in the few environments I've tested.  I won't be surprised to find
other irreproducibilities when I expand the set of build environments
that I test with, but that's where things stand right now.)

> [...] The problem is that we don't know where the
> toolchain will be located and many configure scripts "automagically"
> find headers/libraries based on the value of $prefix. [...]

Yeah, I understand that many packages are distributed with build
systems that don't support the build!=host case well, and that
magical autodetection in configure scripts is a big part of that, and
I certainly don't expect crosstool-ng to fix everybody else's build
systems.  As you said, that'd be a huge ongoing maintenance headache.

Is this known to be a problem with binutils specifically?

Also, if it is a problem with binutils, why does do_binutils_for_target
use the procedure where --prefix refers to a path on the host, and
DESTDIR is used to install it elsewhere on the build machine?

-- 
Steven Taschuk          http://www.amotlpaa.org/
"What? shall we receive good at the hand of God,
 and shall we not receive evil?"    -- Job 2:10
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.