This is the mail archive of the libc-alpha@sourceware.cygnus.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[Various] libc/1295: *.so.map files not found



Hi,

Alejandro (PR libc/1301) and Nigel reported also the ld.so.map
problem.

Nigel, you noticed that sysd-versions get created.  Besides the
information it contains, it marks also that ld.so.map has been
created.  Could you remove the file and start make again?  Is
ld.so.map now recreated?

Let me state once again to all who encountered this problem:  I can't
reproduce it and don't know why it breaks for you.

To help debugging I'm adding some more information on the creation of
these fails:
The different map files are created by scripts/versions.awk which is
invoked by this rule in Makerules:
$(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
			       $(..)scripts/versions.awk \
			       $(wildcard $(all-subdirs:%=$(..)%/Versions)) \
			       $(wildcard $(sysdirs:%=%/Versions)) \
			       $(sysd-versions-force)
	{ echo 'sysd-versions-subdirs = $(all-subdirs) $(config-sysdirs)' ; \
	  LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
		 -v move_if_change='$(move-if-change)' \
		 -f $(filter-out $< $(sysd-versions-force),$^); \
	} > $@T
	mv -f $@T $@

The file sysd-versions (in your build directory) contains the names of 
all map files and marks that the files are created.  If you remove
sysd-versions, the files should be remade.


A recent build on my system expanded the make rule to:

{ echo 'sysd-versions-subdirs = csu assert ctype db db2 locale intl catgets math setjmp signal stdlib stdio-common libio malloc string wcsmbs time dirent grp pwd posix io termios resource misc socket sysvipc gmon gnulib iconv iconvdata wctype manual shadow md5-crypt po argp crypt linuxthreads nss localedata timezone rt debug inet resolv hesiod sunrpc nis nscd streams login dlfcn elf sysdeps/i386/elf crypt/sysdeps/unix linuxthreads/sysdeps/unix/sysv/linux linuxthreads/sysdeps/pthread linuxthreads/sysdeps/unix/sysv linuxthreads/sysdeps/unix linuxthreads/sysdeps/i386/i686 linuxthreads/sysdeps/i386 sysdeps/unix/sysv/linux/i386/i686 sysdeps/unix/sysv/linux/i386 sysdeps/unix/sysv/linux sysdeps/gnu sysdeps/unix/common sysdeps/unix/mman sysdeps/unix/inet sysdeps/unix/sysv/i386 sysdeps/unix/sysv sysdeps/unix/i386 sysdeps/unix sysdeps/posix sysdeps/i386/i686/fpu sysdeps/i386/i686 sysdeps/i386/i486 sysdeps/i386/fpu sysdeps/i386 sysdeps/wordsize-32 sysdeps/ieee754/flt-32 sysdeps/ieee754/d!
bl-64 sysdeps/ieee754/ldbl-96 sysdeps/ieee754 sysdeps/generic/elf sysdeps/generic' ; \
  LC_ALL=C gawk -v buildroot=/home/aj/buildreport/19990916-main/ -v defsfile=/home/aj/buildreport/19990916-main/Versions.all \
	 -v move_if_change='/bin/sh scripts/move-if-change' \
	 -f scripts/versions.awk csu/Versions assert/Versions ctype/Versions db/Versions db2/Versions locale/Versions intl/Versions catgets/Versions math/Versions setjmp/Versions signal/Versions stdlib/Versions stdio-common/Versions libio/Versions malloc/Versions string/Versions wcsmbs/Versions time/Versions dirent/Versions grp/Versions pwd/Versions posix/Versions io/Versions termios/Versions resource/Versions misc/Versions socket/Versions sysvipc/Versions gmon/Versions iconv/Versions wctype/Versions shadow/Versions md5-crypt/Versions argp/Versions linuxthreads/Versions nss/Versions rt/Versions debug/Versions inet/Versions resolv/Versions hesiod/Versions sunrpc/Versions nis/Versions streams/Versions login/Versions dlfcn/Versions elf/Versions sysdeps/unix/sysv/linux/i386/Versions sysdeps/unix/sysv/linux/Versions sysdeps/unix/sysv/Versions sysdeps/i386/i486/Versions sysdeps/i386/Versions; \
} > /home/aj/buildreport/19990916-main/sysd-versionsT
mv -f /home/aj/buildreport/19990916-main/sysd-versionsT /home/aj/buildreport/19990916-main/sysd-versions

and properly created the files (in this case with GNU awk 3.0.4 and make 3.77).
The script created on my system these map files:
$ ls  *.map
ld.so.map            libdb1.map         libnss_db.map      libnss_nisplus.map
libBrokenLocale.map  libdl.map          libnss_dns.map     libpthread.map
libc.map             libm.map           libnss_files.map   libresolv.map
libcrypt.map         libnsl.map         libnss_hesiod.map  librt.map
libdb.map            libnss_compat.map  libnss_nis.map     libutil.map

I would really appreciate if those you reported the problem, could
spend some time on investigating why the files (all of them or only
ld.so.map?) are not created.

Thanks,
Andreas



Topics:
   re: libc/1295: *.so.map files not found
   Re: libc/1295: *.so.map files not found
   Re: libc/1295: *.so.map files not found


----------------------------------------------------------------------

Date: Wed, 15 Sep 1999 11:02:36 -0400
From: nigel kerr <nigelk@si.umich.edu>
To: Andreas Jaeger <aj@arthur.rhein-neckar.de>
Subject: re: libc/1295: *.so.map files not found
Message-ID: <37DFB50C.B6DC299B@si.umich.edu>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


Dear Andreas Jaeger,

I write in support of resolving the "*.so.map files not found" problem
recently discussed on libc-alpha; i don't feel my contribution warrants
posting to the list, because i'm not sure how to proceed or what i have
means.

my system before trying to compile glibc-2.1.2:

	debian 2.1 (slink) (implies requisite gettext)
	2.2.10 kernel (not debian's original)
	gcc 2.95 (not 2.95.1)
	make 3.77 and 3.75 (hoping to try 3.76 later today)
	gawk 3.0.4 and mawk 1.3
	binutils 2.9.5.0.12

	the glibc-2.1.2 configured with:
		--enable-versioning --with-elf --prefix=... --enable-add-ons

the items that i have varied have been the combinations of make and *awk
versions.

each time i received the "ld.so.map file not found" error upon reaching
the elf subdirectory of the build, the build had been fine theretofore.

on reading the recent archive of libc-alpha, and locating the relevant
section of the Makerules file (as shown by Mr. Drepper), i altered that
file in the following way:

where Makerules reads (starting at line 284):

 $(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
			       $(..)scripts/versions.awk \
			       $(wildcard $(all-subdirs:%=$(..)%/Versions)) \
			       $(wildcard $(sysdirs:%=%/Versions)) \
			       $(sysd-versions-force)
	{ echo 'sysd-versions-subdirs = $(all-subdirs) $(config-sysdirs)' ; \
	  LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
		 -v move_if_change='$(move-if-change)' \
		 -f $(filter-out $< $(sysd-versions-force),$^); \
	} > $@T
	mv -f $@T $@

i added an echo command to this target thusly:

 $(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
			       $(..)scripts/versions.awk \
			       $(wildcard $(all-subdirs:%=$(..)%/Versions)) \
			       $(wildcard $(sysdirs:%=%/Versions)) \
			       $(sysd-versions-force)
	echo "aaaiieeee! - - - - trying to make $@ $@T $< $^"
	{ echo 'sysd-versions-subdirs = $(all-subdirs) $(config-sysdirs)' ; \
	  LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
		 -v move_if_change='$(move-if-change)' \
		 -f $(filter-out $< $(sysd-versions-force),$^); \
	} > $@T
	mv -f $@T $@

on the reasoning that i would see that quixotic echo output in the 
output of the make if that target were ever evaluated.  performing a
make in the following manner:

	make -w >../build.output 2>&1

the resulting build.output did not have at any point the "aaaiieeee!"
line, nor does that output at any time mention "versions.awk" (what
i understand to be the needed file).

i would like to be able to say why that target was not evaluated, but
i am at a loss, and am trying to think of good ways to proceed with this
problem.  if you or others have suggestions or comments, i would 
appreciate them.  was the above strategy at all appropriate?  does
this illuminate anything at all?  let me know if there are other
experiments i might be able to perform.

thank you for your time and consideration.

respectfully submitted,
nigel kerr


------------------------------

Date: 15 Sep 1999 17:36:15 +0200
From: Andreas Jaeger <aj@arthur.rhein-neckar.de>
To: nigel@ology.org
Subject: Re: libc/1295: *.so.map files not found
Message-ID: <u87llsgpao.fsf@arthur.rhein-neckar.de>
References: <37DFB50C.B6DC299B@si.umich.edu>
Content-Type: text/plain; charset=us-ascii


Hi,
>>>>> nigel kerr writes:

 > Dear Andreas Jaeger,

 > I write in support of resolving the "*.so.map files not found" problem
 > recently discussed on libc-alpha; i don't feel my contribution warrants
 > posting to the list, because i'm not sure how to proceed or what i have
 > means.
Ok, I'll try to help.

 > my system before trying to compile glibc-2.1.2:

 > 	debian 2.1 (slink) (implies requisite gettext)
 > 	2.2.10 kernel (not debian's original)
 > 	gcc 2.95 (not 2.95.1)
That's ok.
 > 	make 3.77 and 3.75 (hoping to try 3.76 later today)
3.76 (not 3.76.1) is broken - don't use it.
 > 	gawk 3.0.4 and mawk 1.3
 > 	binutils 2.9.5.0.12
The rest looks fine.
 > 	the glibc-2.1.2 configured with:
 > 		--enable-versioning --with-elf --prefix=... --enable-add-ons
- -enable-versioning and --with-elf are default, you can leave them
out.

 > the items that i have varied have been the combinations of make and *awk
 > versions.
Ok.

 > each time i received the "ld.so.map file not found" error upon reaching
 > the elf subdirectory of the build, the build had been fine theretofore.

 > on reading the recent archive of libc-alpha, and locating the relevant
 > section of the Makerules file (as shown by Mr. Drepper), i altered that
 > file in the following way:

 > where Makerules reads (starting at line 284):

 >  $(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
 > 			       $(..)scripts/versions.awk \
 > 			       $(wildcard $(all-subdirs:%=$(..)%/Versions)) \
 > 			       $(wildcard $(sysdirs:%=%/Versions)) \
 > 			       $(sysd-versions-force)
 > 	{ echo 'sysd-versions-subdirs = $(all-subdirs) $(config-sysdirs)' ; \
 > 	  LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
 > 		 -v move_if_change='$(move-if-change)' \
 > 		 -f $(filter-out $< $(sysd-versions-force),$^); \
 > 	} > $@T
 > 	mv -f $@T $@

 > i added an echo command to this target thusly:

 >  $(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
 > 			       $(..)scripts/versions.awk \
 > 			       $(wildcard $(all-subdirs:%=$(..)%/Versions)) \
 > 			       $(wildcard $(sysdirs:%=%/Versions)) \
 > 			       $(sysd-versions-force)
 > 	echo "aaaiieeee! - - - - trying to make $@ $@T $< $^"
 > 	{ echo 'sysd-versions-subdirs = $(all-subdirs) $(config-sysdirs)' ; \
 > 	  LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
 > 		 -v move_if_change='$(move-if-change)' \
 > 		 -f $(filter-out $< $(sysd-versions-force),$^); \
 > 	} > $@T
 > 	mv -f $@T $@

 > on the reasoning that i would see that quixotic echo output in the 
 > output of the make if that target were ever evaluated.  performing a
 > make in the following manner:

 > 	make -w >../build.output 2>&1

 > the resulting build.output did not have at any point the "aaaiieeee!"
 > line, nor does that output at any time mention "versions.awk" (what
 > i understand to be the needed file).

 > i would like to be able to say why that target was not evaluated, but
 > i am at a loss, and am trying to think of good ways to proceed with this
 > problem.  if you or others have suggestions or comments, i would 
 > appreciate them.  was the above strategy at all appropriate?  does
 > this illuminate anything at all?  let me know if there are other
 > experiments i might be able to perform.

Do you mind if I forward this email to libc-alpha?  I do think it's
really unusual to the rule isn't used - and I'd like to have the
support of some other glibc developers (especially the make experts).

You could try to use make -d to check if the rule is ever considered.
Do you have a sysd-versions file anywhere in your build or source
directory?

Thanks for your help,
Andreas
- - 
 Andreas Jaeger   aj@arthur.rhein-neckar.de    jaeger@informatik.uni-kl.de
  for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de

------------------------------

Date: 15 Sep 1999 13:45:20 -0400
From: Nigel Kerr <nigelk@si.umich.edu>
To: Andreas Jaeger <aj@arthur.rhein-neckar.de>
Cc: nigel@ology.org
Subject: Re: libc/1295: *.so.map files not found
Message-ID: <p7gu2owvzkf.fsf@bart.si.umich.edu>
References: <37DFB50C.B6DC299B@si.umich.edu> <u87llsgpao.fsf@arthur.rhein-neckar.de>
Content-Type: text/plain; charset=us-ascii


Andreas,

i appreciate your suggestions and insight!  and by all means forward
along to folks you think could see things in here.  here are some
responses to questions you posed, after another go here:

> You could try to use make -d to check if the rule is ever considered.

with the same configure options as previously, make-3.75 and
gawk-3.0.4 in force, i ran a make -d.  this produced some 92 megabytes
of output (my build takes, btw, 25 minutes on a 300 mhz celeron with
64 mb RAM), and i've looked through for mentions of "Makerules":

the first mention at about 10 lines:

Reading makefile `Makerules' (search path) (no ~ expansion)...

then at about 580 lines:

   Considering target file `Makerules'.
    Looking for an implicit rule for `Makerules'.
    No implicit rule found for `Makerules'.
    Finished dependencies of target file `Makerules'.
   No need to remake target `Makerules'.

(the first and last lines indented 3 spaces, the middle three indented
4...)

at about line 630:

  Dependency `Makerules' is older than dependent `sysdeps/../sysd-rules'.

(2 spaces indented)

then 794:

   Considering target file `Makerules'.
   File `Makerules' was considered already.

and a couple lines later:

  Dependency `Makerules' is older than dependent `sysdeps/../sysd-Makefile'.

throughout the 92 megabytes of output, only repetitions of these lines
mention Makerules, just under 1300 lines total, apparently fairly
evenly distributed.  (the 92 gzips to 3.4, if anyone really wants to
pour over it...).

> Do you have a sysd-versions file anywhere in your build or source
> directory?

yes.  it was last "accessed" near the end of the last build i
attempted, it was "created" and "modified" a couple of days ago, such
that i'm not clear exactly what step in a given process i may have
been.  it reads:

sysd-versions-subdirs = csu assert ctype db db2 locale intl catgets math setjmp signal stdlib stdio-common libio malloc string wcsmbs time dirent grp pwd posix io termios resource misc socket sysvipc gmon gnulib iconv iconvdata wctype manual shadow md5-crypt po argp crypt linuxthreads nss localedata timezone rt debug inet resolv hesiod sunrpc nis nscd streams login elf sysdeps/i386/elf crypt/sysdeps/unix linuxthreads/sysdeps/unix/sysv/linux linuxthreads/sysdeps/pthread linuxthreads/sysdeps/unix/sysv linuxthreads/sysdeps/unix linuxthreads/sysdeps/i386/i686 linuxthreads/sysdeps/i386 sysdeps/unix/sysv/linux/i386/i686 sysdeps/unix/sysv/linux/i386 sysdeps/unix/sysv/linux sysdeps/gnu sysdeps/unix/common sysdeps/unix/mman sysdeps/unix/inet sysdeps/unix/sysv/i386 sysdeps/unix/sysv sysdeps/unix/i386 sysdeps/unix sysdeps/posix sysdeps/i386/i686 sysdeps/i386/i486 sysdeps/libm-i387/i686 sysdeps/i386/fpu sysdeps/libm-i387 sysdeps/i386 sysdeps/wordsize-32 sysdeps/ieee754 sysdeps/libm-ieee75!
!
!
4 sysdeps/generic/elf sysdeps/generic
version-maps = ld.so.map libBrokenLocale.map libc.map libcrypt.map libdb.map libdb1.map libdl.map libm.map libnsl.map libnss_compat.map libnss_db.map libnss_dns.map libnss_files.map libnss_hesiod.map libnss_nis.map libnss_nisplus.map libpthread.map libresolv.map librt.map libutil.map

anything else i can provide, just let me know.  thanks.

nigel


------------------------------

End of forwardIDCgsA Digest
***************************



-- 
 Andreas Jaeger   aj@arthur.rhein-neckar.de    jaeger@informatik.uni-kl.de
  for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]