Re: git: 96e53c0c65fa - main - archivers/libunrar: Support crc and crypto flags on aarch64
- Reply: Robert Clausecker : "Re: git: 96e53c0c65fa - main - archivers/libunrar: Support crc and crypto flags on aarch64"
- In reply to: Robert Clausecker : "Re: git: 96e53c0c65fa - main - archivers/libunrar: Support crc and crypto flags on aarch64"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 19 Feb 2025 11:06:20 UTC
On Wed, Feb 19, 2025 at 4:34 AM Robert Clausecker <fuz@fuz.su> wrote: > > Hi Jason, > > Am Wed, Feb 19, 2025 at 08:37:36AM +0000 schrieb Jason E. Hale: > > The branch main has been updated by jhale: > > > > URL: https://cgit.FreeBSD.org/ports/commit/?id=96e53c0c65faa691e18c0a5558d8f445e6010a70 > > > > commit 96e53c0c65faa691e18c0a5558d8f445e6010a70 > > Author: Jason E. Hale <jhale@FreeBSD.org> > > AuthorDate: 2025-02-19 07:09:07 +0000 > > Commit: Jason E. Hale <jhale@FreeBSD.org> > > CommitDate: 2025-02-19 08:36:56 +0000 > > > > archivers/libunrar: Support crc and crypto flags on aarch64 > > > > If CPU flags crc or crytpo are set, e.g. -march=armv8-a+crc+crypto, build > > would fail with missing headers because this was only implemented for > > glibc and Apple. > > --- > > archivers/libunrar/files/patch-crc.cpp | 22 ++++++++++++++++ > > archivers/libunrar/files/patch-os.hpp | 25 ++++++++++++++---- > > archivers/libunrar/files/patch-rijndael.cpp | 40 ++++++++++++++++++++++------- > > 3 files changed, 73 insertions(+), 14 deletions(-) > > > > diff --git a/archivers/libunrar/files/patch-crc.cpp b/archivers/libunrar/files/patch-crc.cpp > > new file mode 100644 > > index 000000000000..131c7dc158fb > > --- /dev/null > > +++ b/archivers/libunrar/files/patch-crc.cpp > > @@ -0,0 +1,22 @@ > > +--- crc.cpp.orig 2025-02-12 14:05:26 UTC > > ++++ crc.cpp > > +@@ -42,12 +42,18 @@ void InitCRC32(uint *CRCTab) > > + } > > + > > + #ifdef USE_NEON_CRC32 > > +- #ifdef _APPLE > > ++ #if defined(_APPLE) > > + // getauxval isn't available in OS X > > + uint Value=0; > > + size_t Size=sizeof(Value); > > + int RetCode=sysctlbyname("hw.optional.armv8_crc32",&Value,&Size,NULL,0); > > + CRC_Neon=RetCode==0 && Value!=0; > > ++ #elif defined(__FreeBSD__) > > ++ // getauxval isn't available on FreeBSD > > ++ uint64 Reg=READ_SPECIALREG(id_aa64isar0_el1); > > ++ if (ID_AA64ISAR0_CRC32_VAL(Reg) == ID_AA64ISAR0_CRC32_BASE) { > > ++ CRC_Neon=true; > > ++ } > > + #else > > + CRC_Neon=(getauxval(AT_HWCAP) & HWCAP_CRC32)!=0; > > + #endif > Note that we do have the same interface, the function is just spelled > elf_aux_info() and has a slightly different interface. > Thanks, I'm open to better, more canonical methods. I'm not an aarch64 expert by any means. Just trying to make this stuff work. :) > Yours, > Robert Clausecker > > -- > () ascii ribbon campaign - for an encoding-agnostic world > /\ - against html email - against proprietary attachments