Hello,
there is one problem with the 64 bit build on AIX... it was not a 64 bit
build... I need to explain this a bit.

__WORDSIZE is not defined in AIX
-> so in rexxapitypes.h __REXX64__ never gets defined

==> no go - crash - boom

If I feed -D__WORDSIZE=64 to configure then I get the following make error:

 xlC_r -DHAVE_CONFIG_H -I. -DORX_VER=4 -DORX_REL=0 -DORX_MOD=0
-DORX_FIX=0 -DORX_SYS_STR=\"AIX\" -DORX_CATDIR=\"/opt/ooRexx/bin\"
-DORX_SHARED_LIBRARY_EXT=\".so\" -I./lib -I./api -I./api/platform/unix
-I./common -I./common/platform/unix -I./interpreter
-I./interpreter/behaviour -I./interpreter/execution
-I./interpreter/memory -I./interpreter/package
-I./interpreter/concurrency -I./interpreter/expression
-I./interpreter/instructions -I./interpreter/classes
-I./interpreter/classes/support -I./interpreter/runtime
-I./interpreter/parser -I./interpreter/messages
-I./interpreter/streamLibrary -I./interpreter/platform/common
-I./interpreter/platform/unix -g -D__WORDSIZE=64 -+ -qchars=unsigned
-qnodigraph -DNOOPT -DPTHREAD_KERNEL -D_POSIX_THREAD -D_REENTRANT
-D_GNU_SOURCE -DOPSYS_AIX43 -DAIX -DOPSYS_AIX -c -M
./interpreter/runtime/Numerics.cpp  -DPIC -o .libs/librexx_la-Numerics.o
"./interpreter/runtime/Numerics.cpp", line 53.49: 1540-0274 (S) The name
lookup for "__INT64_C" did not find a declaration.
"./interpreter/runtime/Numerics.cpp", line 54.49: 1540-0274 (S) The name
lookup for "__INT64_C" did not find a declaration.
"./interpreter/runtime/Numerics.cpp", line 55.46: 1540-0274 (S) The name
lookup for "__INT64_C" did not find a declaration.
"./interpreter/runtime/Numerics.cpp", line 56.46: 1540-0274 (S) The name
lookup for "__INT64_C" did not find a declaration.
gmake: *** [librexx_la-Numerics.lo] Error 1

==> __INT64_C does not work on AIX

I can use limits.h on AIX:

#ifdef __64BIT__
#define LONG_MAX     (9223372036854775807L)
#define LONG_MIN     (-LONG_MAX - 1)
...

Is this what you have intended ?

So I changed Numerics.cpp

#ifdef __REXX64__
#ifdef AIX
const wholenumber_t Numerics::MAX_WHOLENUMBER = LONG_MAX;
const wholenumber_t Numerics::MIN_WHOLENUMBER = LONG_MIN;
const wholenumber_t Numerics::MAX_EXPONENT = LONG_MAX;
const wholenumber_t Numerics::MIN_EXPONENT = LONG_MIN;
#else
...

With this patch I can create the image and 64 bit rexx is working on AIX.

The samples + callrex1 / callrexx2 are working fine.
I still have to run the test suite.

So now I have to prepare (a more polished) patch.

Bye
  Rainer

------------------------------------------------------------------------------
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to