Go patch committed: Update to current Go library

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Wed May 25 19:11:00 GMT 2011


Ian Lance Taylor <iant@google.com> writes:

> I just committed a patch to godump.c which I think should fix this
> issue.  Let me know if it doesn't.

There are several issues now:

* While I get

// var ___iob [59+1]___FILE

  now, there's still

var __lastbuf *_FILE

  left, with commented

// type _FILE struct { _cnt int32; _ptr *uint8; _base *uint8; _flag uint8; _file
 uint8; __orientation INVALID-bit-field; __ionolock INVALID-bit-field; __seekabl
e INVALID-bit-field; __extendedfd INVALID-bit-field; __xf_nocheck INVALID-bit-fi
eld; __filler INVALID-bit-field; }

   as before.

* The amd64 sysinfo.go contains several undefined types:

sysinfo.go:2886:53: error: use of undefined type '_fpchip_state'
sysinfo.go:2886:40: error: struct field type is incomplete
sysinfo.go:2886:53: error: use of undefined type '_fpchip_state'
sysinfo.go:2887:47: error: struct field type is incomplete
sysinfo.go:2892:32: error: use of undefined type '_fxsave_state'
sysinfo.go:2892:24: error: struct field type is incomplete

type _fpu struct { fp_reg_set struct { fpchip_state _fpchip_state; }; }
type _fpregset_t struct { fp_reg_set struct { fpchip_state _fpchip_state; }; }
type __kfpu_u struct { kfpu_fx _fxsave_state; }
type _kfpu_t struct { kfpu_u __kfpu_u; kfpu_status uint32; kfpu_xstatus uint32; }

  Both types are commented, due to the use of commented _upad128_t:

// type _upad128_t struct { _q INVALID-float-80; }

// type _fpchip_state struct { cw uint16; sw uint16; fctw uint8; __fx_rsvd uint8; fop uint16; rip uint64; rdp uint64; mxcsr uint32; mxcsr_mask uint32; st [7+1]struct { fpr_16 [4+1]uint16; }; xmm [15+1]_upad128_t; __fx_ign2 [5+1]_upad128_t; status uint32; xstatus uint32; }
// type _fxsave_state struct { fx_fcw uint16; fx_fsw uint16; fx_fctw uint16; fx_fop uint16; fx_rip uint64; fx_rdp uint64; fx_mxcsr uint32; fx_mxcsr_mask uint32; fx_st [7+1]struct { fpr_16 [4+1]uint16; }; fx_xmm [15+1]_upad128_t; __fx_ign2 [5+1]_upad128_t; }

  Unfortunately, this has as ripple effect and I need to omit several
  type declarations to make the problem go away:

+  grep -v '^type _fpu' | \
+  grep -v '^type _fpregset_t' | \
+  grep -v '^type _mcontext_t' | \
+  grep -v '^type _ucontext' | \
+  grep -v '^type __kfpu_u' | \
+  grep -v '^type _kfpu_t' | \

  <sys/types.h> has

typedef union {
        long double     _q;
        uint32_t        _l[4];
} upad128_t;

  I already have to provide a _upad128_t replacement for other uses, but
  it would really help to support this directly.

With those types and __lastbuf omitted from sysinfo.go, I can
successfully bootstrap on i386-pc-solaris2.1[01].  On Solaris 11/x86,
the libgo results are clean, on Solaris 10/x86 there are still 37
failures for the amd64 multilib which I still need to debug.

Thanks.
	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University



More information about the Gcc-patches mailing list