Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Jan 2008 13:42:23 -0800
From:      "Peter Wemm" <peter@wemm.org>
To:        "Maxim Sobolev" <sobomax@freebsd.org>
Cc:        =?ISO-8859-1?Q?Dag-Erling_Sm=F8rgrav?= <des@des.no>, Tim Kientzle <kientzle@freebsd.org>, Peter Schuller <peter.schuller@infidyne.com>, Jason Evans <jasone@freebsd.org>, freebsd-current@freebsd.org
Subject:   Re: ELF dynamic loader name [was: sbrk(2) broken]
Message-ID:  <e7db6d980801041342k562a3459y39003036dc1a5528@mail.gmail.com>
In-Reply-To: <477EA466.6060204@FreeBSD.org>
References:  <477C82F0.5060809@freebsd.org> <863ateemw2.fsf@ds4.des.no> <200801032200.25650.peter.schuller@infidyne.com> <alpine.BSF.1.00.0801031305340.39341@goat.gigo.com> <8663yac62d.fsf@ds4.des.no> <477E72FC.5070304@freebsd.org> <477EA466.6060204@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1/4/08, Maxim Sobolev <sobomax@freebsd.org> wrote:
>
> Tim Kientzle wrote:
> >> "Sidegrading" is supposed to work now in HEAD; with a little hacking,
> >> you can build an amd64 world and kernel on the i386 world, install the
> >> kernel, reboot, and install world.  AFAIK, the required hacking
> involves
> >> copying /libexec/ld-elf.so.1 to /libexec/ld-elf32.so.1 ...
> >
> > I wonder when we'll have to standardize /libexec/<arch>/ to support
> > multiple architectures for things like ld-elf.so.1.  It used to only
> > be a concern for those rare people running diskless over multiple
> > architectures, but the case of i386 binaries on amd64 is a little
> > more common.
> >
> > On the other hand, if ld-elf.so.1 is fairly unique in this
> > concern, it might be simpler to rename it to:
> >    ld-elf-{i386,amd64,ppc,...}.so.1
>
> Good point, it's silly that i386 binary running on amd64 kernel requires
> ld-elf32.so.1, while ld-elf.so.1 when running on i386 kernel. It adds
> unneeded complexity for running i386 jail or chroot on amd64 for example.
>
> I wonder if we can do what Tim said - rename dynamic loader to actually
> include architecture name. I am pretty sure it would allow to remove
> quite few special cases from the kernel elf/emulation code and possibly
> from the cross build logic.
>
> -Maxim



While this doesn't count as an explicit vote against the rename, we can
solve the chroot problem easily.  I did this once already, but for some
reason never got around to committing it.

However, renaming ld-elf.so.1 is a bad idea in general.  Yes, it would have
been better to have had the arch name in there from the start, but it
doesn't.  It is unfortunate, but I feel that changing it will cause far more
pain across the board than it would solve for the specific case of chrooting
i386 binaries.  I don't think it is worth it.

There are a whole bunch of references to the ld-elf.so.1 name.  Not just in
our tree, but in external 3rd party code.  Even things like gdb "know" how
to handle ld-elf.so.1.  Getting those upstream folks to add additional
strcmp()'s for ld-elf-i386.so.1, ld-elf-amd64.so.1 etc will be hard enough,
and it will add another hurdle that minor platform maintainers have to
overcome.  ld-elf-mips-be-4Kc.so.1 anybody?  (ok, that last one is a
stretch)

Anyway, I'm not absolutely against it, but I think it will be a net loss
overall.  We'll have more pain than I think it is worth, especially since
the alternatives are much easier.

-Peter



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