Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 May 2007 14:11:46 -0600
From:      John E Hein <jhein@timing.com>
To:        Eric Anderson <anderson@freebsd.org>
Cc:        emulation@freebsd.org
Subject:   Re: sym links to absolute pathnames in /compat/linux
Message-ID:  <17975.40706.810495.148190@gromit.timing.com>
In-Reply-To: <46379A72.2080406@freebsd.org>
References:  <17975.37939.743304.357841@gromit.timing.com> <46379A72.2080406@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Eric Anderson wrote at 14:52 -0500 on May  1, 2007:
 > On 05/01/07 14:25, John E Hein wrote:
 > > Are sym links to absolute pathnames supposed to try to look
 > > in /compat/linux first?
 > > 
 > > /compat/linux/usr/bin/foo -> /bin/foo
 > > 
 > > I thought I recalled that Alexander said recently they _were_ supposed
 > > to look in /compat/linux first.  But I don't seem to have that
 > > behavior on the 6-stable box I'm using at the moment.
 > > 
 > > # ln -s /bin/foo /compat/linux/usr/bin/foo
 > > # ls -l /compat/linux/usr/bin/foo
 > > lrwxr-xr-x  1 root  wheel  8 May  1 19:17 /compat/linux/usr/bin/foo -> /bin/foo
 > > # cp -p /compat/linux/bin/ls /compat/linux/bin/foo
 > > # cp -p /bin/ls /bin/foo
 > > # /compat/linux/usr/bin/foo --version
 > > foo: illegal option -- -
 > > usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]
 > > # /compat/linux/bin/foo --version
 > > ls (coreutils) 5.2.1
 > > Written by Richard Stallman and David MacKenzie.
 >
 > Is all that taking place inside a linux shell?

No - sorry, bad example.  But I still see the same behavior running
the linux shell as you suggest (below).

And I actually started investigating this because I was running an
emulated linux app which tried to follow an absolute sym link (and it
was not looking in /compat/linux first for the target of the link).


 > If not, then the symlink resolution is happening *before* the linux 
 > emulator takes over.

Agreed.


 > Try this instead:
 > 
 > # /compat/linux/bin/sh
 > # /compat/linux/usr/bin/foo --version
 > # /compat/linux/bin/foo --version
 > # /bin/foo --version


# /compat/linux/bin/sh
sh-3.00# /compat/linux/usr/bin/foo --version
foo: illegal option -- -
usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]

sh-3.00# /compat/linux/bin/foo --version
ls (coreutils) 5.2.1
Written by Richard Stallman and David MacKenzie.

Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

sh-3.00# /bin/foo --version
ls (coreutils) 5.2.1
Written by Richard Stallman and David MacKenzie.

Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

And, for good measure...

sh-3.00# /usr/bin/foo --version
foo: illegal option -- -
usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]


So it doesn't seem to behave as I was expecting from the linux sh either.

And ls (freebsd & linux) reports...

sh-3.00# ls -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
-rwxr-xr-x  1 root wheel 89456 Apr 25 18:10 /bin/foo*
-rwxr-xr-x  1 root wheel 89456 Apr 25 18:10 /compat/linux/bin/foo*
lrwxr-xr-x  1 root wheel     8 May  1 20:04 /compat/linux/usr/bin/foo -> /bin/foo*
lrwxr-xr-x  1 root wheel     8 May  1 20:04 /usr/bin/foo -> /bin/foo*
sh-3.00# ls -L -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
-rwxr-xr-x  1 root wheel 89456 Apr 25 18:10 /bin/foo*
-rwxr-xr-x  1 root wheel 89456 Apr 25 18:10 /compat/linux/bin/foo*
-r-xr-xr-x  1 root wheel 23444 Nov 17 02:23 /compat/linux/usr/bin/foo*
-r-xr-xr-x  1 root wheel 23444 Nov 17 02:23 /usr/bin/foo*
sh-3.00# exit
# ls -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
ls: /usr/bin/foo: No such file or directory
-r-xr-xr-x  1 root  wheel  23444 Nov 17 02:23 /bin/foo*
-rwxr-xr-x  1 root  wheel  89456 Apr 25 18:10 /compat/linux/bin/foo*
lrwxr-xr-x  1 root  wheel      8 May  1 20:04 /compat/linux/usr/bin/foo@ -> /bin/foo
# ls -L -alF /compat/linux/usr/bin/foo /usr/bin/foo /bin/foo /compat/linux/bin/foo
ls: /usr/bin/foo: No such file or directory
-r-xr-xr-x  1 root  wheel  23444 Nov 17 02:23 /bin/foo*
-rwxr-xr-x  1 root  wheel  89456 Apr 25 18:10 /compat/linux/bin/foo*
-r-xr-xr-x  1 root  wheel  23444 Nov 17 02:23 /compat/linux/usr/bin/foo*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?17975.40706.810495.148190>