mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-02 11:13:02 +09:00
commit 43d5430ad7 upstream.
Provide infrastructure for architectures to rewrite/augment compiler
generated retpoline calls. Similar to what we do for static_call()s,
keep track of the instructions that are retpoline calls.
Use the same list_head, since a retpoline call cannot also be a
static_call.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Link: https://lkml.kernel.org/r/20210326151300.130805730@infradead.org
[bwh: Backported to 5.10: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
33 lines
720 B
C
33 lines
720 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2020 Matt Helsley <mhelsley@vmware.com>
|
|
*/
|
|
|
|
#ifndef _OBJTOOL_H
|
|
#define _OBJTOOL_H
|
|
|
|
#include <stdbool.h>
|
|
#include <linux/list.h>
|
|
#include <linux/hashtable.h>
|
|
|
|
#include "elf.h"
|
|
|
|
#define __weak __attribute__((weak))
|
|
|
|
struct objtool_file {
|
|
struct elf *elf;
|
|
struct list_head insn_list;
|
|
DECLARE_HASHTABLE(insn_hash, 20);
|
|
struct list_head retpoline_call_list;
|
|
struct list_head static_call_list;
|
|
bool ignore_unreachables, c_file, hints, rodata;
|
|
};
|
|
|
|
struct objtool_file *objtool_open_read(const char *_objname);
|
|
|
|
int check(struct objtool_file *file);
|
|
int orc_dump(const char *objname);
|
|
int orc_create(struct objtool_file *file);
|
|
|
|
#endif /* _OBJTOOL_H */
|