Hi Aaron,
On Mon, 2025-09-29 at 19:32 +0000, Aaron Merey wrote:
> Add man pages for gelf_getversym, gelf_getverdef, gelf_getverdaux
> gelf_getverneed and gelf_getvernaux.
>
> Signed-off-by: Aaron Merey <[email protected]>
> ---
> doc/Makefile.am | 5 ++
> doc/gelf_getverdaux.3 | 1 +
> doc/gelf_getverdef.3 | 1 +
> doc/gelf_getvernaux.3 | 1 +
> doc/gelf_getverneed.3 | 1 +
> doc/gelf_getversym.3 | 146 ++++++++++++++++++++++++++++++++++++++++++
> 6 files changed, 155 insertions(+)
> create mode 100644 doc/gelf_getverdaux.3
> create mode 100644 doc/gelf_getverdef.3
> create mode 100644 doc/gelf_getvernaux.3
> create mode 100644 doc/gelf_getverneed.3
> create mode 100644 doc/gelf_getversym.3
>
> diff --git a/doc/Makefile.am b/doc/Makefile.am
> index 153c05ba..a2ada1b1 100644
> --- a/doc/Makefile.am
> +++ b/doc/Makefile.am
> @@ -96,6 +96,11 @@ notrans_dist_man3_MANS= elf32_checksum.3 \
> gelf_getshdr.3 \
> gelf_getrel.3 \
> gelf_getrela.3 \
> + gelf_getversym.3 \
> + gelf_getverdef.3 \
> + gelf_getverdaux.3 \
> + gelf_getverneed.3 \
> + gelf_getvernaux.3 \
> gelf_newehdr.3 \
> gelf_newphdr.3 \
> gelf_offscn.3 \
OK.
> diff --git a/doc/gelf_getverdaux.3 b/doc/gelf_getverdaux.3
> new file mode 100644
> index 00000000..5b20eee5
> --- /dev/null
> +++ b/doc/gelf_getverdaux.3
> @@ -0,0 +1 @@
> +.so man3/gelf_getversym.3
> diff --git a/doc/gelf_getverdef.3 b/doc/gelf_getverdef.3
> new file mode 100644
> index 00000000..5b20eee5
> --- /dev/null
> +++ b/doc/gelf_getverdef.3
> @@ -0,0 +1 @@
> +.so man3/gelf_getversym.3
> diff --git a/doc/gelf_getvernaux.3 b/doc/gelf_getvernaux.3
> new file mode 100644
> index 00000000..5b20eee5
> --- /dev/null
> +++ b/doc/gelf_getvernaux.3
> @@ -0,0 +1 @@
> +.so man3/gelf_getversym.3
> diff --git a/doc/gelf_getverneed.3 b/doc/gelf_getverneed.3
> new file mode 100644
> index 00000000..5b20eee5
> --- /dev/null
> +++ b/doc/gelf_getverneed.3
> @@ -0,0 +1 @@
> +.so man3/gelf_getversym.3
OK.
> diff --git a/doc/gelf_getversym.3 b/doc/gelf_getversym.3
> new file mode 100644
> index 00000000..eeadb992
> --- /dev/null
> +++ b/doc/gelf_getversym.3
> @@ -0,0 +1,146 @@
> +.TH GELF_GETVERSYM 3 2025-09-27 "Libelf" "Libelf Programmer's Manual"
> +
> +.SH NAME
> +gelf_getversym, gelf_getverdef, gelf_getverdaux, gelf_getverneed,
> gelf_getvernaux \- retrieve GNU symbol versioning entries
> +
> +.SH SYNOPSIS
> +.nf
> +.B #include <gelf.h>
> +
> +.BI "GElf_Versym *gelf_getversym (Elf_Data *" data ", int " ndx ",
> GElf_Versym *" dst ");"
> +.BI "GElf_Verdef *gelf_getverdef (Elf_Data *" data ", off_t " offset ",
> GElf_Verdef *" dst ");"
> +.BI "GElf_Verdaux *gelf_getverdaux(Elf_Data *" data ", off_t " offset ",
> GElf_Verdaux *" dst ");"
> +.BI "GElf_Verneed *gelf_getverneed(Elf_Data *" data ", off_t " offset ",
> GElf_Verneed *" dst ");"
> +.BI "GElf_Vernaux *gelf_getvernaux(Elf_Data *" data ", off_t " offset ",
> GElf_Vernaux *" dst ");"
> +.fi
Where do the off_t offsets come from? It looks like all indexes are
given as ints. Which might be problematic on 32bit arches trying to
handle ELFCLASS64 files, but there isn't much we can do about that now.
> +.SH DESCRIPTION
> +These functions provide class\-independent access to GNU ELF symbol
> +version information. The requested entry is retrieved from
> +.I data
> +and stored in the caller\-supplied
> +.IR dst .
> +
> +.TP
> +.BR gelf_getversym ()
> +Retrieves the symbol version index at index
> +.I ndx
> +from the
> +.B SHT_GNU_versym
> +section associated with
> +.IR data .
> +
> +.TP
> +.BR gelf_getverdef ()
> +Retrieves the version definition entry at section offset
> +.I offset
> +from the
> +.B SHT_GNU_verdef
> +section associated with
> +.IR data .
> +
> +.TP
> +.BR gelf_getverdaux ()
> +Retrieves the version definition auxiliary entry at section offset
> +.I offset
> +from the
> +.B SHT_GNU_verdef
> +section associated with
> +.IR data .
> +
> +.TP
> +.BR gelf_getverneed ()
> +Retrieves the version needed entry at section offset
> +.I offset
> +from the
> +.B SHT_GNU_verneed
> +section associated with
> +.IR data .
> +
> +.TP
> +.BR gelf_getvernaux ()
> +Retrieves the version needed auxiliary entry at section offset
> +.I offset
> +from the
> +.B SHT_GNU_verneed
> +section associated with
> +.IR data .
OK.
> +.SH PARAMETERS
> +.TP
> +.I data
> +Pointer to an
> +.B Elf_Data
> +corresponding to the appropriate GNU versioning section.
> +
> +.TP
> +.I ndx
> +(For
> +.BR gelf_getversym ()
> +only.)
> +Zero\-based index of the entry within
> +.IR data .
> +.TP
> +.I offset
> +(For
> +.BR gelf_getverdef (),
> +.BR gelf_getverdaux (),
> +.BR gelf_getverneed (),
> +and
> +.BR gelf_getvernaux ().)
> +Section\-relative byte offset of the entry within
> +.IR data .
Same question as above. Aren't these all ints?
> +.TP
> +.I dst
> +Pointer to a caller\-provided entry of the appropriate type:
> +.BR GElf_Versym ,
> +.BR GElf_Verdef ,
> +.BR GElf_Verdaux ,
> +.BR GElf_Verneed ,
> +or
> +.BR GElf_Vernaux .
> +This argument must not be NULL.
OK.
> +.SH RETURN VALUE
> +On success, these functions store the requested entry in
> +.I dst
> +and return
> +.IR dst .
> +On failure, these functions return NULL and set elf_errno. If
> +.I data
> +is NULL, then NULL is returned without setting elf_errno.
OK.
> +.SH SEE ALSO
> +.BR gelf_update_verdaux (3),
> +.BR gelf_update_verdef (3),
> +.BR gelf_update_vernaux (3),
> +.BR gelf_update_verneed (3),
> +.BR gelf_update_versym (3),
> +.BR libelf (3),
> +.BR elf (5)
Where are GElf_Versym, GElf_Verdef, GElf_Verdaux and GElf_Verneed
described?
> +.SH ATTRIBUTES
> +.TS
> +allbox;
> +lbx lb lb
> +l l l.
> +Interface Attribute Value
> +T{
> +.na
> +.nh
> +.BR gelf_getversym (),
> +.br
> +.BR gelf_getverdef (),
> +.br
> +.BR gelf_getverdaux(),
> +.br
> +.BR gelf_getverneed (),
> +.br
> +.BR gelf_getvernaux ()
> +T} Thread safety MT-Safe
> +.TE
> +
> +.SH REPORTING BUGS
> +Report bugs to <[email protected]> or
> https://sourceware.org/bugzilla/.
OK.
Thanks,
Mark