linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/31] Libdw/dwarf build clean up
@ 2024-10-05 19:55 Ian Rogers
  2024-10-05 19:55 ` [PATCH v2 01/31] perf build: Fix !HAVE_DWARF_GETLOCATIONS_SUPPORT Ian Rogers
                   ` (31 more replies)
  0 siblings, 32 replies; 42+ messages in thread
From: Ian Rogers @ 2024-10-05 19:55 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Ian Rogers, Adrian Hunter, Kan Liang, John Garry, Will Deacon,
	James Clark, Mike Leach, Leo Yan, Guo Ren, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Nick Terrell, Steven Rostedt (Google),
	Masami Hiramatsu (Google), Guilherme Amadio, Changbin Du,
	Daniel Bristot de Oliveira, Daniel Wagner, Aditya Gupta,
	Athira Rajeev, Masahiro Yamada, Kajol Jain, Huacai Chen, Bibo Mao,
	Anup Patel, Atish Patra, Shenlin Liang, Oliver Upton,
	Steinar H. Gunderson, Dr. David Alan Gilbert, Chen Pei,
	Dima Kogan, Yury Norov, Alexander Lobakin, linux-kernel,
	linux-perf-users, linux-arm-kernel, linux-csky, linux-riscv

There patches are on top of:
https://lore.kernel.org/lkml/20240924003720.617258-1-irogers@google.com/
where it was pointed out that a lot of the libdw conditional
compilation was due to features that have now been standard for 10 or
15 years. The patches remove the conditional compilation assuming the
features are in libdw where the feature test is expanded to check
there pressence.

In the Makefile code, and for `perf record --call-graph`, dwarf tends
to mean unwind or libdw support for dwarf things. To make it clearer
when dwarf really just means libdw numerous build variables and
defines are renamed. PERF_HAVE_DWARF_REGS was particularly tricky and
has been removed as it isn't necessary as was somewhat inversely
guarding libdw support. The Makefile variable indicated an
architecture having a dwarf-regs.c file. This file contained code for
BPF prologues, which were removed with BPF event support. The files
also often just contained a redundant get_arch_regstr function. The
function was redundant as get_dwarf_regstr would do the appropriate
thing if the ELF machine were given. To remove get_arch_regstr the ELF
machine is computed for the host machine. This now makes the logic
work across platforms, but the testing I was able to do across
platforms was minimal.

There is some tech debt in the changes as perf check still reports the
values using the old name and for features that are no longer
tested. This can be cleanup for another day.

v2: Instead of renaming PERF_HAVE_DWARF_REGS to PERF_HAVE_LIBDW_REGS,
    remove it.

Ian Rogers (31):
  perf build: Fix !HAVE_DWARF_GETLOCATIONS_SUPPORT
  perf build: Rename NO_DWARF to NO_LIBDW
  perf build: Remove defined but never used variable
  perf build: Rename test-dwarf to test-libdw
  perf build: Combine libdw-dwarf-unwind into libdw feature tests
  perf build: Combine test-dwarf-getlocations into test-libdw
  perf build: Combine test-dwarf-getcfi into test-libdw
  perf probe: Move elfutils support check to libdw check
  perf libdw: Remove unnecessary defines
  perf build: Rename HAVE_DWARF_SUPPORT to HAVE_LIBDW_SUPPORT
  perf build: Rename CONFIG_DWARF to CONFIG_LIBDW
  perf bpf-prologue: Remove unused file
  perf dwarf-regs: Remove PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
  perf dwarf-regs: Add EM_HOST and EF_HOST defines
  perf disasm: Add e_machine/e_flags to struct arch
  perf dwarf-regs: Pass accurate disassembly machine to get_dwarf_regnum
  perf dwarf-regs: Pass ELF flags to get_dwarf_regstr
  perf dwarf-regs: Move x86 dwarf-regs out of arch
  perf arm64: Remove dwarf-regs.c
  perf arm: Remove dwarf-regs.c
  perf dwarf-regs: Move csky dwarf-regs out of arch
  perf loongarch: Remove dwarf-regs.c
  perf mips: Remove dwarf-regs.c
  perf dwarf-regs: Move powerpc dwarf-regs out of arch
  perf riscv: Remove dwarf-regs.c and add dwarf-regs-table.h
  perf s390: Remove dwarf-regs.c
  perf sh: Remove dwarf-regs.c
  perf sparc: Remove dwarf-regs.c
  perf xtensa: Remove dwarf-regs.c
  perf dwarf-regs: Remove get_arch_regstr code
  perf build: Remove PERF_HAVE_DWARF_REGS

 tools/build/Makefile.feature                  |  11 +-
 tools/build/feature/Makefile                  |  24 +--
 tools/build/feature/test-all.c                |  16 +-
 tools/build/feature/test-dwarf.c              |  11 --
 tools/build/feature/test-dwarf_getcfi.c       |   9 --
 tools/build/feature/test-dwarf_getlocations.c |  13 --
 tools/build/feature/test-libdw-dwarf-unwind.c |  14 --
 tools/build/feature/test-libdw.c              |  56 +++++++
 tools/perf/Documentation/perf-check.txt       |   6 +-
 tools/perf/Makefile.config                    |  58 ++-----
 tools/perf/Makefile.perf                      |   2 +-
 tools/perf/arch/arc/annotate/instructions.c   |   2 +
 tools/perf/arch/arm/Makefile                  |   3 -
 tools/perf/arch/arm/annotate/instructions.c   |   2 +
 tools/perf/arch/arm/util/Build                |   2 -
 tools/perf/arch/arm/util/dwarf-regs.c         |  61 -------
 tools/perf/arch/arm64/Makefile                |   4 -
 tools/perf/arch/arm64/annotate/instructions.c |   2 +
 tools/perf/arch/arm64/util/Build              |   1 -
 tools/perf/arch/arm64/util/dwarf-regs.c       |  92 -----------
 tools/perf/arch/csky/Makefile                 |   4 -
 tools/perf/arch/csky/annotate/instructions.c  |   7 +-
 tools/perf/arch/csky/util/Build               |   1 -
 tools/perf/arch/loongarch/Makefile            |   4 -
 .../arch/loongarch/annotate/instructions.c    |   2 +
 tools/perf/arch/loongarch/util/Build          |   1 -
 tools/perf/arch/loongarch/util/dwarf-regs.c   |  44 -----
 tools/perf/arch/mips/Makefile                 |   4 -
 tools/perf/arch/mips/annotate/instructions.c  |   2 +
 tools/perf/arch/mips/util/Build               |   1 -
 tools/perf/arch/mips/util/dwarf-regs.c        |  38 -----
 tools/perf/arch/powerpc/Makefile              |   5 -
 .../perf/arch/powerpc/annotate/instructions.c |   6 +-
 tools/perf/arch/powerpc/util/Build            |   3 +-
 tools/perf/arch/powerpc/util/dwarf-regs.c     | 153 ------------------
 tools/perf/arch/riscv/Makefile                |   5 +-
 .../arch/riscv/include/dwarf-regs-table.h     |  42 +++++
 tools/perf/arch/riscv/util/Build              |   1 -
 tools/perf/arch/riscv/util/dwarf-regs.c       |  72 ---------
 .../perf/arch/riscv64/annotate/instructions.c |   2 +
 tools/perf/arch/s390/Makefile                 |   4 -
 tools/perf/arch/s390/annotate/instructions.c  |   2 +
 tools/perf/arch/s390/util/Build               |   1 -
 tools/perf/arch/s390/util/dwarf-regs.c        |  43 -----
 tools/perf/arch/sh/Build                      |   1 -
 tools/perf/arch/sh/Makefile                   |   4 -
 tools/perf/arch/sh/util/Build                 |   1 -
 tools/perf/arch/sh/util/dwarf-regs.c          |  41 -----
 tools/perf/arch/sparc/Build                   |   1 -
 tools/perf/arch/sparc/Makefile                |   4 -
 tools/perf/arch/sparc/annotate/instructions.c |   2 +
 tools/perf/arch/sparc/util/Build              |   1 -
 tools/perf/arch/sparc/util/dwarf-regs.c       |  39 -----
 tools/perf/arch/x86/Makefile                  |   4 -
 tools/perf/arch/x86/annotate/instructions.c   |   5 +-
 tools/perf/arch/x86/util/Build                |   3 -
 tools/perf/arch/x86/util/dwarf-regs.c         | 153 ------------------
 tools/perf/arch/xtensa/Build                  |   1 -
 tools/perf/arch/xtensa/Makefile               |   4 -
 tools/perf/arch/xtensa/util/Build             |   1 -
 tools/perf/arch/xtensa/util/dwarf-regs.c      |  21 ---
 tools/perf/builtin-annotate.c                 |   2 +-
 tools/perf/builtin-check.c                    |   6 +-
 tools/perf/builtin-probe.c                    |  14 +-
 tools/perf/builtin-report.c                   |   4 +-
 tools/perf/util/Build                         |  15 +-
 tools/perf/util/annotate-data.h               |   8 +-
 tools/perf/util/annotate.c                    |   6 +-
 tools/perf/util/bpf-prologue.h                |  37 -----
 tools/perf/util/debuginfo.h                   |   6 +-
 tools/perf/util/disasm.c                      |   4 +-
 tools/perf/util/disasm.h                      |   8 +-
 tools/perf/util/dwarf-aux.c                   |   6 -
 tools/perf/util/dwarf-aux.h                   |  53 ------
 .../dwarf-regs.c => util/dwarf-regs-csky.c}   |  19 +--
 tools/perf/util/dwarf-regs-powerpc.c          |  61 +++++++
 tools/perf/util/dwarf-regs-x86.c              |  50 ++++++
 tools/perf/util/dwarf-regs.c                  |  38 +++--
 tools/perf/util/genelf.c                      |   4 +-
 tools/perf/util/genelf.h                      |   2 +-
 tools/perf/util/include/dwarf-regs.h          | 114 ++++++++++---
 tools/perf/util/probe-event.c                 |   4 +-
 tools/perf/util/probe-finder.c                |  19 +--
 tools/perf/util/probe-finder.h                |   9 +-
 84 files changed, 454 insertions(+), 1157 deletions(-)
 delete mode 100644 tools/build/feature/test-dwarf.c
 delete mode 100644 tools/build/feature/test-dwarf_getcfi.c
 delete mode 100644 tools/build/feature/test-dwarf_getlocations.c
 delete mode 100644 tools/build/feature/test-libdw-dwarf-unwind.c
 create mode 100644 tools/build/feature/test-libdw.c
 delete mode 100644 tools/perf/arch/arm/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/arm64/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/csky/Makefile
 delete mode 100644 tools/perf/arch/loongarch/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/mips/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/powerpc/util/dwarf-regs.c
 create mode 100644 tools/perf/arch/riscv/include/dwarf-regs-table.h
 delete mode 100644 tools/perf/arch/riscv/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/s390/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/sh/Build
 delete mode 100644 tools/perf/arch/sh/Makefile
 delete mode 100644 tools/perf/arch/sh/util/Build
 delete mode 100644 tools/perf/arch/sh/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/sparc/Build
 delete mode 100644 tools/perf/arch/sparc/util/Build
 delete mode 100644 tools/perf/arch/sparc/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/x86/util/dwarf-regs.c
 delete mode 100644 tools/perf/arch/xtensa/Build
 delete mode 100644 tools/perf/arch/xtensa/Makefile
 delete mode 100644 tools/perf/arch/xtensa/util/Build
 delete mode 100644 tools/perf/arch/xtensa/util/dwarf-regs.c
 delete mode 100644 tools/perf/util/bpf-prologue.h
 rename tools/perf/{arch/csky/util/dwarf-regs.c => util/dwarf-regs-csky.c} (74%)
 create mode 100644 tools/perf/util/dwarf-regs-powerpc.c
 create mode 100644 tools/perf/util/dwarf-regs-x86.c

-- 
2.47.0.rc0.187.ge670bccf7e-goog


^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2024-11-07 19:25 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-05 19:55 [PATCH v2 00/31] Libdw/dwarf build clean up Ian Rogers
2024-10-05 19:55 ` [PATCH v2 01/31] perf build: Fix !HAVE_DWARF_GETLOCATIONS_SUPPORT Ian Rogers
2024-10-05 19:55 ` [PATCH v2 02/31] perf build: Rename NO_DWARF to NO_LIBDW Ian Rogers
2024-10-05 19:55 ` [PATCH v2 03/31] perf build: Remove defined but never used variable Ian Rogers
2024-10-05 19:55 ` [PATCH v2 04/31] perf build: Rename test-dwarf to test-libdw Ian Rogers
2024-10-05 19:55 ` [PATCH v2 05/31] perf build: Combine libdw-dwarf-unwind into libdw feature tests Ian Rogers
2024-10-05 19:55 ` [PATCH v2 06/31] perf build: Combine test-dwarf-getlocations into test-libdw Ian Rogers
2024-10-05 19:55 ` [PATCH v2 07/31] perf build: Combine test-dwarf-getcfi " Ian Rogers
2024-10-05 19:55 ` [PATCH v2 08/31] perf probe: Move elfutils support check to libdw check Ian Rogers
2024-10-05 19:55 ` [PATCH v2 09/31] perf libdw: Remove unnecessary defines Ian Rogers
2024-10-05 19:55 ` [PATCH v2 10/31] perf build: Rename HAVE_DWARF_SUPPORT to HAVE_LIBDW_SUPPORT Ian Rogers
2024-10-05 19:55 ` [PATCH v2 11/31] perf build: Rename CONFIG_DWARF to CONFIG_LIBDW Ian Rogers
2024-10-05 19:55 ` [PATCH v2 12/31] perf bpf-prologue: Remove unused file Ian Rogers
2024-10-05 19:55 ` [PATCH v2 13/31] perf dwarf-regs: Remove PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET Ian Rogers
2024-10-05 19:55 ` [PATCH v2 14/31] perf dwarf-regs: Add EM_HOST and EF_HOST defines Ian Rogers
2024-10-05 19:55 ` [PATCH v2 15/31] perf disasm: Add e_machine/e_flags to struct arch Ian Rogers
2024-10-05 19:55 ` [PATCH v2 16/31] perf dwarf-regs: Pass accurate disassembly machine to get_dwarf_regnum Ian Rogers
2024-10-07  8:07   ` Masami Hiramatsu
2024-10-07 15:46     ` Ian Rogers
2024-11-07 19:18       ` Namhyung Kim
2024-10-05 19:55 ` [PATCH v2 17/31] perf dwarf-regs: Pass ELF flags to get_dwarf_regstr Ian Rogers
2024-10-07  8:09   ` Masami Hiramatsu
2024-10-07 15:05     ` Ian Rogers
2024-11-07 19:24       ` Namhyung Kim
2024-10-05 19:55 ` [PATCH v2 18/31] perf dwarf-regs: Move x86 dwarf-regs out of arch Ian Rogers
2024-10-07  8:34   ` Masami Hiramatsu
2024-10-07 15:32     ` Ian Rogers
2024-10-05 19:55 ` [PATCH v2 19/31] perf arm64: Remove dwarf-regs.c Ian Rogers
2024-10-07  8:19   ` Masami Hiramatsu
2024-10-05 19:55 ` [PATCH v2 20/31] perf arm: " Ian Rogers
2024-10-05 19:55 ` [PATCH v2 21/31] perf dwarf-regs: Move csky dwarf-regs out of arch Ian Rogers
2024-10-05 19:55 ` [PATCH v2 22/31] perf loongarch: Remove dwarf-regs.c Ian Rogers
2024-10-05 19:55 ` [PATCH v2 23/31] perf mips: " Ian Rogers
2024-10-05 19:55 ` [PATCH v2 24/31] perf dwarf-regs: Move powerpc dwarf-regs out of arch Ian Rogers
2024-10-05 19:55 ` [PATCH v2 25/31] perf riscv: Remove dwarf-regs.c and add dwarf-regs-table.h Ian Rogers
2024-10-05 19:55 ` [PATCH v2 26/31] perf s390: Remove dwarf-regs.c Ian Rogers
2024-10-05 19:55 ` [PATCH v2 27/31] perf sh: " Ian Rogers
2024-10-05 19:55 ` [PATCH v2 28/31] perf sparc: " Ian Rogers
2024-10-05 19:55 ` [PATCH v2 29/31] perf xtensa: " Ian Rogers
2024-10-05 19:55 ` [PATCH v2 30/31] perf dwarf-regs: Remove get_arch_regstr code Ian Rogers
2024-10-05 19:55 ` [PATCH v2 31/31] perf build: Remove PERF_HAVE_DWARF_REGS Ian Rogers
2024-10-16 17:21 ` [PATCH v2 00/31] Libdw/dwarf build clean up Ian Rogers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).