cargo build failed on gcc 13

Message:

Caused by:
  process didn't exit successfully: `/home/xuanwo/Code/apache/incubator-opendal/target/debug/build/ocaml-boxroot-sys-3082bb6216a3a01c/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-changed=vendor/boxroot/boxroot.c
  cargo:rerun-if-changed=vendor/boxroot/boxroot.h
  cargo:rerun-if-env-changed=OCAMLOPT
  cargo:rerun-if-env-changed=OCAML_WHERE_PATH
  TARGET = Some("x86_64-unknown-linux-gnu")
  OPT_LEVEL = Some("0")
  HOST = Some("x86_64-unknown-linux-gnu")
  cargo:rerun-if-env-changed=CC_x86_64-unknown-linux-gnu
  CC_x86_64-unknown-linux-gnu = None
  cargo:rerun-if-env-changed=CC_x86_64_unknown_linux_gnu
  CC_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=HOST_CC
  HOST_CC = None
  cargo:rerun-if-env-changed=CC
  CC = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
  CFLAGS_x86_64-unknown-linux-gnu = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
  CFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-gdwarf-4" "-fno-omit-frame-pointer" "-m64" "-I" "/usr/lib/ocaml" "-I" "vendor/boxroot/" "-Wall" "-Wextra" "-o" "/home/xuanwo/Code/apache/incubator-opendal/target/debug/build/ocaml-boxroot-sys-0cb0f83fda934b69/out/vendor/boxroot/boxroot.o" "-c" "vendor/boxroot/boxroot.c"
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘pool_remove’:
  cargo:warning=vendor/boxroot/boxroot.c:360:31: warning: unused variable ‘cl’ [-Wunused-variable]
  cargo:warning=  360 |   FOREACH_GLOBAL_RING(global, cl, {
  cargo:warning=      |                               ^~
  cargo:warning=vendor/boxroot/boxroot.c:164:13: note: in definition of macro ‘FOREACH_GLOBAL_RING’
  cargo:warning=  164 |       class cl = global_ring_classes[b__i - b__st];                     \
  cargo:warning=      |             ^~
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘free_all_chunks’:
  cargo:warning=vendor/boxroot/boxroot.c:375:31: warning: unused variable ‘cl’ [-Wunused-variable]
  cargo:warning=  375 |   FOREACH_GLOBAL_RING(global, cl, { *global = NULL; });
  cargo:warning=      |                               ^~
  cargo:warning=vendor/boxroot/boxroot.c:164:13: note: in definition of macro ‘FOREACH_GLOBAL_RING’
  cargo:warning=  164 |       class cl = global_ring_classes[b__i - b__st];                     \
  cargo:warning=      |             ^~
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘promotion_occupancy’:
  cargo:warning=vendor/boxroot/boxroot.c:521:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
  cargo:warning=  521 |   if (threshold <= LOW_COUNT_THRESHOLD) return LOW;
  cargo:warning=      |                 ^~
  cargo:warning=vendor/boxroot/boxroot.c:522:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
  cargo:warning=  522 |   if (threshold <= HIGH_COUNT_THRESHOLD) return HIGH;
  cargo:warning=      |                 ^~
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘pool_reclassify’:
  cargo:warning=vendor/boxroot/boxroot.c:544:3: warning: enumeration value ‘NO_CHANGE’ not handled in switch [-Wswitch]
  cargo:warning=  544 |   switch (occ) {
  cargo:warning=      |   ^~~~~~
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘scan_pool’:
  cargo:warning=vendor/boxroot/boxroot.c:821:14: warning: passing argument 1 of ‘action’ makes pointer from integer without a cast [-Wint-conversion]
  cargo:warning=  821 |       action(v, (value *)current);
  cargo:warning=      |              ^
  cargo:warning=      |              |
  cargo:warning=      |              value {aka long int}
  cargo:warning=vendor/boxroot/boxroot.c:821:14: note: expected ‘void *’ but argument is of type ‘value’ {aka ‘long int’}
  cargo:warning=vendor/boxroot/boxroot.c:821:17: warning: passing argument 2 of ‘action’ makes integer from pointer without a cast [-Wint-conversion]
  cargo:warning=  821 |       action(v, (value *)current);
  cargo:warning=      |                 ^~~~~~~~~~~~~~~~
  cargo:warning=      |                 |
  cargo:warning=      |                 value * {aka long int *}
  cargo:warning=vendor/boxroot/boxroot.c:821:17: note: expected ‘value’ {aka ‘long int’} but argument is of type ‘value *’ {aka ‘long int *’}
  cargo:warning=vendor/boxroot/boxroot.c:821:7: error: too few arguments to function ‘action’
  cargo:warning=  821 |       action(v, (value *)current);
  cargo:warning=      |       ^~~~~~
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘boxroot_setup’:
  cargo:warning=vendor/boxroot/boxroot.c:1043:31: warning: unused variable ‘cl’ [-Wunused-variable]
  cargo:warning= 1043 |   FOREACH_GLOBAL_RING(global, cl, { *global = NULL; });
  cargo:warning=      |                               ^~
  cargo:warning=vendor/boxroot/boxroot.c:164:13: note: in definition of macro ‘FOREACH_GLOBAL_RING’
  cargo:warning=  164 |       class cl = global_ring_classes[b__i - b__st];                     \
  cargo:warning=      |             ^~
  cargo:warning=vendor/boxroot/boxroot.c:1045:24: warning: assignment to ‘void (*)(void (*)(void *, value,  volatile value *))’ {aka ‘void (*)(void (*)(void *, long int,  volatile long int *))’} from incompatible pointer type ‘scan_roots_hook’ {aka ‘void (*)(void (*)(void *, long int,  volatile long int *), scanning_action_flags,  void *, caml_domain_state *)’} [-Wincompatible-pointer-types]
  cargo:warning= 1045 |   prev_scan_roots_hook = caml_scan_roots_hook;
  cargo:warning=      |                        ^
  cargo:warning=vendor/boxroot/boxroot.c:1049:24: warning: assignment to ‘scan_roots_hook’ {aka ‘void (*)(void (*)(void *, long int,  volatile long int *), scanning_action_flags,  void *, caml_domain_state *)’} from incompatible pointer type ‘void (*)(void (*)(void *, value,  volatile value *))’ {aka ‘void (*)(void (*)(void *, long int,  volatile long int *))’} [-Wincompatible-pointer-types]
  cargo:warning= 1049 |   caml_scan_roots_hook = scanning_callback;
  cargo:warning=      |                        ^
  cargo:warning=vendor/boxroot/boxroot.c: In function ‘boxroot_teardown’:
  cargo:warning=vendor/boxroot/boxroot.c:1061:24: warning: assignment to ‘scan_roots_hook’ {aka ‘void (*)(void (*)(void *, long int,  volatile long int *), scanning_action_flags,  void *, caml_domain_state *)’} from incompatible pointer type ‘void (*)(void (*)(void *, value,  volatile value *))’ {aka ‘void (*)(void (*)(void *, long int,  volatile long int *))’} [-Wincompatible-pointer-types]
  cargo:warning= 1061 |   caml_scan_roots_hook = prev_scan_roots_hook;
  cargo:warning=      |                        ^
  exit status: 1

  --- stderr


  error occurred: Command "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-gdwarf-4" "-fno-omit-frame-pointer" "-m64" "-I" "/usr/lib/ocaml" "-I" "vendor/boxroot/" "-Wall" "-Wextra" "-o" "/home/xuanwo/Code/apache/incubator-opendal/target/debug/build/ocaml-boxroot-sys-0cb0f83fda934b69/out/vendor/boxroot/boxroot.o" "-c" "vendor/boxroot/boxroot.c" with args "cc" did not execute successfully (status code exit status: 1).


warning: build failed, waiting for other jobs to finish...
cargo cca  13.80s user 1.43s system 649% cpu 2.343 total

Gcc version:

:( cc --version
cc (GCC) 13.2.1 20230730
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Most of them are just warning, maybe we can omit them?