[2/9,v2] doc: Add elf32_fsize.3 and elf64_fsize.3

Message ID 20241003022610.129834-2-amerey@redhat.com
State Committed
Headers
Series [1/9,v2] doc: Add elf32_checksum.3 and elf64_checksum.3 |

Commit Message

Aaron Merey Oct. 3, 2024, 2:26 a.m. UTC
  Signed-off-by: Aaron Merey <amerey@redhat.com>

---
v2 changes:
Reword description.

State EV_CURRENT is the only valid version.

Mention possibility of integer overflow.

On Tue, Aug 27, 2024 at 12:32 PM Mark Wielaard <mark@klomp.org> wrote:
>
> Maybe give at least some examples of Elf_Type and which data structure
> they represent? ELF_T_ADDR (32 bit address), ELF_T_EHDR (Elf32_Ehdr),
> etc.
>
> And mention that elf_getdata will set the Elf_Data d_type to the
> Elf_Type of the section?

I added "See libelf(3) for more information regarding Elf_Type" to
the description.  This man page doesn't exist yet but I will add it
and include a list of the different Elf_Type and its relationship to
Elf_Data.

 doc/elf32_fsize.3 | 78 +++++++++++++++++++++++++++++++++++++++++++++++
 doc/elf64_fsize.3 |  1 +
 2 files changed, 79 insertions(+)
 create mode 100644 doc/elf32_fsize.3
 create mode 100644 doc/elf64_fsize.3
  

Comments

Mark Wielaard Oct. 15, 2024, 3:22 p.m. UTC | #1
Hi Aaron,

On Wed, 2024-10-02 at 22:26 -0400, Aaron Merey wrote:
> Signed-off-by: Aaron Merey <amerey@redhat.com>
> 
> ---
> v2 changes:
> Reword description.
> 
> State EV_CURRENT is the only valid version.
> 
> Mention possibility of integer overflow.
> 
> On Tue, Aug 27, 2024 at 12:32 PM Mark Wielaard <mark@klomp.org> wrote:
> > 
> > Maybe give at least some examples of Elf_Type and which data structure
> > they represent? ELF_T_ADDR (32 bit address), ELF_T_EHDR (Elf32_Ehdr),
> > etc.
> > 
> > And mention that elf_getdata will set the Elf_Data d_type to the
> > Elf_Type of the section?
> 
> I added "See libelf(3) for more information regarding Elf_Type" to
> the description.  This man page doesn't exist yet but I will add it
> and include a list of the different Elf_Type and its relationship to
> Elf_Data.

Nice. This version of the elf(32|64)_fsize man page looks good to me.

Thanks,

Mark

>  doc/elf32_fsize.3 | 78 +++++++++++++++++++++++++++++++++++++++++++++++
>  doc/elf64_fsize.3 |  1 +
>  2 files changed, 79 insertions(+)
>  create mode 100644 doc/elf32_fsize.3
>  create mode 100644 doc/elf64_fsize.3
> 
> diff --git a/doc/elf32_fsize.3 b/doc/elf32_fsize.3
> new file mode 100644
> index 00000000..a0aac70e
> --- /dev/null
> +++ b/doc/elf32_fsize.3
> @@ -0,0 +1,78 @@
> +.TH ELF32_FSIZE 3 2024-08-14 "Libelf" "Libelf Programmer's Manual"
> +
> +.SH NAME
> +elf32_fsize, elf64_fsize \- calculate the file size of an ELF data structure
> +
> +.SH SYNOPSIS
> +.nf
> +.B #include <libelf.h>
> +
> +.BI "size_t elf32_fsize(Elf_Type " type ", size_t " count ", unsigned int " version ");"
> +.BI "size_t elf64_fsize(Elf_Type " type ", size_t " count ", unsigned int " version ");"
> +
> +.SH DESCRIPTION
> +Given an
> +.B Elf_Type
> +representation of a core ELF structure as well as the number of items, return
> +the number of bytes needed for the on-disk representation in a 32-bit or 64-bit
> +ELF file.  The on-disk and in-memory representations of
> +.B Elf_Type
> +are assumed to be the same. See
> +.BR libelf (3)
> +for more information regarding
> +.BR Elf_Type .
> +
> +.SH PARAMETERS
> +.TP
> +.I type
> +The ELF data structure type for which the file size is to be calculated.
> +
> +.TP
> +.I count
> +The number of elements of the specified type.
> +
> +.TP
> +.I version
> +The ELF version. This should be set to
> +.BR EV_CURRENT ,
> +which is the only valid value.
> +
> +.SH RETURN VALUE
> +The size in bytes of the specified count and type of data structure.
> +If version is not set to
> +.B EV_CURRENT
> +or
> +.I type
> +is not a valid
> +.BR Elf_Type ,
> +return 0 and set a libelf error code. Integer overflow can occur if
> +the size of
> +.I type
> +multiplied by
> +.I count
> +is greater than
> +.BR SIZE_MAX .
> +
> +.SH SEE ALSO
> +.BR elf_errno (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 elf32_fsize (),
> +.BR elf64_fsize ()
> +T}	Thread safety	MT-Safe
> +.TE
> +
> +.SH REPORTING BUGS
> +Report bugs to <elfutils-devel@sourceware.org> or https://sourceware.org/bugzilla/.
> diff --git a/doc/elf64_fsize.3 b/doc/elf64_fsize.3
> new file mode 100644
> index 00000000..178152ec
> --- /dev/null
> +++ b/doc/elf64_fsize.3
> @@ -0,0 +1 @@
> +.so man3/elf32_fsize.3
  

Patch

diff --git a/doc/elf32_fsize.3 b/doc/elf32_fsize.3
new file mode 100644
index 00000000..a0aac70e
--- /dev/null
+++ b/doc/elf32_fsize.3
@@ -0,0 +1,78 @@ 
+.TH ELF32_FSIZE 3 2024-08-14 "Libelf" "Libelf Programmer's Manual"
+
+.SH NAME
+elf32_fsize, elf64_fsize \- calculate the file size of an ELF data structure
+
+.SH SYNOPSIS
+.nf
+.B #include <libelf.h>
+
+.BI "size_t elf32_fsize(Elf_Type " type ", size_t " count ", unsigned int " version ");"
+.BI "size_t elf64_fsize(Elf_Type " type ", size_t " count ", unsigned int " version ");"
+
+.SH DESCRIPTION
+Given an
+.B Elf_Type
+representation of a core ELF structure as well as the number of items, return
+the number of bytes needed for the on-disk representation in a 32-bit or 64-bit
+ELF file.  The on-disk and in-memory representations of
+.B Elf_Type
+are assumed to be the same. See
+.BR libelf (3)
+for more information regarding
+.BR Elf_Type .
+
+.SH PARAMETERS
+.TP
+.I type
+The ELF data structure type for which the file size is to be calculated.
+
+.TP
+.I count
+The number of elements of the specified type.
+
+.TP
+.I version
+The ELF version. This should be set to
+.BR EV_CURRENT ,
+which is the only valid value.
+
+.SH RETURN VALUE
+The size in bytes of the specified count and type of data structure.
+If version is not set to
+.B EV_CURRENT
+or
+.I type
+is not a valid
+.BR Elf_Type ,
+return 0 and set a libelf error code. Integer overflow can occur if
+the size of
+.I type
+multiplied by
+.I count
+is greater than
+.BR SIZE_MAX .
+
+.SH SEE ALSO
+.BR elf_errno (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 elf32_fsize (),
+.BR elf64_fsize ()
+T}	Thread safety	MT-Safe
+.TE
+
+.SH REPORTING BUGS
+Report bugs to <elfutils-devel@sourceware.org> or https://sourceware.org/bugzilla/.
diff --git a/doc/elf64_fsize.3 b/doc/elf64_fsize.3
new file mode 100644
index 00000000..178152ec
--- /dev/null
+++ b/doc/elf64_fsize.3
@@ -0,0 +1 @@ 
+.so man3/elf32_fsize.3