Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Sep 2008 18:37:23 +0200
From:      Dominic Fandrey <kamikaze@bsdforen.de>
To:        Rui Paulo <rpaulo@FreeBSD.org>
Cc:        freebsd-gnats-submit@freebsd.org, freebsd-amd64@freebsd.org
Subject:   Re: amd64/127276: ldd invokes linux yes
Message-ID:  <48C94943.7010802@bsdforen.de>
In-Reply-To: <20080911121058.GA69162@alpha.local>
References:  <200809101744.m8AHiaQq053643@www.freebsd.org> <200809101610.13951.jhb@freebsd.org> <48C8A615.7070800@bsdforen.de> <20080911121058.GA69162@alpha.local>

next in thread | previous in thread | raw e-mail | index | archive | help
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?48C94943.7010802>