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