Status update on i386:

1. ./configure had passed

2. gprof was enabled by default again which lead to

Undefined symbols for architecture i386:
  "__mcleanup", referenced from:
      _fSmcleanup in libpre_gcl.a(gprof.o)
      _gprof_cleanup in libpre_gcl.a(gprof.o)
ld: symbol(s) not found for architecture i386

May we ban gprof on macOS completley?

3. Unfortunately system's gcc / ld is too old, so old that it doesn't support 
-no_pie this can be excluded by patch like this:

--- configure.in
+++ configure.in
@@ -341,7 +341,9 @@ case $use in
     386-macosx)
 #      assert_arg_to_cflags -Wno-error=implicit-function-declaration
        add_arg_to_cflags -Wno-incomplete-setjmp-declaration
-       assert_arg_to_ldflags -Wl,-no_pie
+       if test "$build_cpu" != "i386" ; then
+          assert_arg_to_ldflags -Wl,-no_pie
+       fi
        if test "$build_cpu" = "x86_64" ; then
            assert_arg_to_cflags -m64
            assert_arg_to_ldflags -m64

anyway, it leads to an error:

grep: raw_pre_gcl_map: No such file or directory
touch raw_pre_gcl_map
/usr/bin/gcc-4.2 -std=gnu99 -Wl,-headerpad_max_install_names -L/opt/local/lib 
-lMacportsLegacySupport -arch i386 -no-pie -m32 -Wl,-headerpad,56 -o 
raw_pre_gcl   -L.   -lpre_gcl `echo -lm  -lgmp -lreadline | sed -e 
's/-lncurses/ /'` -lc -lgclp
ld: absolute addressing (perhaps -mdynamic-no-pic) used in _Llower_case_p from 
./libpre_gcl.a(character.o) not allowed in slidable image. Use 
'-read_only_relocs suppress' to enable text relocs
collect2: ld returned 1 exit status
make[1]: *** [raw_pre_gcl_map] Error 1
make[1]: Leaving directory 
`/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/unixport'
make: *** [unixport/saved_pre_gcl] Error 2

4. So, I've decided to ban system's compiler. MacPorts uses clang by default 
which lead  to an issue:
# ld: illegal text-relocation to ___stack_chk_guard in /usr/lib/libSystem.dylib 
from _emsg in ...

Somewhere here I feel that ban clang as well right now isn't bad idea :)

5. So, it had compiled suceffuly by GCC-7 which lead to the issue:

grep: raw_pre_gcl_map: No such file or directory
touch raw_pre_gcl_map
/opt/local/bin/gcc-mp-7 -Wl,-headerpad_max_install_names -L/opt/local/lib 
-lMacportsLegacySupport -arch i386 -no-pie -Wl,-no_pie -m32 -Wl,-headerpad,56 
-o raw_pre_gcl   -L.   -lpre_gcl `echo -lm  -lgmp -lreadline | sed -e 
's/-lncurses/ /'` -lc -lgclp
cp init_raw.lsp foo
echo "(unless si::*quit-tags* (in-package \"USER\")(system:save-system 
\"saved_pre_gcl\"))" >>foo
ar x libpre_gcl.a $(ar t libpre_gcl.a |grep ^gcl_)
/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/unixport/raw_pre_gcl
 
/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/unixport/
 -libdir 
/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/
 < foo
/bin/sh: line 1: 25726 Illegal instruction     
/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/unixport/raw_pre_gcl
 
/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/unixport/
 -libdir 
/opt/local/var/macports/build/_Volumes_SharedFolders_Home_src_macports-ports_lang_gcl/gcl-devel/work/33a195d5cec2a7f8f563e11c0f1a3011ea0b30a0/gcl/
 < foo
make[1]: *** [saved_pre_gcl] Error 132

which probably the same that I've investigated in different thread.

--
wbr, Kirill

> On 23. Dec 2023, at 16:25, Camm Maguire <c...@maguirefamily.org> wrote:
> 
> I've committed some preliminary support for this.  Please note the
> register context code is highly non-portable and will take some love to
> get right on macosx.  This should be an optional feature.  These macros
> support disassembling code at the point of FPE errors.  When all is
> ready, you might try
> 
>> (load (compile-file "../lsp/gcl_fpe_test.lsp"))
> 
> Take care,
> 
> "Kirill A. Korinsky" <kir...@korins.ky> writes:
> 
>> i386
>> 
>> 1. it has missed AC_CHECK_SIZEOF(char,0) in configure.in
>> 
>> 2. it has missed FPE_RLST for the case non x86_64, see config.h and 
>> 386-macosx.h
> 
> --
> Camm Maguire                                      c...@maguirefamily.org
> ==========================================================================
> "The earth is but one country, and mankind its citizens."  --  Baha'u'llah

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to