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

[Patches] Differences between glibc and EGLIBC

In the course of preparing cross-testing changes for glibc, I looked
through the diffs between glibc and EGLIBC.  It's clear there are
quite a few miscellaneous changes that ought not now be too hard to
get into glibc (possibly in a reworked form, but getting in the
underlying feature).  I've sent in a few, but it would be useful if
more contributors help picking up miscellaneous changes (their own or
other people's) to help reduce the unnecessary divergence.  The
following lists of logical changes are intended to be complete, but I
expect a few have been missed.

Miscellaneous changes (that should not be too much effort to get in)
include the following (as usual, look at the current version in glibc
after merges from upstream and any bugfixes made in EGLIBC, which may
differ from the originally committed version).  In some cases, if it
can clearly be justified that the change is no longer relevant, it
should be reverted.

* dl-profile.c here_cg_arc_record alignment (r1699).

* m68k no-FPU ColdFire fixes (r1833).

* powerpc 8xx cache line workaround (r2503).

* Changes to bits/wchar.h - likely no longer needed, but investigation

* Support for building with -Os (the r4355 changes may no longer be
  needed, as people have reported successful -Os builds without them,
  but in that case an investigation resulting a rationale for
  reversion is needed).

* Robustness for ldd with non-bash shells (really only makes sense if
  properly converted to be a POSIX shell script).

* Avoid issue with dash running tst-cancel7 (being discussed on

* Differences between the glibc and EGLIBC versions of math.h and
  complex.h regarding the handling of the no-long-double case.  See
  <http://www.eglibc.org/archives/patches/msg01032.html> - may no
  longer be needed (glibc bug 14033 was fixed).

* Avoid __block identifier (I think __glibc_reserved_block would meet
  the agreed convention now).

* dl-load.c error message for mprotect failure (glibc bug 12492).

* malloc/Makefile use of libc_nonshared.a (and removing the
  ARM-specific workaround); possibly linking miscellaneous .so files
  (in general) more like they would be linked with an installed
  library is the right solution.

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

* __NO_FPRS__ for sysdeps/powerpc/powerpc32/dl-trampoline.S (which I
  recently pinged for glibc).

* CFLAGS-backtrace.c for SH (which I accidentally omitted when sending
  an SH backtrace patch to glibc).

* Extra tests for backtrace.

* Cross-getconf (building usr/libexec/getconf/ files when

* Casts in ports/sysdeps/mips/dl-machine.h (I haven't investigated
  whether these still serve any purpose; MIPS builds are pretty noisy
  anyway regarding compiler warnings, which could do with being
  cleaned up).

Changes that are likely to involve more work (maybe substantial
reworking) or be more controversial include the following.

* Option group support.  (I think Carlos expressed an interest in
  this, at least as regards the option groups corresponding to POSIX
  profiles.)  Any submission 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).

* e500 port.  (Should probably involve rearranging powerpc32/fpu/
  files in glibc in a similar way to the m68k port, to reflect the
  different incompatible floating-point implementations for the
  architecture.)  Some fragments of improvements to powerpc header
  files for no-FPRS or soft-float may be able to go in independently.

* --with-pkgversion and --with-bugurl.

* Making --disable-versioning work.

* Cross-localedef.  (Multiple parts; maybe the support for options to
  localedef to specify endianness and uint32_t alignment would be the
  least controversial, and also the largest so most valuable to

* SH __fpscr_values.

* bits/predefs.h to allow __STDC_IEC_559__ and
  __STDC_IEC_559_COMPLEX__ to be defined only conditionally (possibly
  should be done through appropriate GCC features instead).

* ColdFire MMAP2_PAGE_SHIFT (there were some objections when it was
  previously proposed for glibc, though such a thing *ought* to be
  straightforward).  Now a lot of ColdFire code has gone into
  kernel.org kernels, maybe the ABI can be confirmed there?

* A Linuxthreads manpage change.  Insubstantial, but there's no glibc
  git repository for Linuxthreads (it's never been converted from

* Installation of *_pic.a and associated .map files for use of mklibs.

* dl-reloc.c change for ELF_MACHINE_NO_PLT.  Doesn't actually work any
  more; should be replaced by a different fix for the underlying bug
  (glibc bug 2981).

There are also a few differences deliberately kept for compatibility
with EGLIBC ways of cross-building and cross-testing, although glibc
now has support for those things in slightly different ways.

Joseph S. Myers
Patches mailing list