Signed-off-by: Aaron Merey <ame...@redhat.com>

---
v2: Mention elf arg may be NULL.

On Wed, Apr 30, 2025 at 1:18 PM Mark Wielaard <m...@klomp.org> wrote:
>
> So we do have a tiny elf_begin.3 man page, but it doesn't really
> describe anything. The above seems a technically correct description of
> ELF descriptor internal reference counting, but I am not sure it makes
> sense without a full description of elf_begin.

I'll post a patch updating elf_begin.3.

Aaron

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

diff --git a/doc/Makefile.am b/doc/Makefile.am
index b75711ca..dee77214 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -51,6 +51,7 @@ notrans_dist_man3_MANS= elf32_checksum.3 \
                        elf64_xlatetom.3 \
                        elf_begin.3 \
                        elf_clone.3 \
+                       elf_end.3 \
                        elf_errmsg.3 \
                        elf_errno.3 \
                        elf_getdata.3 \
diff --git a/doc/elf_end.3 b/doc/elf_end.3
new file mode 100644
index 00000000..48900edc
--- /dev/null
+++ b/doc/elf_end.3
@@ -0,0 +1,71 @@
+.TH ELF_END 3 2025-03-31 "Libelf" "Libelf Programmer's Manual"
+
+.SH NAME
+elf_end \- Release resources associated with an ELF descriptor.
+
+.SH SYNOPSIS
+.nf
+#include <libelf.h>
+
+.BI "int elf_end(Elf *" elf ");"
+
+.SH DESCRIPTION
+The
+.B elf_end
+function releases resources associated with an ELF descriptor previously
+returned by
+.BR elf_begin .
+It decrements the ELF descriptor’s internal reference count by one. When
+this count reaches zero, the resources associated with the descriptor are
+freed and the descriptor is invalidated.  If
+.I elf
+is not an archive member with ELF kind
+.BR ELF_K_AR ,
+the internal reference count is increased by one each time
+.I elf
+is passed to
+.B elf_begin
+as the
+.I ref
+argument.
+
+An ELF descriptor whose reference count reaches zero is invalidated.
+Further operations on the descriptor will result in undefined behavior.
+
+.SH PARAMETERS
+.TP
+.I elf
+The ELF descriptor (may be NULL).
+
+.SH RETURN VALUE
+Return the ELF descriptor's current internal reference count after
+decrementing. A return value of zero indicates the ELF descriptor is now
+invalidated.  If
+.I elf
+is NULL, then
+.B elf_end
+also returns 0.
+
+.SH SEE ALSO
+.BR elf_begin (3),
+.BR libelf (3),
+.BR elf (5)
+
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface      Attribute       Value
+T{
+.na
+.nh
+.BR elf_end ()
+T}     Thread safety   MT-Safe
+.TE
+
+.SH REPORTING BUGS
+Report bugs to <elfutils-devel@sourceware.org> or 
https://sourceware.org/bugzilla/.
+
-- 
2.49.0

Reply via email to