Currently objtool generates tail call entries in
add_jump_destination() but waits until validate_branch() to generate
the regular call entries, move these to add_call_destination() for
consistency.

Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org>
---
 tools/objtool/check.c |   18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -1045,6 +1045,12 @@ static int add_call_destinations(struct
                } else
                        insn->call_dest = reloc->sym;
 
+               if (insn->call_dest && insn->call_dest->static_call_tramp) {
+                       list_add_tail(&insn->static_call_node,
+                                     &file->static_call_list);
+               }
+
+
                /*
                 * Many compilers cannot disable KCOV with a function attribute
                 * so they need a little help, NOP out any KCOV calls from 
noinstr
@@ -1788,6 +1794,9 @@ static int decode_sections(struct objtoo
        if (ret)
                return ret;
 
+       /*
+        * Must be before add_{jump_call}_destination.
+        */
        ret = read_static_call_tramps(file);
        if (ret)
                return ret;
@@ -1800,6 +1809,10 @@ static int decode_sections(struct objtoo
        if (ret)
                return ret;
 
+       /*
+        * Must be before add_call_destination(); it changes INSN_CALL to
+        * INSN_JUMP.
+        */
        ret = read_intra_function_calls(file);
        if (ret)
                return ret;
@@ -2745,11 +2758,6 @@ static int validate_branch(struct objtoo
                        if (dead_end_function(file, insn->call_dest))
                                return 0;
 
-                       if (insn->type == INSN_CALL && 
insn->call_dest->static_call_tramp) {
-                               list_add_tail(&insn->static_call_node,
-                                             &file->static_call_list);
-                       }
-
                        break;
 
                case INSN_JUMP_CONDITIONAL:


Reply via email to