[v3] libstdc++/22554/23734

David Edelsohn dje@watson.ibm.com
Tue Sep 13 17:57:00 GMT 2005


Ben,

	Thanks for applying the patch.  Unfortunately your modifications
to my proposed patch undo the benefit.  I'm sorry that I wasn't clearer in
the original bug report.

	When I split the headers up into sub-value, my stamp-assoc rule
installed each of the groups separately, e.g.,

        @mkdir -p ${assoc_subdirs}
        @cd ${assoc_builddir} && for h in ${assoc_headers1}; do \
            build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\
            $(LN_S) $$h $${build_name} || true ;\
          done
        @cd ${assoc_builddir} && for h in ${assoc_headers2}; do \
            build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\
            $(LN_S) $$h $${build_name} || true ;\
          done

Your rule concatenates all of the sub-commands into one large command:

        @if [ ! -d "${assoc_builddir}" ]; then \
            mkdir -p ${assoc_subdirs} ;\
        fi ;\
        if [ ! -f stamp-assoc ]; then \
          (cd ${assoc_builddir} && for h in ${assoc_headers1}; do \
            build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\
            $(LN_S) $$h $${build_name} || true ;\
          done) ;\
          (cd ${assoc_builddir} && for h in ${assoc_headers2}; do \
            build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\
            $(LN_S) $$h $${build_name} || true ;\
          done) ;\

which expands the variables and overflows the execvp limit in much the
same way as if the headers were all in one variable.  To avoid overflow,
the commands cannot be strung together.

David



More information about the Libstdc++ mailing list