Hi jls_legalize
export CFLAGS="-march=i486 -mtune=i686 -Os -pipe"
export LDFLAGS="-Wl,-O1"
The TC Wiki lists those as suggest flags, and goes on to mention some flags to try for special situations, and
finally some not-allowed flags. The way I read it, you should try to use the suggested flags whenever possible, but
you do have the leeway to use/add other flags if you need them and they are not in the not-allowed list.
According to the fvisibility Wiki (
http://gcc.gnu.org/wiki/Visibility) it should produce "better" code, but there is a
warning that in C++ exceptions may not work correctly if the source code doesn't have visibility correctly defined
for all data. A small excerpt from the Wiki:
The upshot of this is that if you forget your preprocessor defines in just one object file, or if at any time a throwable type is not declared explicitly public, the -fvisibility=hidden will cause it to be marked hidden in that object file, which overrides all the other definitions with default visibility and causes the typeinfo to vanish in the outputted binary (which then causes any throws of that type to cause terminate() to be called in the catching binary). Your binaries will link perfectly and appear to work correctly, even though they don't.
If I understand it correctly, it says that an exception that could normally have been dealt with by the program will
cause it to terminate instead, you just won't know about the problem until or if the exception is actually encountered
and thrown.