Signed-off-by: Aaron Merey <ame...@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 <m...@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 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 -- 2.46.2