You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 3751 Reporter: administrator Status: closed Resolution: fixed Priority: normal Severity: minor Category: ~DO NOT USE (was: OCaml general)
Bug description
On Wed, Aug 10, 2005 at 07:13:13PM +0200, Julien Cristau wrote:
Hi,
the ocaml debian package fails to build on ia64 with the new gcc, with
errors in byterun/interp.c:
gcc -DCAML_NAME_SPACE -O -fno-defer-pop -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT -c -o interp.o interp.c
interp.c: In function 'caml_interprete':
interp.c:297: error: invalid lvalue in increment
interp.c:299: error: invalid lvalue in increment
interp.c:301: error: invalid lvalue in increment
interp.c:303: error: invalid lvalue in increment
...
The problem seems to be the "Next" macro, which is different on ia64
than on other archs:
ifdef DEBUG
define Next goto next_instr
else
by sumply erasing these three lines :
ifdef ia64
define Next goto *(void *)(jumptbl_base + *((uint32 *) pc)++)
else
define Next goto *(void *)(jumptbl_base + *pc++)
as well as this one obviously :)
endif
endif
The package builds without problem on one of debian's ia64 boxes (merulo
inside the sid chroot), so this should solve it for sid. Not sure about
pre-gcc 4.0 and older backports though.
I believe that using the following on ia64 instead should work, but
since I am no expert, I'd like to get the caml team's advice :)
(I don't really understand why this cast is there, and why it's there
only on ia64, but it has been added in 2000, as part of the ia64 port)
#define Next goto (void)(jumptbl_base + (uint32)*pc++)
Just remove the cast, pc is code_t which is defined as uint32, so ...
Alternately, I wonder if opcode_t could be defined as uint32 instead of
int32, which would probably solve this problem (assuming it doesn't need
to be signed).
Heu, maybe i misread the code then. you sure it is not uint32 ?
Friendly,
Sven Luther
The text was updated successfully, but these errors were encountered:
Original bug ID: 3751
Reporter: administrator
Status: closed
Resolution: fixed
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)
Bug description
On Wed, Aug 10, 2005 at 07:13:13PM +0200, Julien Cristau wrote:
by sumply erasing these three lines :
as well as this one obviously :)
The package builds without problem on one of debian's ia64 boxes (merulo
inside the sid chroot), so this should solve it for sid. Not sure about
pre-gcc 4.0 and older backports though.
Just remove the cast, pc is code_t which is defined as uint32, so ...
Heu, maybe i misread the code then. you sure it is not uint32 ?
Friendly,
Sven Luther
The text was updated successfully, but these errors were encountered: