On macOS, with both arm64: and x86_64

*  the gap executable loads libgap in SageMath 10.4, 10.5 and 10.6.
* crypting.so loads libgap in SageMath 10.4 and 10.6 but not 10.5.

On macOS x86_64
:
*  the gap executable loads libgap in SageMath 10.4, 10.5 and 10.6.
* crypting.so loads libgap in SageMath 10.4 and 10.5, but not 10.6.

- Marc

On Wednesday, January 29, 2025 at 5:25:18 PM UTC-6 dim...@gmail.com wrote:

> On Wed, Jan 29, 2025 at 4:35 PM Marc Culler <marc....@gmail.com> wrote:
> >
> > Looking back at the failed command I actually think this is a clang bug 
> which has nothing to do with GAP. The relevant option is:
> > -bundle_loader /private/var/tmp/sage-10.6-current/local/bin/gap
> > I think that option is broken in the latest clang.
> > I think that option means that the linker should not complain about a 
> missing symbol if that symbol is defined in the executable which loads the 
> library, or in any library loaded by that executable. In the case of 
> local/bin/gap I see that (of course) it loads libgap:
>
> Why does it load libgap? That's a bug in the gap's building by Sage I
> think (no idea how it happens though).
> Out of the Sage tree build has the following linkage; see - no libgap 
> linked.
>
> % otool -L gap
> gap:
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
> current version 1351.0.0)
> /opt/homebrew/opt/gmp/lib/libgmp.10.dylib (compatibility
> version 16.0.0, current version 16.0.0)
> /usr/lib/libz.1.dylib (compatibility version 1.0.0, current
> version 1.2.12)
> /opt/homebrew/opt/readline/lib/libreadline.8.dylib
> (compatibility version 8.2.0, current version 8.2.0)
>
> as opposed to Sage's build:
> % otool -L sage/local/bin/gap
> sage/local/bin/gap:
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
> current version 1351.0.0)
> /opt/homebrew/opt/gmp/lib/libgmp.10.dylib (compatibility
> version 16.0.0, current version 16.0.0)
> /usr/lib/libz.1.dylib (compatibility version 1.0.0, current
> version 1.2.12)
> /opt/homebrew/opt/readline/lib/libreadline.8.dylib
> (compatibility version 8.2.0, current version 8.2.0)
> /Volumes/dima/sage/local/lib/libgap.9.dylib (compatibility
> version 10.0.0, current version 10.0.0)
>
> Dima
>
> > LC_LOAD_DYLIB: /usr/lib/libSystem.B.dylib
> > LC_LOAD_DYLIB: @rpath/libgmp.10.dylib
> > LC_LOAD_DYLIB: @rpath/libz.1.dylib
> > LC_LOAD_DYLIB: @rpath/libreadline.8.dylib
> > LC_LOAD_DYLIB: @rpath/libgap.9.dylib
> > So the linker should not have complained about those missing symbols, 
> much less have raised an error. And, in fact, there was no error on my 
> Intel system with an older clang. However, I think that linking against 
> libgap accomplishes the same thing, It lets the linker know that the symbol 
> will exist when the crypting library is loaded. So I don't think that is a 
> bad workaround, and I think it will not be necessary after the next release 
> of XCode. GAP is doing nothing wrong, except to assume that the 
> -bundle-loader option will work as advertised.
> >
> > - Marc.
> >
> > On Wed, Jan 29, 2025 at 3:21 PM Dima Pasechnik <dim...@gmail.com> wrote:
> >>
> >>
> >>
> >> On 29 January 2025 14:43:17 GMT-06:00, Marc Culler <marc....@gmail.com> 
> wrote:
> >> >On Wed, Jan 29, 2025 at 1:33 PM Dima Pasechnik <dim...@gmail.com> 
> wrote:
> >> >
> >> >>
> >> >> libgap is not really involved here;
> >> >>
> >> >cypring's GAP kernel module
> >> >> (that's what's compiled here) can be loaded either in libgap, or in
> >> >> gap executable - and the latter
> >> >> isn't linked to libgap.
> >> >
> >> >
> >> >I am no expert in GAP. But the code in crypting.c references symbols 
> which
> >> >are defined in libgap. So to build crypting.so from crypting.o you 
> have to
> >> >link against libgap or something else which defines those same symbols.
> >>
> >> GAP does dynamic symbol resolution when it loads an extension module.
> >> On macOS, GAP does not link libgap; one can check with "otool -L".
> >>
> >> libgap does contain the internal symbols needed for kernel extension 
> modules available in GAP the executable, and is equally able to load a GAP 
> kernel extension module.
> >>
> >> If you link a GAP kernel module to libgap, and load it into GAP, the 
> latter will also load libgap, and the hell can potentially break loose.
> >> Even if it doesn't, an extra unneeded library would be loaded.
> >>
> >> crypting.so, the GAP kernel extension module, normally only links to a 
> macOS system library, and nothing else.
> >>
> >> Dima
> >>
> >> >After building with my patch, if I run the gap executable
> >> >$SAGE_ROOT/local/bin/gap then I am able to load the crypting module:
> >> >
> >> >%
> >> 
> >/Applications/SageMath-10-6.app/Contents/Frameworks/Sage.framework/Versions/Current/local/bin/gap
> >> > ┌───────┐ GAP 4.13.1 of 2024-06-11
> >> > │ GAP │ https://www.gap-system.org
> >> > └───────┘ Architecture: aarch64-apple-darwin24-default64-kv9
> >> > Configuration: gmp 6.3.0, GASMAN, readline
> >> > Loading the library and packages ...
> >> > Packages: AClib 1.3.2, Alnuth 3.2.1, AtlasRep 2.1.8, AutPGrp 1.11,
> >> > CRISP 1.4.6, Cryst 4.1.27, CrystCat 1.1.10, CTblLib 1.3.9,
> >> > FactInt 1.6.3, FGA 1.5.0, GAPDoc 1.6.7, IO 4.8.2,
> >> > IRREDSOL 1.4.4, LAGUNA 3.9.6, Polenta 1.3.10, Polycyclic 2.16,
> >> > PrimGrp 3.4.4, RadiRoot 2.9, ResClasses 4.7.3, SmallGrp 1.5.3,
> >> > Sophus 1.27, TomLib 1.2.11, TransGrp 3.6.5, utils 0.85
> >> > Try '??help' for help. See also '?copyright', '?cite' and '?authors'
> >> >gap> LoadPackage("crypting");
> >> 
> >────────────────────────────────────────────────────────────────────────────
> >> >Loading crypting 0.10.4 (Hashes and Crypto in GAP)
> >> >by Markus Pfeiffer (http://www.morphism.de/~markusp/).
> >> >maintained by:
> >> > Markus Pfeiffer (http://www.morphism.de/~markusp/) and
> >> > The GAP Team (sup...@gap-system.org).
> >> >Homepage: https://gap-packages.github.io/crypting/
> >> >Report issues at https://github.com/gap-packages/crypting/issues
> >> 
> >────────────────────────────────────────────────────────────────────────────
> >> >true
> >> >
> >> >That is all that I know about this.
> >> >
> >> >- Marc
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/sage-devel/bf223c11-08e5-4653-b6e5-c234c1e6a5b3n%40googlegroups.com.

Reply via email to