← Back to team overview

debcrafters-packages team mailing list archive

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

 

I am reviewing this upload in noble unapproved, and I am skeptical that
the impact here is severe enough to justify an SRU of glibc, especially
in an LTS.

1. It does not appear this is affecting any packages in Ubuntu
2. i386 is a partial architecture on Ubuntu. Where *exactly* is this happening? A CI/CD system was mentioned in comment #8, but I see no further reference
3. Static linking against libma.a on i386 sounds like a very specific or niche thing to do

Hence, the impact here does not seem severe or widespread enough to
justify this SRU. Am I missing something? If so, please elaborate on the
impact and why an SRU is necessary.

Beyond that (in case this *does* move forward), the test plan does not
actually test any static compilation. While checking for these symbols
does make sense as a test, if the *impact* here is about static
compilation, that should also be exercised in the test plan.

** Changed in: glibc (Ubuntu Noble)
       Status: In Progress => Incomplete

-- 
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:
  Incomplete
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