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>