mirror of https://github.com/torvalds/linux.git
objtool: Clean up compiler flag usage
KBUILD_HOSTCFLAGS and KBUILD_HOSTLDFLAGS aren't defined when objtool is built standalone. Also, the EXTRA_WARNINGS flags are rather arbitrary. Make things simpler and more consistent by specifying compiler flags explicitly and tweaking the warnings. Also make a few code tweaks to make the new warnings happy. Acked-by: Petr Mladek <pmladek@suse.com> Tested-by: Joe Lawrence <joe.lawrence@redhat.com> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
This commit is contained in:
parent
34244f784c
commit
31eca25f3a
|
|
@ -23,6 +23,11 @@ LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lel
|
|||
|
||||
all: $(OBJTOOL)
|
||||
|
||||
WARNINGS := -Werror -Wall -Wextra -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wwrite-strings \
|
||||
-Wno-implicit-fallthrough -Wno-sign-compare \
|
||||
-Wno-unused-parameter
|
||||
|
||||
INCLUDES := -I$(srctree)/tools/include \
|
||||
-I$(srctree)/tools/include/uapi \
|
||||
-I$(srctree)/tools/arch/$(HOSTARCH)/include/uapi \
|
||||
|
|
@ -30,11 +35,11 @@ INCLUDES := -I$(srctree)/tools/include \
|
|||
-I$(srctree)/tools/objtool/include \
|
||||
-I$(srctree)/tools/objtool/arch/$(SRCARCH)/include \
|
||||
-I$(LIBSUBCMD_OUTPUT)/include
|
||||
# Note, EXTRA_WARNINGS here was determined for CC and not HOSTCC, it
|
||||
# is passed here to match a legacy behavior.
|
||||
WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed -Wno-nested-externs
|
||||
OBJTOOL_CFLAGS := -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBELF_FLAGS)
|
||||
OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS)
|
||||
|
||||
OBJTOOL_CFLAGS := -std=gnu11 -fomit-frame-pointer -O2 -g \
|
||||
$(WARNINGS) $(INCLUDES) $(LIBELF_FLAGS) $(HOSTCFLAGS)
|
||||
|
||||
OBJTOOL_LDFLAGS := $(LIBSUBCMD) $(LIBELF_LIBS) $(HOSTLDFLAGS)
|
||||
|
||||
# Allow old libelf to be used:
|
||||
elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(HOSTCC) $(OBJTOOL_CFLAGS) -x c -E - 2>/dev/null | grep elf_getshdr)
|
||||
|
|
|
|||
|
|
@ -461,7 +461,7 @@ static int decode_instructions(struct objtool_file *file)
|
|||
|
||||
for (offset = 0; offset < sec->sh.sh_size; offset += insn->len) {
|
||||
if (!insns || idx == INSN_CHUNK_MAX) {
|
||||
insns = calloc(sizeof(*insn), INSN_CHUNK_SIZE);
|
||||
insns = calloc(INSN_CHUNK_SIZE, sizeof(*insn));
|
||||
if (!insns) {
|
||||
ERROR_GLIBC("calloc");
|
||||
return -1;
|
||||
|
|
@ -607,7 +607,7 @@ static int init_pv_ops(struct objtool_file *file)
|
|||
return 0;
|
||||
|
||||
nr = sym->len / sizeof(unsigned long);
|
||||
file->pv_ops = calloc(sizeof(struct pv_state), nr);
|
||||
file->pv_ops = calloc(nr, sizeof(struct pv_state));
|
||||
if (!file->pv_ops) {
|
||||
ERROR_GLIBC("calloc");
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -736,7 +736,7 @@ static int elf_update_symbol(struct elf *elf, struct section *symtab,
|
|||
}
|
||||
|
||||
/* setup extended section index magic and write the symbol */
|
||||
if ((shndx >= SHN_UNDEF && shndx < SHN_LORESERVE) || is_special_shndx) {
|
||||
if (shndx < SHN_LORESERVE || is_special_shndx) {
|
||||
sym->sym.st_shndx = shndx;
|
||||
if (!shndx_data)
|
||||
shndx = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue