[10/16] doc: Add elf_newscn.3

Message ID 20250701031248.1106390-10-amerey@redhat.com
State Superseded
Delegated to: Mark Wielaard
Headers
Series [01/16] doc: Add elf_memory.3 |

Commit Message

Aaron Merey July 1, 2025, 3:12 a.m. UTC
  Signed-off-by: Aaron Merey <amerey@redhat.com>
---
 doc/Makefile.am  |  1 +
 doc/elf_newscn.3 | 70 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+)
 create mode 100644 doc/elf_newscn.3
  

Comments

Mark Wielaard July 8, 2025, 9:49 p.m. UTC | #1
Hi Aaron,

On Mon, Jun 30, 2025 at 11:12:27PM -0400, Aaron Merey wrote:
> Signed-off-by: Aaron Merey <amerey@redhat.com>
> ---
>  doc/Makefile.am  |  1 +
>  doc/elf_newscn.3 | 70 ++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 71 insertions(+)
>  create mode 100644 doc/elf_newscn.3
> 
> diff --git a/doc/Makefile.am b/doc/Makefile.am
> index 97aac570..022906bb 100644
> --- a/doc/Makefile.am
> +++ b/doc/Makefile.am
> @@ -80,6 +80,7 @@ notrans_dist_man3_MANS= elf32_checksum.3 \
>  			elf_memory.3 \
>  			elf_ndxscn.3 \
>  			elf_newdata.3 \
> +			elf_newscn.3 \
>  			elf_update.3 \
>  			elf_version.3 \
>  			libelf.3

OK.

> diff --git a/doc/elf_newscn.3 b/doc/elf_newscn.3
> new file mode 100644
> index 00000000..c53cd4ef
> --- /dev/null
> +++ b/doc/elf_newscn.3
> @@ -0,0 +1,70 @@
> +.TH ELF_NEWSCN 3 2025-06-30 "Libelf" "Libelf Programmer's Manual"
> +
> +.SH NAME
> +elf_newscn \- create a new section for an ELF descriptor
> +
> +.SH SYNOPSIS
> +.nf
> +#include <libelf.h>
> +
> +.BI "void elf_fill(int " fill ");"

? Elf_Scn *elf_newscn(Elf *elf);

> +.SH DESCRIPTION
> +The
> +.BR elf_newscn ()
> +function creates a new section descriptor for the ELF descriptor
> +.I elf.
> +
> +Each call to
> +.BR elf_newscn ()
> +appends a new section to the internal list of sections for the
> +ELF descriptor.  It also creates a corresponding empty section header,
> +which is zero-initialized and marked dirty.

If the elf didn't have any sections yet, elf_newscn creates the zero
section, but returns a new first section. The zero section is special
and doesn't have any section data associated with it.

> +A newly created section has no name or type and must be properly initialized
> +before calling
> +.BR elf_update ().
> +Use
> +.BR elf_getshdr ()

elf32_getshdr or elf64_getshdr.

> +to obtain the section header structure, then populate the required fields.
> +Use
> +.BR elf_newdata ()
> +to associate one or more data buffers with the new section.
> +
> +The section with index 0 (the null section) is reserved and cannot have
> +data added to it.

Right. Also elf_newscn will never return it (see above).

> +.SH PARAMETERS
> +.TP
> +.I elf
> +An ELF descriptor in ELF_C_WRITE or ELF_C_RDWR mode.

Are you sure? I believe you can always call elf_newscn and it will add
internal data as if the Elf had a new section. You cannot write it out
with elf_update though. The Elf does need to have an Ehdr before
calling elf_newscn though.

> +
> +.SH RETURN VALUE
> +On success,
> +.BR elf_newscn ()
> +returns a pointer to a new section descriptor. On failure, it returns NULL.

and sets elf_errno. If elf is NULL, failure is returned and elf_errno
is not (re)set.

> +
> +.SH SEE ALSO
> +.BR elf_getshdr (3),

elf32_getshdr
elf64_getshdr

> +.BR elf_getdata (3),
> +.BR elf_newdata (3),
> +.BR elf_update (3),
> +.BR libelf (3),
> +.BR elf (5)

OK.

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

OK.

Thanks,

Mark
  

Patch

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 97aac570..022906bb 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -80,6 +80,7 @@  notrans_dist_man3_MANS= elf32_checksum.3 \
 			elf_memory.3 \
 			elf_ndxscn.3 \
 			elf_newdata.3 \
+			elf_newscn.3 \
 			elf_update.3 \
 			elf_version.3 \
 			libelf.3
diff --git a/doc/elf_newscn.3 b/doc/elf_newscn.3
new file mode 100644
index 00000000..c53cd4ef
--- /dev/null
+++ b/doc/elf_newscn.3
@@ -0,0 +1,70 @@ 
+.TH ELF_NEWSCN 3 2025-06-30 "Libelf" "Libelf Programmer's Manual"
+
+.SH NAME
+elf_newscn \- create a new section for an ELF descriptor
+
+.SH SYNOPSIS
+.nf
+#include <libelf.h>
+
+.BI "void elf_fill(int " fill ");"
+
+.SH DESCRIPTION
+The
+.BR elf_newscn ()
+function creates a new section descriptor for the ELF descriptor
+.I elf.
+
+Each call to
+.BR elf_newscn ()
+appends a new section to the internal list of sections for the
+ELF descriptor.  It also creates a corresponding empty section header,
+which is zero-initialized and marked dirty.
+
+A newly created section has no name or type and must be properly initialized
+before calling
+.BR elf_update ().
+Use
+.BR elf_getshdr ()
+to obtain the section header structure, then populate the required fields.
+Use
+.BR elf_newdata ()
+to associate one or more data buffers with the new section.
+
+The section with index 0 (the null section) is reserved and cannot have
+data added to it.
+
+.SH PARAMETERS
+.TP
+.I elf
+An ELF descriptor in ELF_C_WRITE or ELF_C_RDWR mode.
+
+.SH RETURN VALUE
+On success,
+.BR elf_newscn ()
+returns a pointer to a new section descriptor. On failure, it returns NULL.
+
+
+.SH SEE ALSO
+.BR elf_getshdr (3),
+.BR elf_getdata (3),
+.BR elf_newdata (3),
+.BR elf_update (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_newscn ()
+T}	Thread safety	MT-Safe
+.TE
+
+.SH REPORTING BUGS
+Report bugs to <elfutils-devel@sourceware.org> or https://sourceware.org/bugzilla/.