On Thu, Aug 5, 2021, at 8:30 AM, Michael Matz wrote:
> Hello,
> 
> On Wed, 4 Aug 2021, John Ericson wrote:
> 
> > On Wed, Aug 4, 2021, at 10:48 AM, Michael Matz wrote:
> > > ... the 'as' and 'ld' executables should be simply found within the 
> > > version and target specific GCC libexecsubdir, possibly by being symlinks 
> > > to whatever you want.  That's at least how my crosss are configured and 
> > > installed, without any --with-{as,ld} options.
> > 
> > Yes that does work, and that's probably the best option today. I'm just 
> > a little wary of unprefixing things programmatically.
> 
> The libexecsubdir _is_ the prefix in above case :)

Right. I meant stripping off the `cpu-vendor-os-` (conventionally) that ld and 
as are prefixed with. stripping off leading directories is easier.

> > For some context, this is NixOS where we assemble a ton of cross 
> > compilers automatically and each package gets its own isolated many FHS. 
> > For that reason I would like to eventually avoid the target-specific 
> > subdirs entirely, as I have the separate package trees to disambiguate 
> > things. Now, I know that exact same argument could also be used to say 
> > target prefixing is also superfluous, but eventually things on the PATH 
> > need to be disambiguated.
> 
> Sure, which is why (e.g.) cross binutils do install with an arch prefix 
> into ${bindir}.  But as GCC has the capability to look into libexecsubdir 
> for binaries as well (which quite surely should never be in $PATH on any 
> system), I don't see the conflict.

Yes there is no actual conflict. Our originally wrapper scripts may have been 
confused about this at some point but that's on us.

> 
> > There is no requirement that the libexec things be named like the bin 
> > things, but I sort of feel it's one less thing to remember and makes 
> > debugging easier.
> 
> Well, the naming scheme of binaries in libexecsubdir reflects the scheme 
> that the compilers are using: cc1, cc1plus etc.  Not 
> aarch64-unknown-linux-cc1.

Right.

> 
> > I am sympathetic to the issue that if GCC accepts everything Clang does 
> > and vice-versa, we'll Postel's-law ourselves ourselves over time into 
> > madness as mistakes are accumulated rather than weeded out.
> 
> Right.  I supposed it wouldn't hurt to also look for "${targettriple}-as" 
> in $PATH before looking for 'as' (in $PATH).  But I don't think we can (or 
> should) switch off looking for 'as' in libexecsubdir.  I don't even see 
> why that behaviour should depend on an option, it could just be added by 
> default.

OK I agree with that. so if someone passes -B$x, how about looking for

- $x/$machine/$version/$prog
- $x/$machine/$prog
- $x/$machine-prog
- $x/prog

so no prefixing in the subdir, only in the main dir?

($libexecsubdir is morally $libexec being a search dir + subdir IIRC)

> > I now have some patches for this change I suppose I could also submit.
> 
> Even better :)

Great!

I will continue improving my patch based on the above. In the meantime, I 
posted https://gcc.gnu.org/pipermail/gcc-patches/2021-August/576725.html which 
is a small cleanup that, while helping with my changes, doesn't change the 
behavior and I hope is good in any event.

Reply via email to