summaryrefslogtreecommitdiffstats
path: root/lib/libelf/elf_shnum.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libelf/elf_shnum.c')
-rw-r--r--lib/libelf/elf_shnum.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/lib/libelf/elf_shnum.c b/lib/libelf/elf_shnum.c
index d22a1fc..50cd0f5 100644
--- a/lib/libelf/elf_shnum.c
+++ b/lib/libelf/elf_shnum.c
@@ -32,8 +32,8 @@ __FBSDID("$FreeBSD$");
#include "_libelf.h"
-int
-elf_getshnum(Elf *e, size_t *shnum)
+static int
+_libelf_getshdrnum(Elf *e, size_t *shnum)
{
void *eh;
int ec;
@@ -41,13 +41,26 @@ elf_getshnum(Elf *e, size_t *shnum)
if (e == NULL || e->e_kind != ELF_K_ELF ||
((ec = e->e_class) != ELFCLASS32 && ec != ELFCLASS64)) {
LIBELF_SET_ERROR(ARGUMENT, 0);
- return (0);
+ return (-1);
}
if ((eh = _libelf_ehdr(e, ec, 0)) == NULL)
- return (0);
+ return (-1);
*shnum = e->e_u.e_elf.e_nscn;
- return (1);
+ return (0);
+}
+
+int
+elf_getshdrnum(Elf *e, size_t *shnum)
+{
+ return (_libelf_getshdrnum(e, shnum));
+}
+
+/* Deprecated API. */
+int
+elf_getshnum(Elf *e, size_t *shnum)
+{
+ return (_libelf_getshdrnum(e, shnum) >= 0);
}
OpenPOWER on IntegriCloud