amd64/127276: ldd invokes linux yes
John Baldwin
jhb at freebsd.org
Mon Sep 15 19:28:07 UTC 2008
On Sunday 14 September 2008 10:33:47 am Dominic Fandrey wrote:
> John Baldwin wrote:
> > FreeBSD binaries from various releases have been branded in different
ways. I
> > would consider it more of a user error to run ldd on a Linux binary. :)
You
> > could maybe add a "IMPLEMENTATION NOTES" section to the manpage that
explains
> > how it works and why it will execute any binary using a different runtime
> > linker.
> >
>
> Well, documenting it is much better than the current state. Though in my
> opinion it doesn't matter to the user how it works, but what one expects the
> program to do. And the current behaviour is not what I expected.
>
> Would you instead accept a patch from me that does a compatibility check and
> bails out if the binary does not use the FreeBSD linker?
It can be hard to determine that. What happens is that each ELF binary
includes a path to its interpreter (i.e. the runtime linker). For FreeBSD
binaries this can be either /usr/libexec/ld-elf.so.1 or /libexec/ld-elf.so.1
or the a.out paths (/usr/libexec/ld.so.1 I think). In the kernel, ABI
modules hook into exec and when they see a binary they can handle, they can
choose to overwrite the interpreter path to point it to somewhere else (e.g.
the Linux ABI uses a path under /compat/linux instead, and the 'freebsd32'
ABI on amd64 uses /libexec/ld-elf32.so.1). Any ELF binary that uses one of
the two ld-elf.so.1 (or ld-elf32.so.1) paths will use the FreeBSD runtime
linker, regardless of which "OS" the binary is targeted for. You could maybe
hardcode the list of interpreter strings to check for, but that wouldn't be
completely foolproof. You could have an ABI that is fine with using the
FreeBSD linker even though its native "OS" uses a different interpreter path
(though that is unlikely). In that case the kernel module would be rewriting
the interpreter path to be the FreeBSD ld-elf, but ldd would have no clue.
> The "IMPLEMENTATION NOTES" would still be nice to have, though. It's always
> a nice read to get an idea on how something works. And I find code much
> easier to decipher if I already know how it's supposed to do something. At
> least much easier than the opposite way, trying to glimpse how something
> works from the code.
>
> Regards
>
--
John Baldwin
More information about the freebsd-amd64
mailing list