Hi Aaron,

On Wed, 2025-09-24 at 19:00 -0400, Aaron Merey wrote:
> Signed-off-by: Aaron Merey <[email protected]>
> ---
>  doc/Makefile.am    |  1 +
>  doc/gelf_newphdr.3 | 83 ++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 84 insertions(+)
>  create mode 100644 doc/gelf_newphdr.3
> 
> diff --git a/doc/Makefile.am b/doc/Makefile.am
> index 1a45b4bb..78d88696 100644
> --- a/doc/Makefile.am
> +++ b/doc/Makefile.am
> @@ -95,6 +95,7 @@ notrans_dist_man3_MANS= elf32_checksum.3 \
>                       gelf_getehdr.3 \
>                       gelf_getshdr.3 \
>                       gelf_newehdr.3 \
> +                     gelf_newphdr.3 \
>                       gelf_offscn.3 \
>                       gelf_update_ehdr.3 \
>                       libelf.3

OK.

> diff --git a/doc/gelf_newphdr.3 b/doc/gelf_newphdr.3
> new file mode 100644
> index 00000000..07aac3a5
> --- /dev/null
> +++ b/doc/gelf_newphdr.3
> @@ -0,0 +1,83 @@
> +.TH GELF_NEWPHDR 3 2025-09-23 "Libelf" "Libelf Programmer's Manual"
> +
> +.SH NAME
> +gelf_newphdr \- allocate and initialize a new program header table
> +
> +.SH SYNOPSIS
> +.nf
> +.B #include <gelf.h>
> +
> +.BI "void *gelf_newphdr(Elf *" elf ", size_t " phnum ");"
> +.fi

OK.

> +.SH DESCRIPTION
> +.BR gelf_newphdr ()
> +creates a new program header table with
> +.I phnum
> +entries for the ELF descriptor
> +.IR elf ,
> +zeroing all entries. If a program header table already exists for
> +.IR elf ,
> +it is discarded. If
> +.I phnum
> +is zero, any existing program header table is removed.
> +
> +.PP
> +This array is maintained within the ELF descriptor and must not be freed
> +directly. After calling
> +.BR gelf_newphdr (),
> +any previously obtained program header pointers for the same descriptor
> +become invalid.  An ELF header must exist before creating a program header
> +table.

OK. Good description covering all details.

> +.SH PARAMETERS
> +.TP
> +.I elf
> +Pointer to an ELF descriptor of kind
> +.BR ELF_K_ELF .
> +
> +.TP
> +.I phnum
> +Number of entries in the new program header table.  If zero, any existing
> +program header table is removed.

OK.

> +.SH RETURN VALUE
> +On success, returns a non-NULL void pointer to the new program header table.
> +The new program header table can be retrieved as a
> +.B GElf_Phdr *
> +using
> +.BR gelf_getphdr ().
> +.BR elf32_getphdr ()
> +or
> +.BR elf64_getphdr ()
> +can also be used depending on the class of
> +.IR elf .
> +On failure, NULL is returned and elf_errno is set.  If
> +.I elf
> +is NULL, then NULL is returned without setting elf_errno.

NULL is also returned when phnum is zero (and the table is removed).

>   Other libelf
> +implementations of
> +.BR gelf_newphdr ()
> +may use a different return type.

Yeah, interesting, we also used to before 2016...
https://inbox.sourceware.org/elfutils-devel/[email protected]/

> +.SH SEE ALSO
> +.BR gelf_getphdr (3),
> +.BR gelf_update_phdr (3),
> +.BR libelf (3),
> +.BR elf (5)

Add elf32_newphdr and elf64_newphdr.

> +.SH ATTRIBUTES
> +
> +.TS
> +allbox;
> +lbx lb lb
> +l l l.
> +Interface    Attribute       Value
> +T{
> +.na
> +.nh
> +.BR gelf_newphdr ()
> +T}   Thread safety   MT-Safe
> +.TE
> +
> +.SH REPORTING BUGS
> +Report bugs to <[email protected]> or 
> https://sourceware.org/bugzilla/.

OK.

Thanks,

Mark

Reply via email to