amd64/127276: ldd invokes linux yes
Rui Paulo
rpaulo at FreeBSD.org
Thu Sep 11 12:50:03 UTC 2008
The following reply was made to PR amd64/127276; it has been noted by GNATS.
From: Rui Paulo <rpaulo at FreeBSD.org>
To: Dominic Fandrey <kamikaze at bsdforen.de>
Cc: John Baldwin <jhb at freebsd.org>, freebsd-gnats-submit at freebsd.org,
freebsd-amd64 at freebsd.org
Subject: Re: amd64/127276: ldd invokes linux yes
Date: Thu, 11 Sep 2008 13:10:58 +0100
On Thu, Sep 11, 2008 at 07:01:09AM +0200, Dominic Fandrey wrote:
> I don't need it to work, I just need it not to invoke linux binaries. I'm
> using ldd in a script and by ldd not returning 0 the script should know that
> it hasn't encountered a valid binary. Instead ldd opens a linux binary like
> yes and the script spills out ys (yes) or waits for input from stdin
> (md5sum). I'm pretty certain ldd is in no way meant to invoke programs.
I chatted briefly with John about this. The way our ldd works is by
setting the environment variable TRACE_LOADED_OBJECTS and after some
dlopen() magic it exec()'s the binary. FreeBSD rtld detects the environmental
variable, prints the list of shared objects and quits.
Linux rtld doesn't work this way, so FreeBSD ldd on a Linux binary will
just run the Linux binary (Linux rtld will ignore the rest).
Also, ldd wil return 1 on static binaries. Your best bet is to use
file(1) to detect FreeBSD binaries. Something like `file $binary | grep
FreeBSD-style` does the trick.
Regards,
--
Rui Paulo
More information about the freebsd-amd64
mailing list