Date: Thu, 11 Sep 2008 16:40:04 GMT From: Dominic Fandrey <kamikaze@bsdforen.de> To: freebsd-amd64@FreeBSD.org Subject: Re: amd64/127276: ldd invokes linux yes Message-ID: <200809111640.m8BGe4PX012172@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR amd64/127276; it has been noted by GNATS. From: Dominic Fandrey <kamikaze@bsdforen.de> To: Rui Paulo <rpaulo@FreeBSD.org> Cc: John Baldwin <jhb@freebsd.org>, freebsd-gnats-submit@freebsd.org, freebsd-amd64@freebsd.org Subject: Re: amd64/127276: ldd invokes linux yes Date: Thu, 11 Sep 2008 18:37:23 +0200 Rui Paulo wrote: > 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, Ok, thanks. I have already created a workaround with readelf, but I'd still consider this a bug in ldd. Shouldn't it check the elf brand if it only works for a single one? Regards
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809111640.m8BGe4PX012172>