Signed-off-by: Aaron Merey <ame...@redhat.com>
---
v2: Some rewording.  Also remove comment about elf_rand affecting
subsequent calls to elf_next. I will post a patch that prevents this
behavior.

 doc/Makefile.am |  1 +
 doc/elf_rand.3  | 71 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+)
 create mode 100644 doc/elf_rand.3

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 103f9d05..f1e074f9 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -83,6 +83,7 @@ notrans_dist_man3_MANS= elf32_checksum.3 \
                        elf_newdata.3 \
                        elf_newscn.3 \
                        elf_nextscn.3 \
+                       elf_rand.3 \
                        elf_rawfile.3 \
                        elf_scnshndx.3 \
                        elf_strptr.3 \
diff --git a/doc/elf_rand.3 b/doc/elf_rand.3
new file mode 100644
index 00000000..5c07a920
--- /dev/null
+++ b/doc/elf_rand.3
@@ -0,0 +1,71 @@
+.TH ELF_RAND 3 2025-06-30 "Libelf" "Libelf Programmer's Manual"
+
+.SH NAME
+elf_rand - Set the offset for the next archive member in an ELF file.
+
+.SH SYNOPSIS
+.nf
+#include <libelf.h>
+
+.BI "size_t elf_rand(Elf *" elf ", size_t " offset ");"
+.fi
+
+.SH DESCRIPTION
+The
+.BR elf_rand ()
+function sets the current archive member offset for the ELF archive descriptor
+.I elf
+to
+.IR offset .
+
+This function is only valid when
+.I elf
+refers to an archive descriptor (i.e., its kind is
+.BR ELF_K_AR ).
+
+Archive member offsets can be acquired from the
+.I Elf_Arsym
+array returned by
+.BR elf_getarsym (3).
+
+If the archive header at the given offset cannot be parsed or validated,
+then 0 is returned.
+
+.SH PARAMETERS
+.TP
+.I elf
+A pointer to an ELF archive descriptor.
+
+.TP
+.I offset
+A byte offset to the archive header, indicating the desired member position.
+
+.SH RETURN VALUE
+Returns the input
+.I offset
+if successful. Returns 0 if
+.I elf
+is NULL, is not an archive descriptor, or if an error occurs while reading the 
member at
+.IR offset .
+
+.SH SEE ALSO
+.BR elf_getarsym (3),
+.BR elf_next (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_rand ()
+T}     Thread safety   MT-Safe
+.TE
+
+.SH REPORTING BUGS
+Report bugs to <elfutils-devel@sourceware.org> or 
https://sourceware.org/bugzilla/.
-- 
2.50.1

Reply via email to