[Bug 2036283] [NEW] i386 glibc is missing fmod in libm.a

Launchpad Bug Tracker 2036283 at bugs.launchpad.net
Thu Dec 19 16:24:23 UTC 2024


You have been subscribed to a public bug by Ubuntu Foundations Team Bug Bot (crichton):

[Description]
The `libm.a` static library on i386 architecture lacks the math function `fmod`:

(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
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
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    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
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


[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

** Affects: glibc (Ubuntu)
     Importance: Undecided
         Status: Confirmed

** Affects: zsh (Ubuntu)
     Importance: Undecided
         Status: Confirmed

** Affects: glibc (Ubuntu Noble)
     Importance: Undecided
         Status: Confirmed

** Affects: zsh (Ubuntu Noble)
     Importance: Undecided
         Status: New


** Tags: ftbfs patch
-- 
i386 glibc is missing fmod in libm.a
https://bugs.launchpad.net/bugs/2036283
You received this bug notification because you are a member of Ubuntu Sponsors, which is subscribed to the bug report.



More information about the Ubuntu-sponsors mailing list