This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Hidden error(?) during build


Hi guys,

After digging a little, the problem comes from the
glibc-2.6.1/posix/Makefile. It has been solved starting from glibc 2.7
so I extracted a patch for glibc 2.6.1.

Regards,
Thomas

Le dimanche 11 janvier 2009 Ã 11:51 +0100, Thomas Jourdan a Ãcrit :
> Hi guys
> 
> I'm still working on the solaris port an I have the same issue here.
> While trying to build the i686-nptl-linux-gnu toolchain under
> OpenSolaris, the problems appears during the make install rule of the
> libc function.
> 
> The problem is that solaris tries to execute ld-linux.so.2, which is an
> elf 32 bits dyn lib, and it fails with a memory fault, not a "cannot
> execute binary file". Hence the build stops on this error.
> 
> I'm trying to build an eglibc based toolchain yet but it seems that
> eglibc is fixed on this make install rule.
> 
> Regards,
> Thomas
> 
> Le lundi 05 janvier 2009 Ã 21:00 +0100, Yann E. MORIN a Ãcrit :
> > Michael,
> > All,
> > 
> > On Sunday 04 January 2009 14:06:53 michael wrote:
> > > Building powerpc-405-linux-gnu I noticed one error message (I've elided 
> > > the path for clarity):
> > > [ERROR]    .../powerpc-405-linux-gnu/build/build-libc/elf/ld.so.1: 1:
> > > Syntax error: "(" unexpected 
> > 
> > > This is building on Ubuntu; building on RHEL I get the slightly more 
> > > illuminating message (but not flagged as an error):
> > > [ALL  ]    /bin/sh: .../powerpc-405-linux-gnu/build/build-libc/elf/ld.so.1: cannot execute binary file
> > 
> > > Ah: now all is clear.  *Somebody* is trying to execute the target ld.so.1 
> > > -- that's not going to work, now is it?
> > 
> > Surely not! :-)
> > 
> > > I don't know whether this actually matters, and whether the offending code 
> > > is in crosstool-ng itself, or is part of glibc (I guess my money isss with 
> > > glibc).
> > 
> > I'd say it lives somewhere in the glibc Makefiles. Sigh... :-(
> > 
> > > Still, it's a bit bothersome.  The built toolchain actually seems  
> > > to work just fine -- I think the only side effect here is that 
> > > sys-root/usr/libexec/getconf is empty -- but something odd to notice!
> > 
> > I don't have PowerPC to test on. Does the toolchain work? What is .../getconf
> > used for? Is it vital?
> > 
> > My bet is, unless the toolchain does not work, leave it alone, and go your
> > way. There are better things to work on than fixing glibc weirdness.
> > 
> > Regards,
> > Yann E. MORIN.
> > 
> > 
> 
> 
> --
> For unsubscribe information see http://sourceware.org/lists.html#faq
> 
--- glibc-2.6.1/posix/Makefile	2007-04-04 01:28:20.000000000 +0200
+++ glibc-2.7/posix/Makefile	2007-09-12 01:57:22.000000000 +0200
@@ -98,7 +98,7 @@
 endif
 others		:= getconf
 install-bin	:= getconf
-install-others	:= $(inst_libexecdir)/getconf
+install-others-programs	:= $(inst_libexecdir)/getconf
 
 before-compile	:= testcases.h ptestcases.h
 
@@ -110,7 +110,7 @@
 	     tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
 	     tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
 	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
-	     tst-vfork3-mem tst-vfork3.mtrace
+	     tst-vfork3-mem tst-vfork3.mtrace getconf.speclist
 
 include ../Rules
 
@@ -291,12 +291,20 @@
 $(objpfx)bug-glob2-mem: $(objpfx)bug-glob2.out
 	$(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@
 
-$(inst_libexecdir)/getconf: $(objpfx)getconf FORCE
+$(inst_libexecdir)/getconf: $(inst_bindir)/getconf \
+			    $(objpfx)getconf.speclist FORCE
 	$(addprefix $(..)./scripts/mkinstalldirs ,\
 		    $(filter-out $(wildcard $@),$@))
-	for spec in `LC_ALL=C GETCONF_DIR=/dev/null \
-		     $(run-program-prefix) $< \
-		     _POSIX_V6_WIDTH_RESTRICTED_ENVS`; do \
-		$(INSTALL_PROGRAM) $< $@/$$spec.new; \
-		mv -f $@/$$spec.new $@/$$spec; \
-	done
+	while read spec; do \
+	  ln -f $< $@/$$spec.new || $(INSTALL_PROGRAM) $< $@/$$spec.new; \
+	  mv -f $@/$$spec.new $@/$$spec; \
+	done < $(objpfx)getconf.speclist
+
+$(objpfx)getconf.speclist: $(objpfx)getconf
+ifeq (no,$(cross-compiling))
+	LC_ALL=C GETCONF_DIR=/dev/null \
+	$(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new
+else
+	> $@.new
+endif
+	mv -f $@.new $@

--
For unsubscribe information see http://sourceware.org/lists.html#faq

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