the gcc build system has some awk scripts that use unsafe character ranges:
$ grep a-z gcc/*.awk
gcc/optc-gen.awk:       gsub( "[^A-Za-z0-9_]", "X", macros[i] )
gcc/optc-gen.awk:       gsub ("[^A-Za-z0-9]", "_", enum)
gcc/opt-functions.awk:  gsub ("[^A-Za-z0-9]", "_", name)
gcc/opth-gen.awk:       gsub( "[^A-Za-z0-9_]", "X", macros[i] )
gcc/opth-gen.awk:       gsub ("[^A-Za-z0-9]", "_", enum)

A-Z will not match the expected alphabet (the range as defined by the "C"
locale) in all locales.  while this has always been a problem, it went
unnoticed as the incorrect munging is consistent in nature.  with gcc-4.3, the
incorrect munging results in a conflict of symbols and triggers a build
failure.

i cant seem to find any precedent as to the correct fix.  i would personally
just change everything to [:alnum:], but the only use of such character classes
that i can find via a quick grep is in the lex files.  another solution would
be to execute the awk stuff via configure as it sets up a clean environment. 
or you can prepend "env LC_ALL=C" to the AWK variable setup via configure, but
this ignores the problems that configure solves automatically.


-- 
           Summary: build locale not properly handled with awk scripts
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: vapier at gentoo dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35855

Reply via email to