Skip to content

MacOS arm64 build

Build from scratch on latest master (to be precise, on commit 78c2a5ae) on MacOS/arm64 completes successfully, but ECL start with errors:

% ./ecl

;;; Unhandled lisp initialization error
;;; Message:
UNDEFINED-FUNCTION
;;; Arguments:
(:NAME SEGMENTATION-VIOLATION)
Internal or unrecoverable error in:

Lisp initialization error.

  [2: No such file or directory]

;;; ECL C Backtrace
;;; 0   libecl.23.9.9.dylib                 0x0000000100f5c150 _ecl_dump_c_backtrace + 44
;;; 1   libecl.23.9.9.dylib                 0x0000000100f45508 ecl_internal_error + 108
;;; 2   libecl.23.9.9.dylib                 0x0000000100f468f0 cl_make_string + 0
;;; 3   libecl.23.9.9.dylib                 0x0000000100f1ea80 ecl_apply_from_stack_frame + 272
;;; 4   libecl.23.9.9.dylib                 0x0000000100f1ebc4 cl_funcall + 148
;;; 5   libecl.23.9.9.dylib                 0x0000000100f45b48 cl_error + 128
;;; 6   libecl.23.9.9.dylib                 0x0000000100f460c4 FEprint_not_readable + 0
;;; 7   libecl.23.9.9.dylib                 0x0000000100f1f138 _ecl_bytecodes_dispatch_vararg + 0
;;; 8   libecl.23.9.9.dylib                 0x0000000100f740d4 sigsegv_handler + 256
;;; 9   libsystem_platform.dylib            0x000000019c503584 _sigtramp + 56
;;; 10  libecl.23.9.9.dylib                 0x0000000100e3b770 cl_every + 232
;;; 11  ???                                 0x0000000100000000 0x0 + 4294967296
zsh: abort      ./ecl

Binary search gave this commit:

dc286efb

as a root of a problem.

Fix is easy, one has to append CFLAGS="-DECL_C_COMPATIBLE_VARIADIC_DISPATCH" to ./configure script and then ECL compiles and runs successfully.

I did not find how to add this flag as a default to combination of OS/achitecture.

     VERSION "23.9.9"
      VCS-ID "be57e1b387b1839923702dd336484e4aa0748407"
          OS "Darwin"
  OS-VERSION "23.4.0"
MACHINE-TYPE "arm64"
    FEATURES (:QUICKLISP :ASDF-PACKAGE-SYSTEM :ASDF3.1 :ASDF3 :ASDF2 :ASDF
              :OS-MACOSX :OS-UNIX :NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :WALKER
              :CDR-6 :CDR-1 :CDR-5 :DARWIN :FORMATTER :CDR-7 :ECL-WEAK-HASH
              :LITTLE-ENDIAN :LONG-LONG :UINT64-T :UINT32-T :UINT16-T
              :COMPLEX-FLOAT :LONG-FLOAT :UNICODE :DFFI :CLOS-STREAMS
              :CMU-FORMAT :UNIX :ECL-PDE :DLOPEN :CLOS :THREADS :BOEHM-GC
              :ANSI-CL :COMMON-LISP :FLOATING-POINT-EXCEPTIONS
              :IEEE-FLOATING-POINT :PACKAGE-LOCAL-NICKNAMES :CDR-14
              :PREFIXED-API :FFI :AARCH64 :COMMON :ECL)

Commit hash differs, same on latest master.