Greetings! "Chun Tian (binghe)" <binghe.l...@gmail.com> writes:
> Greetings, > > That's very interesting (that ARM64 macOS is more optimized in function calls > of > variable arguments), and it seems that GCL's source code becomes more > standard-compliant with these fixes. > > But I wonder if this issue can be avoided (for now) if we use MacPorts GCC 13 > (or 14) to compile GCL on ARM64 macOS? > Just to report that I tried this, and it does not work -- the unique calling convention appears to be defined in the kernel or perhaps libc, not a gcc issue. Take care, > On the other hand, MacPorts maintainers do not like that I included GCL > pre-release patches (~3000 lines since 2.7.1 release) as part of the port > definitions. Is it possible that you can make a new (intermediate) release > before the ARM64 macOS support is done? It would be even better if you can > port > the "libboot" patch and other necessary changes to GCL 2.6 branch. I think > it's > definitely not needed to support ARM64 macOS for GCL 2.6.x, but it would be > nice > if GCL 2.6.15 (if it's the last 2.6.x release) can run on macOS 15. > > --Chun > > On 12/05/25 04:51, Camm Maguire wrote: >> Greetings! >> >> This link spells out what is going on uniquely on this machine: >> >> https://cpufun.substack.com/p/what-about- >> >> Briefly, the regular arguments and the elipsis if any needs to be in the >> right location in the prototype for function calls through pointers to >> succeed. One can call a regular function through a variadic pointer if >> the prototype has at lease enough regular arguments in its prototype to >> match the fixed arguments of the function. >> >> The basic changes needed in gcl are >> >> 1) h/apply_n.h -- our 64 entry switch table for function calls needs >> expanding to ~ 64^2 entries at least in the naive approach. About 2Mb >> of code for this table(!) >> >> 2) The function prototypes in C files produced by the compiler need to >> be rewritten. Thankfully one accurate prototype can be used here with >> the fast-link mechanism falling back to the apply_n.h table in case of >> signature incompatibilities. >> >> I'm sure there is a better way -- no doubt there are many interpreters >> already ported to Mac/arm, and they all have some sort of generic >> funcall mechanism. >> >> Take care, >> >> "Chun Tian (binghe)" <binghe.l...@gmail.com> writes: >> >>> Greetings, >>> >>> On 01/05/25 12:54, Chun Tian (binghe) wrote: >>>> Greetings, >>>> >>>> I found another (minor) issue when building GCL in macOS. The system >>>> command >>>> "mktemp" of macOS doesn't support "-p" option (in "xbin/mktmp"). How to >>>> rewrite >>>> this script by using, e.g., "-t" instead: >>>> >>>> -p DIR, --tmpdir[=DIR] >>>> interpret TEMPLATE relative to DIR; if DIR is not specified, >>>> use >>>> $TMPDIR if set, else /tmp. With this option, TEMPLATE >>>> must not >>>> be an absolute name; unlike with -t, TEMPLATE may >>>> contain >>>> slashes, but mktemp creates only the final component >>>> >>>> -t interpret TEMPLATE as a single file name component, relative >>>> to a >>>> directory: $TMPDIR, if set; else the directory specified >>>> via -p; >>>> else /tmp [deprecated] >>>> >>> >>> I just figured out that I can install MacPorts' "coreutils" package, which >>> provides the GNU version of "mktemp". >>> >>> Furthermore, by using MacPorts' "legacy-support" package, the missing >>> "readlinkat" system call will be provided. (I will need to learn how to use >>> this >>> package.) >>> >>> Therefore no more blocking issues on supporting GCL 2.7 in earlier macOS >>> versions. You don't need to do anything here. >>> >>> In general, I think it's totally reasonable for GCL to depend on some other >>> GNU >>> tooling packages (on macOS), including GCC (if necessary). >>> >>> --Chun >>> >> > -- Camm Maguire c...@maguirefamily.org ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah