[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compiling v1.8.5 on tru64 5.1b
From: |
Neil Jerram |
Subject: |
Re: Compiling v1.8.5 on tru64 5.1b |
Date: |
Mon, 12 May 2008 21:20:24 +0100 |
User-agent: |
Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux) |
Didier Godefroy <address@hidden> writes:
> Hi all,
>
> Having trouble compiling guile 1.8.5 on tru64 unix v5.1b:
> cc: Error: eval.c, line 2363: In this statement, "*(SCM
> ...)0=(((SCM)((((0))<<8)+scm_tc8_isym)))" is not constant, but occurs in a
> context that requires a constant expression. (needconstexpr)
> case (ISYMNUM (SCM_IM_AND)):
Are you using a somewhat dated compiler? scm_tc8_isym is defined
like this:
enum scm_tc8_tags
{
scm_tc8_flag = scm_tc3_imm24 + 0x00, /* special objects ('flags') */
scm_tc8_char = scm_tc3_imm24 + 0x08, /* characters */
scm_tc8_isym = scm_tc3_imm24 + 0x10, /* evaluator byte codes ('isyms') */
scm_tc8_iloc = scm_tc3_imm24 + 0x18 /* evaluator byte codes ('ilocs') */
};
and scm_tc3_imm24 is:
#define scm_tc3_imm24 4
So a clever enough compiler could deduce that scm_tc8_isym actually is
a constant, and hence the whole of the expression reported above is a
constant.
A fix should be to replace the enum above (in tags.h) by:
#define scm_tc8_flag (scm_tc3_imm24 + 0x00)
#define scm_tc8_char (scm_tc3_imm24 + 0x08)
#define scm_tc8_isym (scm_tc3_imm24 + 0x10)
#define scm_tc8_iloc (scm_tc3_imm24 + 0x18)
Can you try that out and report if it works, or if you then hit other
problems? Can you also tell us about your compiler, and if there is a
C preprocessor macro that can be used to detect it dynamically?
>
> So I'm wondering, was my copying of the ltdl.h file in the root of the build
> tree an ok thing to do?
I don't think the above has anything to do with ltdl.h.
Regards,
Neil