On Wed, Jun 11, 2014 at 6:57 AM, Rainer Orth <r...@cebitec.uni-bielefeld.de> wrote: > > Ok, I'll have a look unless some other solution can be found.
There are other, less efficient, ways that this could be compiled, but a common symbol seems like the right solution. Basically, every type descriptor now points to a zero value for the type. The zero value in Go is always the all-bytes-zero value. So we can have every type descriptor point to the same block of memory, as long as we can ensure that that memory is large enough. Using a common symbol does exactly what we want: the linker sees all the go$zerovalue symbols, and sets the final one to the largest go$zerovalue that it sees. I can't think of any other solution that doesn't involve some sort of runtime initialization. I do wonder what gfortran does on Solaris. Ian