All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	John Garry <john.g.garry@oracle.com>,
	Will Deacon <will@kernel.org>,
	James Clark <james.clark@linaro.org>,
	Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linux.dev>,
	Guo Ren <guoren@kernel.org>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>, Nick Terrell <terrelln@fb.com>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	Changbin Du <changbin.du@huawei.com>,
	Guilherme Amadio <amadio@gentoo.org>,
	Yang Jihong <yangjihong@bytedance.com>,
	Aditya Gupta <adityag@linux.ibm.com>,
	Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Bibo Mao <maobibo@loongson.cn>,
	Huacai Chen <chenhuacai@kernel.org>,
	Kajol Jain <kjain@linux.ibm.com>,
	Atish Patra <atishp@rivosinc.com>,
	Shenlin Liang <liangshenlin@eswincomputing.com>,
	Anup Patel <anup@brainfault.org>,
	Oliver Upton <oliver.upton@linux.dev>,
	"Steinar H. Gunderson" <sesse@google.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Chen Pei <cp0613@linux.alibaba.com>,
	Dima Kogan <dima@secretsauce.net>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	Alexander Lobakin <aleksander.lobakin@intel.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-riscv@lists.infradead.org
Subject: Re: [PATCH v3 04/20] perf disasm: Add e_machine/e_flags to struct arch
Date: Fri, 8 Nov 2024 09:33:47 -0800	[thread overview]
Message-ID: <Zy5Le-xn4gzQ2WLo@google.com> (raw)
In-Reply-To: <20241017002520.59124-5-irogers@google.com>

On Wed, Oct 16, 2024 at 05:25:04PM -0700, Ian Rogers wrote:
> Currently functions like get_dwarf_regnum only work with the host
> architecture. Carry the elf machine and flags in struct arch so that
> in disassembly these can be used to allow cross platform disassembly.
> 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/arch/arc/annotate/instructions.c       | 2 ++
>  tools/perf/arch/arm/annotate/instructions.c       | 2 ++
>  tools/perf/arch/arm64/annotate/instructions.c     | 2 ++
>  tools/perf/arch/csky/annotate/instructions.c      | 7 ++++++-
>  tools/perf/arch/loongarch/annotate/instructions.c | 2 ++
>  tools/perf/arch/mips/annotate/instructions.c      | 2 ++
>  tools/perf/arch/powerpc/annotate/instructions.c   | 2 ++
>  tools/perf/arch/riscv64/annotate/instructions.c   | 2 ++
>  tools/perf/arch/s390/annotate/instructions.c      | 2 ++
>  tools/perf/arch/sparc/annotate/instructions.c     | 2 ++
>  tools/perf/arch/x86/annotate/instructions.c       | 3 ++-
>  tools/perf/util/disasm.h                          | 4 ++++
>  12 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/arch/arc/annotate/instructions.c b/tools/perf/arch/arc/annotate/instructions.c
> index 2f00e995c7e3..e5619770a1af 100644
> --- a/tools/perf/arch/arc/annotate/instructions.c
> +++ b/tools/perf/arch/arc/annotate/instructions.c
> @@ -5,5 +5,7 @@ static int arc__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  {
>  	arch->initialized = true;
>  	arch->objdump.comment_char = ';';
> +	arch->e_machine = EM_ARC;
> +	arch->e_flags = 0;
>  	return 0;
>  }
> diff --git a/tools/perf/arch/arm/annotate/instructions.c b/tools/perf/arch/arm/annotate/instructions.c
> index 2ff6cedeb9c5..cf91a43362b0 100644
> --- a/tools/perf/arch/arm/annotate/instructions.c
> +++ b/tools/perf/arch/arm/annotate/instructions.c
> @@ -53,6 +53,8 @@ static int arm__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  	arch->associate_instruction_ops   = arm__associate_instruction_ops;
>  	arch->objdump.comment_char	  = ';';
>  	arch->objdump.skip_functions_char = '+';
> +	arch->e_machine = EM_ARM;
> +	arch->e_flags = 0;
>  	return 0;
>  
>  out_free_call:
> diff --git a/tools/perf/arch/arm64/annotate/instructions.c b/tools/perf/arch/arm64/annotate/instructions.c
> index f86d9f4798bd..d465d093e7eb 100644
> --- a/tools/perf/arch/arm64/annotate/instructions.c
> +++ b/tools/perf/arch/arm64/annotate/instructions.c
> @@ -113,6 +113,8 @@ static int arm64__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  	arch->associate_instruction_ops   = arm64__associate_instruction_ops;
>  	arch->objdump.comment_char	  = '/';
>  	arch->objdump.skip_functions_char = '+';
> +	arch->e_machine = EM_AARCH64;
> +	arch->e_flags = 0;
>  	return 0;
>  
>  out_free_call:
> diff --git a/tools/perf/arch/csky/annotate/instructions.c b/tools/perf/arch/csky/annotate/instructions.c
> index 5337bfb7d5fc..14270311d215 100644
> --- a/tools/perf/arch/csky/annotate/instructions.c
> +++ b/tools/perf/arch/csky/annotate/instructions.c
> @@ -43,6 +43,11 @@ static int csky__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  	arch->initialized = true;
>  	arch->objdump.comment_char = '/';
>  	arch->associate_instruction_ops = csky__associate_ins_ops;
> -
> +	arch->e_machine = EM_CSKY;
> +#if defined(__CSKYABIV2__)
> +	arch->e_flags = EF_CSKY_ABIV2;
> +#else
> +	arch->e_flags = EF_CSKY_ABIV1;
> +#endif

By moving this into the general code, it should take care of old systems
that doesn't have the macro.

  In file included from util/disasm.c:109:                                        
  /linux/tools/perf/arch/csky/annotate/instructions.c: In function 'csky__annotate_init':
  /linux/tools/perf/arch/csky/annotate/instructions.c:50:25: error: 'EF_CSKY_ABIV1' undeclared (first use in this function)
     50 |         arch->e_flags = EF_CSKY_ABIV1;                                  
        |                         ^~~~~~~~~~~~~                                   
  /linux/tools/perf/arch/csky/annotate/instructions.c:50:25: note: each undeclared identifier is reported only once for each function it appears in

Also, I think __CSKYABIV2__ is defined only when the host is csky.  So
it'll use ABI v1 on cross env.  I'm not sure if it's a problem.  We may
need to save the ABI somewhere in the metadata later.

Thanks,
Namhyung


>  	return 0;
>  }
> diff --git a/tools/perf/arch/loongarch/annotate/instructions.c b/tools/perf/arch/loongarch/annotate/instructions.c
> index ab43b1ab51e3..70262d5f1444 100644
> --- a/tools/perf/arch/loongarch/annotate/instructions.c
> +++ b/tools/perf/arch/loongarch/annotate/instructions.c
> @@ -131,6 +131,8 @@ int loongarch__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = loongarch__associate_ins_ops;
>  		arch->initialized = true;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_LOONGARCH;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/mips/annotate/instructions.c b/tools/perf/arch/mips/annotate/instructions.c
> index 340993f2a897..b50b46c613d6 100644
> --- a/tools/perf/arch/mips/annotate/instructions.c
> +++ b/tools/perf/arch/mips/annotate/instructions.c
> @@ -40,6 +40,8 @@ int mips__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = mips__associate_ins_ops;
>  		arch->initialized = true;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_MIPS;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/powerpc/annotate/instructions.c b/tools/perf/arch/powerpc/annotate/instructions.c
> index 54478cf5cccc..ca567cfdcbdb 100644
> --- a/tools/perf/arch/powerpc/annotate/instructions.c
> +++ b/tools/perf/arch/powerpc/annotate/instructions.c
> @@ -309,6 +309,8 @@ static int powerpc__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = powerpc__associate_instruction_ops;
>  		arch->objdump.comment_char      = '#';
>  		annotate_opts.show_asm_raw = true;
> +		arch->e_machine = EM_PPC;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/riscv64/annotate/instructions.c b/tools/perf/arch/riscv64/annotate/instructions.c
> index 869a0eb28953..55cf911633f8 100644
> --- a/tools/perf/arch/riscv64/annotate/instructions.c
> +++ b/tools/perf/arch/riscv64/annotate/instructions.c
> @@ -28,6 +28,8 @@ int riscv64__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = riscv64__associate_ins_ops;
>  		arch->initialized = true;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_RISCV;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/s390/annotate/instructions.c b/tools/perf/arch/s390/annotate/instructions.c
> index eeac25cca699..c61193f1e096 100644
> --- a/tools/perf/arch/s390/annotate/instructions.c
> +++ b/tools/perf/arch/s390/annotate/instructions.c
> @@ -166,6 +166,8 @@ static int s390__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  			if (s390__cpuid_parse(arch, cpuid))
>  				err = SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING;
>  		}
> +		arch->e_machine = EM_S390;
> +		arch->e_flags = 0;
>  	}
>  
>  	return err;
> diff --git a/tools/perf/arch/sparc/annotate/instructions.c b/tools/perf/arch/sparc/annotate/instructions.c
> index 2614c010c235..68c31580ccfc 100644
> --- a/tools/perf/arch/sparc/annotate/instructions.c
> +++ b/tools/perf/arch/sparc/annotate/instructions.c
> @@ -163,6 +163,8 @@ static int sparc__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->initialized = true;
>  		arch->associate_instruction_ops = sparc__associate_instruction_ops;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_SPARC;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/x86/annotate/instructions.c b/tools/perf/arch/x86/annotate/instructions.c
> index c869abe3c31d..ae94b1f0b9cc 100644
> --- a/tools/perf/arch/x86/annotate/instructions.c
> +++ b/tools/perf/arch/x86/annotate/instructions.c
> @@ -202,7 +202,8 @@ static int x86__annotate_init(struct arch *arch, char *cpuid)
>  		if (x86__cpuid_parse(arch, cpuid))
>  			err = SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING;
>  	}
> -
> +	arch->e_machine = EM_X86_64;
> +	arch->e_flags = 0;
>  	arch->initialized = true;
>  	return err;
>  }
> diff --git a/tools/perf/util/disasm.h b/tools/perf/util/disasm.h
> index 486c269b29ba..c135db2416b5 100644
> --- a/tools/perf/util/disasm.h
> +++ b/tools/perf/util/disasm.h
> @@ -44,6 +44,10 @@ struct arch {
>  				struct data_loc_info *dloc, Dwarf_Die *cu_die,
>  				struct disasm_line *dl);
>  #endif
> +	/** @e_machine: ELF machine associated with arch. */
> +	unsigned int e_machine;
> +	/** @e_flags: Optional ELF flags associated with arch. */
> +	unsigned int e_flags;
>  };
>  
>  struct ins {
> -- 
> 2.47.0.105.g07ac214952-goog
> 


WARNING: multiple messages have this Message-ID (diff)
From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	John Garry <john.g.garry@oracle.com>,
	Will Deacon <will@kernel.org>,
	James Clark <james.clark@linaro.org>,
	Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linux.dev>,
	Guo Ren <guoren@kernel.org>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>, Nick Terrell <terrelln@fb.com>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	Changbin Du <changbin.du@huawei.com>,
	Guilherme Amadio <amadio@gentoo.org>,
	Yang Jihong <yangjihong@bytedance.com>,
	Aditya Gupta <adityag@linux.ibm.com>,
	Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Bibo Mao <maobibo@loongson.cn>,
	Huacai Chen <chenhuacai@kernel.org>,
	Kajol Jain <kjain@linux.ibm.com>,
	Atish Patra <atishp@rivosinc.com>,
	Shenlin Liang <liangshenlin@eswincomputing.com>,
	Anup Patel <anup@brainfault.org>,
	Oliver Upton <oliver.upton@linux.dev>,
	"Steinar H. Gunderson" <sesse@google.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Chen Pei <cp0613@linux.alibaba.com>,
	Dima Kogan <dima@secretsauce.net>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	Alexander Lobakin <aleksander.lobakin@intel.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org,
	linux-riscv@lists.infradead.org
Subject: Re: [PATCH v3 04/20] perf disasm: Add e_machine/e_flags to struct arch
Date: Fri, 8 Nov 2024 09:33:47 -0800	[thread overview]
Message-ID: <Zy5Le-xn4gzQ2WLo@google.com> (raw)
In-Reply-To: <20241017002520.59124-5-irogers@google.com>

On Wed, Oct 16, 2024 at 05:25:04PM -0700, Ian Rogers wrote:
> Currently functions like get_dwarf_regnum only work with the host
> architecture. Carry the elf machine and flags in struct arch so that
> in disassembly these can be used to allow cross platform disassembly.
> 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/arch/arc/annotate/instructions.c       | 2 ++
>  tools/perf/arch/arm/annotate/instructions.c       | 2 ++
>  tools/perf/arch/arm64/annotate/instructions.c     | 2 ++
>  tools/perf/arch/csky/annotate/instructions.c      | 7 ++++++-
>  tools/perf/arch/loongarch/annotate/instructions.c | 2 ++
>  tools/perf/arch/mips/annotate/instructions.c      | 2 ++
>  tools/perf/arch/powerpc/annotate/instructions.c   | 2 ++
>  tools/perf/arch/riscv64/annotate/instructions.c   | 2 ++
>  tools/perf/arch/s390/annotate/instructions.c      | 2 ++
>  tools/perf/arch/sparc/annotate/instructions.c     | 2 ++
>  tools/perf/arch/x86/annotate/instructions.c       | 3 ++-
>  tools/perf/util/disasm.h                          | 4 ++++
>  12 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/arch/arc/annotate/instructions.c b/tools/perf/arch/arc/annotate/instructions.c
> index 2f00e995c7e3..e5619770a1af 100644
> --- a/tools/perf/arch/arc/annotate/instructions.c
> +++ b/tools/perf/arch/arc/annotate/instructions.c
> @@ -5,5 +5,7 @@ static int arc__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  {
>  	arch->initialized = true;
>  	arch->objdump.comment_char = ';';
> +	arch->e_machine = EM_ARC;
> +	arch->e_flags = 0;
>  	return 0;
>  }
> diff --git a/tools/perf/arch/arm/annotate/instructions.c b/tools/perf/arch/arm/annotate/instructions.c
> index 2ff6cedeb9c5..cf91a43362b0 100644
> --- a/tools/perf/arch/arm/annotate/instructions.c
> +++ b/tools/perf/arch/arm/annotate/instructions.c
> @@ -53,6 +53,8 @@ static int arm__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  	arch->associate_instruction_ops   = arm__associate_instruction_ops;
>  	arch->objdump.comment_char	  = ';';
>  	arch->objdump.skip_functions_char = '+';
> +	arch->e_machine = EM_ARM;
> +	arch->e_flags = 0;
>  	return 0;
>  
>  out_free_call:
> diff --git a/tools/perf/arch/arm64/annotate/instructions.c b/tools/perf/arch/arm64/annotate/instructions.c
> index f86d9f4798bd..d465d093e7eb 100644
> --- a/tools/perf/arch/arm64/annotate/instructions.c
> +++ b/tools/perf/arch/arm64/annotate/instructions.c
> @@ -113,6 +113,8 @@ static int arm64__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  	arch->associate_instruction_ops   = arm64__associate_instruction_ops;
>  	arch->objdump.comment_char	  = '/';
>  	arch->objdump.skip_functions_char = '+';
> +	arch->e_machine = EM_AARCH64;
> +	arch->e_flags = 0;
>  	return 0;
>  
>  out_free_call:
> diff --git a/tools/perf/arch/csky/annotate/instructions.c b/tools/perf/arch/csky/annotate/instructions.c
> index 5337bfb7d5fc..14270311d215 100644
> --- a/tools/perf/arch/csky/annotate/instructions.c
> +++ b/tools/perf/arch/csky/annotate/instructions.c
> @@ -43,6 +43,11 @@ static int csky__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  	arch->initialized = true;
>  	arch->objdump.comment_char = '/';
>  	arch->associate_instruction_ops = csky__associate_ins_ops;
> -
> +	arch->e_machine = EM_CSKY;
> +#if defined(__CSKYABIV2__)
> +	arch->e_flags = EF_CSKY_ABIV2;
> +#else
> +	arch->e_flags = EF_CSKY_ABIV1;
> +#endif

By moving this into the general code, it should take care of old systems
that doesn't have the macro.

  In file included from util/disasm.c:109:                                        
  /linux/tools/perf/arch/csky/annotate/instructions.c: In function 'csky__annotate_init':
  /linux/tools/perf/arch/csky/annotate/instructions.c:50:25: error: 'EF_CSKY_ABIV1' undeclared (first use in this function)
     50 |         arch->e_flags = EF_CSKY_ABIV1;                                  
        |                         ^~~~~~~~~~~~~                                   
  /linux/tools/perf/arch/csky/annotate/instructions.c:50:25: note: each undeclared identifier is reported only once for each function it appears in

Also, I think __CSKYABIV2__ is defined only when the host is csky.  So
it'll use ABI v1 on cross env.  I'm not sure if it's a problem.  We may
need to save the ABI somewhere in the metadata later.

Thanks,
Namhyung


>  	return 0;
>  }
> diff --git a/tools/perf/arch/loongarch/annotate/instructions.c b/tools/perf/arch/loongarch/annotate/instructions.c
> index ab43b1ab51e3..70262d5f1444 100644
> --- a/tools/perf/arch/loongarch/annotate/instructions.c
> +++ b/tools/perf/arch/loongarch/annotate/instructions.c
> @@ -131,6 +131,8 @@ int loongarch__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = loongarch__associate_ins_ops;
>  		arch->initialized = true;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_LOONGARCH;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/mips/annotate/instructions.c b/tools/perf/arch/mips/annotate/instructions.c
> index 340993f2a897..b50b46c613d6 100644
> --- a/tools/perf/arch/mips/annotate/instructions.c
> +++ b/tools/perf/arch/mips/annotate/instructions.c
> @@ -40,6 +40,8 @@ int mips__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = mips__associate_ins_ops;
>  		arch->initialized = true;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_MIPS;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/powerpc/annotate/instructions.c b/tools/perf/arch/powerpc/annotate/instructions.c
> index 54478cf5cccc..ca567cfdcbdb 100644
> --- a/tools/perf/arch/powerpc/annotate/instructions.c
> +++ b/tools/perf/arch/powerpc/annotate/instructions.c
> @@ -309,6 +309,8 @@ static int powerpc__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = powerpc__associate_instruction_ops;
>  		arch->objdump.comment_char      = '#';
>  		annotate_opts.show_asm_raw = true;
> +		arch->e_machine = EM_PPC;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/riscv64/annotate/instructions.c b/tools/perf/arch/riscv64/annotate/instructions.c
> index 869a0eb28953..55cf911633f8 100644
> --- a/tools/perf/arch/riscv64/annotate/instructions.c
> +++ b/tools/perf/arch/riscv64/annotate/instructions.c
> @@ -28,6 +28,8 @@ int riscv64__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->associate_instruction_ops = riscv64__associate_ins_ops;
>  		arch->initialized = true;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_RISCV;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/s390/annotate/instructions.c b/tools/perf/arch/s390/annotate/instructions.c
> index eeac25cca699..c61193f1e096 100644
> --- a/tools/perf/arch/s390/annotate/instructions.c
> +++ b/tools/perf/arch/s390/annotate/instructions.c
> @@ -166,6 +166,8 @@ static int s390__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  			if (s390__cpuid_parse(arch, cpuid))
>  				err = SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING;
>  		}
> +		arch->e_machine = EM_S390;
> +		arch->e_flags = 0;
>  	}
>  
>  	return err;
> diff --git a/tools/perf/arch/sparc/annotate/instructions.c b/tools/perf/arch/sparc/annotate/instructions.c
> index 2614c010c235..68c31580ccfc 100644
> --- a/tools/perf/arch/sparc/annotate/instructions.c
> +++ b/tools/perf/arch/sparc/annotate/instructions.c
> @@ -163,6 +163,8 @@ static int sparc__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
>  		arch->initialized = true;
>  		arch->associate_instruction_ops = sparc__associate_instruction_ops;
>  		arch->objdump.comment_char = '#';
> +		arch->e_machine = EM_SPARC;
> +		arch->e_flags = 0;
>  	}
>  
>  	return 0;
> diff --git a/tools/perf/arch/x86/annotate/instructions.c b/tools/perf/arch/x86/annotate/instructions.c
> index c869abe3c31d..ae94b1f0b9cc 100644
> --- a/tools/perf/arch/x86/annotate/instructions.c
> +++ b/tools/perf/arch/x86/annotate/instructions.c
> @@ -202,7 +202,8 @@ static int x86__annotate_init(struct arch *arch, char *cpuid)
>  		if (x86__cpuid_parse(arch, cpuid))
>  			err = SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING;
>  	}
> -
> +	arch->e_machine = EM_X86_64;
> +	arch->e_flags = 0;
>  	arch->initialized = true;
>  	return err;
>  }
> diff --git a/tools/perf/util/disasm.h b/tools/perf/util/disasm.h
> index 486c269b29ba..c135db2416b5 100644
> --- a/tools/perf/util/disasm.h
> +++ b/tools/perf/util/disasm.h
> @@ -44,6 +44,10 @@ struct arch {
>  				struct data_loc_info *dloc, Dwarf_Die *cu_die,
>  				struct disasm_line *dl);
>  #endif
> +	/** @e_machine: ELF machine associated with arch. */
> +	unsigned int e_machine;
> +	/** @e_flags: Optional ELF flags associated with arch. */
> +	unsigned int e_flags;
>  };
>  
>  struct ins {
> -- 
> 2.47.0.105.g07ac214952-goog
> 

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2024-11-08 17:38 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-17  0:25 [PATCH v3 00/20] Remove PERF_HAVE_DWARF_REGS Ian Rogers
2024-10-17  0:25 ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 01/20] perf bpf-prologue: Remove unused file Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 02/20] perf dwarf-regs: Remove PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 03/20] perf dwarf-regs: Add EM_HOST and EF_HOST defines Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 04/20] perf disasm: Add e_machine/e_flags to struct arch Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-11-08 17:33   ` Namhyung Kim [this message]
2024-11-08 17:33     ` Namhyung Kim
2024-11-08 18:19     ` Ian Rogers
2024-11-08 18:19       ` Ian Rogers
2024-11-08 18:38       ` Namhyung Kim
2024-11-08 18:38         ` Namhyung Kim
2024-11-08 18:45         ` Ian Rogers
2024-11-08 18:45           ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 05/20] perf dwarf-regs: Pass accurate disassembly machine to get_dwarf_regnum Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 06/20] perf dwarf-regs: Pass ELF flags to get_dwarf_regstr Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 07/20] perf dwarf-regs: Move x86 dwarf-regs out of arch Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 08/20] perf arm64: Remove dwarf-regs.c Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 09/20] perf arm: " Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 10/20] perf dwarf-regs: Move csky dwarf-regs out of arch Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-11-08 20:03   ` Namhyung Kim
2024-11-08 20:03     ` Namhyung Kim
2024-11-08 23:08     ` Ian Rogers
2024-11-08 23:08       ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 11/20] perf loongarch: Remove dwarf-regs.c Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 12/20] perf mips: " Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 13/20] perf dwarf-regs: Move powerpc dwarf-regs out of arch Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 14/20] perf riscv: Remove dwarf-regs.c and add dwarf-regs-table.h Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-18 19:39   ` Palmer Dabbelt
2024-10-18 19:39     ` Palmer Dabbelt
2024-10-17  0:25 ` [PATCH v3 15/20] perf s390: Remove dwarf-regs.c Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 16/20] perf sh: " Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 17/20] perf sparc: " Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 18/20] perf xtensa: " Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 19/20] perf dwarf-regs: Remove get_arch_regstr code Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-10-17  0:25 ` [PATCH v3 20/20] perf build: Remove PERF_HAVE_DWARF_REGS Ian Rogers
2024-10-17  0:25   ` Ian Rogers
2024-11-07 19:29 ` [PATCH v3 00/20] " Namhyung Kim
2024-11-07 19:29   ` Namhyung Kim
2024-11-08  0:00   ` Masami Hiramatsu
2024-11-08  0:00     ` Masami Hiramatsu
2024-11-08 18:33     ` Namhyung Kim
2024-11-08 18:33       ` Namhyung Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zy5Le-xn4gzQ2WLo@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adityag@linux.ibm.com \
    --cc=adrian.hunter@intel.com \
    --cc=aleksander.lobakin@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=amadio@gentoo.org \
    --cc=anup@brainfault.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=atishp@rivosinc.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=changbin.du@huawei.com \
    --cc=chenhuacai@kernel.org \
    --cc=cp0613@linux.alibaba.com \
    --cc=davem@davemloft.net \
    --cc=dima@secretsauce.net \
    --cc=guoren@kernel.org \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=john.g.garry@oracle.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=kjain@linux.ibm.com \
    --cc=leo.yan@linux.dev \
    --cc=liangshenlin@eswincomputing.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux@treblig.org \
    --cc=maobibo@loongson.cn \
    --cc=mark.rutland@arm.com \
    --cc=masahiroy@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=oliver.upton@linux.dev \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=peterz@infradead.org \
    --cc=przemyslaw.kitszel@intel.com \
    --cc=sesse@google.com \
    --cc=terrelln@fb.com \
    --cc=will@kernel.org \
    --cc=yangjihong@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.