[ Date Prev][ Date Next][ Thread Prev][ Thread Next][ Date Index][ Thread Index]
Re: [cxx-abi-dev] Question about guard variable types
- To: Martin v. Löwis <martin@xxxxxxxxxxx>, "cxx-abi-dev@xxxxxxxxxxxxxxxx" <cxx-abi-dev@xxxxxxxxxxxxxxxx>
- Subject: Re: [cxx-abi-dev] Question about guard variable types
- From: Mark Mitchell <mark@xxxxxxxxxxxxxxxx>
- Date: Fri, 06 Dec 2002 09:22:58 -0800
(Note that even though the __cxa_guard functions are extern "C" you
can still observe their types; take their addresses.)
But that is not relevant for the ABI, is it?
Well, the ABI has this little API part. :-) The <cxxabi.h> header
is documented and required. You can use it in low-level
applications -- one good example would be if you're writing a C++
interpreter that wants to interact correctly with compiled C++
object files. (This was CenterLine's ObjectCenter product.)
All of the other functions have portable types; why not this one?
In what way would you have to change g++? I.e. on what system does it
support a type long long which has not exactly 8 bytes?
Well, the runtime is broken, as Richard Henderson pointed out; we use
"mode((DI))" which needn't be 64 bits. There's certainly nothing to
keep someone from making a GCC port where "long long" isn't 64 bits;
I don't know whether there already is such a thing in the FSF tree or
not.
I claim that g++ conforms to the ABI, as both the ABI and g++ are, in
this very moment.
But if that's true, then it's harmless to make the ABI say "long long"
to match.
The point is that the G++ front end explicitly uses "long long" -- not
"64-bit type" -- when constructing a guard variable.
There are two cases:
1) Those things are always the same, in which case we may as well say
"long long" in the ABI so that things match up and we have a
well-defined type for the function, and so that a new GCC port
doesn't accidentally stray from the ABI, or;
2) Those things are not always the same, in which case something needs
to change, and G++'s widespread deployment would argue for the ABI
changing.
--
Mark Mitchell mark@xxxxxxxxxxxxxxxx
CodeSourcery, LLC http://www.codesourcery.com
|