[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [Gcl-devel] Windows GCL: setjmp/longjmp
From: |
Mike Thomas |
Subject: |
RE: [Gcl-devel] Windows GCL: setjmp/longjmp |
Date: |
Mon, 22 Mar 2004 14:06:52 +1000 |
Hi Camm.
Thanks for your quick attention to this problem.
| If you look in format.c for example, you will see significant use of
| the 'volatile' variable declaration modifier. If memory serves, this
| may be also abbreviated in a C define set at the gcc command line
| (VOL). I believe the generated C files also contain this modifier
| where required. Remember, this issue is windows specific. Please
| make sure you have -DVOL=volatile in the FlAGS variables in makedefs,
| and that cpp is using it to properly expand the C code.
Yes; -DVOL=volatile is set and as reported by gcc -E it is being expanded;
output is included below as grepped for volatile from "o/format.c".
I understand that this is Windows specific but my general experience is that
often bugs like this exist under Unix but their probabilistic nature hides
them until they run on a really different platform like Windows. The random
tester results seem to indicate that no such hidden issues exist but I don't
think one should write them off totally.
I'm currently rebuilding the STABLE branch with "-fvolatile" set per your
other email and hope to report back to you in about an hour - Windows builds
with Unix emulation tools take much longer than on Linux - typically three
time longer on other projects I have worked on (at this time I have no
comparison with GCL as I can't do extra-Windows builds due to local rules
and regulations about the various machines available here - especially as we
are in release mode ourselves).
Cheers
Mike Thomas.
=================================================================
$
gcc -E -c -g -fno-zero-initialized-in-bss -mms-bitfields -Wall -fwritable-st
r
ings -DVOL=volatile -fsigned-char -mcpu=i386 -march=i386 -g -I/c/cvs/head/g
cl/
o -I../h -I../gcl-tk format.c | grep volatile
__asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st");
return re
tval;
__asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st");
return re
tval;
__asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st");
return re
tval;
__asm__ __volatile__ ("fistpll %0" : "=m" (retval) : "t" (x) : "st");
return r
etval;
__asm__ __volatile__ ("fistpll %0" : "=m" (retval) : "t" (x) : "st");
return r
etval;
__asm__ __volatile__ ("fistpll %0" : "=m" (retval) : "t" (x) : "st");
return r
etval;
extern volatile object fmt_stream;
extern volatile int ctl_origin;
extern volatile int ctl_index;
extern volatile int ctl_end;
extern object * volatile fmt_base;
extern volatile int fmt_index;
extern volatile int fmt_end;
extern jmp_bufp volatile fmt_jmp_bufp;
extern volatile int fmt_indents;
extern volatile object fmt_string;
extern object fSerror_set (volatile object x0);
fmt_justification(volatile bool,bool);
volatile format_parameter *fmt_paramp;
volatile object old_fmt_stream; volatile int old_ctl_origin;
volatile in
t old_ctl_index; volatile int old_ctl_end; object * volatile old_fmt_base;
volat
ile int old_fmt_index; volatile int old_fmt_end; jmp_bufp volatile
old_fmt_jmp_b
ufp; volatile int old_fmt_indents; volatile object old_fmt_string ; volatile
for
mat_parameter *old_fmt_paramp;
volatile object x;
volatile int i, j;
volatile object old_fmt_stream; volatile int old_ctl_origin;
volatile in
t old_ctl_index; volatile int old_ctl_end; object * volatile old_fmt_base;
volat
ile int old_fmt_index; volatile int old_fmt_end; jmp_bufp volatile
old_fmt_jmp_b
ufp; volatile int old_fmt_indents; volatile object old_fmt_string ; volatile
for
mat_parameter *old_fmt_paramp;
volatile object old_fmt_stream; volatile int old_ctl_origin;
volatile in
t old_ctl_index; volatile int old_ctl_end; object * volatile old_fmt_base;
volat
ile int old_fmt_index; volatile int old_fmt_end; jmp_bufp volatile
old_fmt_jmp_b
ufp; volatile int old_fmt_indents; volatile object old_fmt_string ; volatile
for
mat_parameter *old_fmt_paramp;
volatile int j;
volatile object l0;
volatile object old_fmt_stream; volatile int old_ctl_origin;
volatile in
t old_ctl_index; volatile int old_ctl_end; object * volatile old_fmt_base;
volat
ile int old_fmt_index; volatile int old_fmt_end; jmp_bufp volatile
old_fmt_jmp_b
ufp; volatile int old_fmt_indents; volatile object old_fmt_string ; volatile
for
mat_parameter *old_fmt_paramp;
fmt_justification(volatile bool colon, bool atsign)
volatile object old_fmt_stream; volatile int old_ctl_origin;
volatile in
t old_ctl_index; volatile int old_ctl_end; object * volatile old_fmt_base;
volat
ile int old_fmt_index; volatile int old_fmt_end; jmp_bufp volatile
old_fmt_jmp_b
ufp; volatile int old_fmt_indents; volatile object old_fmt_string ; volatile
for
mat_parameter *old_fmt_paramp;
volatile int i,j,n,j0;
volatile int special = 0;
volatile int spare_spaces=0, line_length=0;
volatile int nargs= fcall.argd;
volatile object x = ((object)((void *)0));
volatile object old_fmt_stream; volatile int old_ctl_origin;
volatile in
t old_ctl_index; volatile int old_ctl_end; object * volatile old_fmt_base;
volat
ile int old_fmt_index; volatile int old_fmt_end; jmp_bufp volatile
old_fmt_jmp_b
ufp; volatile int old_fmt_indents; volatile object old_fmt_string ; volatile
for
mat_parameter *old_fmt_paramp;
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp, (continued)
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp, Mike Thomas, 2004/03/22
- Re: [Gcl-devel] Windows GCL: setjmp/longjmp, Camm Maguire, 2004/03/23
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp, Mike Thomas, 2004/03/23
- Re: [Gcl-devel] Windows GCL: setjmp/longjmp, Camm Maguire, 2004/03/23
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp, Mike Thomas, 2004/03/23
- Re: [Gcl-devel] Windows GCL: setjmp/longjmp, Camm Maguire, 2004/03/24
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp, Mike Thomas, 2004/03/24
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp, Mike Thomas, 2004/03/25
- Re: [Gcl-devel] Windows GCL: setjmp/longjmp, Camm Maguire, 2004/03/25
- Re: [Gcl-devel] Windows GCL: setjmp/longjmp, Camm Maguire, 2004/03/21
- RE: [Gcl-devel] Windows GCL: setjmp/longjmp,
Mike Thomas <=
- Re: [Gcl-devel] Re: GCL produces wrong EOL on mingw, Camm Maguire, 2004/03/20
- Re: [Gcl-devel] Re: GCL produces wrong EOL on mingw, Mike Thomas, 2004/03/21
- Re: [Gcl-devel] Re: GCL produces wrong EOL on mingw, Vadim V. Zhytnikov, 2004/03/21
- RE: [Gcl-devel] Re: GCL produces wrong EOL on mingw, Mike Thomas, 2004/03/21
- Re: [Gcl-devel] Re: GCL produces wrong EOL on mingw, Mike Thomas, 2004/03/21