mbox series

[RFC,v3,00/12] objtool: Enable and implement --mcount option on powerpc

Message ID 20220624183238.388144-1-sv@linux.ibm.com
Headers show
Series objtool: Enable and implement --mcount option on powerpc | expand

Message

Sathvika Vasireddy June 24, 2022, 6:32 p.m. UTC
These patches are rebased on top of objtool/core
branch of the tip tree, and are tested on
ppc64le with ppc64le_defconfig.

Christophe Leroy (3):
  objtool: Fix SEGFAULT
  objtool: Use target file endianness instead of a compiled constant
  objtool: Use target file class size instead of a compiled constant

Sathvika Vasireddy(9):
  objtool: Add --mnop as an option to --mcount
  powerpc: Skip objtool from running on VDSO files
  objtool: Read special sections with alts only when specific options are selected
  objtool: Use macros to define arch specific reloc types
  objtool: Add arch specific function arch_ftrace_match()
  objtool/powerpc: Enable objtool to be built on ppc
  objtool/powerpc: Add --mcount specific implementation
  powerpc: Remove unreachable() from WARN_ON()
  objtool/powerpc: Fix unannotated intra-function call warnings

 Makefile                                      |  4 +-
 arch/powerpc/Kconfig                          |  2 +
 arch/powerpc/include/asm/bug.h                |  1 -
 arch/powerpc/kernel/entry_64.S                |  2 +
 arch/powerpc/kernel/exceptions-64s.S          |  7 +-
 arch/powerpc/kernel/head_64.S                 |  7 +-
 arch/powerpc/kernel/misc_64.S                 |  4 +-
 arch/powerpc/kernel/vdso/Makefile             |  2 +
 arch/powerpc/kernel/vector.S                  |  4 +-
 arch/powerpc/kvm/book3s_hv_interrupts.S       |  4 +-
 arch/powerpc/kvm/book3s_hv_rmhandlers.S       | 25 +++--
 arch/x86/Kconfig                              |  1 +
 scripts/Makefile.build                        |  1 +
 tools/objtool/arch/powerpc/Build              |  2 +
 tools/objtool/arch/powerpc/decode.c           | 96 +++++++++++++++++++
 .../arch/powerpc/include/arch/cfi_regs.h      | 11 +++
 tools/objtool/arch/powerpc/include/arch/elf.h | 10 ++
 .../arch/powerpc/include/arch/special.h       | 21 ++++
 tools/objtool/arch/powerpc/special.c          | 19 ++++
 tools/objtool/arch/x86/decode.c               |  8 ++
 tools/objtool/arch/x86/include/arch/elf.h     |  2 +
 .../arch/x86/include/arch/endianness.h        |  9 --
 tools/objtool/builtin-check.c                 | 14 +++
 tools/objtool/check.c                         | 51 +++++-----
 tools/objtool/elf.c                           |  8 +-
 tools/objtool/include/objtool/arch.h          |  2 +
 tools/objtool/include/objtool/builtin.h       |  1 +
 tools/objtool/include/objtool/elf.h           |  8 ++
 tools/objtool/include/objtool/endianness.h    | 32 +++----
 tools/objtool/orc_dump.c                      | 11 ++-
 tools/objtool/orc_gen.c                       |  4 +-
 tools/objtool/special.c                       |  3 +-
 32 files changed, 305 insertions(+), 71 deletions(-)
 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
 delete mode 100644 tools/objtool/arch/x86/include/arch/endianness.h

Comments

Christophe Leroy July 8, 2022, 3:06 p.m. UTC | #1
Le 24/06/2022 à 20:32, Sathvika Vasireddy a écrit :
> These patches are rebased on top of objtool/core
> branch of the tip tree, and are tested on
> ppc64le with ppc64le_defconfig.

Seems like objtool/core has been merged in 5.19. I was able to apply 
your series on top of powerpc/merge branch. Only a small conflict with 
patch "objtool: Add --mnop as an option to --mcount" because of commit 
b42d23065024 ("kbuild: factor out the common objtool arguments")

> 
> Christophe Leroy (3):
>    objtool: Fix SEGFAULT
>    objtool: Use target file endianness instead of a compiled constant
>    objtool: Use target file class size instead of a compiled constant
> 
> Sathvika Vasireddy(9):
>    objtool: Add --mnop as an option to --mcount
>    powerpc: Skip objtool from running on VDSO files
>    objtool: Read special sections with alts only when specific options are selected
>    objtool: Use macros to define arch specific reloc types
>    objtool: Add arch specific function arch_ftrace_match()
>    objtool/powerpc: Enable objtool to be built on ppc
>    objtool/powerpc: Add --mcount specific implementation
>    powerpc: Remove unreachable() from WARN_ON()
>    objtool/powerpc: Fix unannotated intra-function call warnings
> 
>   Makefile                                      |  4 +-
>   arch/powerpc/Kconfig                          |  2 +
>   arch/powerpc/include/asm/bug.h                |  1 -
>   arch/powerpc/kernel/entry_64.S                |  2 +
>   arch/powerpc/kernel/exceptions-64s.S          |  7 +-
>   arch/powerpc/kernel/head_64.S                 |  7 +-
>   arch/powerpc/kernel/misc_64.S                 |  4 +-
>   arch/powerpc/kernel/vdso/Makefile             |  2 +
>   arch/powerpc/kernel/vector.S                  |  4 +-
>   arch/powerpc/kvm/book3s_hv_interrupts.S       |  4 +-
>   arch/powerpc/kvm/book3s_hv_rmhandlers.S       | 25 +++--
>   arch/x86/Kconfig                              |  1 +
>   scripts/Makefile.build                        |  1 +
>   tools/objtool/arch/powerpc/Build              |  2 +
>   tools/objtool/arch/powerpc/decode.c           | 96 +++++++++++++++++++
>   .../arch/powerpc/include/arch/cfi_regs.h      | 11 +++
>   tools/objtool/arch/powerpc/include/arch/elf.h | 10 ++
>   .../arch/powerpc/include/arch/special.h       | 21 ++++
>   tools/objtool/arch/powerpc/special.c          | 19 ++++
>   tools/objtool/arch/x86/decode.c               |  8 ++
>   tools/objtool/arch/x86/include/arch/elf.h     |  2 +
>   .../arch/x86/include/arch/endianness.h        |  9 --
>   tools/objtool/builtin-check.c                 | 14 +++
>   tools/objtool/check.c                         | 51 +++++-----
>   tools/objtool/elf.c                           |  8 +-
>   tools/objtool/include/objtool/arch.h          |  2 +
>   tools/objtool/include/objtool/builtin.h       |  1 +
>   tools/objtool/include/objtool/elf.h           |  8 ++
>   tools/objtool/include/objtool/endianness.h    | 32 +++----
>   tools/objtool/orc_dump.c                      | 11 ++-
>   tools/objtool/orc_gen.c                       |  4 +-
>   tools/objtool/special.c                       |  3 +-
>   32 files changed, 305 insertions(+), 71 deletions(-)
>   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
>   delete mode 100644 tools/objtool/arch/x86/include/arch/endianness.h
>
Christophe Leroy July 8, 2022, 3:42 p.m. UTC | #2
Le 08/07/2022 à 17:06, Christophe Leroy a écrit :
> 
> 
> Le 24/06/2022 à 20:32, Sathvika Vasireddy a écrit :
>> These patches are rebased on top of objtool/core
>> branch of the tip tree, and are tested on
>> ppc64le with ppc64le_defconfig.
> 
> Seems like objtool/core has been merged in 5.19. I was able to apply 
> your series on top of powerpc/merge branch. Only a small conflict with 
> patch "objtool: Add --mnop as an option to --mcount" because of commit 
> b42d23065024 ("kbuild: factor out the common objtool arguments")


In order to build, you will also need the following new file:

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 */



> 
>>
>> Christophe Leroy (3):
>>    objtool: Fix SEGFAULT
>>    objtool: Use target file endianness instead of a compiled constant
>>    objtool: Use target file class size instead of a compiled constant
>>
>> Sathvika Vasireddy(9):
>>    objtool: Add --mnop as an option to --mcount
>>    powerpc: Skip objtool from running on VDSO files
>>    objtool: Read special sections with alts only when specific options 
>> are selected
>>    objtool: Use macros to define arch specific reloc types
>>    objtool: Add arch specific function arch_ftrace_match()
>>    objtool/powerpc: Enable objtool to be built on ppc
>>    objtool/powerpc: Add --mcount specific implementation
>>    powerpc: Remove unreachable() from WARN_ON()
>>    objtool/powerpc: Fix unannotated intra-function call warnings
>>
>>   Makefile                                      |  4 +-
>>   arch/powerpc/Kconfig                          |  2 +
>>   arch/powerpc/include/asm/bug.h                |  1 -
>>   arch/powerpc/kernel/entry_64.S                |  2 +
>>   arch/powerpc/kernel/exceptions-64s.S          |  7 +-
>>   arch/powerpc/kernel/head_64.S                 |  7 +-
>>   arch/powerpc/kernel/misc_64.S                 |  4 +-
>>   arch/powerpc/kernel/vdso/Makefile             |  2 +
>>   arch/powerpc/kernel/vector.S                  |  4 +-
>>   arch/powerpc/kvm/book3s_hv_interrupts.S       |  4 +-
>>   arch/powerpc/kvm/book3s_hv_rmhandlers.S       | 25 +++--
>>   arch/x86/Kconfig                              |  1 +
>>   scripts/Makefile.build                        |  1 +
>>   tools/objtool/arch/powerpc/Build              |  2 +
>>   tools/objtool/arch/powerpc/decode.c           | 96 +++++++++++++++++++
>>   .../arch/powerpc/include/arch/cfi_regs.h      | 11 +++
>>   tools/objtool/arch/powerpc/include/arch/elf.h | 10 ++
>>   .../arch/powerpc/include/arch/special.h       | 21 ++++
>>   tools/objtool/arch/powerpc/special.c          | 19 ++++
>>   tools/objtool/arch/x86/decode.c               |  8 ++
>>   tools/objtool/arch/x86/include/arch/elf.h     |  2 +
>>   .../arch/x86/include/arch/endianness.h        |  9 --
>>   tools/objtool/builtin-check.c                 | 14 +++
>>   tools/objtool/check.c                         | 51 +++++-----
>>   tools/objtool/elf.c                           |  8 +-
>>   tools/objtool/include/objtool/arch.h          |  2 +
>>   tools/objtool/include/objtool/builtin.h       |  1 +
>>   tools/objtool/include/objtool/elf.h           |  8 ++
>>   tools/objtool/include/objtool/endianness.h    | 32 +++----
>>   tools/objtool/orc_dump.c                      | 11 ++-
>>   tools/objtool/orc_gen.c                       |  4 +-
>>   tools/objtool/special.c                       |  3 +-
>>   32 files changed, 305 insertions(+), 71 deletions(-)
>>   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
>>   delete mode 100644 tools/objtool/arch/x86/include/arch/endianness.h
>>