linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Is this part of newer filesystem hierarchy?
@ 2001-06-21 19:46 D. Stimits
  2001-06-22 10:02 ` Luigi Genoni
  0 siblings, 1 reply; 15+ messages in thread
From: D. Stimits @ 2001-06-21 19:46 UTC (permalink / raw)
  To: kernel-list

I found on my newer Redhat 7.1 distribution that glibc is being placed
differently than just /lib/. Here is the structure I found:

/lib/ has:
libc-2.2.2.so (hard link)
libc.so.6     (sym link to above)

A new directory appears, /lib/i686/ (uname -m is i686):
libc-2.2.2.so (a full hard link copy of /lib/ version)
libc.so.6     (sym link to hard link in this directory)

The file size of /lib/libc-2.2.2.so is around 1.2 MB, while the size of
/lib/i686/libc-2.2.2.so is over 5 MB. The 5 MB version has symbols,
while the 1.2 MB version is stripped.

Here is the peculiar part that I need to find out about. My
/lib/ld.so.conf does not contain the i686 directory in its path. Nor do
any local LD environment variables. Even so, "ldconfig -p" lists *only*
the libc.so.6 sym link, not the libc-2.2.2.so, and the one listed is for
the i686 subdirectory, not the /lib/ directory. How is it possible that
the i686 directory is being checked if it is not listed in ld.so.conf
and not part of any LD path variable? I am using a non-Redhat kernel
(patched 2.4.6-pre1), so I know it isn't a Redhat-ism related to the
kernel itself. My ld version:
~# ld --version
GNU ld 2.10.91
Copyright 2001 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms
of
the GNU General Public License.  This program has absolutely no
warranty.
  Supported emulations:
   elf_i386
   i386linux
   elf_i386_glibc21

Possibly Redhat altered ld? According to the man page, this directory
should not be found since it is not part of ld.so.conf, and also the
/lib/ version *should* be found (but isn't). What has changed, is it a
standard for filesystem hierarchy, or is it something distribution
specific? (I need to pass the answer along to someone working on
customized boot software that is currently being confused by this
distinction; there is a need to find a proper means to detect libc and
linker information)

D. Stimits, stimits@idcomm.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-21 19:46 Is this part of newer filesystem hierarchy? D. Stimits
@ 2001-06-22 10:02 ` Luigi Genoni
  2001-06-22 17:00   ` D. Stimits
  0 siblings, 1 reply; 15+ messages in thread
From: Luigi Genoni @ 2001-06-22 10:02 UTC (permalink / raw)
  To: D. Stimits; +Cc: kernel-list

I do not know if this is a new filesystem hierarchy, it should not be,
at less untill lsb finishes all discussion (anyway it is similar to lsb
standard). Your mail is a little confusing for me. Let's see if i can
clarify my ideas.

On Thu, 21 Jun 2001, D. Stimits wrote:

> I found on my newer Redhat 7.1 distribution that glibc is being placed
> differently than just /lib/. Here is the structure I found:
>
> /lib/ has:
> libc-2.2.2.so (hard link)
> libc.so.6     (sym link to above)
>
> A new directory appears, /lib/i686/ (uname -m is i686):
> libc-2.2.2.so (a full hard link copy of /lib/ version)
> libc.so.6     (sym link to hard link in this directory)
>
> The file size of /lib/libc-2.2.2.so is around 1.2 MB, while the size of
> /lib/i686/libc-2.2.2.so is over 5 MB. The 5 MB version has symbols,
> while the 1.2 MB version is stripped.
>
> Here is the peculiar part that I need to find out about. My
> /lib/ld.so.conf does not contain the i686 directory in its path. Nor do
> any local LD environment variables. Even so, "ldconfig -p" lists *only*
> the libc.so.6 sym link, not the libc-2.2.2.so, and the one listed is for
> the i686 subdirectory, not the /lib/ directory. How is it possible that
> the i686 directory is being checked if it is not listed in ld.so.conf
> and not part of any LD path variable? I am using a non-Redhat kernel
> (patched 2.4.6-pre1), so I know it isn't a Redhat-ism related to the
> kernel itself. My ld version:
excuse, but if you do something like,
ldd /bin/ls

what do you get, which libc is loaded?

have you got a file like /etc/ld.so.preload??
basically you can use the stripped glibc (faster), but then,
if you have troubles and you need to debug, just set the preload file,
or use LD_PRELOAD variable to use
the non stripped library. In princip it is not a stupid idea,
not that i like it, but it is not stupid.

> ~# ld --version
> GNU ld 2.10.91
> Copyright 2001 Free Software Foundation, Inc.
> This program is free software; you may redistribute it under the terms
> of
> the GNU General Public License.  This program has absolutely no
> warranty.
>   Supported emulations:
>    elf_i386
>    i386linux
>    elf_i386_glibc21
>
> Possibly Redhat altered ld? According to the man page, this directory
> should not be found since it is not part of ld.so.conf, and also the
> /lib/ version *should* be found (but isn't). What has changed, is it a
> standard for filesystem hierarchy, or is it something distribution
> specific? (I need to pass the answer along to someone working on
> customized boot software that is currently being confused by this
> distinction; there is a need to find a proper means to detect libc and
> linker information)
ld links dynamic libraries if the final extension is .so (usually a link),
and uses the soname (usually a link too, created by ldconfig), for
the binaries it generates, otherway it will use .a library archives.
/usr/lib/libc.so (the file used by ld to link glibc), is a script. There
are good reason for that, with libc5 it was a link to /lib/libc.so.5
(soname).
ld loocks for .so files as is configured
inside of the files in /usr/<arch/host name>/lib/ldscripts

please note that usually for klibraries inside of /lib, the .so link is in
/usr/lib, or at less it should.

syntax is like:
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); \
SEARCH_DIR(/usr/i386-slackware-linux/lib);

(that is why you need to pass -L/usr/X11R6/lib to link X11 apps
at runtime) anyway to load shared libraries is managed by
/lib/ld-2.XXX.so, using
the db created by ldconfig that uses /etc/ld.so.conf
as its configuration file.

Luigi Genoni



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-22 10:02 ` Luigi Genoni
@ 2001-06-22 17:00   ` D. Stimits
  2001-06-22 21:40     ` Luigi Genoni
  0 siblings, 1 reply; 15+ messages in thread
From: D. Stimits @ 2001-06-22 17:00 UTC (permalink / raw)
  Cc: kernel-list

Luigi Genoni wrote:
> 
> I do not know if this is a new filesystem hierarchy, it should not be,
> at less untill lsb finishes all discussion (anyway it is similar to lsb
> standard). Your mail is a little confusing for me. Let's see if i can
> clarify my ideas.
> 
> On Thu, 21 Jun 2001, D. Stimits wrote:
> 
> > I found on my newer Redhat 7.1 distribution that glibc is being placed
> > differently than just /lib/. Here is the structure I found:
> >
> > /lib/ has:
> > libc-2.2.2.so (hard link)
> > libc.so.6     (sym link to above)
> >
> > A new directory appears, /lib/i686/ (uname -m is i686):
> > libc-2.2.2.so (a full hard link copy of /lib/ version)
> > libc.so.6     (sym link to hard link in this directory)
> >
> > The file size of /lib/libc-2.2.2.so is around 1.2 MB, while the size of
> > /lib/i686/libc-2.2.2.so is over 5 MB. The 5 MB version has symbols,
> > while the 1.2 MB version is stripped.
> >
> > Here is the peculiar part that I need to find out about. My
> > /lib/ld.so.conf does not contain the i686 directory in its path. Nor do
> > any local LD environment variables. Even so, "ldconfig -p" lists *only*
> > the libc.so.6 sym link, not the libc-2.2.2.so, and the one listed is for
> > the i686 subdirectory, not the /lib/ directory. How is it possible that
> > the i686 directory is being checked if it is not listed in ld.so.conf
> > and not part of any LD path variable? I am using a non-Redhat kernel
> > (patched 2.4.6-pre1), so I know it isn't a Redhat-ism related to the
> > kernel itself. My ld version:
> excuse, but if you do something like,
> ldd /bin/ls
> 
> what do you get, which libc is loaded?

:~# ldd /bin/ls
  libtermcap.so.2 => /lib/libtermcap.so.2 (0x4002a000)
  libc.so.6 => /lib/i686/libc.so.6 (0x4002e000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

The i686 subdirectory version is visible to the linker. I don't know
how.

> 
> have you got a file like /etc/ld.so.preload??

No. Nor are any preload or LD environment variables set. Something
Redhat has done is making the i686 subdirectory visible. Maybe ld
searches recursively?

> basically you can use the stripped glibc (faster), but then,
> if you have troubles and you need to debug, just set the preload file,
> or use LD_PRELOAD variable to use
> the non stripped library. In princip it is not a stupid idea,
> not that i like it, but it is not stupid.

Without any preload, it appears the linker is by default choosing the
debug version in the i686 subdirectory. Redhat must have mucked with it,
otherwise I don't see how it could be searching the i686 subdirectory
without any configuration customization (no preload, no LD environment
variables). But this is what I want to verify...where the "mucking" has
occurred, it is important to find out for some software that is used to
create custom and/or rescue disks. (alternately, to find out if there is
a predictable scheme, such as knowning ld is searching recursively, or
searches for /lib/{uname -m})

> 
> > ~# ld --version
> > GNU ld 2.10.91
> > Copyright 2001 Free Software Foundation, Inc.
> > This program is free software; you may redistribute it under the terms
> > of
> > the GNU General Public License.  This program has absolutely no
> > warranty.
> >   Supported emulations:
> >    elf_i386
> >    i386linux
> >    elf_i386_glibc21
> >
> > Possibly Redhat altered ld? According to the man page, this directory
> > should not be found since it is not part of ld.so.conf, and also the
> > /lib/ version *should* be found (but isn't). What has changed, is it a
> > standard for filesystem hierarchy, or is it something distribution
> > specific? (I need to pass the answer along to someone working on
> > customized boot software that is currently being confused by this
> > distinction; there is a need to find a proper means to detect libc and
> > linker information)
> ld links dynamic libraries if the final extension is .so (usually a link),
> and uses the soname (usually a link too, created by ldconfig), for
> the binaries it generates, otherway it will use .a library archives.
> /usr/lib/libc.so (the file used by ld to link glibc), is a script. There
> are good reason for that, with libc5 it was a link to /lib/libc.so.5
> (soname).
> ld loocks for .so files as is configured
> inside of the files in /usr/<arch/host name>/lib/ldscripts

Interesting that there is a /usr/i386-glibc21-linux/ directory, but
glibc 2.2 is used. In /usr/i386-glibc21-linux/lib/ is file
libc-2.1.3.so, which matches this particular naming, but ldconfig -p
does not indicate this directory is searched. There is no ldscripts,
either as a file name or a directory name. The visible directory tree
there is:
/usr/i386-glibc21-linux/ as base, then these:
-- lib
    `-- gcc-lib
        `-- i386-redhat-linux
            `-- 2.96
                `-- include
->../../../../../lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include



> 
> please note that usually for klibraries inside of /lib, the .so link is in
> /usr/lib, or at less it should.
> 
> syntax is like:
> SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); \
> SEARCH_DIR(/usr/i386-slackware-linux/lib);
> 
> (that is why you need to pass -L/usr/X11R6/lib to link X11 apps
> at runtime) anyway to load shared libraries is managed by
> /lib/ld-2.XXX.so, using
> the db created by ldconfig that uses /etc/ld.so.conf
> as its configuration file.

There must be something more, since the i686 subdirectory is being
searched without ld.so.conf and without environment variables pointing
at it (e.g., recursive search from any named directory).

D. Stimits, stimits@idcomm.com

> 
> Luigi Genoni
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-22 17:00   ` D. Stimits
@ 2001-06-22 21:40     ` Luigi Genoni
  2001-06-23  4:38       ` D. Stimits
  0 siblings, 1 reply; 15+ messages in thread
From: Luigi Genoni @ 2001-06-22 21:40 UTC (permalink / raw)
  To: D. Stimits; +Cc: kernel-list


Again i am confused.

/usr/bin/ld is linker at compilation time, at it works how i told in
second part
of my mail, (just try to compile it, it comes with binutils,
ftp.kernel.org/pub/linux/devel/binutils).

/lib/d-2.2.X.so  is what you are talking about.
So should i think os an hack to ld-2.2.3.so ??

to see how it works loock at /usr/bin/ldd, it's an interesting script.

I can understand why old glibc 2.1 is not isered in the directories
where ldconfig has to loock to create its db for loader, but there should
be a corrispective /usr/i386-(redhat/glibc2.2???)-linux/ (with its
subdirectories)
for glibc 2.2, since it is necessary at compilation
time.
This do not change the problem which is related to /lib/ld-2.2.X.so.
doing a strings /lib/ld-2.XXX
you will find also

info[19]->d_un.d_val == sizeof (Elf32_Rel)
info[20]->d_un.d_val == 17
/lib/
/usr/lib/
{ORIGIN}
{PLATFORM}
expand_dynamic_string_token
dl-load.c

this is the interesting section of the output. This way you can check for
an hack to the loader, but I think to something else instead of an hack.

I do not have a red hat here around, since i do prefer another style for
my linux systems, so i cannot check by person.

Luigi Genoni

On Fri, 22 Jun 2001, D. Stimits wrote:

> Luigi Genoni wrote:
> >
> > I do not know if this is a new filesystem hierarchy, it should not be,
> > at less untill lsb finishes all discussion (anyway it is similar to lsb
> > standard). Your mail is a little confusing for me. Let's see if i can
> > clarify my ideas.
> >
> > On Thu, 21 Jun 2001, D. Stimits wrote:
> >
> > > I found on my newer Redhat 7.1 distribution that glibc is being placed
> > > differently than just /lib/. Here is the structure I found:
> > >
> > > /lib/ has:
> > > libc-2.2.2.so (hard link)
> > > libc.so.6     (sym link to above)
> > >
> > > A new directory appears, /lib/i686/ (uname -m is i686):
> > > libc-2.2.2.so (a full hard link copy of /lib/ version)
> > > libc.so.6     (sym link to hard link in this directory)
> > >
> > > The file size of /lib/libc-2.2.2.so is around 1.2 MB, while the size of
> > > /lib/i686/libc-2.2.2.so is over 5 MB. The 5 MB version has symbols,
> > > while the 1.2 MB version is stripped.
> > >
> > > Here is the peculiar part that I need to find out about. My
> > > /lib/ld.so.conf does not contain the i686 directory in its path. Nor do
> > > any local LD environment variables. Even so, "ldconfig -p" lists *only*
> > > the libc.so.6 sym link, not the libc-2.2.2.so, and the one listed is for
> > > the i686 subdirectory, not the /lib/ directory. How is it possible that
> > > the i686 directory is being checked if it is not listed in ld.so.conf
> > > and not part of any LD path variable? I am using a non-Redhat kernel
> > > (patched 2.4.6-pre1), so I know it isn't a Redhat-ism related to the
> > > kernel itself. My ld version:
> > excuse, but if you do something like,
> > ldd /bin/ls
> >
> > what do you get, which libc is loaded?
>
> :~# ldd /bin/ls
>   libtermcap.so.2 => /lib/libtermcap.so.2 (0x4002a000)
>   libc.so.6 => /lib/i686/libc.so.6 (0x4002e000)
>   /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
>
> The i686 subdirectory version is visible to the linker. I don't know
> how.
>
> >
> > have you got a file like /etc/ld.so.preload??
>
> No. Nor are any preload or LD environment variables set. Something
> Redhat has done is making the i686 subdirectory visible. Maybe ld
> searches recursively?
>
> > basically you can use the stripped glibc (faster), but then,
> > if you have troubles and you need to debug, just set the preload file,
> > or use LD_PRELOAD variable to use
> > the non stripped library. In princip it is not a stupid idea,
> > not that i like it, but it is not stupid.
>
> Without any preload, it appears the linker is by default choosing the
> debug version in the i686 subdirectory. Redhat must have mucked with it,
> otherwise I don't see how it could be searching the i686 subdirectory
> without any configuration customization (no preload, no LD environment
> variables). But this is what I want to verify...where the "mucking" has
> occurred, it is important to find out for some software that is used to
> create custom and/or rescue disks. (alternately, to find out if there is
> a predictable scheme, such as knowning ld is searching recursively, or
> searches for /lib/{uname -m})
>
> >
> > > ~# ld --version
> > > GNU ld 2.10.91
> > > Copyright 2001 Free Software Foundation, Inc.
> > > This program is free software; you may redistribute it under the terms
> > > of
> > > the GNU General Public License.  This program has absolutely no
> > > warranty.
> > >   Supported emulations:
> > >    elf_i386
> > >    i386linux
> > >    elf_i386_glibc21
> > >
> > > Possibly Redhat altered ld? According to the man page, this directory
> > > should not be found since it is not part of ld.so.conf, and also the
> > > /lib/ version *should* be found (but isn't). What has changed, is it a
> > > standard for filesystem hierarchy, or is it something distribution
> > > specific? (I need to pass the answer along to someone working on
> > > customized boot software that is currently being confused by this
> > > distinction; there is a need to find a proper means to detect libc and
> > > linker information)
> > ld links dynamic libraries if the final extension is .so (usually a link),
> > and uses the soname (usually a link too, created by ldconfig), for
> > the binaries it generates, otherway it will use .a library archives.
> > /usr/lib/libc.so (the file used by ld to link glibc), is a script. There
> > are good reason for that, with libc5 it was a link to /lib/libc.so.5
> > (soname).
> > ld loocks for .so files as is configured
> > inside of the files in /usr/<arch/host name>/lib/ldscripts
>
> Interesting that there is a /usr/i386-glibc21-linux/ directory, but
> glibc 2.2 is used. In /usr/i386-glibc21-linux/lib/ is file
> libc-2.1.3.so, which matches this particular naming, but ldconfig -p
> does not indicate this directory is searched. There is no ldscripts,
> either as a file name or a directory name. The visible directory tree
> there is:
> /usr/i386-glibc21-linux/ as base, then these:
> -- lib
>     `-- gcc-lib
>         `-- i386-redhat-linux
>             `-- 2.96
>                 `-- include
> ->../../../../../lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include
>
>
>
> >
> > please note that usually for klibraries inside of /lib, the .so link is in
> > /usr/lib, or at less it should.
> >
> > syntax is like:
> > SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); \
> > SEARCH_DIR(/usr/i386-slackware-linux/lib);
> >
> > (that is why you need to pass -L/usr/X11R6/lib to link X11 apps
> > at runtime) anyway to load shared libraries is managed by
> > /lib/ld-2.XXX.so, using
> > the db created by ldconfig that uses /etc/ld.so.conf
> > as its configuration file.
>
> There must be something more, since the i686 subdirectory is being
> searched without ld.so.conf and without environment variables pointing
> at it (e.g., recursive search from any named directory).
>
> D. Stimits, stimits@idcomm.com
>
> >
> > Luigi Genoni
> >
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-22 21:40     ` Luigi Genoni
@ 2001-06-23  4:38       ` D. Stimits
  2001-06-23 16:25         ` Luigi Genoni
  0 siblings, 1 reply; 15+ messages in thread
From: D. Stimits @ 2001-06-23  4:38 UTC (permalink / raw)
  Cc: kernel-list

Luigi Genoni wrote:
> 
> Again i am confused.
> 
> /usr/bin/ld is linker at compilation time, at it works how i told in
> second part
> of my mail, (just try to compile it, it comes with binutils,
> ftp.kernel.org/pub/linux/devel/binutils).
> 
> /lib/d-2.2.X.so  is what you are talking about.
> So should i think os an hack to ld-2.2.3.so ??

The RH 7.1 comes with:
:~# ld --version
GNU ld 2.10.91
Copyright 2001 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms
of
the GNU General Public License.  This program has absolutely no
warranty.
  Supported emulations:
   elf_i386
   i386linux
   elf_i386_glibc21

The glibc rpm is version 2.2.2-10.

> 
> to see how it works loock at /usr/bin/ldd, it's an interesting script.
> 
> I can understand why old glibc 2.1 is not isered in the directories
> where ldconfig has to loock to create its db for loader, but there should
> be a corrispective /usr/i386-(redhat/glibc2.2???)-linux/ (with its
> subdirectories)
> for glibc 2.2, since it is necessary at compilation
> time.

There is *no* /usr/i386-xxx except for:
/usr/i386-glibc21-linux/

No glibc22 version exists.

> This do not change the problem which is related to /lib/ld-2.2.X.so.
> doing a strings /lib/ld-2.XXX
> you will find also
> 
> info[19]->d_un.d_val == sizeof (Elf32_Rel)
> info[20]->d_un.d_val == 17
> /lib/
> /usr/lib/
> {ORIGIN}
> {PLATFORM}
> expand_dynamic_string_token
> dl-load.c

"i686" is visible on a line by itself, but so are i386, i486, and i586.
The full path of /lib/i686/ is not mentioned anywhere. So it looks like
strings of /lib/ld-2* does not offer any hints as to how the i686
subdirectory is being chosen without it being specified anywhere else. I
think this will end up just being one of those mysteries, and the boot
software coder will have to find some non-trivial workaround. It sounds
like the /lib/i686/ path was hardcoded in the linker when it was
compiled, which means there are no simple config file checks.

D. Stimits, stimits@idcomm.com

> 
> this is the interesting section of the output. This way you can check for
> an hack to the loader, but I think to something else instead of an hack.
> 
> I do not have a red hat here around, since i do prefer another style for
> my linux systems, so i cannot check by person.
> 
> Luigi Genoni
> 
> On Fri, 22 Jun 2001, D. Stimits wrote:
> 
> > Luigi Genoni wrote:
> > >
> > > I do not know if this is a new filesystem hierarchy, it should not be,
> > > at less untill lsb finishes all discussion (anyway it is similar to lsb
> > > standard). Your mail is a little confusing for me. Let's see if i can
> > > clarify my ideas.
> > >
> > > On Thu, 21 Jun 2001, D. Stimits wrote:
> > >
> > > > I found on my newer Redhat 7.1 distribution that glibc is being placed
> > > > differently than just /lib/. Here is the structure I found:
> > > >
> > > > /lib/ has:
> > > > libc-2.2.2.so (hard link)
> > > > libc.so.6     (sym link to above)
> > > >
> > > > A new directory appears, /lib/i686/ (uname -m is i686):
> > > > libc-2.2.2.so (a full hard link copy of /lib/ version)
> > > > libc.so.6     (sym link to hard link in this directory)
> > > >
> > > > The file size of /lib/libc-2.2.2.so is around 1.2 MB, while the size of
> > > > /lib/i686/libc-2.2.2.so is over 5 MB. The 5 MB version has symbols,
> > > > while the 1.2 MB version is stripped.
> > > >
> > > > Here is the peculiar part that I need to find out about. My
> > > > /lib/ld.so.conf does not contain the i686 directory in its path. Nor do
> > > > any local LD environment variables. Even so, "ldconfig -p" lists *only*
> > > > the libc.so.6 sym link, not the libc-2.2.2.so, and the one listed is for
> > > > the i686 subdirectory, not the /lib/ directory. How is it possible that
> > > > the i686 directory is being checked if it is not listed in ld.so.conf
> > > > and not part of any LD path variable? I am using a non-Redhat kernel
> > > > (patched 2.4.6-pre1), so I know it isn't a Redhat-ism related to the
> > > > kernel itself. My ld version:
> > > excuse, but if you do something like,
> > > ldd /bin/ls
> > >
> > > what do you get, which libc is loaded?
> >
> > :~# ldd /bin/ls
> >   libtermcap.so.2 => /lib/libtermcap.so.2 (0x4002a000)
> >   libc.so.6 => /lib/i686/libc.so.6 (0x4002e000)
> >   /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
> >
> > The i686 subdirectory version is visible to the linker. I don't know
> > how.
> >
> > >
> > > have you got a file like /etc/ld.so.preload??
> >
> > No. Nor are any preload or LD environment variables set. Something
> > Redhat has done is making the i686 subdirectory visible. Maybe ld
> > searches recursively?
> >
> > > basically you can use the stripped glibc (faster), but then,
> > > if you have troubles and you need to debug, just set the preload file,
> > > or use LD_PRELOAD variable to use
> > > the non stripped library. In princip it is not a stupid idea,
> > > not that i like it, but it is not stupid.
> >
> > Without any preload, it appears the linker is by default choosing the
> > debug version in the i686 subdirectory. Redhat must have mucked with it,
> > otherwise I don't see how it could be searching the i686 subdirectory
> > without any configuration customization (no preload, no LD environment
> > variables). But this is what I want to verify...where the "mucking" has
> > occurred, it is important to find out for some software that is used to
> > create custom and/or rescue disks. (alternately, to find out if there is
> > a predictable scheme, such as knowning ld is searching recursively, or
> > searches for /lib/{uname -m})
> >
> > >
> > > > ~# ld --version
> > > > GNU ld 2.10.91
> > > > Copyright 2001 Free Software Foundation, Inc.
> > > > This program is free software; you may redistribute it under the terms
> > > > of
> > > > the GNU General Public License.  This program has absolutely no
> > > > warranty.
> > > >   Supported emulations:
> > > >    elf_i386
> > > >    i386linux
> > > >    elf_i386_glibc21
> > > >
> > > > Possibly Redhat altered ld? According to the man page, this directory
> > > > should not be found since it is not part of ld.so.conf, and also the
> > > > /lib/ version *should* be found (but isn't). What has changed, is it a
> > > > standard for filesystem hierarchy, or is it something distribution
> > > > specific? (I need to pass the answer along to someone working on
> > > > customized boot software that is currently being confused by this
> > > > distinction; there is a need to find a proper means to detect libc and
> > > > linker information)
> > > ld links dynamic libraries if the final extension is .so (usually a link),
> > > and uses the soname (usually a link too, created by ldconfig), for
> > > the binaries it generates, otherway it will use .a library archives.
> > > /usr/lib/libc.so (the file used by ld to link glibc), is a script. There
> > > are good reason for that, with libc5 it was a link to /lib/libc.so.5
> > > (soname).
> > > ld loocks for .so files as is configured
> > > inside of the files in /usr/<arch/host name>/lib/ldscripts
> >
> > Interesting that there is a /usr/i386-glibc21-linux/ directory, but
> > glibc 2.2 is used. In /usr/i386-glibc21-linux/lib/ is file
> > libc-2.1.3.so, which matches this particular naming, but ldconfig -p
> > does not indicate this directory is searched. There is no ldscripts,
> > either as a file name or a directory name. The visible directory tree
> > there is:
> > /usr/i386-glibc21-linux/ as base, then these:
> > -- lib
> >     `-- gcc-lib
> >         `-- i386-redhat-linux
> >             `-- 2.96
> >                 `-- include
> > ->../../../../../lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include
> >
> >
> >
> > >
> > > please note that usually for klibraries inside of /lib, the .so link is in
> > > /usr/lib, or at less it should.
> > >
> > > syntax is like:
> > > SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); \
> > > SEARCH_DIR(/usr/i386-slackware-linux/lib);
> > >
> > > (that is why you need to pass -L/usr/X11R6/lib to link X11 apps
> > > at runtime) anyway to load shared libraries is managed by
> > > /lib/ld-2.XXX.so, using
> > > the db created by ldconfig that uses /etc/ld.so.conf
> > > as its configuration file.
> >
> > There must be something more, since the i686 subdirectory is being
> > searched without ld.so.conf and without environment variables pointing
> > at it (e.g., recursive search from any named directory).
> >
> > D. Stimits, stimits@idcomm.com
> >
> > >
> > > Luigi Genoni
> > >
> > > -
> > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > > Please read the FAQ at  http://www.tux.org/lkml/
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> >
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-23  4:38       ` D. Stimits
@ 2001-06-23 16:25         ` Luigi Genoni
  2001-06-23 19:17           ` D. Stimits
  0 siblings, 1 reply; 15+ messages in thread
From: Luigi Genoni @ 2001-06-23 16:25 UTC (permalink / raw)
  To: D. Stimits; +Cc: kernel-list



On Fri, 22 Jun 2001, D. Stimits wrote:

> Luigi Genoni wrote:
> >
> > Again i am confused.
> >
> > /usr/bin/ld is linker at compilation time, at it works how i told in
> > second part
> > of my mail, (just try to compile it, it comes with binutils,
> > ftp.kernel.org/pub/linux/devel/binutils).
> >
> > /lib/d-2.2.X.so  is what you are talking about.
> > So should i think os an hack to ld-2.2.3.so ??
>
> The RH 7.1 comes with:
> :~# ld --version
> GNU ld 2.10.91
> Copyright 2001 Free Software Foundation, Inc.
> This program is free software; you may redistribute it under the terms
> of
> the GNU General Public License.  This program has absolutely no
> warranty.
>   Supported emulations:
>    elf_i386
>    i386linux
>    elf_i386_glibc21
Ok, this is the linker for compilation time, it
is not related to the loader for shared libraries. You can even remove
/usr/bin/ld, and the system will run anyway binaries, but you will not be
able to link compiled objects.
try a find for the directory ldscripts or for those files,

elf_i386.x    elf_i386.xs   i386coff.xn  i386linux.xbn
elf_i386.xbn  elf_i386.xu   i386coff.xr  i386linux.xn
elf_i386.xn   i386coff.x    i386coff.xu  i386linux.xr
elf_i386.xr   i386coff.xbn  i386linux.x  i386linux.xu

you could not find the *coff* ones....
those are the configuration file (unproper definition, i ask
excuse for my english), for /usr/bin/ld you are running
doing ld --version.
>
> The glibc rpm is version 2.2.2-10.
>
> >
> > to see how it works loock at /usr/bin/ldd, it's an interesting script.
> >
> > I can understand why old glibc 2.1 is not isered in the directories
> > where ldconfig has to loock to create its db for loader, but there should
> > be a corrispective /usr/i386-(redhat/glibc2.2???)-linux/ (with its
> > subdirectories)
> > for glibc 2.2, since it is necessary at compilation
> > time.
>
> There is *no* /usr/i386-xxx except for:
> /usr/i386-glibc21-linux/
name could be different, just could you e-mail the output for
the command tree inside of /usr?
>
> No glibc22 version exists.
>
> > This do not change the problem which is related to /lib/ld-2.2.X.so.
> > doing a strings /lib/ld-2.XXX
> > you will find also
> >
> > info[19]->d_un.d_val == sizeof (Elf32_Rel)
> > info[20]->d_un.d_val == 17
> > /lib/
> > /usr/lib/
> > {ORIGIN}
> > {PLATFORM}
> > expand_dynamic_string_token
> > dl-load.c
>
> "i686" is visible on a line by itself, but so are i386, i486, and i586.
this is another thing...
> The full path of /lib/i686/ is not mentioned anywhere. So it looks like
> strings of /lib/ld-2* does not offer any hints as to how the i686
> subdirectory is being chosen without it being specified anywhere else. I
> think this will end up just being one of those mysteries, and the boot
> software coder will have to find some non-trivial workaround. It sounds
> like the /lib/i686/ path was hardcoded in the linker when it was
> compiled, which means there are no simple config file checks.
and then they compiled ALL other binaries from scratch with new linker,
passing /lib/i686/libc.so.6 explivitally, or changing the script
/usr/lib/libc.so?

boh! I do not know, and I am not thinking I am going to install a Red Hat
right now (simply it is not suitable for my needs, it is a great
distribution, of course, but it is not what my users need).

want my suggestion?
upgrade to glibc 2.2.3 and to binutils 2.11.90.0.19 building
them from sources against 2.4.X kernel includes. And you wil see if it
works how you would expect.

Luigi



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-23 16:25         ` Luigi Genoni
@ 2001-06-23 19:17           ` D. Stimits
  2001-06-23 23:42             ` Luigi Genoni
  0 siblings, 1 reply; 15+ messages in thread
From: D. Stimits @ 2001-06-23 19:17 UTC (permalink / raw)
  Cc: kernel-list

Luigi Genoni wrote:
> 
> On Fri, 22 Jun 2001, D. Stimits wrote:
> 
> > Luigi Genoni wrote:
> > >
> > > Again i am confused.
> > >
> > > /usr/bin/ld is linker at compilation time, at it works how i told in
> > > second part
> > > of my mail, (just try to compile it, it comes with binutils,
> > > ftp.kernel.org/pub/linux/devel/binutils).
> > >
> > > /lib/d-2.2.X.so  is what you are talking about.
> > > So should i think os an hack to ld-2.2.3.so ??
> >
> > The RH 7.1 comes with:
> > :~# ld --version
> > GNU ld 2.10.91
> > Copyright 2001 Free Software Foundation, Inc.
> > This program is free software; you may redistribute it under the terms
> > of
> > the GNU General Public License.  This program has absolutely no
> > warranty.
> >   Supported emulations:
> >    elf_i386
> >    i386linux
> >    elf_i386_glibc21
> Ok, this is the linker for compilation time, it
> is not related to the loader for shared libraries. You can even remove
> /usr/bin/ld, and the system will run anyway binaries, but you will not be
> able to link compiled objects.
> try a find for the directory ldscripts or for those files,

It appears that Redhat has eliminated much of this. If I run updatedb,
then locate, I find there is no instance of "ldscripts". Nor is there an
instance of "i386linux" or "i386coff" that can be seen by locate. So I
made it a wider locate, and tried for any instance of just "86linux" or
"86coff", these also do not exist. Apparently Redhat has completely
changed linking (looking at a backup of an older RH 6.2, these do exist,
so I suspect the change at around 7.0).

> 
> elf_i386.x    elf_i386.xs   i386coff.xn  i386linux.xbn
> elf_i386.xbn  elf_i386.xu   i386coff.xr  i386linux.xn
> elf_i386.xn   i386coff.x    i386coff.xu  i386linux.xr
> elf_i386.xr   i386coff.xbn  i386linux.x  i386linux.xu
> 
> you could not find the *coff* ones....
> those are the configuration file (unproper definition, i ask
> excuse for my english), for /usr/bin/ld you are running
> doing ld --version.
> >
> > The glibc rpm is version 2.2.2-10.
> >
> > >
> > > to see how it works loock at /usr/bin/ldd, it's an interesting script.
> > >
> > > I can understand why old glibc 2.1 is not isered in the directories
> > > where ldconfig has to loock to create its db for loader, but there should
> > > be a corrispective /usr/i386-(redhat/glibc2.2???)-linux/ (with its
> > > subdirectories)
> > > for glibc 2.2, since it is necessary at compilation
> > > time.
> >
> > There is *no* /usr/i386-xxx except for:
> > /usr/i386-glibc21-linux/
> name could be different, just could you e-mail the output for
> the command tree inside of /usr?

The entire tree would be quite large. Are you looking only for
directories (this would be a much smaller listing)? It might even
challenge the maximum size an ISP allows before filtering it:
16632 directories, 258120 files

> >
> > No glibc22 version exists.
> >
> > > This do not change the problem which is related to /lib/ld-2.2.X.so.
> > > doing a strings /lib/ld-2.XXX
> > > you will find also
> > >
> > > info[19]->d_un.d_val == sizeof (Elf32_Rel)
> > > info[20]->d_un.d_val == 17
> > > /lib/
> > > /usr/lib/
> > > {ORIGIN}
> > > {PLATFORM}
> > > expand_dynamic_string_token
> > > dl-load.c
> >
> > "i686" is visible on a line by itself, but so are i386, i486, and i586.
> this is another thing...
> > The full path of /lib/i686/ is not mentioned anywhere. So it looks like
> > strings of /lib/ld-2* does not offer any hints as to how the i686
> > subdirectory is being chosen without it being specified anywhere else. I
> > think this will end up just being one of those mysteries, and the boot
> > software coder will have to find some non-trivial workaround. It sounds
> > like the /lib/i686/ path was hardcoded in the linker when it was
> > compiled, which means there are no simple config file checks.
> and then they compiled ALL other binaries from scratch with new linker,
> passing /lib/i686/libc.so.6 explivitally, or changing the script
> /usr/lib/libc.so?

No ldscripts on the system. Through locate and awk, I can guarantee
there is also only one ld on the system, /usr/bin/ld. It sounds like
they did compile all other binaries from scratch, passing /lib/i686/
explicitly.

> 
> boh! I do not know, and I am not thinking I am going to install a Red Hat
> right now (simply it is not suitable for my needs, it is a great
> distribution, of course, but it is not what my users need).
> 
> want my suggestion?
> upgrade to glibc 2.2.3 and to binutils 2.11.90.0.19 building
> them from sources against 2.4.X kernel includes. And you wil see if it
> works how you would expect.

Part of my reason for running Redhat 7.1 (aside from liking it's X11
support) is that I expect to be testing a lot of software for
compatibility against this particular distribution. I might upgrade my
glibc from 2.2.2 to 2.2.3, but not for a while, due to the same reasons.

As far as this particular problem goes, I am trying to help the author
of some general boot disk utilities find a good way to automatically
detect (through perl scripts) the correct libc configuration. Telling
users of the software that Redhat 7.1 is not supported is not an option,
regardless of why it is a problem. What it will probably end up becoming
is a mechanical script to test for the existence of /lib/{uname -a}/,
and if it exists, adding it to the boot disk ld.so.conf, or some other
arrangement that does similar.

D. Stimits, stimits@idcomm.com

> 
> Luigi
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-23 19:17           ` D. Stimits
@ 2001-06-23 23:42             ` Luigi Genoni
  2001-06-23 23:49               ` Alan Cox
  0 siblings, 1 reply; 15+ messages in thread
From: Luigi Genoni @ 2001-06-23 23:42 UTC (permalink / raw)
  To: D. Stimits; +Cc: kernel-list



On Sat, 23 Jun 2001, D. Stimits wrote:
> > > The RH 7.1 comes with:
> > > :~# ld --version
> > > GNU ld 2.10.91
> > > Copyright 2001 Free Software Foundation, Inc.
> > > This program is free software; you may redistribute it under the terms
> > > of
> > > the GNU General Public License.  This program has absolutely no
> > > warranty.
> > >   Supported emulations:
> > >    elf_i386
> > >    i386linux
> > >    elf_i386_glibc21
> > Ok, this is the linker for compilation time, it
> > is not related to the loader for shared libraries. You can even remove
> > /usr/bin/ld, and the system will run anyway binaries, but you will not be
> > able to link compiled objects.
> > try a find for the directory ldscripts or for those files,
>
> It appears that Redhat has eliminated much of this. If I run updatedb,
> then locate, I find there is no instance of "ldscripts". Nor is there an
> instance of "i386linux" or "i386coff" that can be seen by locate. So I
> made it a wider locate, and tried for any instance of just "86linux" or
> "86coff", these also do not exist. Apparently Redhat has completely
> changed linking (looking at a backup of an older RH 6.2, these do exist,
> so I suspect the change at around 7.0).
glad to know this, i do wonder how does /usr/bin/ld work for red hat.
to my old mentality this seems red hat is going out of any resonable
standard.
>
> > >
> > > There is *no* /usr/i386-xxx except for:
> > > /usr/i386-glibc21-linux/
> > name could be different, just could you e-mail the output for
> > the command tree inside of /usr?
>
> The entire tree would be quite large. Are you looking only for
> directories (this would be a much smaller listing)? It might even
> challenge the maximum size an ISP allows before filtering it:
> 16632 directories, 258120 files
It is my own curiosity. yes if you could send me the direcotory tree of
your /usr. Just to see. Actually i know none using red hat 7.X to whom i
could ask to check, they are all slackware addicted.
>
>
> No ldscripts on the system. Through locate and awk, I can guarantee
> there is also only one ld on the system, /usr/bin/ld. It sounds like
> they did compile all other binaries from scratch, passing /lib/i686/
> explicitly.
mmm!
Again I am confused. how can the linker work?
>
>
> As far as this particular problem goes, I am trying to help the author
> of some general boot disk utilities find a good way to automatically
> detect (through perl scripts) the correct libc configuration. Telling
> users of the software that Redhat 7.1 is not supported is not an option,
> regardless of why it is a problem. What it will probably end up becoming
> is a mechanical script to test for the existence of /lib/{uname -a}/,
> and if it exists, adding it to the boot disk ld.so.conf
I would not be so scared, if you set a LD_PRELOAD_LIBRARY to
/lib/libc.so.6, you willse any binary will run anyway, because it would be
too mutch
if the same libc stripped would not run library, and they HAVE to mantein
a libc.so.6 linside of /lib, otherway this would be too mutch against
a resonable standard.
I would be happy if some guy from red hat could explain what is going on.

Luigi Genoni



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-23 23:42             ` Luigi Genoni
@ 2001-06-23 23:49               ` Alan Cox
  2001-06-24  0:16                 ` Luigi Genoni
  2001-06-24  1:09                 ` D. Stimits
  0 siblings, 2 replies; 15+ messages in thread
From: Alan Cox @ 2001-06-23 23:49 UTC (permalink / raw)
  To: Luigi Genoni; +Cc: D. Stimits, kernel-list

> glad to know this, i do wonder how does /usr/bin/ld work for red hat.
> to my old mentality this seems red hat is going out of any resonable
> standard.

It works like /usr/bin/ld on any other platform I know of

> if the same libc stripped would not run library, and they HAVE to mantein
> a libc.so.6 linside of /lib, otherway this would be too mutch against
> a resonable standard.

bash-2.04$ ls -l /lib/libc.so.6  
lrwxrwxrwx    1 root     root           13 May 14 16:46 /lib/libc.so.6 -> libc-2.2.2.so

I don't follow the discussion here. 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-23 23:49               ` Alan Cox
@ 2001-06-24  0:16                 ` Luigi Genoni
  2001-06-24  1:17                   ` Alan Cox
  2001-06-24  1:09                 ` D. Stimits
  1 sibling, 1 reply; 15+ messages in thread
From: Luigi Genoni @ 2001-06-24  0:16 UTC (permalink / raw)
  To: Alan Cox; +Cc: D. Stimits, kernel-list

The point was that Stimits says that on its Red Hat 7.1 he has no
ldscripts directory, and so no files like elf_i386.x and so on.
I was just surprised, since i know thay are all necessary to /usr/bin/ld
to work.

Then he was alo wondering why he has
two libc
/lib/libc.so.6 and /lib/i686/libc.so.6, one is tripped and the other
contains debug symbols.
I can figure why, but he adfirms that /lib/i686 is not included in
/etc/ld.so.conf, there is no preload configured, but this is the directory
used by the loader to find the libc to load.

I have to red hat installed, so i was trying to figure out how things are
working on new releases (my last red hat was 6.2 when i was working at red
hat Italy).

Bests
Luigi

On Sun, 24 Jun 2001, Alan Cox wrote:

> > glad to know this, i do wonder how does /usr/bin/ld work for red hat.
> > to my old mentality this seems red hat is going out of any resonable
> > standard.
>
> It works like /usr/bin/ld on any other platform I know of
>
> > if the same libc stripped would not run library, and they HAVE to mantein
> > a libc.so.6 linside of /lib, otherway this would be too mutch against
> > a resonable standard.
>
> bash-2.04$ ls -l /lib/libc.so.6
> lrwxrwxrwx    1 root     root           13 May 14 16:46 /lib/libc.so.6 -> libc-2.2.2.so
>
> I don't follow the discussion here.
>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-23 23:49               ` Alan Cox
  2001-06-24  0:16                 ` Luigi Genoni
@ 2001-06-24  1:09                 ` D. Stimits
  2001-06-24  1:47                   ` Keith Owens
  1 sibling, 1 reply; 15+ messages in thread
From: D. Stimits @ 2001-06-24  1:09 UTC (permalink / raw)
  Cc: kernel-list

Alan Cox wrote:
> 
> > glad to know this, i do wonder how does /usr/bin/ld work for red hat.
> > to my old mentality this seems red hat is going out of any resonable
> > standard.
> 
> It works like /usr/bin/ld on any other platform I know of
> 
> > if the same libc stripped would not run library, and they HAVE to mantein
> > a libc.so.6 linside of /lib, otherway this would be too mutch against
> > a resonable standard.
> 
> bash-2.04$ ls -l /lib/libc.so.6
> lrwxrwxrwx    1 root     root           13 May 14 16:46 /lib/libc.so.6 -> libc-2.2.2.so
> 
> I don't follow the discussion here.

There is a directory on RH 7.1 x86, /lib/i686/. When checking with ldd
to various applications, as to which libc they link to, it turns out
that the /lib/libc.so.6 is not used. They all seem to point at
/lib/i686/libc.so.6 (this is the version with debugging symbols) by
default. The odd thing is that there are NO LD_ style path variables set
on this system, there is NO /etc/ld.so.preload, and /etc/ld.so.conf does
not contain any reference to /lib/i686/. So there is a question of just
how it is possible for ld to use that directory and ignore /lib/ for
libc.so.6. So far the two possibilities seem to be that either the
linker was precompiled to look in the subdirectory, or else when the
linker looks at /lib/ it also recursively checks other directories (this
doesn't seem likely). The reason why it matters is because it is
confusing some custom boot floppy creation software. The original author
of that software is looking for a means to make it work correctly with
RH 7.1. The manual way for it to avoid confusion is to cd to the mount
point of the ramdisk which it builds up, into its lib directory, and sym
link the contents of the i686 subdirectory into the main lib directory.
But the original software does interesting things like checking what
ld.so.conf has, and checking what environment variables are set, but
since none of those provide any clues, the automated means remains
broken for now. Probably the next step will be manually testing for the
existence of /lib/{uname -m}/, and if it exists, sym linking it to /lib/
(these are actually relative to the mount point of the ramdisk during
creation). The boot system is designed as a customized bootdisk creation
that automatically detects various dependencies of a highly customized
linux install.

It still remains to be seen how it is that /lib/i686/libc.so.6 is used
in place of /lib/libc.so.6 (which could be deleted and RH 7.1 wouldn't
care...very strange).

D. Stimits, stimits@idcomm.com

> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-24  0:16                 ` Luigi Genoni
@ 2001-06-24  1:17                   ` Alan Cox
  2001-06-24 13:25                     ` Luigi Genoni
  0 siblings, 1 reply; 15+ messages in thread
From: Alan Cox @ 2001-06-24  1:17 UTC (permalink / raw)
  To: Luigi Genoni; +Cc: Alan Cox, D. Stimits, kernel-list

> The point was that Stimits says that on its Red Hat 7.1 he has no
> ldscripts directory, and so no files like elf_i386.x and so on.
> I was just surprised, since i know thay are all necessary to /usr/bin/ld
> to work.

> two libc
> /lib/libc.so.6 and /lib/i686/libc.so.6, one is tripped and the other
> contains debug symbols.


Ok that I dont know. The dynamic linker has changed a fair bit over time and
I don't know enough about it to help


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-24  1:09                 ` D. Stimits
@ 2001-06-24  1:47                   ` Keith Owens
  2001-06-24 13:59                     ` Luigi Genoni
  0 siblings, 1 reply; 15+ messages in thread
From: Keith Owens @ 2001-06-24  1:47 UTC (permalink / raw)
  To: stimits; +Cc: kernel-list

On Sat, 23 Jun 2001 19:09:12 -0600, 
"D. Stimits" <stimits@idcomm.com> wrote:
>There is a directory on RH 7.1 x86, /lib/i686/. When checking with ldd
>to various applications, as to which libc they link to, it turns out
>that the /lib/libc.so.6 is not used. They all seem to point at
>/lib/i686/libc.so.6 (this is the version with debugging symbols) by
>default. The odd thing is that there are NO LD_ style path variables set
>on this system, there is NO /etc/ld.so.preload, and /etc/ld.so.conf does
>not contain any reference to /lib/i686/. So there is a question of just
>how it is possible for ld to use that directory and ignore /lib/ for
>libc.so.6.

15 minutes with a few commands, man pages and the source of glibc will
show you this ...

# /sbin/ldconfig -p | fgrep -w libc
libc.so.6 (libc6, hwcap: 0x8000000000000, OS ABI: Linux 2.4.1) => /lib/i686/libc.so.6
libc.so.6 (libc6, OS ABI: Linux 2.2.5) => /lib/libc.so.6

The data is coming from /etc/ld.so.cache which is build by ldconfig.
A quick scan of the source for ldconfig.c in glibc 2.2.2 shows that it
starts with standard paths /lib and /usr/lib then searches those
directories and all their subdirectories looking for libraries.  That
explains why it finds /lib/i686 without being explicitly specified.

Note the hwcap entry in /lib/i686/libc.so.6.  The dynamic linker no
longer takes the first entry it finds for a library, instead it looks
for the first entry that matches the current hardware.  This is
required for machines like ia64 which can also run i386 binaries and
for sparc which can run 32 or 64 bit apps.


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-24  1:17                   ` Alan Cox
@ 2001-06-24 13:25                     ` Luigi Genoni
  0 siblings, 0 replies; 15+ messages in thread
From: Luigi Genoni @ 2001-06-24 13:25 UTC (permalink / raw)
  To: Alan Cox; +Cc: D. Stimits, kernel-list


Yes, but i followed its development till now, and those file are still
present, belive me, when i do compile latest versions.
I am doing beta test of it when i have time,
and i think i tried all versions from 2.7.... times, sometimes sending bug
reports.

On Sun, 24 Jun 2001, Alan Cox wrote:

> > The point was that Stimits says that on its Red Hat 7.1 he has no
> > ldscripts directory, and so no files like elf_i386.x and so on.
> > I was just surprised, since i know thay are all necessary to /usr/bin/ld
> > to work.
>
> > two libc
> > /lib/libc.so.6 and /lib/i686/libc.so.6, one is tripped and the other
> > contains debug symbols.
>
>
> Ok that I dont know. The dynamic linker has changed a fair bit over time and
> I don't know enough about it to help
>


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Is this part of newer filesystem hierarchy?
  2001-06-24  1:47                   ` Keith Owens
@ 2001-06-24 13:59                     ` Luigi Genoni
  0 siblings, 0 replies; 15+ messages in thread
From: Luigi Genoni @ 2001-06-24 13:59 UTC (permalink / raw)
  To: Keith Owens; +Cc: stimits, kernel-list

OK, i could even figure that, my interest was mainly about binutils and
/usr/bin/ld, which should refer to ldscript directory to work.
At less, it ever did so since 9 years on my at home compiled versions,
(actually 2.11.90.0.17).


On Sun, 24 Jun 2001, Keith Owens wrote:

> On Sat, 23 Jun 2001 19:09:12 -0600,
> "D. Stimits" <stimits@idcomm.com> wrote:
> >There is a directory on RH 7.1 x86, /lib/i686/. When checking with ldd
> >to various applications, as to which libc they link to, it turns out
> >that the /lib/libc.so.6 is not used. They all seem to point at
> >/lib/i686/libc.so.6 (this is the version with debugging symbols) by
> >default. The odd thing is that there are NO LD_ style path variables set
> >on this system, there is NO /etc/ld.so.preload, and /etc/ld.so.conf does
> >not contain any reference to /lib/i686/. So there is a question of just
> >how it is possible for ld to use that directory and ignore /lib/ for
> >libc.so.6.
>
> 15 minutes with a few commands, man pages and the source of glibc will
> show you this ...
>
> # /sbin/ldconfig -p | fgrep -w libc
> libc.so.6 (libc6, hwcap: 0x8000000000000, OS ABI: Linux 2.4.1) => /lib/i686/libc.so.6
> libc.so.6 (libc6, OS ABI: Linux 2.2.5) => /lib/libc.so.6
>
> The data is coming from /etc/ld.so.cache which is build by ldconfig.
> A quick scan of the source for ldconfig.c in glibc 2.2.2 shows that it
> starts with standard paths /lib and /usr/lib then searches those
> directories and all their subdirectories looking for libraries.  That
> explains why it finds /lib/i686 without being explicitly specified.
>
> Note the hwcap entry in /lib/i686/libc.so.6.  The dynamic linker no
> longer takes the first entry it finds for a library, instead it looks
> for the first entry that matches the current hardware.  This is
> required for machines like ia64 which can also run i386 binaries and
> for sparc which can run 32 or 64 bit apps.
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2001-06-24 14:00 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-21 19:46 Is this part of newer filesystem hierarchy? D. Stimits
2001-06-22 10:02 ` Luigi Genoni
2001-06-22 17:00   ` D. Stimits
2001-06-22 21:40     ` Luigi Genoni
2001-06-23  4:38       ` D. Stimits
2001-06-23 16:25         ` Luigi Genoni
2001-06-23 19:17           ` D. Stimits
2001-06-23 23:42             ` Luigi Genoni
2001-06-23 23:49               ` Alan Cox
2001-06-24  0:16                 ` Luigi Genoni
2001-06-24  1:17                   ` Alan Cox
2001-06-24 13:25                     ` Luigi Genoni
2001-06-24  1:09                 ` D. Stimits
2001-06-24  1:47                   ` Keith Owens
2001-06-24 13:59                     ` Luigi Genoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).