gcl-devel
[Top][All Lists]
Advanced

[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;






reply via email to

[Prev in Thread] Current Thread [Next in Thread]