patches/glibc/2.6/220-cross-posix_makefile.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Mon Feb 13 21:47:25 2012 +0100 (2012-02-13)
changeset 2883 cea814c9932a
parent 1136 9df0e560ec14
permissions -rw-r--r--
libc/glibc: do not consume parameters when parsing them

Currently, there are two constructs used to parse arguments in
glibc backends, one that consumes args as they are parsed, and
one that does not.

Always use the construct that does not eat args as they are parsed.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 On 20090111.1151+0100, Thomas Jourdan <tjourdan@neuf.fr> wrote:
     2 
     3   I'm still working on the solaris port an I have the same issue here.
     4   While trying to build the i686-nptl-linux-gnu toolchain under
     5   OpenSolaris, the problems appears during the make install rule of the
     6   libc function.
     7 
     8   The problem is that solaris tries to execute ld-linux.so.2, which is an
     9   elf 32 bits dyn lib, and it fails with a memory fault, not a "cannot
    10   execute binary file". Hence the build stops on this error.
    11 
    12 And on 20090111.1339+0100, he replied with:
    13 
    14   After digging a little, the problem comes from the
    15   glibc-2.6.1/posix/Makefile. It has been solved starting from glibc 2.7
    16   so I extracted a patch for glibc 2.6.1.
    17 
    18 --- glibc-2.6.1/posix/Makefile	2007-04-04 01:28:20.000000000 +0200
    19 +++ glibc-2.7/posix/Makefile	2007-09-12 01:57:22.000000000 +0200
    20 @@ -98,7 +98,7 @@
    21  endif
    22  others		:= getconf
    23  install-bin	:= getconf
    24 -install-others	:= $(inst_libexecdir)/getconf
    25 +install-others-programs	:= $(inst_libexecdir)/getconf
    26  
    27  before-compile	:= testcases.h ptestcases.h
    28  
    29 @@ -110,7 +110,7 @@
    30  	     tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
    31  	     tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
    32  	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
    33 -	     tst-vfork3-mem tst-vfork3.mtrace
    34 +	     tst-vfork3-mem tst-vfork3.mtrace getconf.speclist
    35  
    36  include ../Rules
    37  
    38 @@ -291,12 +291,20 @@
    39  $(objpfx)bug-glob2-mem: $(objpfx)bug-glob2.out
    40  	$(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@
    41  
    42 -$(inst_libexecdir)/getconf: $(objpfx)getconf FORCE
    43 +$(inst_libexecdir)/getconf: $(inst_bindir)/getconf \
    44 +			    $(objpfx)getconf.speclist FORCE
    45  	$(addprefix $(..)./scripts/mkinstalldirs ,\
    46  		    $(filter-out $(wildcard $@),$@))
    47 -	for spec in `LC_ALL=C GETCONF_DIR=/dev/null \
    48 -		     $(run-program-prefix) $< \
    49 -		     _POSIX_V6_WIDTH_RESTRICTED_ENVS`; do \
    50 -		$(INSTALL_PROGRAM) $< $@/$$spec.new; \
    51 -		mv -f $@/$$spec.new $@/$$spec; \
    52 -	done
    53 +	while read spec; do \
    54 +	  ln -f $< $@/$$spec.new || $(INSTALL_PROGRAM) $< $@/$$spec.new; \
    55 +	  mv -f $@/$$spec.new $@/$$spec; \
    56 +	done < $(objpfx)getconf.speclist
    57 +
    58 +$(objpfx)getconf.speclist: $(objpfx)getconf
    59 +ifeq (no,$(cross-compiling))
    60 +	LC_ALL=C GETCONF_DIR=/dev/null \
    61 +	$(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new
    62 +else
    63 +	> $@.new
    64 +endif
    65 +	mv -f $@.new $@