I am sponsoring the following self-reviewed case for myself. I
believe these changes are sufficiently non-controversial, and
reflect a wider community agreement.

It obsoletes three existing functions in libelf, and adds
three new functions to replace them, as follows:

      Obsolete            Replaced By
     ---------------------------------------
       elf_getphnum()      elf_getphdrnum()
       elf_getshnum()      elf_getshdrnum()
       elf_getshstrndx()   elf_getshdrstrndx()

This action is being taken to address:

     6851224 elf_getshnum() and elf_getshstrndx() incompatible with
             2002 ELF gABI agreement

The original functions were defined at a meeting held in 2002 with
representatives from other ELF based systems. The agreement was that
they should return -1 for failure, and 0 for success. We originally
defined them that way

     4696204 enable extended section indexes in relocatable objects
     PSARC/2001/332 ELF gABI updates - round II

and our original manpages documented them as such. However, due to a
simple mistake, our implementation of these functions returns 0 for failure,
and 1 for success. In 2005, the discrepancy between documentation and
implementation was noted, and the documentation modified to match the code:

     6348820 elf_getident(3ELF) is inaccurate and lacks a RETURN VALUES section

I recently became aware of the deviation from the 2002 gABI agreement when
I received email about some ELF code I had posted to my Sun blog that did
not work properly under Linux. I have exchanged email with the maintainers
of other libelf implementations, and we have mutually agreed that the least
damaging way to repair this issue is to obsolete the original three
functions, and replace them with new versions that return -1 for failure,
and 0 for success.

Although the original functions will be obsoleted, there is no intent
to remove them. Each libelf implementation will retain them unchanged,
for binary compatibility with their respective installed bases. Manpages
and other documentation will make it clear that their use is discouraged,
and will point at the replacements.

The fix for 6851224 will include converting the OSnet code base to
use the new functions rather than the old versions. Existing code is
often used as a template for new code, so this change will help ensure
that the right versions are copied and used going forward.

-----

Release Binding:                        Patch/Micro

elf_getphnum()                          Obsolete Committed
elf_getshnum()                          Obsolete Committed
elf_getshdrnum()                        Obsolete Committed

elf_getphdrnum()                        Committed
elf_getshstrndx()                       Committed
elf_getshdrstrndx()                     Committed

Reply via email to