Bug or feature: symbol names of global/extern variables
Robert Dewar
dewar@adacore.com
Thu Oct 6 13:13:00 GMT 2005
Wolfgang Roemer wrote:
> The main.o will perfectly link with the library although main.o needs a double
> variable named maximum and the lib only offers an int variable named maximum.
> Because the symbol name does in no way reflect the variable type, everything
> links fine but in fact the variable named "minimum" gets scrambled in this
> example because "maximum" is accessed as if it is a double variable thus
> overwriting 4 additional bytes (in this case the 4 bytes of the variable
> minimum). The assertion will show that.
>
> I tested that on Windows with Visual C++ as well and there main.obj doesn't
> link because the variable type is part of the symbol name and everthing is
> fine.
>
> I think it would be very very important for the binary interface to have that
> feature as well.
I actually disagree with this, I think attempting to make the link fail
here would be a mistake.
What is more interesting is a proposal to have the linker give warnings
if the debug descriptions of symbols do not match. That can even work
across languages.
More information about the Gcc
mailing list