This patch adds [stub] implementations for required
functions, inorder to enable objtool build on powerpc.
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
[Christophe Leroy: powerpc: Add missing asm/asm.h for objtool]
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
arch/powerpc/Kconfig | 1 +
arch/powerpc/include/asm/asm.h | 7 ++
tools/objtool/arch/powerpc/Build | 2 +
tools/objtool/arch/powerpc/decode.c | 74 +++++++++++++++++++
.../arch/powerpc/include/arch/cfi_regs.h | 11 +++
tools/objtool/arch/powerpc/include/arch/elf.h | 8 ++
.../arch/powerpc/include/arch/special.h | 21 ++++++
tools/objtool/arch/powerpc/special.c | 19 +++++
8 files changed, 143 insertions(+)
create mode 100644 arch/powerpc/include/asm/asm.h
create mode 100644 tools/objtool/arch/powerpc/Build
create mode 100644 tools/objtool/arch/powerpc/decode.c
create mode 100644 tools/objtool/arch/powerpc/include/arch/cfi_regs.h
create mode 100644 tools/objtool/arch/powerpc/include/arch/elf.h
create mode 100644 tools/objtool/arch/powerpc/include/arch/special.h
create mode 100644 tools/objtool/arch/powerpc/special.c
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 4c466acdc70d..dc05cd23c233 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -237,6 +237,7 @@ config PPC
select HAVE_MOD_ARCH_SPECIFIC
select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
select HAVE_OPTPROBES
+ select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
select HAVE_PERF_EVENTS
select HAVE_PERF_EVENTS_NMI if PPC64
select HAVE_PERF_REGS
diff --git a/arch/powerpc/include/asm/asm.h b/arch/powerpc/include/asm/asm.h
new file mode 100644
index 000000000000..86f46b604e9a
--- /dev/null
+++ b/arch/powerpc/include/asm/asm.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_POWERPC_ASM_H
+#define _ASM_POWERPC_ASM_H
+
+#define _ASM_PTR " .long "
+
+#endif /* _ASM_POWERPC_ASM_H */
diff --git a/tools/objtool/arch/powerpc/Build b/tools/objtool/arch/powerpc/Build
new file mode 100644
index 000000000000..d24d5636a5b8
--- /dev/null
+++ b/tools/objtool/arch/powerpc/Build
@@ -0,0 +1,2 @@
+objtool-y += decode.o
+objtool-y += special.o
diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
new file mode 100644
index 000000000000..8b6a14680da7
--- /dev/null
+++ b/tools/objtool/arch/powerpc/decode.c
@@ -0,0 +1,74 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <objtool/check.h>
+#include <objtool/elf.h>
+#include <objtool/arch.h>
+#include <objtool/warn.h>
+#include <objtool/builtin.h>
+#include <objtool/endianness.h>
+
+unsigned long arch_dest_reloc_offset(int addend)
+{
+ return addend;
+}
+
+bool arch_callee_saved_reg(unsigned char reg)
+{
+ return false;
+}
+
+int arch_decode_hint_reg(u8 sp_reg, int *base)
+{
+ exit(-1);
+}
+
+const char *arch_nop_insn(int len)
+{
+ exit(-1);
+}
+
+const char *arch_ret_insn(int len)
+{
+ exit(-1);
+}
+
+int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
+ unsigned long offset, unsigned int maxlen,
+ unsigned int *len, enum insn_type *type,
+ unsigned long *immediate,
+ struct list_head *ops_list)
+{
+ u32 insn;
+
+ *immediate = 0;
+ insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
+ *len = 4;
+ *type = INSN_OTHER;
+
+ return 0;
+}
+
+unsigned long arch_jump_destination(struct instruction *insn)
+{
+ return insn->offset + insn->immediate;
+}
+
+void arch_initial_func_cfi_state(struct cfi_init_state *state)
+{
+ int i;
+
+ for (i = 0; i < CFI_NUM_REGS; i++) {
+ state->regs[i].base = CFI_UNDEFINED;
+ state->regs[i].offset = 0;
+ }
+
+ /* initial CFA (call frame address) */
+ state->cfa.base = CFI_SP;
+ state->cfa.offset = 0;
+
+ /* initial LR (return address) */
+ state->regs[CFI_RA].base = CFI_CFA;
+ state->regs[CFI_RA].offset = 0;
+}
diff --git a/tools/objtool/arch/powerpc/include/arch/cfi_regs.h b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
new file mode 100644
index 000000000000..59638ebeafc8
--- /dev/null
+++ b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef _OBJTOOL_CFI_REGS_H
+#define _OBJTOOL_CFI_REGS_H
+
+#define CFI_BP 1
+#define CFI_SP CFI_BP
+#define CFI_RA 32
+#define CFI_NUM_REGS 33
+
+#endif
diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
new file mode 100644
index 000000000000..3c8ebb7d2a6b
--- /dev/null
+++ b/tools/objtool/arch/powerpc/include/arch/elf.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef _OBJTOOL_ARCH_ELF
+#define _OBJTOOL_ARCH_ELF
+
+#define R_NONE R_PPC_NONE
+
+#endif /* _OBJTOOL_ARCH_ELF */
diff --git a/tools/objtool/arch/powerpc/include/arch/special.h b/tools/objtool/arch/powerpc/include/arch/special.h
new file mode 100644
index 000000000000..ffef9ada7133
--- /dev/null
+++ b/tools/objtool/arch/powerpc/include/arch/special.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#ifndef _PPC_ARCH_SPECIAL_H
+#define _PPC_ARCH_SPECIAL_H
+
+#define EX_ENTRY_SIZE 8
+#define EX_ORIG_OFFSET 0
+#define EX_NEW_OFFSET 4
+
+#define JUMP_ENTRY_SIZE 16
+#define JUMP_ORIG_OFFSET 0
+#define JUMP_NEW_OFFSET 4
+#define JUMP_KEY_OFFSET 8
+
+#define ALT_ENTRY_SIZE 12
+#define ALT_ORIG_OFFSET 0
+#define ALT_NEW_OFFSET 4
+#define ALT_FEATURE_OFFSET 8
+#define ALT_ORIG_LEN_OFFSET 10
+#define ALT_NEW_LEN_OFFSET 11
+
+#endif /* _PPC_ARCH_SPECIAL_H */
diff --git a/tools/objtool/arch/powerpc/special.c b/tools/objtool/arch/powerpc/special.c
new file mode 100644
index 000000000000..d33868147196
--- /dev/null
+++ b/tools/objtool/arch/powerpc/special.c
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <string.h>
+#include <stdlib.h>
+#include <objtool/special.h>
+#include <objtool/builtin.h>
+
+
+bool arch_support_alt_relocation(struct special_alt *special_alt,
+ struct instruction *insn,
+ struct reloc *reloc)
+{
+ exit(-1);
+}
+
+struct reloc *arch_find_switch_table(struct objtool_file *file,
+ struct instruction *insn)
+{
+ exit(-1);
+}
--
2.31.1
Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
> This patch adds [stub] implementations for required
> functions, inorder to enable objtool build on powerpc.
>
> Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
> [Christophe Leroy: powerpc: Add missing asm/asm.h for objtool]
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/include/asm/asm.h | 7 ++
> tools/objtool/arch/powerpc/Build | 2 +
> tools/objtool/arch/powerpc/decode.c | 74 +++++++++++++++++++
> .../arch/powerpc/include/arch/cfi_regs.h | 11 +++
> tools/objtool/arch/powerpc/include/arch/elf.h | 8 ++
> .../arch/powerpc/include/arch/special.h | 21 ++++++
> tools/objtool/arch/powerpc/special.c | 19 +++++
> 8 files changed, 143 insertions(+)
> create mode 100644 arch/powerpc/include/asm/asm.h
> create mode 100644 tools/objtool/arch/powerpc/Build
> create mode 100644 tools/objtool/arch/powerpc/decode.c
> create mode 100644 tools/objtool/arch/powerpc/include/arch/cfi_regs.h
> create mode 100644 tools/objtool/arch/powerpc/include/arch/elf.h
> create mode 100644 tools/objtool/arch/powerpc/include/arch/special.h
> create mode 100644 tools/objtool/arch/powerpc/special.c
>
> +int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
> + unsigned long offset, unsigned int maxlen,
> + unsigned int *len, enum insn_type *type,
> + unsigned long *immediate,
> + struct list_head *ops_list)
> +{
> + u32 insn;
> +
> + *immediate = 0;
> + insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
> + *len = 4;
Should be *len = 8 when insn >> 26 == 1.
I will send you something later on.
> + *type = INSN_OTHER;
> +
> + return 0;
> +}
> +
> +unsigned long arch_jump_destination(struct instruction *insn)
> +{
> + return insn->offset + insn->immediate;
Two spaces after the +
Should be only one.
> +}
> +
> +void arch_initial_func_cfi_state(struct cfi_init_state *state)
> +{
> + int i;
> +
> + for (i = 0; i < CFI_NUM_REGS; i++) {
> + state->regs[i].base = CFI_UNDEFINED;
> + state->regs[i].offset = 0;
> + }
> +
> + /* initial CFA (call frame address) */
> + state->cfa.base = CFI_SP;
> + state->cfa.offset = 0;
> +
> + /* initial LR (return address) */
> + state->regs[CFI_RA].base = CFI_CFA;
> + state->regs[CFI_RA].offset = 0;
> +}
On Thu, Sep 01, 2022 at 09:32:46AM +0000, Christophe Leroy wrote:
> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
> > +int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
> > + unsigned long offset, unsigned int maxlen,
> > + unsigned int *len, enum insn_type *type,
> > + unsigned long *immediate,
> > + struct list_head *ops_list)
> > +{
> > + u32 insn;
> > +
> > + *immediate = 0;
> > + insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
> > + *len = 4;
>
> Should be *len = 8 when insn >> 26 == 1.
But please use ppc_inst_prefixed(). And just use ppc_inst_len() here?
Not having convenience abstraction functions like that will give you
much more work in the future -- currently all prefix insns use primary
opcode 1, sure, and nothing else does; but this can change.
Segher
Le 01/09/2022 à 17:11, Segher Boessenkool a écrit :
> On Thu, Sep 01, 2022 at 09:32:46AM +0000, Christophe Leroy wrote:
>> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
>>> +int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
>>> + unsigned long offset, unsigned int maxlen,
>>> + unsigned int *len, enum insn_type *type,
>>> + unsigned long *immediate,
>>> + struct list_head *ops_list)
>>> +{
>>> + u32 insn;
>>> +
>>> + *immediate = 0;
>>> + insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
>>> + *len = 4;
>>
>> Should be *len = 8 when insn >> 26 == 1.
>
> But please use ppc_inst_prefixed(). And just use ppc_inst_len() here?
objtool is a userland app, there is no access to kernel headers here.
>
> Not having convenience abstraction functions like that will give you
> much more work in the future -- currently all prefix insns use primary
> opcode 1, sure, and nothing else does; but this can change.
>
Yes most likely. Then we have to rebuild some light abstraction for objtool.
Christophe
On Thu, Sep 01, 2022 at 04:38:52PM +0000, Christophe Leroy wrote: > objtool is a userland app, there is no access to kernel headers here. Please have a look at tools/include/ :-)
Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
> This patch adds [stub] implementations for required
> functions, inorder to enable objtool build on powerpc.
Not all powerpc it seems, see below
>
> Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
> [Christophe Leroy: powerpc: Add missing asm/asm.h for objtool]
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/include/asm/asm.h | 7 ++
> tools/objtool/arch/powerpc/Build | 2 +
> tools/objtool/arch/powerpc/decode.c | 74 +++++++++++++++++++
> .../arch/powerpc/include/arch/cfi_regs.h | 11 +++
> tools/objtool/arch/powerpc/include/arch/elf.h | 8 ++
> .../arch/powerpc/include/arch/special.h | 21 ++++++
> tools/objtool/arch/powerpc/special.c | 19 +++++
> 8 files changed, 143 insertions(+)
> create mode 100644 arch/powerpc/include/asm/asm.h
> create mode 100644 tools/objtool/arch/powerpc/Build
> create mode 100644 tools/objtool/arch/powerpc/decode.c
> create mode 100644 tools/objtool/arch/powerpc/include/arch/cfi_regs.h
> create mode 100644 tools/objtool/arch/powerpc/include/arch/elf.h
> create mode 100644 tools/objtool/arch/powerpc/include/arch/special.h
> create mode 100644 tools/objtool/arch/powerpc/special.c
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 4c466acdc70d..dc05cd23c233 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -237,6 +237,7 @@ config PPC
> select HAVE_MOD_ARCH_SPECIFIC
> select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
> select HAVE_OPTPROBES
> + select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
Why restrict it to MPROFILE_KERNEL ? In your RFC it was for all PPC64.
Recent discussion on the list shows new problem with recordmcount, see
https://lore.kernel.org/all/MW5PR84MB184250EA1CAE04497C1E7CE9AB769@MW5PR84MB1842.NAMPRD84.PROD.OUTLOOK.COM/
Those ones are with ppc64 big endian, so objtool would be welcome here
as well.
> select HAVE_PERF_EVENTS
> select HAVE_PERF_EVENTS_NMI if PPC64
> select HAVE_PERF_REGS
> diff --git a/arch/powerpc/include/asm/asm.h b/arch/powerpc/include/asm/asm.h
> new file mode 100644
> index 000000000000..86f46b604e9a
> --- /dev/null
> +++ b/arch/powerpc/include/asm/asm.h
> @@ -0,0 +1,7 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_POWERPC_ASM_H
> +#define _ASM_POWERPC_ASM_H
> +
> +#define _ASM_PTR " .long "
> +
> +#endif /* _ASM_POWERPC_ASM_H */
> diff --git a/tools/objtool/arch/powerpc/Build b/tools/objtool/arch/powerpc/Build
> new file mode 100644
> index 000000000000..d24d5636a5b8
> --- /dev/null
> +++ b/tools/objtool/arch/powerpc/Build
> @@ -0,0 +1,2 @@
> +objtool-y += decode.o
> +objtool-y += special.o
> diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
> new file mode 100644
> index 000000000000..8b6a14680da7
> --- /dev/null
> +++ b/tools/objtool/arch/powerpc/decode.c
> @@ -0,0 +1,74 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <objtool/check.h>
> +#include <objtool/elf.h>
> +#include <objtool/arch.h>
> +#include <objtool/warn.h>
> +#include <objtool/builtin.h>
> +#include <objtool/endianness.h>
> +
> +unsigned long arch_dest_reloc_offset(int addend)
> +{
> + return addend;
> +}
> +
> +bool arch_callee_saved_reg(unsigned char reg)
> +{
> + return false;
> +}
> +
> +int arch_decode_hint_reg(u8 sp_reg, int *base)
> +{
> + exit(-1);
> +}
> +
> +const char *arch_nop_insn(int len)
> +{
> + exit(-1);
> +}
> +
> +const char *arch_ret_insn(int len)
> +{
> + exit(-1);
> +}
> +
> +int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
> + unsigned long offset, unsigned int maxlen,
> + unsigned int *len, enum insn_type *type,
> + unsigned long *immediate,
> + struct list_head *ops_list)
> +{
> + u32 insn;
> +
> + *immediate = 0;
> + insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
> + *len = 4;
> + *type = INSN_OTHER;
> +
> + return 0;
> +}
> +
> +unsigned long arch_jump_destination(struct instruction *insn)
> +{
> + return insn->offset + insn->immediate;
> +}
> +
> +void arch_initial_func_cfi_state(struct cfi_init_state *state)
> +{
> + int i;
> +
> + for (i = 0; i < CFI_NUM_REGS; i++) {
> + state->regs[i].base = CFI_UNDEFINED;
> + state->regs[i].offset = 0;
> + }
> +
> + /* initial CFA (call frame address) */
> + state->cfa.base = CFI_SP;
> + state->cfa.offset = 0;
> +
> + /* initial LR (return address) */
> + state->regs[CFI_RA].base = CFI_CFA;
> + state->regs[CFI_RA].offset = 0;
> +}
> diff --git a/tools/objtool/arch/powerpc/include/arch/cfi_regs.h b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
> new file mode 100644
> index 000000000000..59638ebeafc8
> --- /dev/null
> +++ b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
> @@ -0,0 +1,11 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +
> +#ifndef _OBJTOOL_CFI_REGS_H
> +#define _OBJTOOL_CFI_REGS_H
> +
> +#define CFI_BP 1
> +#define CFI_SP CFI_BP
> +#define CFI_RA 32
> +#define CFI_NUM_REGS 33
> +
> +#endif
> diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
> new file mode 100644
> index 000000000000..3c8ebb7d2a6b
> --- /dev/null
> +++ b/tools/objtool/arch/powerpc/include/arch/elf.h
> @@ -0,0 +1,8 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +
> +#ifndef _OBJTOOL_ARCH_ELF
> +#define _OBJTOOL_ARCH_ELF
> +
> +#define R_NONE R_PPC_NONE
> +
> +#endif /* _OBJTOOL_ARCH_ELF */
> diff --git a/tools/objtool/arch/powerpc/include/arch/special.h b/tools/objtool/arch/powerpc/include/arch/special.h
> new file mode 100644
> index 000000000000..ffef9ada7133
> --- /dev/null
> +++ b/tools/objtool/arch/powerpc/include/arch/special.h
> @@ -0,0 +1,21 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +#ifndef _PPC_ARCH_SPECIAL_H
> +#define _PPC_ARCH_SPECIAL_H
> +
> +#define EX_ENTRY_SIZE 8
> +#define EX_ORIG_OFFSET 0
> +#define EX_NEW_OFFSET 4
> +
> +#define JUMP_ENTRY_SIZE 16
> +#define JUMP_ORIG_OFFSET 0
> +#define JUMP_NEW_OFFSET 4
> +#define JUMP_KEY_OFFSET 8
> +
> +#define ALT_ENTRY_SIZE 12
> +#define ALT_ORIG_OFFSET 0
> +#define ALT_NEW_OFFSET 4
> +#define ALT_FEATURE_OFFSET 8
> +#define ALT_ORIG_LEN_OFFSET 10
> +#define ALT_NEW_LEN_OFFSET 11
> +
> +#endif /* _PPC_ARCH_SPECIAL_H */
> diff --git a/tools/objtool/arch/powerpc/special.c b/tools/objtool/arch/powerpc/special.c
> new file mode 100644
> index 000000000000..d33868147196
> --- /dev/null
> +++ b/tools/objtool/arch/powerpc/special.c
> @@ -0,0 +1,19 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +#include <string.h>
> +#include <stdlib.h>
> +#include <objtool/special.h>
> +#include <objtool/builtin.h>
> +
> +
> +bool arch_support_alt_relocation(struct special_alt *special_alt,
> + struct instruction *insn,
> + struct reloc *reloc)
> +{
> + exit(-1);
> +}
> +
> +struct reloc *arch_find_switch_table(struct objtool_file *file,
> + struct instruction *insn)
> +{
> + exit(-1);
> +}
Hi--
On 8/29/22 23:41, Christophe Leroy wrote:
>
>
> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
>> This patch adds [stub] implementations for required
>> functions, inorder to enable objtool build on powerpc.
>
> Not all powerpc it seems, see below
>
When cross-compiling PPC32 (on x86_64), I get 3600+ of these:
/bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
/bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
/bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
Is there some way that objtool should work when cross-compiling?
Thanks.
>>
>> Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
>> [Christophe Leroy: powerpc: Add missing asm/asm.h for objtool]
>> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
>> ---
>> arch/powerpc/Kconfig | 1 +
>> arch/powerpc/include/asm/asm.h | 7 ++
>> tools/objtool/arch/powerpc/Build | 2 +
>> tools/objtool/arch/powerpc/decode.c | 74 +++++++++++++++++++
>> .../arch/powerpc/include/arch/cfi_regs.h | 11 +++
>> tools/objtool/arch/powerpc/include/arch/elf.h | 8 ++
>> .../arch/powerpc/include/arch/special.h | 21 ++++++
>> tools/objtool/arch/powerpc/special.c | 19 +++++
>> 8 files changed, 143 insertions(+)
>> create mode 100644 arch/powerpc/include/asm/asm.h
>> create mode 100644 tools/objtool/arch/powerpc/Build
>> create mode 100644 tools/objtool/arch/powerpc/decode.c
>> create mode 100644 tools/objtool/arch/powerpc/include/arch/cfi_regs.h
>> create mode 100644 tools/objtool/arch/powerpc/include/arch/elf.h
>> create mode 100644 tools/objtool/arch/powerpc/include/arch/special.h
>> create mode 100644 tools/objtool/arch/powerpc/special.c
>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 4c466acdc70d..dc05cd23c233 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -237,6 +237,7 @@ config PPC
>> select HAVE_MOD_ARCH_SPECIFIC
>> select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
>> select HAVE_OPTPROBES
>> + select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
>
> Why restrict it to MPROFILE_KERNEL ? In your RFC it was for all PPC64.
>
> Recent discussion on the list shows new problem with recordmcount, see
> https://lore.kernel.org/all/MW5PR84MB184250EA1CAE04497C1E7CE9AB769@MW5PR84MB1842.NAMPRD84.PROD.OUTLOOK.COM/
>
> Those ones are with ppc64 big endian, so objtool would be welcome here
> as well.
>
>> select HAVE_PERF_EVENTS
>> select HAVE_PERF_EVENTS_NMI if PPC64
>> select HAVE_PERF_REGS
>> diff --git a/arch/powerpc/include/asm/asm.h b/arch/powerpc/include/asm/asm.h
>> new file mode 100644
>> index 000000000000..86f46b604e9a
>> --- /dev/null
>> +++ b/arch/powerpc/include/asm/asm.h
>> @@ -0,0 +1,7 @@
>> +/* SPDX-License-Identifier: GPL-2.0 */
>> +#ifndef _ASM_POWERPC_ASM_H
>> +#define _ASM_POWERPC_ASM_H
>> +
>> +#define _ASM_PTR " .long "
>> +
>> +#endif /* _ASM_POWERPC_ASM_H */
>> diff --git a/tools/objtool/arch/powerpc/Build b/tools/objtool/arch/powerpc/Build
>> new file mode 100644
>> index 000000000000..d24d5636a5b8
>> --- /dev/null
>> +++ b/tools/objtool/arch/powerpc/Build
>> @@ -0,0 +1,2 @@
>> +objtool-y += decode.o
>> +objtool-y += special.o
>> diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
>> new file mode 100644
>> index 000000000000..8b6a14680da7
>> --- /dev/null
>> +++ b/tools/objtool/arch/powerpc/decode.c
>> @@ -0,0 +1,74 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +#include <stdio.h>
>> +#include <stdlib.h>
>> +#include <objtool/check.h>
>> +#include <objtool/elf.h>
>> +#include <objtool/arch.h>
>> +#include <objtool/warn.h>
>> +#include <objtool/builtin.h>
>> +#include <objtool/endianness.h>
>> +
>> +unsigned long arch_dest_reloc_offset(int addend)
>> +{
>> + return addend;
>> +}
>> +
>> +bool arch_callee_saved_reg(unsigned char reg)
>> +{
>> + return false;
>> +}
>> +
>> +int arch_decode_hint_reg(u8 sp_reg, int *base)
>> +{
>> + exit(-1);
>> +}
>> +
>> +const char *arch_nop_insn(int len)
>> +{
>> + exit(-1);
>> +}
>> +
>> +const char *arch_ret_insn(int len)
>> +{
>> + exit(-1);
>> +}
>> +
>> +int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
>> + unsigned long offset, unsigned int maxlen,
>> + unsigned int *len, enum insn_type *type,
>> + unsigned long *immediate,
>> + struct list_head *ops_list)
>> +{
>> + u32 insn;
>> +
>> + *immediate = 0;
>> + insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
>> + *len = 4;
>> + *type = INSN_OTHER;
>> +
>> + return 0;
>> +}
>> +
>> +unsigned long arch_jump_destination(struct instruction *insn)
>> +{
>> + return insn->offset + insn->immediate;
>> +}
>> +
>> +void arch_initial_func_cfi_state(struct cfi_init_state *state)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < CFI_NUM_REGS; i++) {
>> + state->regs[i].base = CFI_UNDEFINED;
>> + state->regs[i].offset = 0;
>> + }
>> +
>> + /* initial CFA (call frame address) */
>> + state->cfa.base = CFI_SP;
>> + state->cfa.offset = 0;
>> +
>> + /* initial LR (return address) */
>> + state->regs[CFI_RA].base = CFI_CFA;
>> + state->regs[CFI_RA].offset = 0;
>> +}
>> diff --git a/tools/objtool/arch/powerpc/include/arch/cfi_regs.h b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
>> new file mode 100644
>> index 000000000000..59638ebeafc8
>> --- /dev/null
>> +++ b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
>> @@ -0,0 +1,11 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +
>> +#ifndef _OBJTOOL_CFI_REGS_H
>> +#define _OBJTOOL_CFI_REGS_H
>> +
>> +#define CFI_BP 1
>> +#define CFI_SP CFI_BP
>> +#define CFI_RA 32
>> +#define CFI_NUM_REGS 33
>> +
>> +#endif
>> diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
>> new file mode 100644
>> index 000000000000..3c8ebb7d2a6b
>> --- /dev/null
>> +++ b/tools/objtool/arch/powerpc/include/arch/elf.h
>> @@ -0,0 +1,8 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +
>> +#ifndef _OBJTOOL_ARCH_ELF
>> +#define _OBJTOOL_ARCH_ELF
>> +
>> +#define R_NONE R_PPC_NONE
>> +
>> +#endif /* _OBJTOOL_ARCH_ELF */
>> diff --git a/tools/objtool/arch/powerpc/include/arch/special.h b/tools/objtool/arch/powerpc/include/arch/special.h
>> new file mode 100644
>> index 000000000000..ffef9ada7133
>> --- /dev/null
>> +++ b/tools/objtool/arch/powerpc/include/arch/special.h
>> @@ -0,0 +1,21 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +#ifndef _PPC_ARCH_SPECIAL_H
>> +#define _PPC_ARCH_SPECIAL_H
>> +
>> +#define EX_ENTRY_SIZE 8
>> +#define EX_ORIG_OFFSET 0
>> +#define EX_NEW_OFFSET 4
>> +
>> +#define JUMP_ENTRY_SIZE 16
>> +#define JUMP_ORIG_OFFSET 0
>> +#define JUMP_NEW_OFFSET 4
>> +#define JUMP_KEY_OFFSET 8
>> +
>> +#define ALT_ENTRY_SIZE 12
>> +#define ALT_ORIG_OFFSET 0
>> +#define ALT_NEW_OFFSET 4
>> +#define ALT_FEATURE_OFFSET 8
>> +#define ALT_ORIG_LEN_OFFSET 10
>> +#define ALT_NEW_LEN_OFFSET 11
>> +
>> +#endif /* _PPC_ARCH_SPECIAL_H */
>> diff --git a/tools/objtool/arch/powerpc/special.c b/tools/objtool/arch/powerpc/special.c
>> new file mode 100644
>> index 000000000000..d33868147196
>> --- /dev/null
>> +++ b/tools/objtool/arch/powerpc/special.c
>> @@ -0,0 +1,19 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +#include <string.h>
>> +#include <stdlib.h>
>> +#include <objtool/special.h>
>> +#include <objtool/builtin.h>
>> +
>> +
>> +bool arch_support_alt_relocation(struct special_alt *special_alt,
>> + struct instruction *insn,
>> + struct reloc *reloc)
>> +{
>> + exit(-1);
>> +}
>> +
>> +struct reloc *arch_find_switch_table(struct objtool_file *file,
>> + struct instruction *insn)
>> +{
>> + exit(-1);
>> +}
--
~Randy
On 2/4/23 00:19, Randy Dunlap wrote:
> Hi--
>
> On 8/29/22 23:41, Christophe Leroy wrote:
>>
>>
>> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
>>> This patch adds [stub] implementations for required
>>> functions, inorder to enable objtool build on powerpc.
>>
>> Not all powerpc it seems, see below
>>
>
> When cross-compiling PPC32 (on x86_64), I get 3600+ of these:
>
> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>
> Is there some way that objtool should work when cross-compiling?
>
Oops. Its build failed. I seem to be missing header file(s)
and possibly a library.
I'll check on those...
Cheers.
>
>>>
>>> Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
>>> [Christophe Leroy: powerpc: Add missing asm/asm.h for objtool]
>>> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
>>> ---
>>> arch/powerpc/Kconfig | 1 +
>>> arch/powerpc/include/asm/asm.h | 7 ++
>>> tools/objtool/arch/powerpc/Build | 2 +
>>> tools/objtool/arch/powerpc/decode.c | 74 +++++++++++++++++++
>>> .../arch/powerpc/include/arch/cfi_regs.h | 11 +++
>>> tools/objtool/arch/powerpc/include/arch/elf.h | 8 ++
>>> .../arch/powerpc/include/arch/special.h | 21 ++++++
>>> tools/objtool/arch/powerpc/special.c | 19 +++++
>>> 8 files changed, 143 insertions(+)
>>> create mode 100644 arch/powerpc/include/asm/asm.h
>>> create mode 100644 tools/objtool/arch/powerpc/Build
>>> create mode 100644 tools/objtool/arch/powerpc/decode.c
>>> create mode 100644 tools/objtool/arch/powerpc/include/arch/cfi_regs.h
>>> create mode 100644 tools/objtool/arch/powerpc/include/arch/elf.h
>>> create mode 100644 tools/objtool/arch/powerpc/include/arch/special.h
>>> create mode 100644 tools/objtool/arch/powerpc/special.c
>>>
>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>> index 4c466acdc70d..dc05cd23c233 100644
>>> --- a/arch/powerpc/Kconfig
>>> +++ b/arch/powerpc/Kconfig
>>> @@ -237,6 +237,7 @@ config PPC
>>> select HAVE_MOD_ARCH_SPECIFIC
>>> select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S)
>>> select HAVE_OPTPROBES
>>> + select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL
>>
>> Why restrict it to MPROFILE_KERNEL ? In your RFC it was for all PPC64.
>>
>> Recent discussion on the list shows new problem with recordmcount, see
>> https://lore.kernel.org/all/MW5PR84MB184250EA1CAE04497C1E7CE9AB769@MW5PR84MB1842.NAMPRD84.PROD.OUTLOOK.COM/
>>
>> Those ones are with ppc64 big endian, so objtool would be welcome here
>> as well.
>>
>>> select HAVE_PERF_EVENTS
>>> select HAVE_PERF_EVENTS_NMI if PPC64
>>> select HAVE_PERF_REGS
>>> diff --git a/arch/powerpc/include/asm/asm.h b/arch/powerpc/include/asm/asm.h
>>> new file mode 100644
>>> index 000000000000..86f46b604e9a
>>> --- /dev/null
>>> +++ b/arch/powerpc/include/asm/asm.h
>>> @@ -0,0 +1,7 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> +#ifndef _ASM_POWERPC_ASM_H
>>> +#define _ASM_POWERPC_ASM_H
>>> +
>>> +#define _ASM_PTR " .long "
>>> +
>>> +#endif /* _ASM_POWERPC_ASM_H */
>>> diff --git a/tools/objtool/arch/powerpc/Build b/tools/objtool/arch/powerpc/Build
>>> new file mode 100644
>>> index 000000000000..d24d5636a5b8
>>> --- /dev/null
>>> +++ b/tools/objtool/arch/powerpc/Build
>>> @@ -0,0 +1,2 @@
>>> +objtool-y += decode.o
>>> +objtool-y += special.o
>>> diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c
>>> new file mode 100644
>>> index 000000000000..8b6a14680da7
>>> --- /dev/null
>>> +++ b/tools/objtool/arch/powerpc/decode.c
>>> @@ -0,0 +1,74 @@
>>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>> +
>>> +#include <stdio.h>
>>> +#include <stdlib.h>
>>> +#include <objtool/check.h>
>>> +#include <objtool/elf.h>
>>> +#include <objtool/arch.h>
>>> +#include <objtool/warn.h>
>>> +#include <objtool/builtin.h>
>>> +#include <objtool/endianness.h>
>>> +
>>> +unsigned long arch_dest_reloc_offset(int addend)
>>> +{
>>> + return addend;
>>> +}
>>> +
>>> +bool arch_callee_saved_reg(unsigned char reg)
>>> +{
>>> + return false;
>>> +}
>>> +
>>> +int arch_decode_hint_reg(u8 sp_reg, int *base)
>>> +{
>>> + exit(-1);
>>> +}
>>> +
>>> +const char *arch_nop_insn(int len)
>>> +{
>>> + exit(-1);
>>> +}
>>> +
>>> +const char *arch_ret_insn(int len)
>>> +{
>>> + exit(-1);
>>> +}
>>> +
>>> +int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
>>> + unsigned long offset, unsigned int maxlen,
>>> + unsigned int *len, enum insn_type *type,
>>> + unsigned long *immediate,
>>> + struct list_head *ops_list)
>>> +{
>>> + u32 insn;
>>> +
>>> + *immediate = 0;
>>> + insn = bswap_if_needed(file->elf, *(u32 *)(sec->data->d_buf + offset));
>>> + *len = 4;
>>> + *type = INSN_OTHER;
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +unsigned long arch_jump_destination(struct instruction *insn)
>>> +{
>>> + return insn->offset + insn->immediate;
>>> +}
>>> +
>>> +void arch_initial_func_cfi_state(struct cfi_init_state *state)
>>> +{
>>> + int i;
>>> +
>>> + for (i = 0; i < CFI_NUM_REGS; i++) {
>>> + state->regs[i].base = CFI_UNDEFINED;
>>> + state->regs[i].offset = 0;
>>> + }
>>> +
>>> + /* initial CFA (call frame address) */
>>> + state->cfa.base = CFI_SP;
>>> + state->cfa.offset = 0;
>>> +
>>> + /* initial LR (return address) */
>>> + state->regs[CFI_RA].base = CFI_CFA;
>>> + state->regs[CFI_RA].offset = 0;
>>> +}
>>> diff --git a/tools/objtool/arch/powerpc/include/arch/cfi_regs.h b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
>>> new file mode 100644
>>> index 000000000000..59638ebeafc8
>>> --- /dev/null
>>> +++ b/tools/objtool/arch/powerpc/include/arch/cfi_regs.h
>>> @@ -0,0 +1,11 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +
>>> +#ifndef _OBJTOOL_CFI_REGS_H
>>> +#define _OBJTOOL_CFI_REGS_H
>>> +
>>> +#define CFI_BP 1
>>> +#define CFI_SP CFI_BP
>>> +#define CFI_RA 32
>>> +#define CFI_NUM_REGS 33
>>> +
>>> +#endif
>>> diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h
>>> new file mode 100644
>>> index 000000000000..3c8ebb7d2a6b
>>> --- /dev/null
>>> +++ b/tools/objtool/arch/powerpc/include/arch/elf.h
>>> @@ -0,0 +1,8 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +
>>> +#ifndef _OBJTOOL_ARCH_ELF
>>> +#define _OBJTOOL_ARCH_ELF
>>> +
>>> +#define R_NONE R_PPC_NONE
>>> +
>>> +#endif /* _OBJTOOL_ARCH_ELF */
>>> diff --git a/tools/objtool/arch/powerpc/include/arch/special.h b/tools/objtool/arch/powerpc/include/arch/special.h
>>> new file mode 100644
>>> index 000000000000..ffef9ada7133
>>> --- /dev/null
>>> +++ b/tools/objtool/arch/powerpc/include/arch/special.h
>>> @@ -0,0 +1,21 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +#ifndef _PPC_ARCH_SPECIAL_H
>>> +#define _PPC_ARCH_SPECIAL_H
>>> +
>>> +#define EX_ENTRY_SIZE 8
>>> +#define EX_ORIG_OFFSET 0
>>> +#define EX_NEW_OFFSET 4
>>> +
>>> +#define JUMP_ENTRY_SIZE 16
>>> +#define JUMP_ORIG_OFFSET 0
>>> +#define JUMP_NEW_OFFSET 4
>>> +#define JUMP_KEY_OFFSET 8
>>> +
>>> +#define ALT_ENTRY_SIZE 12
>>> +#define ALT_ORIG_OFFSET 0
>>> +#define ALT_NEW_OFFSET 4
>>> +#define ALT_FEATURE_OFFSET 8
>>> +#define ALT_ORIG_LEN_OFFSET 10
>>> +#define ALT_NEW_LEN_OFFSET 11
>>> +
>>> +#endif /* _PPC_ARCH_SPECIAL_H */
>>> diff --git a/tools/objtool/arch/powerpc/special.c b/tools/objtool/arch/powerpc/special.c
>>> new file mode 100644
>>> index 000000000000..d33868147196
>>> --- /dev/null
>>> +++ b/tools/objtool/arch/powerpc/special.c
>>> @@ -0,0 +1,19 @@
>>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>> +#include <string.h>
>>> +#include <stdlib.h>
>>> +#include <objtool/special.h>
>>> +#include <objtool/builtin.h>
>>> +
>>> +
>>> +bool arch_support_alt_relocation(struct special_alt *special_alt,
>>> + struct instruction *insn,
>>> + struct reloc *reloc)
>>> +{
>>> + exit(-1);
>>> +}
>>> +
>>> +struct reloc *arch_find_switch_table(struct objtool_file *file,
>>> + struct instruction *insn)
>>> +{
>>> + exit(-1);
>>> +}
>
--
~Randy
On 2/4/23 00:21, Randy Dunlap wrote:
>
>
> On 2/4/23 00:19, Randy Dunlap wrote:
>> Hi--
>>
>> On 8/29/22 23:41, Christophe Leroy wrote:
>>>
>>>
>>> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
>>>> This patch adds [stub] implementations for required
>>>> functions, inorder to enable objtool build on powerpc.
>>>
>>> Not all powerpc it seems, see below
>>>
>>
>> When cross-compiling PPC32 (on x86_64), I get 3600+ of these:
>>
>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>
>> Is there some way that objtool should work when cross-compiling?
>>
>
> Oops. Its build failed. I seem to be missing header file(s)
> and possibly a library.
> I'll check on those...
>
It's complaining about libelf.h but I have that, so I don't know where
it is looking other than /usr/include/libelf.h, which exists.
Maybe the tool isn't setup (ready) for cross-compiling?
Here's the build output for objtool:
<stdin>:1:10: fatal error: libelf.h: No such file or directory
compilation terminated.
elf.c: In function ‘read_sections’:
elf.c:273:9: error: ‘elf_getshnum’ is deprecated [-Werror=deprecated-declarations]
273 | if (elf_getshdrnum(elf->elf, §ions_nr)) {
| ^~
In file included from /usr/include/gelf.h:32,
from /work/lnx/next/linux-next-20230203/tools/objtool/include/objtool/elf.h:10,
from elf.c:22:
/usr/include/libelf.h:310:12: note: declared here
310 | extern int elf_getshnum (Elf *__elf, size_t *__dst)
| ^~~~~~~~~~~~
elf.c:278:9: error: ‘elf_getshstrndx’ is deprecated [-Werror=deprecated-declarations]
278 | if (elf_getshdrstrndx(elf->elf, &shstrndx)) {
| ^~
/usr/include/libelf.h:322:12: note: declared here
322 | extern int elf_getshstrndx (Elf *__elf, size_t *__dst)
| ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[4]: *** [/work/lnx/next/linux-next-20230203/tools/build/Makefile.build:96: /work/lnx/next/linux-next-20230203/PPC32/tools/objtool/elf.o] Error 1
make[3]: *** [Makefile:66: /work/lnx/next/linux-next-20230203/PPC32/tools/objtool/objtool-in.o] Error 2
Thanks.
--
~Randy
Hi,
Le 04/02/2023 à 09:30, Randy Dunlap a écrit :
>
>
> On 2/4/23 00:21, Randy Dunlap wrote:
>>
>>
>> On 2/4/23 00:19, Randy Dunlap wrote:
>>> Hi--
>>>
>>> On 8/29/22 23:41, Christophe Leroy wrote:
>>>>
>>>>
>>>> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
>>>>> This patch adds [stub] implementations for required
>>>>> functions, inorder to enable objtool build on powerpc.
>>>>
>>>> Not all powerpc it seems, see below
>>>>
>>>
>>> When cross-compiling PPC32 (on x86_64), I get 3600+ of these:
>>>
>>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>>
>>> Is there some way that objtool should work when cross-compiling?
>>>
>>
>> Oops. Its build failed. I seem to be missing header file(s)
>> and possibly a library.
>> I'll check on those...
>>
>
> It's complaining about libelf.h but I have that, so I don't know where
> it is looking other than /usr/include/libelf.h, which exists.
> Maybe the tool isn't setup (ready) for cross-compiling?
>
>
> Here's the build output for objtool:
>
> <stdin>:1:10: fatal error: libelf.h: No such file or directory
> compilation terminated.
> elf.c: In function ‘read_sections’:
> elf.c:273:9: error: ‘elf_getshnum’ is deprecated [-Werror=deprecated-declarations]
> 273 | if (elf_getshdrnum(elf->elf, §ions_nr)) {
> | ^~
> In file included from /usr/include/gelf.h:32,
> from /work/lnx/next/linux-next-20230203/tools/objtool/include/objtool/elf.h:10,
> from elf.c:22:
> /usr/include/libelf.h:310:12: note: declared here
> 310 | extern int elf_getshnum (Elf *__elf, size_t *__dst)
> | ^~~~~~~~~~~~
> elf.c:278:9: error: ‘elf_getshstrndx’ is deprecated [-Werror=deprecated-declarations]
> 278 | if (elf_getshdrstrndx(elf->elf, &shstrndx)) {
> | ^~
> /usr/include/libelf.h:322:12: note: declared here
> 322 | extern int elf_getshstrndx (Elf *__elf, size_t *__dst)
> | ^~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> make[4]: *** [/work/lnx/next/linux-next-20230203/tools/build/Makefile.build:96: /work/lnx/next/linux-next-20230203/PPC32/tools/objtool/elf.o] Error 1
>
> make[3]: *** [Makefile:66: /work/lnx/next/linux-next-20230203/PPC32/tools/objtool/objtool-in.o] Error 2
I have no problem crossbuilding for PPC32 from x86_64, I have a fedora
36 on the x86.
$ rpm -q -f /usr/include/libelf.h
elfutils-libelf-devel-0.187-4.fc36.x86_64
Here is build output with V=1, pmac32_defconfig + CONFIG_FUNCTION_TRACER=y
...
mkdir -p ./tools
make LDFLAGS= MAKEFLAGS=" " O=/home/chleroy/linux-powerpc subdir=tools
-C ./tools/ objtool
mkdir -p /home/chleroy/linux-powerpc/tools/objtool && make
O=/home/chleroy/linux-powerpc subdir=tools/objtool --no-print-directory
-C objtool
make -C /home/chleroy/linux-powerpc/tools/build CFLAGS= LDFLAGS=
/home/chleroy/linux-powerpc/tools/objtool/fixdep
make -f /home/chleroy/linux-powerpc/tools/build/Makefile.build dir=.
obj=fixdep
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.fixdep.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/fixdep.o
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/fixdep.o fixdep.c
ld -r -o /home/chleroy/linux-powerpc/tools/objtool/fixdep-in.o
/home/chleroy/linux-powerpc/tools/objtool/fixdep.o
gcc -o /home/chleroy/linux-powerpc/tools/objtool/fixdep
/home/chleroy/linux-powerpc/tools/objtool/fixdep-in.o
make -C /home/chleroy/linux-powerpc/tools/lib/subcmd/
OUTPUT=/home/chleroy/linux-powerpc/tools/objtool/
make -C /home/chleroy/linux-powerpc/tools/build CFLAGS= LDFLAGS=
/home/chleroy/linux-powerpc/tools/objtool/fixdep
make -f /home/chleroy/linux-powerpc/tools/build/Makefile.build dir=.
obj=fixdep
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.exec-cmd.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/exec-cmd.o -ggdb3
-Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
-Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
-Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/exec-cmd.o exec-cmd.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.help.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/help.o -ggdb3 -Wall
-Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
-Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
-Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/help.o help.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.pager.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/pager.o -ggdb3 -Wall
-Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
-Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
-Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/pager.o pager.c
gcc
-Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.parse-options.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/parse-options.o -ggdb3
-Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
-Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
-Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/parse-options.o parse-options.c
gcc
-Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.run-command.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/run-command.o -ggdb3
-Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
-Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
-Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/run-command.o run-command.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.sigchain.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/sigchain.o -ggdb3
-Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
-Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
-Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
-D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/sigchain.o sigchain.c
ld -r -o /home/chleroy/linux-powerpc/tools/objtool/libsubcmd-in.o
/home/chleroy/linux-powerpc/tools/objtool/exec-cmd.o
/home/chleroy/linux-powerpc/tools/objtool/help.o
/home/chleroy/linux-powerpc/tools/objtool/pager.o
/home/chleroy/linux-powerpc/tools/objtool/parse-options.o
/home/chleroy/linux-powerpc/tools/objtool/run-command.o
/home/chleroy/linux-powerpc/tools/objtool/sigchain.o
/home/chleroy/linux-powerpc/tools/objtool/subcmd-config.o
rm -f /home/chleroy/linux-powerpc/tools/objtool/libsubcmd.a && ar rcs
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd.a
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd-in.o
make -f /home/chleroy/linux-powerpc/tools/build/Makefile.build
dir=./arch/powerpc obj=objtool
gcc
-Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/.decode.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o
-Werror -Wbad-function-cast -Wdeclaration-after-statement
-Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wno-system-headers
-Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes
-Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat
-Wno-type-limits -Wstrict-aliasing=3 -Wshadow -Wno-switch-default
-Wno-switch-enum -Wno-packed -Wno-nested-externs -Wall
-Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
-std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o
arch/powerpc/decode.c
gcc
-Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/.special.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o
-Werror -Wbad-function-cast -Wdeclaration-after-statement
-Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wno-system-headers
-Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes
-Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat
-Wno-type-limits -Wstrict-aliasing=3 -Wshadow -Wno-switch-default
-Wno-switch-enum -Wno-packed -Wno-nested-externs -Wall
-Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
-std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o
arch/powerpc/special.c
ld -r -o
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/objtool-in.o
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.weak.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/weak.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/weak.o weak.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.check.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/check.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/check.o check.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.special.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/special.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/special.o special.c
gcc
-Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.builtin-check.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
-Werror -Wbad-function-cast -Wdeclaration-after-statement
-Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wno-system-headers
-Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes
-Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat
-Wno-type-limits -Wstrict-aliasing=3 -Wshadow -Wno-switch-default
-Wno-switch-enum -Wno-packed -Wno-nested-externs -Wall
-Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
-std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/builtin-check.o builtin-check.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.elf.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/elf.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/elf.o elf.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.objtool.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/objtool.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/objtool.o objtool.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.libstring.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/libstring.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/libstring.o ../lib/string.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.libctype.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/libctype.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/libctype.o ../lib/ctype.c
gcc
-Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.str_error_r.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/str_error_r.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/str_error_r.o ../lib/str_error_r.c
gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.librbtree.o.d
-Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/librbtree.o -Werror
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
-Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
-Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
-Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
-fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
-I/home/chleroy/linux-powerpc/tools/include
-I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
-I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/objtool/include
-I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
-I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
/home/chleroy/linux-powerpc/tools/objtool/librbtree.o ../lib/rbtree.c
ld -r -o /home/chleroy/linux-powerpc/tools/objtool/objtool-in.o
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/objtool-in.o
/home/chleroy/linux-powerpc/tools/objtool/weak.o
/home/chleroy/linux-powerpc/tools/objtool/check.o
/home/chleroy/linux-powerpc/tools/objtool/special.o
/home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
/home/chleroy/linux-powerpc/tools/objtool/elf.o
/home/chleroy/linux-powerpc/tools/objtool/objtool.o
/home/chleroy/linux-powerpc/tools/objtool/libstring.o
/home/chleroy/linux-powerpc/tools/objtool/libctype.o
/home/chleroy/linux-powerpc/tools/objtool/str_error_r.o
/home/chleroy/linux-powerpc/tools/objtool/librbtree.o
gcc /home/chleroy/linux-powerpc/tools/objtool/objtool-in.o -lelf
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd.a -o
/home/chleroy/linux-powerpc/tools/objtool/objtool
...
make -f ./scripts/Makefile.build obj=. need-builtin=1 need-modorder=1
make -f ./scripts/Makefile.build obj=init \
need-builtin=1 \
need-modorder=1 \
powerpc64-linux-gcc -Wp,-MMD,init/.main.o.d -nostdinc
-I./arch/powerpc/include -I./arch/powerpc/include/generated -I./include
-I./arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi
-I./include/uapi -I./include/generated/uapi -include
./include/linux/compiler-version.h -include ./include/linux/kconfig.h
-include ./include/linux/compiler_types.h -D__KERNEL__ -I ./arch/powerpc
-fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes
-Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE
-Werror=implicit-function-declaration -Werror=implicit-int
-Werror=return-type -Wno-format-security -funsigned-char -std=gnu11
-mbig-endian -m32 -msoft-float -pipe -ffixed-r2 -mmultiple
-mno-readonly-in-sdata -mcpu=powerpc -mno-prefixed -mno-pcrel
-mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables
-mno-string -Wa,-maltivec -mbig-endian -mstack-protector-guard=tls
-mstack-protector-guard-reg=r2 -fno-delete-null-pointer-checks
-Wno-frame-address -Wno-format-truncation -Wno-format-overflow
-Wno-address-of-packed-member -O2 -fno-allow-store-data-races
-Wframe-larger-than=1024 -fstack-protector-strong -Wno-main
-Wno-unused-but-set-variable -Wno-unused-const-variable
-Wno-dangling-pointer -ftrivial-auto-var-init=zero
-fno-stack-clash-protection -pg -Wdeclaration-after-statement -Wvla
-Wno-pointer-sign -Wcast-function-type -Wno-stringop-truncation
-Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized
-Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5
-fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time
-Werror=incompatible-pointer-types -Werror=designated-init
-Wno-packed-not-aligned -mstack-protector-guard-offset=544
-fno-function-sections -fno-data-sections
-DKBUILD_MODFILE='"init/main"' -DKBUILD_BASENAME='"main"'
-DKBUILD_MODNAME='"main"' -D__KBUILD_MODNAME=kmod_main -c -o init/main.o
init/main.c ; ./tools/objtool/objtool --mcount init/main.o
./scripts/check-local-export init/main.o
{ echo ; echo 'init/main.o: $(wildcard ./tools/objtool/objtool)' ; }
>> init/.main.o.cmd
set -e; mkdir -p init/; trap "rm -f init/.utsversion-tmp.h.tmp" EXIT; {
utsver=$(echo '#'"" "" | cut -b -64); echo '#'define UTS_VERSION
\""${utsver}"\"; } > init/.utsversion-tmp.h.tmp; if [ ! -r
init/utsversion-tmp.h ] || ! cmp -s init/utsversion-tmp.h
init/.utsversion-tmp.h.tmp; then : ' UPD init/utsversion-tmp.h'; mv
-f init/.utsversion-tmp.h.tmp init/utsversion-tmp.h; fi
powerpc64-linux-gcc -Wp,-MMD,init/.version.o.d -nostdinc
-I./arch/powerpc/include -I./arch/powerpc/include/generated -I./include
-I./arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi
-I./include/uapi -I./include/generated/uapi -include
./include/linux/compiler-version.h -include ./include/linux/kconfig.h
-include ./include/linux/compiler_types.h -D__KERNEL__ -I ./arch/powerpc
-fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes
-Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE
-Werror=implicit-function-declaration -Werror=implicit-int
-Werror=return-type -Wno-format-security -funsigned-char -std=gnu11
-mbig-endian -m32 -msoft-float -pipe -ffixed-r2 -mmultiple
-mno-readonly-in-sdata -mcpu=powerpc -mno-prefixed -mno-pcrel
-mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables
-mno-string -Wa,-maltivec -mbig-endian -mstack-protector-guard=tls
-mstack-protector-guard-reg=r2 -fno-delete-null-pointer-checks
-Wno-frame-address -Wno-format-truncation -Wno-format-overflow
-Wno-address-of-packed-member -O2 -fno-allow-store-data-races
-Wframe-larger-than=1024 -fstack-protector-strong -Wno-main
-Wno-unused-but-set-variable -Wno-unused-const-variable
-Wno-dangling-pointer -ftrivial-auto-var-init=zero
-fno-stack-clash-protection -pg -Wdeclaration-after-statement -Wvla
-Wno-pointer-sign -Wcast-function-type -Wno-stringop-truncation
-Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized
-Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5
-fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time
-Werror=incompatible-pointer-types -Werror=designated-init
-Wno-packed-not-aligned -mstack-protector-guard-offset=544
-fno-function-sections -fno-data-sections -include init/utsversion-tmp.h
-DKBUILD_MODFILE='"init/version"' -DKBUILD_BASENAME='"version"'
-DKBUILD_MODNAME='"version"' -D__KBUILD_MODNAME=kmod_version -c -o
init/version.o init/version.c ; ./tools/objtool/objtool --mcount
init/version.o
./scripts/check-local-export init/version.o
{ echo ; echo 'init/version.o: $(wildcard ./tools/objtool/objtool)'
; } >> init/.version.o.cmd
...
Le 04/02/2023 à 12:55, Christophe Leroy a écrit :
> Hi,
>
> Le 04/02/2023 à 09:30, Randy Dunlap a écrit :
>>
>>
>> On 2/4/23 00:21, Randy Dunlap wrote:
>>>
>>>
>>> On 2/4/23 00:19, Randy Dunlap wrote:
>>>> Hi--
>>>>
>>>> On 8/29/22 23:41, Christophe Leroy wrote:
>>>>>
>>>>>
>>>>> Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
>>>>>> This patch adds [stub] implementations for required
>>>>>> functions, inorder to enable objtool build on powerpc.
>>>>>
>>>>> Not all powerpc it seems, see below
>>>>>
>>>>
>>>> When cross-compiling PPC32 (on x86_64), I get 3600+ of these:
>>>>
>>>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>>> /bin/sh: line 1: ./tools/objtool/objtool: No such file or directory
>>>>
>>>> Is there some way that objtool should work when cross-compiling?
>>>>
>>>
>>> Oops. Its build failed. I seem to be missing header file(s)
>>> and possibly a library.
>>> I'll check on those...
>>>
>>
>> It's complaining about libelf.h but I have that, so I don't know where
>> it is looking other than /usr/include/libelf.h, which exists.
>> Maybe the tool isn't setup (ready) for cross-compiling?
>>
>>
>> Here's the build output for objtool:
>>
>> <stdin>:1:10: fatal error: libelf.h: No such file or directory
>> compilation terminated.
>> elf.c: In function ‘read_sections’:
>> elf.c:273:9: error: ‘elf_getshnum’ is deprecated
>> [-Werror=deprecated-declarations]
>> 273 | if (elf_getshdrnum(elf->elf, §ions_nr)) {
>> | ^~
>> In file included from /usr/include/gelf.h:32,
>> from
>> /work/lnx/next/linux-next-20230203/tools/objtool/include/objtool/elf.h:10,
>> from elf.c:22:
>> /usr/include/libelf.h:310:12: note: declared here
>> 310 | extern int elf_getshnum (Elf *__elf, size_t *__dst)
>> | ^~~~~~~~~~~~
>> elf.c:278:9: error: ‘elf_getshstrndx’ is deprecated
>> [-Werror=deprecated-declarations]
>> 278 | if (elf_getshdrstrndx(elf->elf, &shstrndx)) {
>> | ^~
>> /usr/include/libelf.h:322:12: note: declared here
>> 322 | extern int elf_getshstrndx (Elf *__elf, size_t *__dst)
>> | ^~~~~~~~~~~~~~~
>> cc1: all warnings being treated as errors
>> make[4]: ***
>> [/work/lnx/next/linux-next-20230203/tools/build/Makefile.build:96:
>> /work/lnx/next/linux-next-20230203/PPC32/tools/objtool/elf.o] Error 1
>>
>> make[3]: *** [Makefile:66:
>> /work/lnx/next/linux-next-20230203/PPC32/tools/objtool/objtool-in.o]
>> Error 2
>
> I have no problem crossbuilding for PPC32 from x86_64, I have a fedora
> 36 on the x86.
>
> $ rpm -q -f /usr/include/libelf.h
> elfutils-libelf-devel-0.187-4.fc36.x86_64
>
> Here is build output with V=1, pmac32_defconfig + CONFIG_FUNCTION_TRACER=y
>
> ...
> mkdir -p ./tools
> make LDFLAGS= MAKEFLAGS=" " O=/home/chleroy/linux-powerpc subdir=tools
> -C ./tools/ objtool
> mkdir -p /home/chleroy/linux-powerpc/tools/objtool && make
> O=/home/chleroy/linux-powerpc subdir=tools/objtool --no-print-directory
> -C objtool
> make -C /home/chleroy/linux-powerpc/tools/build CFLAGS= LDFLAGS=
> /home/chleroy/linux-powerpc/tools/objtool/fixdep
> make -f /home/chleroy/linux-powerpc/tools/build/Makefile.build dir=.
> obj=fixdep
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.fixdep.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/fixdep.o
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/fixdep.o fixdep.c
> ld -r -o /home/chleroy/linux-powerpc/tools/objtool/fixdep-in.o
> /home/chleroy/linux-powerpc/tools/objtool/fixdep.o
> gcc -o /home/chleroy/linux-powerpc/tools/objtool/fixdep
> /home/chleroy/linux-powerpc/tools/objtool/fixdep-in.o
> make -C /home/chleroy/linux-powerpc/tools/lib/subcmd/
> OUTPUT=/home/chleroy/linux-powerpc/tools/objtool/
> make -C /home/chleroy/linux-powerpc/tools/build CFLAGS= LDFLAGS=
> /home/chleroy/linux-powerpc/tools/objtool/fixdep
> make -f /home/chleroy/linux-powerpc/tools/build/Makefile.build dir=.
> obj=fixdep
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.exec-cmd.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/exec-cmd.o -ggdb3
> -Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
> -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
> -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
> -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/exec-cmd.o exec-cmd.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.help.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/help.o -ggdb3 -Wall
> -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
> -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
> -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
> -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/help.o help.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.pager.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/pager.o -ggdb3 -Wall
> -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
> -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
> -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
> -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/pager.o pager.c
> gcc
> -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.parse-options.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/parse-options.o -ggdb3
> -Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
> -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
> -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
> -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/parse-options.o parse-options.c
> gcc
> -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.run-command.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/run-command.o -ggdb3
> -Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
> -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
> -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
> -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/run-command.o run-command.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.sigchain.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/sigchain.o -ggdb3
> -Wall -Wextra -std=gnu99 -fPIC -O6 -Werror -D_LARGEFILE64_SOURCE
> -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -I/home/chleroy/linux-powerpc/tools/include/ -Wbad-function-cast
> -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self
> -Wmissing-declarations -Wmissing-prototypes -Wnested-externs
> -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls
> -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef
> -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow
> -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/sigchain.o sigchain.c
> ld -r -o /home/chleroy/linux-powerpc/tools/objtool/libsubcmd-in.o
> /home/chleroy/linux-powerpc/tools/objtool/exec-cmd.o
> /home/chleroy/linux-powerpc/tools/objtool/help.o
> /home/chleroy/linux-powerpc/tools/objtool/pager.o
> /home/chleroy/linux-powerpc/tools/objtool/parse-options.o
> /home/chleroy/linux-powerpc/tools/objtool/run-command.o
> /home/chleroy/linux-powerpc/tools/objtool/sigchain.o
> /home/chleroy/linux-powerpc/tools/objtool/subcmd-config.o
> rm -f /home/chleroy/linux-powerpc/tools/objtool/libsubcmd.a && ar rcs
> /home/chleroy/linux-powerpc/tools/objtool/libsubcmd.a
> /home/chleroy/linux-powerpc/tools/objtool/libsubcmd-in.o
> make -f /home/chleroy/linux-powerpc/tools/build/Makefile.build
> dir=./arch/powerpc obj=objtool
> gcc
> -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/.decode.o.d -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o -Werror -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g -I/home/chleroy/linux-powerpc/tools/include -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include -I/home/chleroy/linux-powerpc/tools/objtool/include -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o arch/powerpc/decode.c
> gcc
> -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/.special.o.d -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o -Werror -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g -I/home/chleroy/linux-powerpc/tools/include -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include -I/home/chleroy/linux-powerpc/tools/objtool/include -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o arch/powerpc/special.c
> ld -r -o
> /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/objtool-in.o
> /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o
> /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.weak.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/weak.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/weak.o weak.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.check.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/check.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/check.o check.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.special.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/special.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/special.o special.c
> gcc
> -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.builtin-check.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
> -Werror -Wbad-function-cast -Wdeclaration-after-statement
> -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations
> -Wmissing-prototypes -Wnested-externs -Wno-system-headers
> -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes
> -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat
> -Wno-type-limits -Wstrict-aliasing=3 -Wshadow -Wno-switch-default
> -Wno-switch-enum -Wno-packed -Wno-nested-externs -Wall
> -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
> -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/builtin-check.o builtin-check.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.elf.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/elf.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/elf.o elf.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.objtool.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/objtool.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/objtool.o objtool.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.libstring.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/libstring.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/libstring.o ../lib/string.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.libctype.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/libctype.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/libctype.o ../lib/ctype.c
> gcc
> -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.str_error_r.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/str_error_r.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/str_error_r.o
> ../lib/str_error_r.c
> gcc -Wp,-MD,/home/chleroy/linux-powerpc/tools/objtool/.librbtree.o.d
> -Wp,-MT,/home/chleroy/linux-powerpc/tools/objtool/librbtree.o -Werror
> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
> -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum
> -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3
> -Wshadow -Wno-switch-default -Wno-switch-enum -Wno-packed
> -Wno-nested-externs -Wall -Wmissing-prototypes -Wstrict-prototypes -O2
> -fomit-frame-pointer -std=gnu11 -Wdeclaration-after-statement -g
> -I/home/chleroy/linux-powerpc/tools/include
> -I/home/chleroy/linux-powerpc/tools/arch/x86/include/uapi
> -I/home/chleroy/linux-powerpc/tools/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/objtool/include
> -I/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/include
> -I/home/chleroy/linux-powerpc/tools/lib -D"BUILD_STR(s)=#s" -c -o
> /home/chleroy/linux-powerpc/tools/objtool/librbtree.o ../lib/rbtree.c
> ld -r -o /home/chleroy/linux-powerpc/tools/objtool/objtool-in.o
> /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/objtool-in.o
> /home/chleroy/linux-powerpc/tools/objtool/weak.o
> /home/chleroy/linux-powerpc/tools/objtool/check.o
> /home/chleroy/linux-powerpc/tools/objtool/special.o
> /home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
> /home/chleroy/linux-powerpc/tools/objtool/elf.o
> /home/chleroy/linux-powerpc/tools/objtool/objtool.o
> /home/chleroy/linux-powerpc/tools/objtool/libstring.o
> /home/chleroy/linux-powerpc/tools/objtool/libctype.o
> /home/chleroy/linux-powerpc/tools/objtool/str_error_r.o
> /home/chleroy/linux-powerpc/tools/objtool/librbtree.o
> gcc /home/chleroy/linux-powerpc/tools/objtool/objtool-in.o -lelf
> /home/chleroy/linux-powerpc/tools/objtool/libsubcmd.a -o
> /home/chleroy/linux-powerpc/tools/objtool/objtool
> ...
> make -f ./scripts/Makefile.build obj=. need-builtin=1 need-modorder=1
> make -f ./scripts/Makefile.build obj=init \
> need-builtin=1 \
> need-modorder=1 \
>
> powerpc64-linux-gcc -Wp,-MMD,init/.main.o.d -nostdinc
> -I./arch/powerpc/include -I./arch/powerpc/include/generated -I./include
> -I./arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi
> -I./include/uapi -I./include/generated/uapi -include
> ./include/linux/compiler-version.h -include ./include/linux/kconfig.h
> -include ./include/linux/compiler_types.h -D__KERNEL__ -I ./arch/powerpc
> -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes
> -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE
> -Werror=implicit-function-declaration -Werror=implicit-int
> -Werror=return-type -Wno-format-security -funsigned-char -std=gnu11
> -mbig-endian -m32 -msoft-float -pipe -ffixed-r2 -mmultiple
> -mno-readonly-in-sdata -mcpu=powerpc -mno-prefixed -mno-pcrel
> -mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables
> -mno-string -Wa,-maltivec -mbig-endian -mstack-protector-guard=tls
> -mstack-protector-guard-reg=r2 -fno-delete-null-pointer-checks
> -Wno-frame-address -Wno-format-truncation -Wno-format-overflow
> -Wno-address-of-packed-member -O2 -fno-allow-store-data-races
> -Wframe-larger-than=1024 -fstack-protector-strong -Wno-main
> -Wno-unused-but-set-variable -Wno-unused-const-variable
> -Wno-dangling-pointer -ftrivial-auto-var-init=zero
> -fno-stack-clash-protection -pg -Wdeclaration-after-statement -Wvla
> -Wno-pointer-sign -Wcast-function-type -Wno-stringop-truncation
> -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized
> -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5
> -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time
> -Werror=incompatible-pointer-types -Werror=designated-init
> -Wno-packed-not-aligned -mstack-protector-guard-offset=544
> -fno-function-sections -fno-data-sections -DKBUILD_MODFILE='"init/main"'
> -DKBUILD_BASENAME='"main"' -DKBUILD_MODNAME='"main"'
> -D__KBUILD_MODNAME=kmod_main -c -o init/main.o init/main.c ;
> ./tools/objtool/objtool --mcount init/main.o
> ./scripts/check-local-export init/main.o
> { echo ; echo 'init/main.o: $(wildcard ./tools/objtool/objtool)' ; }
> >> init/.main.o.cmd
> set -e; mkdir -p init/; trap "rm -f init/.utsversion-tmp.h.tmp" EXIT; {
> utsver=$(echo '#'"" "" | cut -b -64); echo '#'define UTS_VERSION
> \""${utsver}"\"; } > init/.utsversion-tmp.h.tmp; if [ ! -r
> init/utsversion-tmp.h ] || ! cmp -s init/utsversion-tmp.h
> init/.utsversion-tmp.h.tmp; then : ' UPD init/utsversion-tmp.h'; mv
> -f init/.utsversion-tmp.h.tmp init/utsversion-tmp.h; fi
> powerpc64-linux-gcc -Wp,-MMD,init/.version.o.d -nostdinc
> -I./arch/powerpc/include -I./arch/powerpc/include/generated -I./include
> -I./arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi
> -I./include/uapi -I./include/generated/uapi -include
> ./include/linux/compiler-version.h -include ./include/linux/kconfig.h
> -include ./include/linux/compiler_types.h -D__KERNEL__ -I ./arch/powerpc
> -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes
> -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE
> -Werror=implicit-function-declaration -Werror=implicit-int
> -Werror=return-type -Wno-format-security -funsigned-char -std=gnu11
> -mbig-endian -m32 -msoft-float -pipe -ffixed-r2 -mmultiple
> -mno-readonly-in-sdata -mcpu=powerpc -mno-prefixed -mno-pcrel
> -mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables
> -mno-string -Wa,-maltivec -mbig-endian -mstack-protector-guard=tls
> -mstack-protector-guard-reg=r2 -fno-delete-null-pointer-checks
> -Wno-frame-address -Wno-format-truncation -Wno-format-overflow
> -Wno-address-of-packed-member -O2 -fno-allow-store-data-races
> -Wframe-larger-than=1024 -fstack-protector-strong -Wno-main
> -Wno-unused-but-set-variable -Wno-unused-const-variable
> -Wno-dangling-pointer -ftrivial-auto-var-init=zero
> -fno-stack-clash-protection -pg -Wdeclaration-after-statement -Wvla
> -Wno-pointer-sign -Wcast-function-type -Wno-stringop-truncation
> -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized
> -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5
> -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time
> -Werror=incompatible-pointer-types -Werror=designated-init
> -Wno-packed-not-aligned -mstack-protector-guard-offset=544
> -fno-function-sections -fno-data-sections -include init/utsversion-tmp.h
> -DKBUILD_MODFILE='"init/version"' -DKBUILD_BASENAME='"version"'
> -DKBUILD_MODNAME='"version"' -D__KBUILD_MODNAME=kmod_version -c -o
> init/version.o init/version.c ; ./tools/objtool/objtool --mcount
> init/version.o
> ./scripts/check-local-export init/version.o
> { echo ; echo 'init/version.o: $(wildcard ./tools/objtool/objtool)'
> ; } >> init/.version.o.cmd
> ...
Ok, got the same problem as you with next-20230203
DESCEND objtool
<stdin>:1:10: fatal error: libelf.h: No such file or directory
compilation terminated.
HOSTCC /home/chleroy/linux-powerpc/tools/objtool/fixdep.o
HOSTLD /home/chleroy/linux-powerpc/tools/objtool/fixdep-in.o
LINK /home/chleroy/linux-powerpc/tools/objtool/fixdep
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/exec-cmd.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/help.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/pager.o
CC
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd/parse-options.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/run-command.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/sigchain.o
CC
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd/subcmd-config.o
LD
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd/libsubcmd-in.o
AR /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/libsubcmd.a
INSTALL libsubcmd_headers
CC /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o
CC /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o
LD
/home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/objtool-in.o
CC /home/chleroy/linux-powerpc/tools/objtool/weak.o
CC /home/chleroy/linux-powerpc/tools/objtool/check.o
CC /home/chleroy/linux-powerpc/tools/objtool/special.o
CC /home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
CC /home/chleroy/linux-powerpc/tools/objtool/elf.o
elf.c: In function 'read_sections':
elf.c:273:9: error: 'elf_getshnum' is deprecated
[-Werror=deprecated-declarations]
273 | if (elf_getshdrnum(elf->elf, §ions_nr)) {
| ^~
In file included from /usr/include/gelf.h:32,
from
/home/chleroy/linux-powerpc/tools/objtool/include/objtool/elf.h:10,
from elf.c:22:
/usr/include/libelf.h:310:12: note: declared here
310 | extern int elf_getshnum (Elf *__elf, size_t *__dst)
| ^~~~~~~~~~~~
elf.c:278:9: error: 'elf_getshstrndx' is deprecated
[-Werror=deprecated-declarations]
278 | if (elf_getshdrstrndx(elf->elf, &shstrndx)) {
| ^~
/usr/include/libelf.h:322:12: note: declared here
322 | extern int elf_getshstrndx (Elf *__elf, size_t *__dst)
| ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[3]: *** [/home/chleroy/linux-powerpc/tools/build/Makefile.build:97:
/home/chleroy/linux-powerpc/tools/objtool/elf.o] Error 1
make[2]: *** [Makefile:66:
/home/chleroy/linux-powerpc/tools/objtool/objtool-in.o] Error 2
make[1]: *** [Makefile:73: objtool] Error 2
make: *** [Makefile:1439: tools/objtool] Error 2
That's odd, because if I do it manually it works:
$ make LDFLAGS= MAKEFLAGS=" " O=/home/chleroy/linux-powerpc subdir=tools
-C ./tools/ objtool
make : on entre dans le répertoire « /home/chleroy/linux-powerpc/tools »
DESCEND objtool
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/exec-cmd.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/help.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/pager.o
CC
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd/parse-options.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/run-command.o
CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/sigchain.o
CC
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd/subcmd-config.o
LD
/home/chleroy/linux-powerpc/tools/objtool/libsubcmd/libsubcmd-in.o
AR /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/libsubcmd.a
INSTALL libsubcmd_headers
CC /home/chleroy/linux-powerpc/tools/objtool/arch/x86/special.o
GEN
/home/chleroy/linux-powerpc/tools/objtool/arch/x86/lib/inat-tables.c
CC /home/chleroy/linux-powerpc/tools/objtool/arch/x86/decode.o
LD /home/chleroy/linux-powerpc/tools/objtool/arch/x86/objtool-in.o
CC /home/chleroy/linux-powerpc/tools/objtool/weak.o
CC /home/chleroy/linux-powerpc/tools/objtool/check.o
CC /home/chleroy/linux-powerpc/tools/objtool/special.o
CC /home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
CC /home/chleroy/linux-powerpc/tools/objtool/elf.o
CC /home/chleroy/linux-powerpc/tools/objtool/objtool.o
CC /home/chleroy/linux-powerpc/tools/objtool/orc_gen.o
CC /home/chleroy/linux-powerpc/tools/objtool/orc_dump.o
CC /home/chleroy/linux-powerpc/tools/objtool/libstring.o
CC /home/chleroy/linux-powerpc/tools/objtool/libctype.o
CC /home/chleroy/linux-powerpc/tools/objtool/str_error_r.o
CC /home/chleroy/linux-powerpc/tools/objtool/librbtree.o
LD /home/chleroy/linux-powerpc/tools/objtool/objtool-in.o
LINK /home/chleroy/linux-powerpc/tools/objtool/objtool
make : on quitte le répertoire « /home/chleroy/linux-powerpc/tools »
[chleroy@PO20335 linux-powerpc]$ file
/home/chleroy/linux-powerpc/tools/objtool/objtool
/home/chleroy/linux-powerpc/tools/objtool/objtool: ELF 64-bit LSB
executable, x86-64, version 1 (SYSV), dynamically linked, interpreter
/lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=1f445df36c222194c5bce8147a30a1fa1120f318, for GNU/Linux
3.2.0, with debug_info, not stripped
Christophe
Christophe
On Sat, Feb 04, 2023 at 02:10:34PM +0100, Christophe Leroy wrote:
> Ok, got the same problem as you with next-20230203
>
> DESCEND objtool
> <stdin>:1:10: fatal error: libelf.h: No such file or directory
> compilation terminated.
> HOSTCC /home/chleroy/linux-powerpc/tools/objtool/fixdep.o
> HOSTLD /home/chleroy/linux-powerpc/tools/objtool/fixdep-in.o
> LINK /home/chleroy/linux-powerpc/tools/objtool/fixdep
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/exec-cmd.o
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/help.o
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/pager.o
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/parse-options.o
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/run-command.o
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/sigchain.o
> CC /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/subcmd-config.o
> LD /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/libsubcmd-in.o
> AR /home/chleroy/linux-powerpc/tools/objtool/libsubcmd/libsubcmd.a
> INSTALL libsubcmd_headers
> CC /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/decode.o
> CC /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/special.o
> LD /home/chleroy/linux-powerpc/tools/objtool/arch/powerpc/objtool-in.o
> CC /home/chleroy/linux-powerpc/tools/objtool/weak.o
> CC /home/chleroy/linux-powerpc/tools/objtool/check.o
> CC /home/chleroy/linux-powerpc/tools/objtool/special.o
> CC /home/chleroy/linux-powerpc/tools/objtool/builtin-check.o
> CC /home/chleroy/linux-powerpc/tools/objtool/elf.o
> elf.c: In function 'read_sections':
> elf.c:273:9: error: 'elf_getshnum' is deprecated
> [-Werror=deprecated-declarations]
> 273 | if (elf_getshdrnum(elf->elf, §ions_nr)) {
> | ^~
This should be fixed with the latest tip/objtool/core which was rebased
today. Here's the diff:
diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
index 29a8cd7449bf..83b100c1e7f6 100644
--- a/tools/objtool/Makefile
+++ b/tools/objtool/Makefile
@@ -36,7 +36,7 @@ OBJTOOL_CFLAGS := -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBE
OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS)
# Allow old libelf to be used:
-elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr)
+elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(HOSTCC) $(OBJTOOL_CFLAGS) -x c -E - | grep elf_getshdr)
OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
# Always want host compilation.
Christophe Leroy wrote: > > > Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit : >> >> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig >> index 4c466acdc70d..dc05cd23c233 100644 >> --- a/arch/powerpc/Kconfig >> +++ b/arch/powerpc/Kconfig >> @@ -237,6 +237,7 @@ config PPC >> select HAVE_MOD_ARCH_SPECIFIC >> select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S) >> select HAVE_OPTPROBES >> + select HAVE_OBJTOOL if PPC32 || MPROFILE_KERNEL > > Why restrict it to MPROFILE_KERNEL ? In your RFC it was for all PPC64. > > Recent discussion on the list shows new problem with recordmcount, see > https://lore.kernel.org/all/MW5PR84MB184250EA1CAE04497C1E7CE9AB769@MW5PR84MB1842.NAMPRD84.PROD.OUTLOOK.COM/ > > Those ones are with ppc64 big endian, so objtool would be welcome here > as well. I don't think adding support for objtool on ppc64 elfv1 is a good idea. While it might solve the immediate issue with recordmcount, I worry that the function descriptors and dot symbols in ppc64 elfv1 might throw up issues in the future causing maintenance overhead. - Naveen
© 2016 - 2026 Red Hat, Inc.