On Mon, Apr 25, 2005 at 10:43:09PM -0700, Dan Kegel wrote:
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 ---
Yes, thats what I found out too.
The problem is that "aliases" are only useable for renaming functions in the compilation units where they are defined, not for some kind of highlevel "#define" method.
Ciao, Marcus