[Buildroot] [PATCH 1/1] package/libnss: fix build on ARM big endian
Giulio Benetti
giulio.benetti at benettiengineering.com
Sun Aug 8 21:59:01 UTC 2021
Hello Thomas, Fabrice,
> Il giorno 8 ago 2021, alle ore 22:23, Thomas Petazzoni <thomas.petazzoni at bootlin.com> ha scritto:
>
> On Sat, 7 Aug 2021 23:32:54 +0200
> Fabrice Fontaine <fontaine.fabrice at gmail.com> wrote:
>
>> Fix the follownig build failure on ARM big endian raised since bump to
>> version 3.68 in commit 0a73b9b962421ce7a72c88e5f5bbd8849f21b041:
>>
>> Linux2.6_aarch64_aarch64_be-linux-gnu-gcc_glibc_PTH_64_DBG.OBJ/Linux_SINGLE_SHLIB/sha256-armv8.o: In function `SHA256_Compress_Native':
>> sha256-armv8.c:(.text.SHA256_Compress_Native+0x0): multiple definition of `SHA256_Compress_Native'
>> Linux2.6_aarch64_aarch64_be-linux-gnu-gcc_glibc_PTH_64_DBG.OBJ/Linux_SINGLE_SHLIB/sha512.o:sha512.c:(.text.SHA256_Compress_Native+0x0): first defined here
>> Linux2.6_aarch64_aarch64_be-linux-gnu-gcc_glibc_PTH_64_DBG.OBJ/Linux_SINGLE_SHLIB/sha256-armv8.o: In function `SHA256_Update_Native':
>> sha256-armv8.c:(.text.SHA256_Update_Native+0x0): multiple definition of `SHA256_Update_Native'
>> Linux2.6_aarch64_aarch64_be-linux-gnu-gcc_glibc_PTH_64_DBG.OBJ/Linux_SINGLE_SHLIB/sha512.o:sha512.c:(.text.SHA256_Update_Native+0x0): first defined here
>>
>> Fixes:
>> - http://autobuild.buildroot.org/results/237aba0c16a34fec1b0fe50fe08cace438eda1bf
>>
>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
>> ---
>> ...2.c-fix-SHA256-redefinition-on-ARM-b.patch | 47 +++++++++++++++++++
>> 1 file changed, 47 insertions(+)
>> create mode 100644 package/libnss/0001-lib-freebl-sha512.c-fix-SHA256-redefinition-on-ARM-b.patch
>
> I have applied to master. Giulio: I saw your comments, and we will
> definitely be interested in hearing upstream's feedback.
>
> However, what happens seems pretty clear: on Aarch64 (little endian or
> big endian), sha256-armv8.c gets compiled, and it defines a function
> called SHA256_Compress_Native(). This sha256-armv8.c code is included
> inside a USE_HW_SHA2 conditional, so it is only compiled in if
> USE_HW_SHA2 is defined.
>
> sha512.c, which is architecture-independent generic code, also
> implements a function called SHA256_Compress_Native(). It only defines
> it when !USE_HW_SHA2, to not conflict with architecture-optimized
> variants... but due to the bug it also defines it when !LITTLE_ENDIAN.
> This doesn't make sense because there is nothing that prevents the
> sha256-armv8.c code from being compiled in big-endian Aarch64, and this
> issue was introduced when someone optimized the sha256 code for x86, as
> pointed by Fabrice.
>
> So I believe Fabrice's solution is OK, but of course, upstream will
> confirm (or not).
Ok, so let’s wait for an upstream answer, in the meanwhile it builds fine and eventually if someone gives it a try on Aarch64 BE can file a bug for it or not.
Thank you
Best regards
Giulio
>
> Thanks!
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
More information about the buildroot
mailing list