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.