nmu cjs_140.0-1 . armhf . unstable . -m "Rebuild against current libmozjs-140-0 to drop bogus versioned __aeabi_* references"
cinnamon 6.6.8-2 currently FTBFS on armhf while linking against libcjs:
/usr/bin/arm-linux-gnueabihf-ld.bfd: /usr/lib/arm-linux-gnueabihf/libcjs.so: undefined reference to `__aeabi_uldivmod@mozjs_140'
/usr/bin/arm-linux-gnueabihf-ld.bfd: /usr/lib/arm-linux-gnueabihf/libcjs.so: undefined reference to `__aeabi_uidivmod@mozjs_140'
collect2: error: ld returned 1 exit status
FAILED: [code=1] src/cinnamon
FAILED: [code=1] src/st/St-1.0.gir
Full log:
https://buildd.debian.org/status/fetch.php?pkg=cinnamon&arch=armhf&ver=6.6.8-2&stamp=1784499773&raw=0
The bug is not in cinnamon. libmozjs-140.so 140.10.0-1 exported the libgcc ARM EABI helper routines as WEAK symbols carrying the mozjs_140 version tag:
$ readelf -W --dyn-syms libmozjs-140.so.140.10.0 | grep aeabi
1077: 00b37b88 36 FUNC WEAK DEFAULT 12 __aeabi_uldivmod@@mozjs_140
1319: 00b37bd0 28 FUNC WEAK DEFAULT 12 __aeabi_uidivmod@@mozjs_140
2444: 00b37bac 36 FUNC WEAK DEFAULT 12 __aeabi_ldivmod@@mozjs_140
2690: 00b37bec 24 FUNC WEAK DEFAULT 12 __aeabi_idivmod@@mozjs_140
cjs 140.0-1 was built on armhf against exactly that version (confirmed by its own build log, which shows libmozjs-140-0_140.10.0-1_armhf.deb being installed), so it picked up *versioned* undefined references:
$ readelf -W --dyn-syms libcjs.so.0.0.0 | grep aeabi
250: UND __aeabi_uidivmod@mozjs_140
1037: UND __aeabi_uldivmod@mozjs_140
unstable now has libmozjs-140-0 140.12.0-1, which no longer exports them (only __aeabi_unwind_cpp_pr0/pr1 and __aeabi_atexit remain, all UND). Any package linking against libcjs on armhf therefore fails to link.
Rebuilding cjs against the current mozjs makes those helpers resolve from libgcc as ordinary unversioned symbols, which fixes the problem for good.
Once cjs has been rebuilt, cinnamon needs a give-back:
gb cinnamon_6.6.8-2 . armhf . unstable