diff mbox series

[v2,14/16] objtool: Add arch specific function arch_ftrace_match()

Message ID 20220829055223.24767-15-sv@linux.ibm.com (mailing list archive)
State Superseded
Headers show
Series objtool: Enable and implement --mcount option on powerpc | expand

Commit Message

Sathvika Vasireddy Aug. 29, 2022, 5:52 a.m. UTC
Add architecture specific function to look for
relocation records pointing to arch specific
symbols.

Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
---
 tools/objtool/arch/x86/decode.c      | 8 ++++++++
 tools/objtool/check.c                | 2 +-
 tools/objtool/include/objtool/arch.h | 2 ++
 3 files changed, 11 insertions(+), 1 deletion(-)

Comments

Christophe Leroy Aug. 30, 2022, 6:36 a.m. UTC | #1
Le 29/08/2022 à 07:52, Sathvika Vasireddy a écrit :
> Add architecture specific function to look for
> relocation records pointing to arch specific
> symbols.
> 
> Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>

Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>

> ---
>   tools/objtool/arch/x86/decode.c      | 8 ++++++++
>   tools/objtool/check.c                | 2 +-
>   tools/objtool/include/objtool/arch.h | 2 ++
>   3 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/objtool/arch/x86/decode.c b/tools/objtool/arch/x86/decode.c
> index c260006106be..025598b6b703 100644
> --- a/tools/objtool/arch/x86/decode.c
> +++ b/tools/objtool/arch/x86/decode.c
> @@ -23,6 +23,14 @@
>   #include <objtool/builtin.h>
>   #include <arch/elf.h>
>   
> +bool arch_ftrace_match(char *name)
> +{
> +	if (!strcmp(name, "__fentry__"))
> +		return true;
> +
> +	return false;

Could be simplified as:

	return !strcmp(name, "__fentry__");


Whatever:

Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>



> +}
> +
>   static int is_x86_64(const struct elf *elf)
>   {
>   	switch (elf->ehdr.e_machine) {
> diff --git a/tools/objtool/check.c b/tools/objtool/check.c
> index f1d055467926..01ff7504f18d 100644
> --- a/tools/objtool/check.c
> +++ b/tools/objtool/check.c
> @@ -2294,7 +2294,7 @@ static int classify_symbols(struct objtool_file *file)
>   			if (arch_is_rethunk(func))
>   				func->return_thunk = true;
>   
> -			if (!strcmp(func->name, "__fentry__"))
> +			if (arch_ftrace_match(func->name))
>   				func->fentry = true;
>   
>   			if (is_profiling_func(func->name))
> diff --git a/tools/objtool/include/objtool/arch.h b/tools/objtool/include/objtool/arch.h
> index beb2f3aa94ff..2ba4b9897285 100644
> --- a/tools/objtool/include/objtool/arch.h
> +++ b/tools/objtool/include/objtool/arch.h
> @@ -69,6 +69,8 @@ struct stack_op {
>   
>   struct instruction;
>   
> +bool arch_ftrace_match(char *name);
> +
>   void arch_initial_func_cfi_state(struct cfi_init_state *state);
>   
>   int arch_decode_instruction(struct objtool_file *file, const struct section *sec,
diff mbox series

Patch

diff --git a/tools/objtool/arch/x86/decode.c b/tools/objtool/arch/x86/decode.c
index c260006106be..025598b6b703 100644
--- a/tools/objtool/arch/x86/decode.c
+++ b/tools/objtool/arch/x86/decode.c
@@ -23,6 +23,14 @@ 
 #include <objtool/builtin.h>
 #include <arch/elf.h>
 
+bool arch_ftrace_match(char *name)
+{
+	if (!strcmp(name, "__fentry__"))
+		return true;
+
+	return false;
+}
+
 static int is_x86_64(const struct elf *elf)
 {
 	switch (elf->ehdr.e_machine) {
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index f1d055467926..01ff7504f18d 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -2294,7 +2294,7 @@  static int classify_symbols(struct objtool_file *file)
 			if (arch_is_rethunk(func))
 				func->return_thunk = true;
 
-			if (!strcmp(func->name, "__fentry__"))
+			if (arch_ftrace_match(func->name))
 				func->fentry = true;
 
 			if (is_profiling_func(func->name))
diff --git a/tools/objtool/include/objtool/arch.h b/tools/objtool/include/objtool/arch.h
index beb2f3aa94ff..2ba4b9897285 100644
--- a/tools/objtool/include/objtool/arch.h
+++ b/tools/objtool/include/objtool/arch.h
@@ -69,6 +69,8 @@  struct stack_op {
 
 struct instruction;
 
+bool arch_ftrace_match(char *name);
+
 void arch_initial_func_cfi_state(struct cfi_init_state *state);
 
 int arch_decode_instruction(struct objtool_file *file, const struct section *sec,