** Description changed: - [Description] - The `libm.a` static library on i386 architecture lacks the math function `fmod`: + [Impact] + The `libm.a` static library on i386 architecture lacks the math function `fmod`. This will break static compilation in scenarios where programs expect the function to exist. (mantic-i386)$ readelf --syms --wide /usr/lib/i386-linux-gnu/libm.a | grep fmod File: /usr/lib/i386-linux-gnu/libm.a(w_fmodl_compat.o) File: /usr/lib/i386-linux-gnu/libm.a(w_fmod_compat.o) File: /usr/lib/i386-linux-gnu/libm.a(w_fmodf_compat.o) File: /usr/lib/i386-linux-gnu/libm.a(e_fmodl.o) 2: 00000000 23 FUNC GLOBAL DEFAULT 1 __ieee754_fmodl File: /usr/lib/i386-linux-gnu/libm.a(w_fmodl.o) 4: 00000000 148 FUNC GLOBAL DEFAULT 2 __fmodl 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodl 9: 00000000 148 FUNC WEAK DEFAULT 2 fmodf64x 10: 00000000 148 FUNC WEAK DEFAULT 2 fmodl File: /usr/lib/i386-linux-gnu/libm.a(e_fmod.o) 2: 00000000 23 FUNC GLOBAL DEFAULT 1 __ieee754_fmod File: /usr/lib/i386-linux-gnu/libm.a(w_fmod.o) File: /usr/lib/i386-linux-gnu/libm.a(e_fmodf.o) 2: 00000000 23 FUNC GLOBAL DEFAULT 1 __ieee754_fmodf File: /usr/lib/i386-linux-gnu/libm.a(w_fmodf.o) File: /usr/lib/i386-linux-gnu/libm.a(e_fmodf128.o) 7: 00000000 3227 FUNC GLOBAL DEFAULT 2 __ieee754_fmodf128 13: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 14: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 File: /usr/lib/i386-linux-gnu/libm.a(w_fmodf128.o) 6: 00000000 578 FUNC GLOBAL DEFAULT 2 __fmodf128 10: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 12: 00000000 578 FUNC WEAK DEFAULT 2 fmodf128 [Test Case] On a noble host install libc6-dev:i386 package and $ readelf --syms --wide /usr/lib/i386-linux-gnu/libm.a | grep fmod Without the fix fmod function is not present (see readelf output of Description). With the fix fmod fuctions are present: readelf --syms --wide /usr/lib/i386-linux-gnu/libm.a | grep fmod File: /usr/lib/i386-linux-gnu/libm.a(w_fmodl_compat.o) File: /usr/lib/i386-linux-gnu/libm.a(w_fmod_compat.o) - 4: 00000000 122 FUNC GLOBAL DEFAULT 2 __fmod - 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmod - 9: 00000000 122 FUNC WEAK DEFAULT 2 fmodf32x - 10: 00000000 122 FUNC WEAK DEFAULT 2 fmodf64 - 11: 00000000 122 FUNC WEAK DEFAULT 2 fmod + 4: 00000000 122 FUNC GLOBAL DEFAULT 2 __fmod + 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmod + 9: 00000000 122 FUNC WEAK DEFAULT 2 fmodf32x + 10: 00000000 122 FUNC WEAK DEFAULT 2 fmodf64 + 11: 00000000 122 FUNC WEAK DEFAULT 2 fmod File: /usr/lib/i386-linux-gnu/libm.a(w_fmodf_compat.o) - 4: 00000000 114 FUNC GLOBAL DEFAULT 2 __fmodf - 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf - 9: 00000000 114 FUNC WEAK DEFAULT 2 fmodf32 - 10: 00000000 114 FUNC WEAK DEFAULT 2 fmodf + 4: 00000000 114 FUNC GLOBAL DEFAULT 2 __fmodf + 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf + 9: 00000000 114 FUNC WEAK DEFAULT 2 fmodf32 + 10: 00000000 114 FUNC WEAK DEFAULT 2 fmodf File: /usr/lib/i386-linux-gnu/libm.a(e_fmodl.o) - 2: 00000000 23 FUNC GLOBAL DEFAULT 1 __ieee754_fmodl + 2: 00000000 23 FUNC GLOBAL DEFAULT 1 __ieee754_fmodl File: /usr/lib/i386-linux-gnu/libm.a(w_fmodl.o) - 4: 00000000 148 FUNC GLOBAL DEFAULT 2 __fmodl - 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodl - 9: 00000000 148 FUNC WEAK DEFAULT 2 fmodf64x - 10: 00000000 148 FUNC WEAK DEFAULT 2 fmodl + 4: 00000000 148 FUNC GLOBAL DEFAULT 2 __fmodl + 7: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodl + 9: 00000000 148 FUNC WEAK DEFAULT 2 fmodf64x + 10: 00000000 148 FUNC WEAK DEFAULT 2 fmodl File: /usr/lib/i386-linux-gnu/libm.a(e_fmod.o) - 2: 00000000 19 FUNC GLOBAL DEFAULT 1 __ieee754_fmod + 2: 00000000 19 FUNC GLOBAL DEFAULT 1 __ieee754_fmod File: /usr/lib/i386-linux-gnu/libm.a(w_fmod.o) File: /usr/lib/i386-linux-gnu/libm.a(e_fmodf.o) - 2: 00000000 19 FUNC GLOBAL DEFAULT 1 __ieee754_fmodf + 2: 00000000 19 FUNC GLOBAL DEFAULT 1 __ieee754_fmodf File: /usr/lib/i386-linux-gnu/libm.a(w_fmodf.o) File: /usr/lib/i386-linux-gnu/libm.a(e_fmodf128.o) - 7: 00000000 3227 FUNC GLOBAL DEFAULT 2 __ieee754_fmodf128 - 13: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 - 14: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 + 7: 00000000 3227 FUNC GLOBAL DEFAULT 2 __ieee754_fmodf128 + 13: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 + 14: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 File: /usr/lib/i386-linux-gnu/libm.a(w_fmodf128.o) - 6: 00000000 578 FUNC GLOBAL DEFAULT 2 __fmodf128 - 10: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 - 12: 00000000 578 FUNC WEAK DEFAULT 2 fmodf128 - + 6: 00000000 578 FUNC GLOBAL DEFAULT 2 __fmodf128 + 10: 00000000 0 NOTYPE GLOBAL DEFAULT UND __ieee754_fmodf128 + 12: 00000000 578 FUNC WEAK DEFAULT 2 fmodf128 [Regression Potential] The patch adds the symbols fmod/fmodf for static builds for i386 and m68k. The changes are arch specific, so any regression would affect i386 and m68k for the static libm.a. [Other] Fix : https://sourceware.org/git/?p=glibc.git;a=commit;h=0b716305dfb48c2d13ed4f7d06c082b90c1d226f Affected Ubuntu releases : Noble
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2036283 Title: i386 glibc is missing fmod in libm.a To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2036283/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
