Hi Aaron, On Mon, Aug 04, 2025 at 11:24:36PM -0400, Aaron Merey wrote: > Signed-off-by: Aaron Merey <ame...@redhat.com> > --- > v2: mark elf_getshnum as obsolete in SYNOPSIS. Describe extended section > headers breifly. Clarify that elf can be NULL, dst cannot be NULL. > Mention reason for elf_getshnum deprication and introduction of > elf_getshdrnum in HISTORY. > > doc/Makefile.am | 2 + > doc/elf_getshdrnum.3 | 89 ++++++++++++++++++++++++++++++++++++++++++++ > doc/elf_getshnum.3 | 1 + > 3 files changed, 92 insertions(+) > create mode 100644 doc/elf_getshdrnum.3 > create mode 100644 doc/elf_getshnum.3 > > diff --git a/doc/Makefile.am b/doc/Makefile.am > index 122a712f..d6e3062d 100644 > --- a/doc/Makefile.am > +++ b/doc/Makefile.am > @@ -71,6 +71,8 @@ notrans_dist_man3_MANS= elf32_checksum.3 \ > elf_getident.3 \ > elf_getphdrnum.3 \ > elf_getscn.3 \ > + elf_getshdrnum.3 \ > + elf_getshnum.3 \ > elf_hash.3 \ > elf_kind.3 \ > elf_memory.3 \
OK. > diff --git a/doc/elf_getshdrnum.3 b/doc/elf_getshdrnum.3 > new file mode 100644 > index 00000000..fffca5d4 > --- /dev/null > +++ b/doc/elf_getshdrnum.3 > @@ -0,0 +1,89 @@ > +.TH ELF_GETSHDRNUM 3 2025-06-30 "Libelf" "Libelf Programmer's Manual" > + > +.SH NAME > +elf_getshdrnum, elf_getshnum \- retrieve the number of section headers in an > ELF file > +.SH SYNOPSIS > +.nf > +#include <libelf.h> > + > +.B int elf_getshdrnum("Elf *elf", "size_t *dst"); > +.B int elf_getshnum("Elf *elf", "size_t *dst"); (deprecated) > +.fi OK. > +.SH DESCRIPTION > +The > +.BR elf_getshdrnum () > +function stores the number of section headers (sections) associated with the > +ELF descriptor > +.I elf > +into the variable pointed to by > +.IR dst . > + > +It transparently handles both standard and extended section header counts. > +If the number of section headers exceeds the representable range of the > +.I e_shnum > +field in the ELF header, the ELF specification allows encoding the true > +count in section header 0’s > +.I sh_size > +field, and sets > +.I e_shnum > +to 0. This function transparently handles that case. > + > +The function > +.BR elf_getshnum () > +is a deprecated alias for > +.BR elf_getshdrnum () > +and should not be used in new code (see HISTORY). OK. > +.SH PARAMETERS > +.TP > +.I elf > +A pointer to an > +.B Elf > +descriptor opened with > +.BR elf_begin (3). > +The descriptor must represent a file of kind > +.B ELF_K_ELF . > +If NULL, the function returns \-1 without setting elf_errno. > + > +.TP > +.I dst > +Pointer to a > +.B size_t > +variable. On success, the number of section headers is written here. > +Must not be NULL. OK. > +.SH RETURN VALUE > +Returns 0 on success and stores the result in > +.IR dst . > +Returns \-1 on failure. > + > +.SH SEE ALSO > +.BR elf32_getshdr (3), > +.BR elf64_getshdr (3), > +.BR libelf (3), > +.BR elf (5) OK. > +.SH ATTRIBUTES > +.TS > +allbox; > +lbx lb lb > +l l l. > +Interface Attribute Value > +T{ > +.na > +.nh > +.BR elf_getshdrnum (),\~elf_getshnum() > +T} Thread safety MT-Safe > +.TE > + > +.SH REPORTING BUGS > +Report bugs to <elfutils-devel@sourceware.org> or > https://sourceware.org/bugzilla/. OK > +.SH HISTORY > +.B elf_getshdrnum > +first appeared in elfutils 0.142. This function was added due to > elf_getshnum > +return value inconsistencies between different libelf implementations. > +.B elf_getshdrnum > +was introduced to ensure that 0 is returned on success across all libelf > +implementations. Nice. > diff --git a/doc/elf_getshnum.3 b/doc/elf_getshnum.3 > new file mode 100644 > index 00000000..bc84abc2 > --- /dev/null > +++ b/doc/elf_getshnum.3 > @@ -0,0 +1 @@ > +.so man3/elf_getshdrnum.3 OK. Thanks, Mark