Dimitrie O. Paun wrote:
This is the patch I use for gcc4.0 here.
I am not really sure why this aliasing was introduced, but it will not work this way anymore.
I still don't understand why it doesn't work.
It was introduced because using macros it not always acceptable. Some source uses these functions in ways that break if they are defined as macros.
Defining them as inline functions work, but we can't do so for varargs, in which case we used aliases.
What was the reason to break them, and why they don't work? They are aliasing to things that _are_ defined, so I'm not sure what is going on there.
http://www.gnu.org/software/gcc/gcc-4.0/changes.html says (not that I really understand it totally):
--- snip --- Given __attribute__((alias("target"))) it is now an error if target is not a symbol, defined in the same translation unit. This also applies to aliases created by #pragma weak alias=target. This is because it's meaningless to define an alias to an undefined symbol. On Solaris, the native assembler would have caught this error, but GNU as does not. --- snip ---
- Dan