Closed Bug 1571316 Opened 5 years ago Closed 5 years ago

curve25519_32.c:280: undefined reference to `PR_Assert' when building NSS 3.45 on armhf-linux

Categories

(NSS :: Build, defect, P1)

3.45
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: mbakke, Assigned: kjacobs)

Details

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36

Steps to reproduce:

I tried building NSS 3.45 on an armv7 machine using the Makefile, with the same arguments as has worked for previous releases.

Actual results:

The build fails to link libfreeblpriv3.so:

grep -v ';-' freebl_hash_vector.def | sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/freeblpriv.def
rm -f Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/libfreeblpriv3.so
gcc -shared -Wl,--gc-sections -Wl,-z,defs -Wl,-soname -Wl,libfreeblpriv3.so -Wl,-rpath=/gnu/store/5cqmmjd9a8h05l8y352z1pq4mlyd6w21-nss-3.45/lib/nss -Wl,--version-script,Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/freeblpriv.def -Wl,-Bsymbolic -o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/libfreeblpriv3.so Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/freeblver.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ldvector.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/sysrand.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/sha_fast.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/md2.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/md5.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/sha512.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/alghmac.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/rawhash.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/alg2268.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/arcfour.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/arcfive.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/crypto_primitives.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/blake2b.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/desblapi.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/des.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/drbg.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/chacha20poly1305.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/cts.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ctr.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/blinit.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/fipsfreebl.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/gcm.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/hmacct.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/rijndael.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/aeskeywrap.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/camellia.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/dh.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ec.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecdecode.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/pqg.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/dsa.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/rsa.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/rsapkcs.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/shvfy.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/tlsprfalg.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/seed.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/jpake.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mpprime.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mpmontg.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mplogic.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mpi.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mp_gf2m.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mpi_arm.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/mpcpucache.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecl.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecl_mult.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecl_gf.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_aff.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_jac.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_mont.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ec_naf.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_jm.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_256.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_384.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_521.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_256_32.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/ecp_25519.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/curve25519_32.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/Hacl_Chacha20.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/Hacl_Chacha20_Vec128.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/FStar.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/stubs.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/nsslowhash.o Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/Hacl_Poly1305_32.o -ldl -lc
ld: Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/curve25519_32.o: in function fe_frombytes_strict': /tmp/guix-build-nss-3.45.drv-0/nss-3.45/nss/lib/freebl/ecl/curve25519_32.c:280: undefined reference toPR_Assert'
ld: /tmp/guix-build-nss-3.45.drv-0/nss-3.45/nss/lib/freebl/ecl/curve25519_32.c:282: undefined reference to PR_Assert' ld: Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/curve25519_32.o: in functionfe_tobytes':
/tmp/guix-build-nss-3.45.drv-0/nss-3.45/nss/lib/freebl/ecl/curve25519_32.c:483: undefined reference to PR_Assert' ld: Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/curve25519_32.o: in functionfe_add':
/tmp/guix-build-nss-3.45.drv-0/nss-3.45/nss/lib/freebl/ecl/curve25519_32.c:562: undefined reference to PR_Assert' ld: /tmp/guix-build-nss-3.45.drv-0/nss-3.45/nss/lib/freebl/ecl/curve25519_32.c:563: undefined reference toPR_Assert'
ld: Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/curve25519_32.o:/tmp/guix-build-nss-3.45.drv-0/nss-3.45/nss/lib/freebl/ecl/curve25519_32.c:565: more undefined references to `PR_Assert' follow
collect2: error: ld returned 1 exit status
make[3]: *** [../../coreconf/rules.mk:291: Linux4.14_arm_gcc_glibc_PTH_DBG.OBJ/Linux_SINGLE_SHLIB/libfreeblpriv3.so] Error 1

Expected results:

The build succeeds.

Thank you for the report, I'll submit a patch for this shortly. In the meantime, build.sh can be used as a workaround.

Assignee: nobody → kjacobs.bugzilla
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true

The recent x25519 update added some assertions in curve25519_32.c. For these, we need to include a new header file in order to support Makefile builds on armv7.

Blocks: 1566872
Priority: -- → P1
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → 3.46
No longer blocks: 1566872
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: