Merge tag 'v5.7-rc6' into objtool/core, to pick up fixes and resolve semantic conflict
Resolve structural conflict between:59566b0b62
: ("x86/ftrace: Have ftrace trampolines turn read-only at the end of system boot up") which introduced a new reference to 'ftrace_epilogue', and:0298739b79
: ("x86,ftrace: Fix ftrace_regs_caller() unwind") Which renamed it to 'ftrace_caller_end'. Rename the new usage site in the merge commit. Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -73,6 +73,17 @@ static struct instruction *next_insn_same_func(struct objtool_file *file,
|
||||
return find_insn(file, func->cfunc->sec, func->cfunc->offset);
|
||||
}
|
||||
|
||||
static struct instruction *prev_insn_same_sym(struct objtool_file *file,
|
||||
struct instruction *insn)
|
||||
{
|
||||
struct instruction *prev = list_prev_entry(insn, list);
|
||||
|
||||
if (&prev->list != &file->insn_list && prev->func == insn->func)
|
||||
return prev;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define func_for_each_insn(file, func, insn) \
|
||||
for (insn = find_insn(file, func->sec, func->offset); \
|
||||
insn; \
|
||||
@@ -1096,8 +1107,8 @@ static struct rela *find_jump_table(struct objtool_file *file,
|
||||
* it.
|
||||
*/
|
||||
for (;
|
||||
&insn->list != &file->insn_list && insn->func && insn->func->pfunc == func;
|
||||
insn = insn->first_jump_src ?: list_prev_entry(insn, list)) {
|
||||
insn && insn->func && insn->func->pfunc == func;
|
||||
insn = insn->first_jump_src ?: prev_insn_same_sym(file, insn)) {
|
||||
|
||||
if (insn != orig_insn && insn->type == INSN_JUMP_DYNAMIC)
|
||||
break;
|
||||
@@ -1613,7 +1624,7 @@ static int update_cfi_state_regs(struct instruction *insn,
|
||||
{
|
||||
struct cfi_reg *cfa = &cfi->cfa;
|
||||
|
||||
if (cfa->base != CFI_SP)
|
||||
if (cfa->base != CFI_SP && cfa->base != CFI_SP_INDIRECT)
|
||||
return 0;
|
||||
|
||||
/* push */
|
||||
|
@@ -89,9 +89,10 @@ struct elf {
|
||||
#define OFFSET_STRIDE (1UL << OFFSET_STRIDE_BITS)
|
||||
#define OFFSET_STRIDE_MASK (~(OFFSET_STRIDE - 1))
|
||||
|
||||
#define for_offset_range(_offset, _start, _end) \
|
||||
for (_offset = ((_start) & OFFSET_STRIDE_MASK); \
|
||||
_offset <= ((_end) & OFFSET_STRIDE_MASK); \
|
||||
#define for_offset_range(_offset, _start, _end) \
|
||||
for (_offset = ((_start) & OFFSET_STRIDE_MASK); \
|
||||
_offset >= ((_start) & OFFSET_STRIDE_MASK) && \
|
||||
_offset <= ((_end) & OFFSET_STRIDE_MASK); \
|
||||
_offset += OFFSET_STRIDE)
|
||||
|
||||
static inline u32 sec_offset_hash(struct section *sec, unsigned long offset)
|
||||
|
Reference in New Issue
Block a user