Bug#702859: Conflicting declarations of variable scheme_thread_locals

2016-05-03 Thread Michael Tautschnig
Hi,

On Mon, May 02, 2016 at 20:27:11 -0300, David Bremner wrote:
> Michael Tautschnig  writes:
> 
> > While building the package using our research compiler infrastructure the
> > following type inconsistencies became apparent: when linking racket3m
> >
> > gcc -o racket3m  gc2/main.o libracket3m.a ...
> >
> > the variable scheme_thread_locals takes different types within main.o and 
> > gmp.o
> > (part of libracket3m.a), because gmp.o was compiled without MZ_PRECISE_GC 
> > being
> > defined. Thus the keyex field is contained in struct 
> > Scheme_Inclhash_Object, but
> > not in struct Scheme_Object. These differences may result in undefined
> > behaviour.
> 
> Can you verify this problem still occurs with racket 6.5 (just uploaded
> to unstable)? Or provide a test case?
> 

Having built 6.5-1 the following is (still) reported:

cd ..; gcc -o racket3m  gc2/main.o libracket3m.a -Wl,-z,relro -pthread -ldl -lm 
 -ldl -lm -rdynamic -lffi 
file 
/srv/jenkins-slave/workspace/sid-goto-cc-racket/racket-6.5/src/racket/src/../include/schthread.h
 line 520: 
reason for conflict at #this.toplevels_ht_->iso: number of members is different 
(1/2)

struct Scheme_Inclhash_Object {
  struct Scheme_Object so;
}
struct Scheme_Inclhash_Object {
  struct Scheme_Object so;
  signed short int keyex;
}
error: conflicting types for variable `scheme_thread_locals'
old definition in module `main' file /racket-6.5/src/racket/gc2/../src/salloc.c 
line 70
new definition in module `gmp' file 
/racket-6.5/src/racket/src/../include/schthread.h line 520

As said earlier, it seems MZ_PRECISE_GC isn't always set on the compiler command
line.

Best,
Michael



signature.asc
Description: PGP signature


Bug#702859: Conflicting declarations of variable scheme_thread_locals

2016-05-02 Thread David Bremner
Michael Tautschnig  writes:

> While building the package using our research compiler infrastructure the
> following type inconsistencies became apparent: when linking racket3m
>
> gcc -o racket3m  gc2/main.o libracket3m.a ...
>
> the variable scheme_thread_locals takes different types within main.o and 
> gmp.o
> (part of libracket3m.a), because gmp.o was compiled without MZ_PRECISE_GC 
> being
> defined. Thus the keyex field is contained in struct Scheme_Inclhash_Object, 
> but
> not in struct Scheme_Object. These differences may result in undefined
> behaviour.

Can you verify this problem still occurs with racket 6.5 (just uploaded
to unstable)? Or provide a test case?



Bug#702859: Conflicting declarations of variable scheme_thread_locals

2013-03-12 Thread Michael Tautschnig
Package: racket
Version: 5.2.1+g6~92c8784+dfsg2-2+deb7u1
Usertags: goto-cc

While building the package using our research compiler infrastructure the
following type inconsistencies became apparent: when linking racket3m

gcc -o racket3m  gc2/main.o libracket3m.a ...

the variable scheme_thread_locals takes different types within main.o and gmp.o
(part of libracket3m.a), because gmp.o was compiled without MZ_PRECISE_GC being
defined. Thus the keyex field is contained in struct Scheme_Inclhash_Object, but
not in struct Scheme_Object. These differences may result in undefined
behaviour.

Best,
Michael



pgpucI3ezyMZc.pgp
Description: PGP signature