https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68931

--- Comment #2 from Daniel Dickinson <gccbugzilla at daniel dot thecshore.com> 
---
Sorry, the patch wasn't intended for inclusion as is; it is a patch I made for
OpenWrt (which has a configuration option CONFIG_USE_MUSL that is available to
the top-level Makefile).

The error that occurs when using musl combined with gccgo is:

sysinfo.go:6308:15: error: use of undefined type '_off64_t'
 type Offset_t _off64_t
               ^
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:360:11:
error: reference to undefined name '_loff_t'
   lroff = _loff_t(*roff)
           ^
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:366:11:
error: reference to undefined name '_loff_t'
   lwoff = _loff_t(*woff)
           ^
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
  var lroff _loff_t
            ^
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/syscall/libcall_linux.go:357:12:
error: use of undefined type '_loff_t'
libtool: compile: 
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0-final/./gcc/gccgo
-B/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0-final/./gcc/
-B/home/daniel/Build/openwrt/trunk/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/mips-openwrt-linux-musl/bin/
-B/home/daniel/Build/openwrt/trunk/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/mips-openwrt-linux-musl/lib/
-isystem
/home/daniel/Build/openwrt/trunk/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/mips-openwrt-linux-musl/include
-isystem
/home/daniel/Build/openwrt/trunk/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/mips-openwrt-linux-musl/sys-include
-O2 -g -DCONFIG_USE_MUSL -I . -c -fgo-pkgpath=math/cmplx
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/abs.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/asin.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/conj.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/exp.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/isinf.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/isnan.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/log.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/phase.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/polar.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/pow.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/rect.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/sin.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/sqrt.go
/home/daniel/Build/openwrt/trunk/openwrt/build_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/gcc-5.2.0/libgo/go/math/cmplx/tan.go
-o math/cmplx.o >/dev/null 2>&1
Makefile:5786: recipe for target 'syscall.lo' failed
make[7]: *** [syscall.lo] Error 1
make[7]: *** Waiting for unfinished jobs....




Basically the problem is that musl defines some of the required types as
#defines, however the gccgo magic that turns C types into Go types requires
that they be typedefs.  (the CONFIG_USE_MUSL is just there so that make can set
-DCONFIG_USE_MUSL for use in mksysinfo.sh;  it is in mksysinfo.sh that we must,
for musl, undefine the #define'd types and replace them with typedefs).

The patch was more for informational purposes, only I forgot to explain the
full story.

Reply via email to