Add const and unsigned when it make sense and use size_t. Also use -Wall master origin/HEAD origin/master
authorSofian Brabez <sbz@FreeBSD.org>
Sat, 12 Jun 2021 09:43:41 +0000 (09:43 +0000)
committerSofian Brabez <sbz@FreeBSD.org>
Sat, 12 Jun 2021 10:02:11 +0000 (10:02 +0000)
to raise all possible warnings during compilation

Reported by: miod

GNUmakefile
Makefile
compat.h
elf.c
elf.h
elfdbg.c

index e8a75eaad17d8990ff7869902492578ef6f7143f..4b345b940df725967d1f30aa094deb3f8d221756 100644 (file)
@@ -1,5 +1,6 @@
 CC?=   cc
-CFLAGS?=       -O2 -g -pipe -D_DEFAULT_SOURCE -Wincompatible-pointer-types
+CFLAGS?=       -O2 -g -pipe -D_DEFAULT_SOURCE \
+                       -Wincompatible-pointer-types -Wall
 SRCS=  elf.c elfdbg.c compat.c
 OBJS=  ${SRCS:.c=.o}
 PREFIX?=       /usr/local
index e61871984e3f708e4dcf150eb8acf2b38b8a09a9..8aae836f24c0d172a64a8dd2ecb1a121bd0fdb37 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 PREFIX?=       /usr/local
 BINDIR=        ${PREFIX}/bin
 
-CFLAGS=-O2 -pipe -std=gnu99
+CFLAGS=-O2 -pipe -std=gnu99 -Wall
 
 PROG=  elfdbg
 MAN=   elfdbg.1
index e29ce4abda91ffcb2cd19dfabaf1f776ef8d5d20..e0b3afdbf26af567002287d72803174cb486b402 100644 (file)
--- a/compat.h
+++ b/compat.h
@@ -13,7 +13,7 @@ typedef Elf32_Shdr Elf_Shdr;
 #endif
 
 #if defined(__linux__) || defined(__OpenBSD__)
-/* Linux and OpenBSD does not define strnstr() function */
+/* Linux and OpenBSD do not define strnstr() function */
 char *strnstr(const char *, const char *, size_t);
 #endif
 
diff --git a/elf.c b/elf.c
index a1d7ae5c08e5e8c8e41de27c9d9068d4b2c1e6c5..e576498709a6728e24b3a58d8b823f481d60d426 100644 (file)
--- a/elf.c
+++ b/elf.c
@@ -117,7 +117,7 @@ elf_destroy(Elf_Obj *e)
 }
 
 char *
-elf_str_get(Elf_Obj *e, int index)
+elf_str_get(Elf_Obj *e, size_t index)
 {
        if (e == NULL || index > e->strtab_size)
                return (NULL);
@@ -125,16 +125,17 @@ elf_str_get(Elf_Obj *e, int index)
        return (&e->strtab[e->shdr[index].sh_name]);
 }
 
-int
+unsigned int
 elf_debug_count(Elf_Obj *e)
 {
-       int i, has_debug = 0;
-       char *debug_prefix = ".debug_";
+       unsigned int has_debug = 0;
+       const char debug_prefix[] = ".debug_";
        char *section_name = NULL;
 
-       for (i = 0; i < e->shdr_size; i++) {
+       for (size_t i = 0; i < e->shdr_size; i++) {
                section_name = elf_str_get(e, i);
-               if (strnstr(section_name, debug_prefix, strlen(debug_prefix))) {
+        if (strnstr(section_name, debug_prefix,
+                    strlen(debug_prefix))) {
                        has_debug++;
                }
        }
@@ -145,18 +146,18 @@ elf_debug_count(Elf_Obj *e)
 void
 elf_debug_print(Elf_Obj *e)
 {
-       int i;
-       char *debug_prefix = ".debug_";
+       const char debug_prefix[] = ".debug_";
        char *section_name = NULL;
 
-       printf("%d ELF debug sections:\n", elf_debug_count(e));
+       printf("%u ELF debug sections:\n", elf_debug_count(e));
 
-       for (i = 0; i < e->shdr_size; i++) {
+       for (size_t i = 0; i < e->shdr_size; i++) {
                if (e->shdr[i].sh_type != SHT_PROGBITS)
                        continue;
 
                section_name = elf_str_get(e, i);
-               if (strnstr(section_name, debug_prefix, strlen(debug_prefix))) {
+               if (strnstr(section_name, debug_prefix,
+                    strlen(debug_prefix))) {
                        printf("%s\n", section_name);
                }
        }
diff --git a/elf.h b/elf.h
index c9a4e5fd3007f3b0fada8a5530b19c52eb59561c..dc2d49a6bdd10cf81680ce7075751770d486005e 100644 (file)
--- a/elf.h
+++ b/elf.h
@@ -6,7 +6,7 @@
 
 #include "compat.h"
 
-typedef struct Elf_Obj {
+typedef struct {
        int fd; /* file descriptor */
        struct stat sb; /* file stat */
        char *mm; /* memory mapping */
@@ -21,8 +21,8 @@ typedef struct Elf_Obj {
 Elf_Obj *elf_init(const char *);
 int elf_destroy(Elf_Obj *);
 Elf_Shdr *elf_strtab(Elf_Obj *);
-char *elf_str_get(Elf_Obj *, int);
-int elf_debug_count(Elf_Obj *);
+char *elf_str_get(Elf_Obj *, size_t);
+unsigned int elf_debug_count(Elf_Obj *);
 void elf_debug_print(Elf_Obj *);
 
 #endif /* ELFDBG_ELF_H */
index 3f62372f026fc1d4f7b81718bd67418c9d9e8a2b..b83565d38a7acf2c9e0fe246642bcff6fe2c1c86 100644 (file)
--- a/elfdbg.c
+++ b/elfdbg.c
@@ -46,7 +46,8 @@ usage(void)
 int
 main(int argc, char *argv[])
 {
-       int rc, has_debug;
+       int rc; 
+       unsigned int has_debug;
        int ch, qflag = 0, vflag = 0;
        Elf_Obj *e = NULL;
        Elf_Shdr *shstr = NULL;