[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Status of remaining glibc/EGLIBC differences 2013-10-11



Here is the latest version of my list of differences between glibc and
EGLIBC, classified according to my expectations for what will happen
to them (whether, and to what extent, they will end up in glibc).  We
are on track for EGLIBC 2.19 being the last EGLIBC release branch, as
previously discussed, with no merges from FSF glibc to EGLIBC trunk
happening after the 2.19 release (merges to EGLIBC release branches
are expected to continue for as long as the corresponding glibc
release branches are active, after which the EGLIBC repository, issue
tracker and website may be made read-only).

I am working on, or plan to work on, merging the following changes to
glibc.

1. One localedef bug fix that was entangled with the cross-localedef
   changes, as submitted at
   <https://sourceware.org/ml/libc-alpha/2013-10/msg00143.html>.

   I have no such plans for the remaining unmerged pieces of
   cross-localedef (see below).

2. The e500 port, as submitted at
   <https://sourceware.org/ml/libc-alpha/2013-10/msg00384.html> (with
   six associated Linux kernel patches linked from there).  Note that
   to avoid some soft-fp functions built with this port using
   uninitialized values, two soft-fp patches
   <https://sourceware.org/ml/libc-alpha/2013-10/msg00351.html> and
   <https://sourceware.org/ml/libc-alpha/2013-10/msg00393.html> are
   needed as well.

   Note that this has ABI incompatibilities with the version currently
   in EGLIBC, as detailed at
   <http://www.eglibc.org/archives/patches/msg01291.html> (4 July),
   for existing binaries using one or more of the following libc
   symbols: atosfix16 atosfix32 atosfix64 atoufix16 atoufix32
   atoufix64 strtosfix16 strtosfix32 strtosfix64 strtoufix16
   strtoufix32 strtoufix64, or (e500v1 only) __adddf3 __divdf3 __eqdf2
   __extendsfdf2 __feraiseexcept_soft __fixdfsi __fixunsdfsi
   __floatsidf __gedf2 __ledf2 __muldf3 __negdf2 __sqrtdf2 __subdf3
   __truncdfsf2 __floatundidf __floatunsidf __gtdf2 __ltdf2 __nedf2
   __unorddf2, or one or more of the following libm symbols:
   __fe_nomask_env feclearexcept fegetexceptflag feraiseexcept
   fesetexceptflag fetestexcept feenableexcept fedisableexcept
   fegetexcept.  Once this is in glibc, it will replace the EGLIBC
   version at the next merge from glibc to EGLIBC.

   I have no such plans for the SPE PIM functions (see below).

3. bits/predefs.h to allow __STDC_IEC_559__ and
   __STDC_IEC_559_COMPLEX__ to be defined only conditionally.  My plan
   is to make GCC predefine macros to indicate the intent of GCC's
   compilation mode (combination of target features and
   architecture-independent options such as -ffast-math and
   -fcx-limited-range), which stdc-predef.h would then use to
   determine whether to predefine these macros.  As with other such
   macros, they would continue to describe *intent* rather than
   *completeness*.


I believe other people are working on, or plan to work on, merging the
following changes to glibc.

4. Robustness for ldd with non-bash shells (really only makes sense if
   properly converted to be a POSIX shell script).  P. J. McDermott
   has posted a patch
   <https://sourceware.org/ml/libc-alpha/2013-09/msg00415.html>; the
   copyright assignment is on file.  He's also posted patches more
   generally avoiding $"" in installed shell scripts (glibc bug
   13853); see
   <https://sourceware.org/ml/libc-alpha/2013-06/msg01151.html>.

5. Avoid __block identifier in installed headers (glibc bug 11157; I
   think __glibc_reserved_block would meet the agreed convention now).
   Meador Inge intends to work on this.


As far as I am aware, there are no plans to merge the following
changes to glibc, and so they will effectively go away as the separate
EGLIBC source tree is obsoleted.  If you or your users are relying on
any of these changes, now would be a good time to (complete your
copyright assignment and) contribute them to glibc.

6. powerpc 8xx cache line workaround (r2503).

7. resolv.conf timestamp checks (note multiple followup fixes);
   originated in a SUSE patch.

8. Option group support.  Any work on of this should take into account
   Steve Longerbeam's patches that didn't get checked in - that is,
   start by locating the final versions of those patches, retesting
   them, writing proper GNU ChangeLog entries for them and
   resubmitting them.  Then start from the resulting version of option
   group support (probably one option group at a time).  (See
   <http://www.eglibc.org/archives/patches/msg01049.html> (8 Dec
   2011).)

   Note however that as I said at
   <http://www.eglibc.org/archives/patches/msg01284.html> (28 June),
   certain option groups do not make sense and should be removed.

9. SPE PIM functions (and associated testcases) from e500 port.  They
   could move into a separate library libspe (as they were in Aldy's
   add-on).  The implementations use some of the MPN functions, like
   strtod does, so the library would naturally be a glibc add-on that
   could pick up the relevant objects also used in libc.so, or the
   symbols could be exported at GLIBC_PRIVATE from libc.so (I can see
   possible use for these functions in libm in future as well).  Such
   an add-on might or might not be in the glibc repository.

10. Remaining parts of cross-localedef: that is, the separate build
    system and a few miscellaneous changes in localedef that have no
    significance as long as it's just built along with the glibc it's
    linked against.  (All the changes needed for localedef to generate
    output for another system - everything needed for the output to be
    system-independent apart from the endianness controlled by the
    --big-endian / --little-endian options - are now in glibc, as are
    those options.  But you may need to build glibc for your build
    system, matching the version being built for the system for which
    you want to build locales, to use them.)

11. SH __fpscr_values.  In general symbols should not be added to old
    symbol versions, but there's a question here of whether actually
    most or all SH glibc users are in fact using glibc with this patch
    so it is part of the de facto ABI.  See
    <https://sourceware.org/ml/libc-alpha/2012-05/msg01988.html>.

12. A Linuxthreads manpage change.  Insubstantial, but there's no
    glibc git repository for Linuxthreads (it's never been converted
    from CVS).  It still appears to be the case that the man-pages
    project does not have a manpage for pthread_mutex_init /
    pthread_mutex_unlock (the one in question), and that Linuxthreads
    is being used to provide a manpage for those functions by Ubuntu,
    for example.  I believe it is also the case that Linuxthreads is
    still being used by GNU/kFreeBSD, so if that gets merged to glibc
    then there may be a case for merging in the Linuxthreads history.

13. Installation of *_pic.a and associated .map files for use of
    mklibs.  Same question applies as for option groups about whether
    this is still useful (the original use case of mklibs having been
    for boot *floppies*).

14. Backwards compatibility with the install-bootstrap-headers
    mechanism, and for the cross-test-wrapper variable name (the glibc
    name is test-wrapper), and EGLIBC.cross-building and
    EGLIBC.cross-testing documentation files.


I am also not aware of any plans to transfer any relevant issues from
the EGLIBC issue tracker to the glibc tracker.  I encourage people not
to file issues in the EGLIBC tracker any more, and anyone interested
to file issues for glibc corresponding to any EGLIBC issues that
actually apply to current glibc.

-- 
Joseph S. Myers
joseph@codesourcery.com


Reply to: