On Mon, 2024-05-06 at 11:38:30 +0100, Slurm users wrote:
> Hello,
>
> I instructed port to use binutils from ports (version 2.40 native) instead
> of base:
>
> `/usr/local/bin/ld: unrecognised emulation mode: elf_aarch64`
>
> ```
> /usr/local/bin/ld -V |grep aarch64
> aarch64cloudabi
> aarch64cloudabib
> aarch64elf
> aarch64elf32
> aarch64elf32b
> aarch64elfb
> aarch64fbsd
> aarch64fbsdb
> aarch64haiku
> aarch64linux
> aarch64linux32
> aarch64linux32b
> aarch64linuxb
> aarch64pe
> ```
>
> Any clues about "elf_aarch64" and "aarch64elf" mismatch?
This looks (I admit, I haven't UTSL) like the emulation mode is constructed
from an "elf_" prefix and the architecture nickname - this works for "x86_64"
and "i386" since the "ld" for the Intel/AMD architectures indeed provides the
emulations "elf_x86_64" and "elf_i386" while for 64-bit ARM "elf" is used as
a suffix. So this is mainly an ld inconsistency, I'm afraid (which might be
fixed by adding alias names - but the hopes are pretty low).
Non-emulated builds shouldn't be affected by the issue you found, right?
(There is Slurm built for ARM64 Debian. Maybe they have patched the source?)
Two ways to get this fixed I can imagine:
(a) find the place where the emulation mode name is combined, and teach that
of possible exceptions to the implemented rule (there may be more than just
ARM - what about RISC-V, PPC64*, ...?)
(b) interrupt the build in a reasonable place, find all occurreences of the
wrong emulation string, and replace it with its existing counterpart
There should be no doubt which one I'd prefer - I'll go and read TS ;)
Cheers,
Steffen
--
Steffen Grunewald, Cluster Administrator
Max Planck Institute for Gravitational Physics (Albert Einstein Institute)
Am Mühlenberg 1 * D-14476 Potsdam-Golm * Germany
~~~
Fon:
+49-331-567 7274
Mail: steffen.grunewald(at)
aei.mpg.de
~~~