Hi Aaron,
On Mon, Jun 30, 2025 at 11:12:19PM -0400, Aaron Merey wrote:
> Signed-off-by: Aaron Merey
> ---
> doc/Makefile.am| 6 ++
> doc/elf_flagdata.3 | 1 +
> doc/elf_flagehdr.3 | 1 +
> doc/elf_flagelf.3 | 145 +
> doc/elf_flagphdr.3 | 1 +
> doc/elf_flagscn.3 | 1 +
> doc/elf_flagshdr.3 | 1 +
> 7 files changed, 156 insertions(+)
> create mode 100644 doc/elf_flagdata.3
> create mode 100644 doc/elf_flagehdr.3
> create mode 100644 doc/elf_flagelf.3
> create mode 100644 doc/elf_flagphdr.3
> create mode 100644 doc/elf_flagscn.3
> create mode 100644 doc/elf_flagshdr.3
>
> diff --git a/doc/Makefile.am b/doc/Makefile.am
> index e5b12133..3b63dc38 100644
> --- a/doc/Makefile.am
> +++ b/doc/Makefile.am
> @@ -58,6 +58,12 @@ notrans_dist_man3_MANS= elf32_checksum.3 \
> elf_errmsg.3 \
> elf_errno.3 \
> elf_fill.3 \
> + elf_flagelf.3 \
> + elf_flagehdr.3 \
> + elf_flagphdr.3 \
> + elf_flagscn.3 \
> + elf_flagdata.3 \
> + elf_flagshdr.3 \
> elf_getbase.3 \
> elf_getdata.3 \
> elf_getscn.3 \
OK.
> diff --git a/doc/elf_flagdata.3 b/doc/elf_flagdata.3
> new file mode 100644
> index ..ee84d431
> --- /dev/null
> +++ b/doc/elf_flagdata.3
> @@ -0,0 +1 @@
> +.so man3/elf_flagelf.3
> diff --git a/doc/elf_flagehdr.3 b/doc/elf_flagehdr.3
> new file mode 100644
> index ..ee84d431
> --- /dev/null
> +++ b/doc/elf_flagehdr.3
> @@ -0,0 +1 @@
> +.so man3/elf_flagelf.3
OK.
> diff --git a/doc/elf_flagelf.3 b/doc/elf_flagelf.3
> new file mode 100644
> index ..1118deaa
> --- /dev/null
> +++ b/doc/elf_flagelf.3
> @@ -0,0 +1,145 @@
> +.TH ELF_FLAGELF 3 2025-06-23 "Libelf" "Libelf Programmer's Manual"
> +
> +.SH NAME
> +elf_flagelf, elf_flagdata, elf_flagehdr, elf_flagphdr, elf_flagscn,
> elf_flagshdr \- set or clear flags on ELF descriptors and components
> +.SH SYNOPSIS
> +.nf
> +#include
> +
> +.B unsigned int elf_flagelf(Elf *" elf ", Elf_Cmd" cmd ", unsigned int"
> flags ");
> +.B unsigned int elf_flagehdr(Elf *" elf ", "Elf_Cmd" cmd ", unsigned int"
> flags ");
> +.B unsigned int elf_flagphdr(Elf *" elf ", Elf_Cmd" cmd ", unsigned int"
> flags ");
> +.B unsigned int elf_flagscn(Elf_Scn *" scn ", Elf_Cmd" cmd ", unsigned int"
> flags ");
> +.B unsigned int elf_flagshdr("Elf_Scn *" scn ", "Elf_Cmd" cmd ", unsigned
> int" flags ");
> +.B unsigned int elf_flagdata(Elf_Data *" data ", Elf_Cmd" cmd ", unsigned
> int" flags ");
> +.fi
OK.
> +.SH DESCRIPTION
> +These functions allow the caller to set or clear flags on various ELF
> +components managed by
> +.B libelf .
> +They are typically used to indicate that a component has been modified
> +(dirty), or to control layout behavior during output.
> +
> +.BR elf_flagelf ()
> +modifies flags on the top-level
> +.B Elf
> +descriptor.
> +
> +.BR elf_flagdata ()
> +modifies flags on an
> +.B Elf_Data
> +descriptor, typically retrieved using
> +.BR elf_getdata (3)
> +or created with
> +.BR elf_newdata (3).
> +
> +.BR elf_flagehdr ()
> +modifies flags on the ELF header for a ELF descriptor (e.g., the result of
> +.BR gelf_getehdr (3)).
> +
> +.BR elf_flagphdr ()
> +modifies flags on the program header table of an ELF descriptor.
> +
> +.BR elf_flagscn ()
> +modifies flags on an
> +.B Elf_Scn
> +(section) descriptor.
> +
> +.BR elf_flagshdr ()
> +modifies flags on the section header of a given
> +.B Elf_Scn .
OK
> +The
> +.I cmd
> +argument determines whether the given flags should be set (
> +.B ELF_C_SET
> +) or cleared (
> +.B ELF_C_CLR
> +).
OK.
> +The following flag values may be passed via the
> +.I flags
> +parameter:
> +
> +.TP
> +.B ELF_F_DIRTY
> +Marks the object as modified. This ensures changes to the component is
> written
> +out during
> +.BR elf_update (3).
OK.
> +.TP
> +.B ELF_F_LAYOUT
> +Indicates that the layout of the ELF component is managed manually. Offsets
> and
> +sizes will be preserved as provided.
Only effective with elf_flagelf. Specifically this requires the user
to set the Ehdr e_phoff and e_shoff, the Elf_Data d_off and the Shdr
sh_offset. When not set elf_update will (re)calculate these offsets.
> +.TP
> +.B ELF_F_PERMISSIVE
> +Enables relaxed validation of object structure. This flag permits
> nonstandard layouts
> +without strict checks.
Only effective with elf_flagelf. Note that this is an elfutils libelf
extension. Specifically this removes the check in elf_update that the
section sh_size is a multiple of the section sh_entsize (if not zero).
> +.SH PARAMETERS
> +.TP
> +.I obj
> +The object to be modified:
> +For
> +.BR elf_flagelf ,
> +.BR elf_flagehdr ,
> +.BR elf_flagphdr ,
> +this is an
> +.B Elf *
> +descriptor.
> +For
> +.B elf_flagscn
> +and
> +.B elf_flagshdr ,
> +this is an
> +.B Elf