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