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 \ 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 + +.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). + +.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. + +.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) + +.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/. + +.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. 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 -- 2.50.1