Garrett D'Amore wrote:
> Roland Mainz wrote:
[snip]
> > The problem doesn't affect you directly.
> > The issue is that we need a way to distingish between 32bit and 64bit
> > because we merge arch/${platform}/inlcude/ast/ includes from 32bit and
> > 64bit builds via "/usr/bin/diff -D<symbol>". The problem is that we
> > can't use |_LP64| for <symbol> since the Sun Workshop/Forte/Studio
> > compilers do not set |_LP64| (gcc set it, e.g.
> > -- snip --
> > $ (touch foo.h; /usr/sfw/bin/cpp -m64 -dM foo.h) | fgrep _LP64
> > #define __LP64__ 1
> > #define _LP64 1
> > -- snip --
> > ) and "injecting" a |#include <sys/isa_defs.h>| will fork() the includes
> > in a completely unpredictable manner (I've tried that - the sources
> > compile and the code doesn't pass the test suite anymore (and I really
> > don't have the time to figure out why it breaks somewhere in the ~~1000
> > source files we have... that's more a job for Mr. Sisyphus)).
> 
> Huh?  sys/isa_defs.h should come in via sys/types.h.    If you're not
> getting sys/types.h, then all bets are off.

Erm, the code which generates the final headers works like this (shell
pseudocode):
-- snip --
(
    print "/* header */"
    /usr/bin/diff -D<symbol>" 32bitinclude/foo.h 64bitinclude/foo.h
) >${ROOT}/usr/include/ast/foo.h
-- snip --

We can't "inject" a "#include <sys/isa_defs.h>" between "header" and the
"diff" because this will alter the behaviour of the AST includes (they
are not designed to handle this kind of hackery). Right now we use
either |__amd64| (on x86) or |__sparcv9| (on SPARC) instead of |_LP64|
which I thought that this would be a acceptable compromise.

> isa_defs.h gets the _LP64 by looking at __amd64 or __sparcv9.  You could
> use the same tests, but I would discourage you from doing so.
> 
> Also, looking at Forte, it looks like it defines __x86_64 and __amd64,
> so you have options there.  (I've not checked the sparc output.  Use "cc
> -# -xarch=amd64 -E /dev/null" to show the flags passed to the preprocessor.

Thanks for the tip... :-)

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.mainz at nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 7950090
 (;O/ \/ \O;)

Reply via email to