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 <[email protected]> wrote:
>
> Hello,
>
>> On 24. Dec 2023, at 15:17, Camm Maguire <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> "Kirill A. Korinsky" <[email protected] <mailto:[email protected]>> 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
>
>
signature.asc
Description: Message signed with OpenPGP
