Steve Vinoski wrote:
Hi, is gccxml supposed to honor the -m32 switch? Trying to build
32-bit code on a 64-bit Linux system and wanted to run gccxml in the
same mode, but it doesn't seem to define things properly so that
definitions in <limits.h> are set for 32-bit.
This is with the latest gccxml code from cvs and g++ 4.2.2.
If I compile the following, which is a trimmed down version of some
code found in the ACE C++ networking framework, with -m32 on a 64-bit
host:
#include <limits.h>
#include <sys/types.h>
u_long p = ULONG_MAX;
I get:
$ gccxml -fxml=/dev/null -m32 foo.cc
foo.cc:3: error: integer constant is too large for 'long' type
It's as if the type system is 32-bit but the preprocessor constants
(e.g., ULONG_MAX) are following the size of the host architecture.
Running with --debug doesn't seem to give any clues, but I could
certainly be missing something.
You should not pass the -m32 option to gccxml itself. The fact that it
has a gcc parser is an implementation detail. You need to add -m32 to
the options configuring the simulated compiler:
gccxml --gccxml-cxxflags "-m32" foo.cc -fxml=foo.xml
That should get the constants adjusted at preprocessing time.
It won't change the actual size of the builtin types though. To do that
you would need to cross-compile the internal gcc parser. Since gccxml
is about the interface and not the implementation that is not a design goal.
-Brad
_______________________________________________
gccxml mailing list
[email protected]
http://www.gccxml.org/mailman/listinfo/gccxml