cleanup and work around visibility bug in gcc 3 that affects x86_64
authorRich Felker <dalias@aerifal.cx>
Fri, 24 Feb 2012 02:24:56 +0000 (21:24 -0500)
committerRich Felker <dalias@aerifal.cx>
Fri, 24 Feb 2012 02:24:56 +0000 (21:24 -0500)
commitbae2e52bfd676c447862b9baec535db401aab075
tree2ce86c4968124da4cd7b27b02ea8570e2bc49bdd
parent00b883a95561b7ed31b0907fcd7cb16267de6e4d
cleanup and work around visibility bug in gcc 3 that affects x86_64

in gcc 3, the visibility attribute must be placed on both the
declaration and on the definition. if it's omitted from the
definition, the compiler fails to emit the ".hidden" directive in the
assembly, and the linker will either generate textrels (if supported,
such as on i386) or refuse to link (on targets where certain types of
textrels are forbidden or impossible without further assumptions about
memory layout, such as on x86_64).

this patch also unifies the decision about when to use visibility into
libc.h and makes the visibility in the utf-8 state machine tables
based on libc.h rather than a duplicate test.
src/internal/libc.c
src/internal/libc.h
src/multibyte/internal.c
src/multibyte/internal.h