Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gambit 4.9.2 does not compile on linux any more #457

Open
ghost opened this issue Aug 31, 2024 · 5 comments
Open

gambit 4.9.2 does not compile on linux any more #457

ghost opened this issue Aug 31, 2024 · 5 comments
Labels

Comments

@ghost
Copy link

ghost commented Aug 31, 2024

I just tried to rebuild my toolchain and sumbld across this problem: gambitc 4.9.2 does not compile any more with latest gcc. 4gambit 4.7.9 still compiles fine.

The compilation breaks with these lines (and from there on a lot of following errors):

gcc -DLINUX -fcommon -I/home/nik/.cache/lambdanative/linux/include -L/home/nik/.cache/lambdanative/linux/lib -O3 -Wno-unused -Wno-write-strings -Wdisabled-optimization -fwrapv -fno-strict-aliasing -fno-trapping-math -fno-math-errno -fschedule-insns2 -fomit-frame-pointer -fPIC -fno-common -mpc64   -I"../include" -c -o "os_io.o" -I. -DHAVE_CONFIG_H -D___GAMBITDIR="\"/home/nik/.cache/lambdanative/linux\"" -D___GAMBITDIR_USERLIB="\"~/.gambit_userlib\"" -D___SYS_TYPE_CPU="\"x86_64\"" -D___SYS_TYPE_VENDOR="\"unknown\"" -D___SYS_TYPE_OS="\"linux-gnu\"" -D___CONFIGURE_COMMAND="\"./configure '--prefix=/home/nik/.cache/lambdanative/linux' 'CC=gcc -DLINUX -fcommon -I/home/nik/.cache/lambdanative/linux/include -L/home/nik/.cache/lambdanative/linux/lib' 'LDFLAGS=-L/home/nik/.cache/lambdanative/linux/lib' 'CPPFLAGS=-I/home/nik/.cache/lambdanative/linux/include' 'CPP=cpp' 'CXX=g++ -DLINUX -fcommon -I/home/nik/.cache/lambdanative/linux/include -L/home/nik/.cache/lambdanative/linux/lib'"\" -D___OBJ_EXTENSION="\".o\"" -D___EXE_EXTENSION="\"\"" -D___BAT_EXTENSION="\"\"" -D___PRIMAL os_io.c -D___LIBRARY
os_io.c:4649:1: warning: no semicolon at end of struct or union
 4649 | } ___device_tcp_addr;
      | ^
In file included from os_setup.h:8,
                 from os_io.c:14:
os_io.c: In function ‘try_connect’:
os_io.c:4701:35: error: passing argument 2 of ‘connect’ from incompatible pointer type [-Wincompatible-pointer-types]
 4701 |                                   &dev->addr,
      |                                   ^~~~~~~~~~
      |                                   |
      |                                   ___device_tcp_addr * {aka union ___device_tcp_addr_struct *}

gcc version:

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/14/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 14.2.0-4' --with-bugurl=file:///usr/share/doc/gcc-14/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr --with-gcc-major-version-only --program-suffix=-14 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/reproducible-path/gcc-14-14.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/reproducible-path/gcc-14-14.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=3
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.2.0 (Debian 14.2.0-4)
@mgorges
Copy link
Contributor

mgorges commented Aug 31, 2024

Is there an obvious patch in https://github.com/gambit/gambit we can backport? From a quick glance at https://github.com/gambit/gambit/blob/d2c2b46e69da1c5fc6ec8946bdc4e1e94479f961/lib/os_io.c#L4799 where this might be coming from this piece of code hasn't been changed for seven years (commit gambit/gambit@353eec7)

@mgorges mgorges added the bug label Aug 31, 2024
@ghost
Copy link
Author

ghost commented Sep 1, 2024

Please look again, the error is some lines above:

os_io.c:4649:1: warning: no semicolon at end of struct or union
 4649 | } ___device_tcp_addr;
      | ^

... but I don't have a clue jet :)

@ghost
Copy link
Author

ghost commented Sep 1, 2024

To clearify: gambit 4.9.2 compiles fine on it's own.

The first bug is introduced in the IPv6 patch from lambdanative:

+ struct sockaddr_in6 in6

it's missing the ; at the end of the line.

But this only solves the first error, others still persist:

In file included from os_setup.h:8,
                 from os_io.c:14:
os_io.c: In function ‘try_connect’:
os_io.c:4701:35: error: passing argument 2 of ‘connect’ from incompatible pointer type [-Wincompatible-pointer-types]
 4701 |                                   &dev->addr,
      |                                   ^~~~~~~~~~
      |                                   |
      |                                   ___device_tcp_addr * {aka union ___device_tcp_addr_struct *}
os.h:1775:32: note: in definition of macro ‘SOCKET_CALL_ERROR’
 1775 | #define SOCKET_CALL_ERROR(s) ((s) < 0)
      |                                ^
In file included from /usr/include/netinet/in.h:23,
                 from /usr/include/netdb.h:27,
                 from os.h:1384:
/usr/include/x86_64-linux-gnu/sys/socket.h:126:52: note: expected ‘const struct sockaddr *’ but argument is of type ‘___device_tcp_addr *’ {aka ‘union ___device_tcp_addr_struct *’}
  126 | extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
      |                                                    ^

@mgorges
Copy link
Contributor

mgorges commented Sep 1, 2024

I fixed the missing semicolon but don't know about the other piece. @0-8-15 could you please take a look as you introduced the IPv6 patch originally? Thanks!

@ghost
Copy link
Author

ghost commented Sep 2, 2024

I just removed both libraries/libgambit/fix_IPv6* and gambit 4.9.2 compiles fine again.

Please note: these libraries/libgambit/fix_IPv6* patches also break compiltion of android target (clang14), but later in the process with an error due to not finding a generated gambit_SOMELONGNUMBER.h file.

So with the fix_IOv6 patches removed gambit 4.9.2 compiles and works works as it should.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant