← Back to team overview

debcrafters-packages team mailing list archive

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

 

** 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
Debcrafters packages, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/2036283

Title:
  i386 glibc is missing fmod in libm.a

Status in glibc package in Ubuntu:
  Fix Released
Status in zsh package in Ubuntu:
  Invalid
Status in glibc source package in Noble:
  In Progress
Status in zsh source package in Noble:
  Invalid

Bug description:
  [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
  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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2036283/+subscriptions