libelf: gelf_newehdr and gelf_newehdr should return void *.

unsigned long int is not always capable to have pointer in some cases
(LLP64, for example). Return a void pointer instead. Other libelf
implementations will also make this change (or already have).
Also update the documentation to state what is created and that NULL
is returned on error (don't document that the returned value is a
pointer to the actual header created).

Signed-off-by: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Signed-off-by: Mark Wielaard <mjw@redhat.com>
This commit is contained in:
Akihiko Odaki
2016-10-11 23:12:11 +09:00
committed by Mark Wielaard
parent ee225020a8
commit 0d0f8450ff
4 changed files with 22 additions and 10 deletions
+8
View File
@@ -1,3 +1,11 @@
2016-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Mark Wielaard <mjw@redhat.com>
* gelf.h (gelf_newehdr): Change return type to void *.
(gelf_newphdr): Likewise.
* gelf_newehdr.c (gelf_newehdr): Likewise.
* gelf_newphdr.c (gelf_newphdr): Likewise.
2016-10-21 Mark Wielaard <mjw@redhat.com>
* elf_getdata.c (__libelf_set_rawdata_wrlock): Sanity check
+8 -4
View File
@@ -165,8 +165,10 @@ extern GElf_Ehdr *gelf_getehdr (Elf *__elf, GElf_Ehdr *__dest);
/* Update the ELF header. */
extern int gelf_update_ehdr (Elf *__elf, GElf_Ehdr *__src);
/* Create new ELF header if none exists. */
extern unsigned long int gelf_newehdr (Elf *__elf, int __class);
/* Create new ELF header if none exists. Creates an Elf32_Ehdr if CLASS
is ELFCLASS32 or an Elf64_Ehdr if CLASS is ELFCLASS64. Returns NULL
on error. */
extern void *gelf_newehdr (Elf *__elf, int __class);
/* Get section at OFFSET. */
extern Elf_Scn *gelf_offscn (Elf *__elf, GElf_Off __offset);
@@ -183,8 +185,10 @@ extern GElf_Phdr *gelf_getphdr (Elf *__elf, int __ndx, GElf_Phdr *__dst);
/* Update the program header. */
extern int gelf_update_phdr (Elf *__elf, int __ndx, GElf_Phdr *__src);
/* Create new program header with PHNUM entries. */
extern unsigned long int gelf_newphdr (Elf *__elf, size_t __phnum);
/* Create new program header with PHNUM entries. Creates either an
Elf32_Phdr or an Elf64_Phdr depending on whether the given ELF is
ELFCLASS32 or ELFCLASS64. Returns NULL on error. */
extern void *gelf_newphdr (Elf *__elf, size_t __phnum);
/* Get compression header of section if any. Returns NULL and sets
elf_errno if the section isn't compressed or an error occurred. */
+3 -3
View File
@@ -37,10 +37,10 @@
#include "libelfP.h"
unsigned long int
void *
gelf_newehdr (Elf *elf, int class)
{
return (class == ELFCLASS32
? (unsigned long int) INTUSE(elf32_newehdr) (elf)
: (unsigned long int) INTUSE(elf64_newehdr) (elf));
? (void *) INTUSE(elf32_newehdr) (elf)
: (void *) INTUSE(elf64_newehdr) (elf));
}
+3 -3
View File
@@ -37,10 +37,10 @@
#include "libelfP.h"
unsigned long int
void *
gelf_newphdr ( Elf *elf, size_t phnum)
{
return (elf->class == ELFCLASS32
? (unsigned long int) INTUSE(elf32_newphdr) (elf, phnum)
: (unsigned long int) INTUSE(elf64_newphdr) (elf, phnum));
? (void *) INTUSE(elf32_newphdr) (elf, phnum)
: (void *) INTUSE(elf64_newphdr) (elf, phnum));
}