sparc32 vs lib/mpi
I realize that very few people care about sparc32 these days,
but...
a) __clz_tab[] is defined (with identical contents) in
lib/mpi/mpi-bit.c and arch/sparc/lib/divdi3.S. Linker is unhappy, of course...
b) the same thing ends up using __udiv_qrnnd(), which simply
does not exist on sparc32. There's a Cthulhu-scaring cascade of ifdefs in lib/mpi/longlong.h, with several variants of udiv_qrnnd() for sparc. Unfortunately, it falls back on use of __udiv_qrnnd()... Note that arch/sparc/math-emu/sfp-util_32.h has a definition of udiv_qrnnd() which might match one of inline assembly variants in lib/mpi/longlong.h. Or not. BTW, what the hell is LONGLONG_STANDALONE?
Could somebody who might remember still remember that stuff
come up with comments? For now I'm disabling everything from INTEGRITY_SIGNATURE down to MPILIB on sparc32 cross-build, but it would be nice to get it at least somewhat sorted out...
Quoted 11 lines · Al Viro
I realize that very few people care about sparc32 these days, but...
a) __clz_tab[] is defined (with identical contents) inlib/mpi/mpi-bit.candarch/sparc/lib/divdi3.S. Linker is unhappy, of course...
b) the same thing ends up using__udiv_qrnnd(), which simply does not exist on sparc32. There's a Cthulhu-scaring cascade of ifdefs inlib/mpi/longlong.h, with several variants ofudiv_qrnnd()for sparc. Unfortunately, it falls back on use of__udiv_qrnnd()... Note thatarch/sparc/math-emu/sfp-util_32.hhas a definition ofudiv_qrnnd()which might match one of inline assembly variants in
Would need to test it and see how it works...
Quoted 2 lines
lib/mpi/longlong.h. Or not. BTW, what the hell isLONGLONG_STANDALONE?
i see that it comes from gnupg code as it is, but do not see any scripts which might define it.
Quoted 4 lines
Could somebody who might remember still remember that stuff come up with comments? For now I'm disabling everything from
INTEGRITY_SIGNATUREdown to MPILIB on sparc32 cross-build, but it would be nice to get it at least somewhat sorted out...
From: Al Viro <[email protected]>
Date: Sat, 21 Jan 2012 01:12:43 +0000
Quoted 13 lines
I realize that very few people care about sparc32 these days,
but...a) __clz_tab[] is defined (with identical contents) in
lib/mpi/mpi-bit.candarch/sparc/lib/divdi3.S. Linker is unhappy, of course...
b) the same thing ends up using__udiv_qrnnd(), which simply
does not exist on sparc32. There's a Cthulhu-scaring cascade of ifdefs inlib/mpi/longlong.h, with several variants ofudiv_qrnnd()for sparc. Unfortunately, it falls back on use of__udiv_qrnnd()... Note thatarch/sparc/math-emu/sfp-util_32.hhas a definition ofudiv_qrnnd()which might match one of inline assembly variants inlib/mpi/longlong.h. Or not. BTW, what the hell isLONGLONG_STANDALONE?
Quoted 4 lines
Could somebody who might remember still remember that stuff
come up with comments? For now I'm disabling everything fromINTEGRITY_SIGNATUREdown to MPILIB on sparc32 cross-build, but it would be nice to get it at least somewhat sorted out...
I'm taking a look at this.