vlang / v

Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
MIT License
35.53k stars 2.14k forks source link

`vlang` 0.3.5+ broken on PowerPC (macOS, FreeBSD, Linux); while 0.3.4 builds fine #20507

Open barracuda156 opened 5 months ago

barracuda156 commented 5 months ago

Describe the bug

It is been a few months I compiler vlang last time on macOS ppc, and turns out it is broken now. The last version I built was 2023.15. 0.4.3 fails almost immediately on:

Using local tcc
Using local vc
make[1]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3'
The executable './thirdparty/tcc/tcc.exe' does not work.
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/cc/opt/local/bin/gcc-mp-13 -Os -arch ppc -std=gnu99 -w -o v1.exe /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c -lm -lpthread -Wl,-headerpad_max_install_names -latomic -L/opt/local/lib -lMacportsLegacySupport -arch ppc
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c: In function '__closure_alloc':
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16418:51: error: '__closure_thunk' undeclared (first use in this function); did you mean '__closure_alloc'?
16418 | #define _CLOSURE_SIZE (((2*sizeof(void*) > sizeof(__closure_thunk) ? 2*sizeof(void*) : sizeof(__closure_thunk)) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
      |                                                   ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16528:40: note: in expansion of macro '_CLOSURE_SIZE'
16528 |         int remaining = _V_page_size / _CLOSURE_SIZE;
      |                                        ^~~~~~~~~~~~~

Reproduction Steps

sudo port -v install vlang on a PowerPC system.

Expected Behavior

vlang should build, as it did earlier.

Current Behavior

--->  Building vlang
Executing:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3" && /usr/bin/make -j6 -w all local=true VFLAGS="-v -cg -showcc -show-c-output -prod -cc /opt/local/bin/gcc-mp-13 -cflags -Os" VC=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc CC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/cc/opt/local/bin/gcc-mp-13" CXX="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/cxx/opt/local/bin/g++-mp-13" OBJC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/objc/opt/local/bin/gcc-mp-13" OBJCXX="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/objcxx/opt/local/bin/g++-mp-13" FC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/fc/opt/local/bin/gfortran-mp-13" F77="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/f77/opt/local/bin/gfortran-mp-13" F90="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/f90/opt/local/bin/gfortran-mp-13" INSTALL="/usr/bin/install -c" 
make: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3'
Using local tcc
Using local vc
make[1]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3'
The executable './thirdparty/tcc/tcc.exe' does not work.
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/cc/opt/local/bin/gcc-mp-13 -Os -arch ppc -std=gnu99 -w -o v1.exe /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c -lm -lpthread -Wl,-headerpad_max_install_names -latomic -L/opt/local/lib -lMacportsLegacySupport -arch ppc
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c: In function '__closure_alloc':
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16418:51: error: '__closure_thunk' undeclared (first use in this function); did you mean '__closure_alloc'?
16418 | #define _CLOSURE_SIZE (((2*sizeof(void*) > sizeof(__closure_thunk) ? 2*sizeof(void*) : sizeof(__closure_thunk)) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
      |                                                   ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16528:40: note: in expansion of macro '_CLOSURE_SIZE'
16528 |         int remaining = _V_page_size / _CLOSURE_SIZE;
      |                                        ^~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16418:51: note: each undeclared identifier is reported only once for each function it appears in
16418 | #define _CLOSURE_SIZE (((2*sizeof(void*) > sizeof(__closure_thunk) ? 2*sizeof(void*) : sizeof(__closure_thunk)) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
      |                                                   ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16528:40: note: in expansion of macro '_CLOSURE_SIZE'
16528 |         int remaining = _V_page_size / _CLOSURE_SIZE;
      |                                        ^~~~~~~~~~~~~
In file included from /usr/include/string.h:148,
                 from /opt/local/include/LegacySupport/string.h:25,
                 from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:805:
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c: In function '__closure_init':
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16566:30: error: '__CLOSURE_GET_DATA_BYTES' undeclared (first use in this function); did you mean '__CLOSURE_GET_DATA'?
16566 |         memcpy(_closure_ptr, __CLOSURE_GET_DATA_BYTES, sizeof(__CLOSURE_GET_DATA_BYTES));
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16418:51: error: '__closure_thunk' undeclared (first use in this function); did you mean '__closure_init'?
16418 | #define _CLOSURE_SIZE (((2*sizeof(void*) > sizeof(__closure_thunk) ? 2*sizeof(void*) : sizeof(__closure_thunk)) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
      |                                                   ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16569:25: note: in expansion of macro '_CLOSURE_SIZE'
16569 |         _closure_ptr += _CLOSURE_SIZE;
      |                         ^~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c: In function '__closure_create':
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16418:51: error: '__closure_thunk' undeclared (first use in this function); did you mean '__closure_init'?
16418 | #define _CLOSURE_SIZE (((2*sizeof(void*) > sizeof(__closure_thunk) ? 2*sizeof(void*) : sizeof(__closure_thunk)) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
      |                                                   ^~~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc/v.c:16581:25: note: in expansion of macro '_CLOSURE_SIZE'
16581 |         _closure_ptr += _CLOSURE_SIZE;
      |                         ^~~~~~~~~~~~~
make: *** [all] Error 1
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3" && /usr/bin/make -j6 -w all local=true VFLAGS="-v -cg -showcc -show-c-output -prod -cc /opt/local/bin/gcc-mp-13 -cflags -Os" VC=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/v-0.4.3/vc CC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/cc/opt/local/bin/gcc-mp-13" CXX="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/cxx/opt/local/bin/g++-mp-13" OBJC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/objc/opt/local/bin/gcc-mp-13" OBJCXX="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/objcxx/opt/local/bin/g++-mp-13" FC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/fc/opt/local/bin/gfortran-mp-13" F77="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/f77/opt/local/bin/gfortran-mp-13" F90="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_vlang/vlang/work/compwrap/f90/opt/local/bin/gfortran-mp-13" INSTALL="/usr/bin/install -c" 
Exit code: 2

Possible Solution

No response

Additional Information/Context

gcc-13.2.0, Macports build environment

V version

0.4.3

Environment details (OS name and version, etc.)

macOS 10.6 / ppc

[!NOTE] You can use the πŸ‘ reaction to increase the issue's priority for developers.

Please note that only the πŸ‘ reaction to the issue itself counts as a vote. Other reactions and those to comments will not be taken into account.

barracuda156 commented 5 months ago

So, 0.3.4 apparently is good (at least no closure failure), while 0.3.5 already broken.

barracuda156 commented 5 months ago

Also broken on FreeBSD: https://www.mail-archive.com/freebsd-pkg-fallout@freebsd.org/msg2259602.html

barracuda156 commented 5 months ago

@felipensp @spytheman @yuyi98 Could someone please look into this? While specific support for powerpc has not been there, it worked as of 0.3.4, but does not work since 0.3.5 anymore.

felipensp commented 5 months ago

We'll take care of it. Thanks for reporting.

barracuda156 commented 5 months ago

@felipensp Great, thank you!