After this patch over the local root 1bb1897c367d6cd116de244c264fb6d1a40dbb0d I 
was able to move a bit forward on macOS 13 arm63 which is cross compiling to 
x86_64 via -arch x86_64 and --host/--build/--target option. Now it fails as:

> (lldb) r
> Process 36079 launched: '/Users/catap/src/gcl/gcl/unixport/saved_pre_gcl' 
> (x86_64)
> warning: libobjc.A.dylib is being read from process memory. This indicates 
> that LLDB could not read from the host's in-memory shared cache. This will 
> likely reduce debugging performance.
> 
> Process 36079 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
> (code=1, address=0x1f5c6c000)
>     frame #0: 0x0000000c06aeeedd 
> dyld`dyld3::MachOFile::trieWalk(Diagnostics&, unsigned char const*, unsigned 
> char const*, char const*) + 185
> dyld`dyld3::MachOFile::trieWalk:
> ->  0xc06aeeedd <+185>: movzbl (%r13), %ebx
>     0xc06aeeee2 <+190>: testb  %bl, %bl
>     0xc06aeeee4 <+192>: jns    0xc06aeef1b               ; <+247>
>     0xc06aeeee6 <+194>: movq   %r13, -0x248(%rbp)
> Target 0: (saved_pre_gcl) stopped.
> (lldb) bt
> * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
> (code=1, address=0x1f5c6c000)
>   * frame #0: 0x0000000c06aeeedd 
> dyld`dyld3::MachOFile::trieWalk(Diagnostics&, unsigned char const*, unsigned 
> char const*, char const*) + 185
>     frame #1: 0x0000000c06ab9672 
> dyld`dyld4::Loader::hasExportedSymbol(Diagnostics&, dyld4::RuntimeState&, 
> char const*, dyld4::Loader::ExportedSymbolMode, 
> dyld4::Loader::ResolvedSymbol*, dyld3::Array<dyld4::Loader const*>*) const + 
> 312
>     frame #2: 0x0000000c06ab950f dyld`invocation function for block in 
> dyld4::Loader::resolveSymbol(Diagnostics&, dyld4::RuntimeState&, int, char 
> const*, bool, bool, void (unsigned int, unsigned int, 
> dyld4::Loader::ResolvedSymbol const&) block_pointer, bool) const + 123
>     frame #3: 0x0000000c06aa96d9 
> dyld`dyld4::RuntimeState::withLoadersReadLock(void () block_pointer) + 41
>     frame #4: 0x0000000c06ab9106 
> dyld`dyld4::Loader::resolveSymbol(Diagnostics&, dyld4::RuntimeState&, int, 
> char const*, bool, bool, void (unsigned int, unsigned int, 
> dyld4::Loader::ResolvedSymbol const&) block_pointer, bool) const + 730
>     frame #5: 0x0000000c06abdfd9 dyld`invocation function for block in 
> dyld4::JustInTimeLoader::forEachBindTarget(Diagnostics&, 
> dyld4::RuntimeState&, void (unsigned int, unsigned int, 
> dyld4::Loader::ResolvedSymbol const&) block_pointer, bool, void 
> (dyld4::Loader::ResolvedSymbol const&, bool&) block_pointer, void 
> (dyld4::Loader::ResolvedSymbol const&, bool&) block_pointer) const + 89
>     frame #6: 0x0000000c06af48c1 dyld`invocation function for block in 
> mach_o::Fixups::forEachBindTarget_Opcodes(Diagnostics&, bool, void 
> (mach_o::Fixups::BindTargetInfo const&, bool&) block_pointer, void 
> (mach_o::Fixups::BindTargetInfo const&, bool&) block_pointer) const + 41
>     frame #7: 0x0000000c06af3dd3 
> dyld`mach_o::Fixups::forEachBind_OpcodesRegular(Diagnostics&, void (char 
> const*, bool, bool, unsigned int, int, unsigned int, unsigned int, unsigned 
> long long, unsigned char, char const*, bool, bool, unsigned long long, bool, 
> bool&) block_pointer) const + 651
>     frame #8: 0x0000000c06af38f1 
> dyld`mach_o::Fixups::forEachBindUnified_Opcodes(Diagnostics&, bool, void 
> (unsigned long long, unsigned int, mach_o::Fixups::BindTargetInfo const&, 
> bool&) block_pointer, void (unsigned long long, unsigned int, 
> mach_o::Fixups::BindTargetInfo const&, bool&) block_pointer) const + 193
>     frame #9: 0x0000000c06af3312 
> dyld`mach_o::Fixups::forEachBindTarget_Opcodes(Diagnostics&, bool, void 
> (mach_o::Fixups::BindTargetInfo const&, bool&) block_pointer, void 
> (mach_o::Fixups::BindTargetInfo const&, bool&) block_pointer) const + 184
>     frame #10: 0x0000000c06abdf54 dyld`invocation function for block in 
> dyld4::JustInTimeLoader::forEachBindTarget(Diagnostics&, 
> dyld4::RuntimeState&, void (unsigned int, unsigned int, 
> dyld4::Loader::ResolvedSymbol const&) block_pointer, bool, void 
> (dyld4::Loader::ResolvedSymbol const&, bool&) block_pointer, void 
> (dyld4::Loader::ResolvedSymbol const&, bool&) block_pointer) const + 267
>     frame #11: 0x0000000c06af6428 
> dyld`dyld3::MachOAnalyzer::withVMLayout(Diagnostics&, void (mach_o::Layout 
> const&) block_pointer) const + 830
>     frame #12: 0x0000000c06abd203 
> dyld`dyld4::JustInTimeLoader::applyFixups(Diagnostics&, dyld4::RuntimeState&, 
> dyld4::DyldCacheDataConstLazyScopedWriter&, bool) const + 503
>     frame #13: 0x0000000c06ada59d dyld`dyld4::APIs::dlopen_from(char const*, 
> int, void*)::$_1::operator()() const + 873
>     frame #14: 0x0000000c06ad5370 dyld`dyld4::APIs::dlopen_from(char const*, 
> int, void*) + 810
>     frame #15: 0x000000010000c69c saved_pre_gcl`init_boot at main.c:433:11
>     frame #16: 0x000000010000cda2 saved_pre_gcl`main(argc=1, 
> argv=0x0000000d0ab9b8b8, envp=0x0000000d0ab9b8c8) at main.c:640:21
>     frame #17: 0x0000000c06aa241f dyld`start + 1903
> (lldb) up 15
> frame #15: 0x000000010000c69c saved_pre_gcl`init_boot at main.c:433:11
>    430          sSAoptimize_maximum_pagesA->s.s_dbind=Cnil;
>    431          z=alloca(n);
>    432          snprintf(z,n,"%-*.*s%s",(int)m,(int)m,d,s);
> -> 433          if (!(v=dlopen(z,RTLD_LAZY|RTLD_GLOBAL)))
>    434            printf("%s\n",dlerror());
>    435          if (!(q=dlsym(v,"gcl_init_boot")))
>    436            printf("%s\n",dlerror());
> (lldb) p z
> (char *) 0x0000000d0ab9b4c0 "/Users/catap/src/gcl/gcl/unixport/libboot.so"
> (lldb)


Interesting fact: raw_pre_gcl loads it without any issue.

--
wbr, Kirill

> On 24. Dec 2023, at 23:52, Kirill A. Korinsky <kir...@korins.ky> wrote:
> 
> Hello,
> 
>> On 24. Dec 2023, at 15:17, Camm Maguire <c...@maguirefamily.org 
>> <mailto:c...@maguirefamily.org>> wrote:
>> 
>> "Kirill A. Korinsky" <kir...@korins.ky <mailto:kir...@korins.ky>> writes:
>> 
>>> This build was made with local root
>>> 
>>> It contains patches in addition to posix_spawn which allows to build it on 
>>> macOS 13 arm64 under rosetta:
>>> 
>>> --- unixport/makefile
>>> +++ unixport/makefile
>>> @@ -68,7 +68,7 @@ $(LSPDIR)/auto_new.lsp: $(LSPDIR)/auto.lsp
>>> echo "(AUTOLOAD 'init-readline '|readline|)" >>$@
>>> 
>>> libboot.so: ../o/boot.o
>>> - $(CC) -shared -Wl,-undefined -Wl,dynamic_lookup $< -o $@
>>> + $(CC) $(CFLAGS) -shared -Wl,-undefined -Wl,dynamic_lookup $< -o $@
>>> 
>>> init_raw.lsp: init_raw.lsp.in
>>> 
>>> @@ -84,7 +84,7 @@ boot.h: boot.ini
>>> rm $*.c
>>> 
>>> $(DPP): ../bin/dpp.c
>>> - ${CC} ${DEFS} -o $@ $<
>>> + ${CC} ${CFLAGS} ${DEFS} -o $@ $<
>>> 
>>> new_init.c: ${INI_FILES}
>>> echo '#include "make-init.h"' > $@
>>> 
>>> Can you consider to add it to the upstream?
>>> 
>> 
>> This is going in for you shortly.
> 
> And I've discovered one more missed place:
> 
> diff --git a/gcl/makefile b/gcl/makefile
> index 79301325a..a3c8cc12b 100644
> --- a/gcl/makefile
> +++ b/gcl/makefile
> @@ -391,7 +391,7 @@ $(HDIR)new_decl.h:
> 
>  $(HDIR)mcompdefs.h: $(HDIR)compdefs.h $(HDIR)new_decl.h
>         $(AWK) 'BEGIN {print "#include \"include.h\"";print "#include 
> \"page.h\"";print "---"} {a=$$1;gsub("\\.\\.\\.","",a);print "\"#define " $$1 
> "\" " a}' $< |\
> -       $(CC) -E -P -I./$(HDIR) - |\
> +       $(CC) $(CFLAGS) -E -P -I./$(HDIR) - |\
>         $(AWK) '/^\-\-\-$$/ {i=1;next} {if (!i) next} {gsub("\"","");print}' 
> >$@
> 
>  $(HDIR)cmpinclude.h: $(HDIR)mcompdefs.h $(CMPINCLUDE_FILES) $(HDIR)config.h 
> $(HDIR)cmponly_last.h
> 
> --
> wbr, Kirill
> 
> 

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to