From: Peter Zijlstra <peterz@infradead.org>
To: David Woodhouse <dwmw2@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Josh Poimboeuf <jpoimboe@redhat.com>
Cc: linux-kernel@vger.kernel.org, Dave Hansen <dave.hansen@intel.com>,
Ashok Raj <ashok.raj@intel.com>,
Tim Chen <tim.c.chen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Greg KH <gregkh@linuxfoundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Andi Kleen <ak@linux.intel.com>,
Arjan Van De Ven <arjan.van.de.ven@intel.com>,
Dan Williams <dan.j.williams@intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Jun Nakajima <jun.nakajima@intel.com>,
Asit Mallick <asit.k.mallick@intel.com>,
Jason Baron <jbaron@akamai.com>,
Peter Zijlstra <peterz@infradead.org>
Subject: [PATCH 17/24] objtool: Introduce special_type
Date: Tue, 23 Jan 2018 16:25:56 +0100 [thread overview]
Message-ID: <20180123152638.993261209@infradead.org> (raw)
In-Reply-To: 20180123152539.374360046@infradead.org
[-- Attachment #1: peterz-objtool-special-type.patch --]
[-- Type: text/plain, Size: 3157 bytes --]
Use an enum for the special_alt entries instead of a collection of
booleans.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
tools/objtool/check.c | 14 +++++++++++---
tools/objtool/special.c | 14 +++++++-------
tools/objtool/special.h | 10 ++++++++--
3 files changed, 26 insertions(+), 12 deletions(-)
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -773,7 +773,7 @@ static int add_special_section_alts(stru
continue;
new_insn = NULL;
- if (!special_alt->group || special_alt->new_len) {
+ if (special_alt->type != alternative || special_alt->new_len) {
new_insn = find_insn(file, special_alt->new_sec,
special_alt->new_off);
if (!new_insn) {
@@ -785,16 +785,24 @@ static int add_special_section_alts(stru
}
}
- if (special_alt->group) {
+ switch (special_alt->type) {
+ case alternative:
ret = handle_group_alt(file, special_alt, orig_insn,
&new_insn);
if (ret)
goto out;
- } else if (special_alt->jump_or_nop) {
+ break;
+
+ case jump_label:
ret = handle_jump_alt(file, special_alt, orig_insn,
&new_insn);
if (ret)
goto out;
+
+ break;
+
+ default:
+ break;
}
alt = malloc(sizeof(*alt));
--- a/tools/objtool/special.c
+++ b/tools/objtool/special.c
@@ -49,7 +49,7 @@
struct special_entry {
const char *sec;
- bool group, jump_or_nop;
+ enum special_type type;
unsigned char size, orig, new;
unsigned char orig_len, new_len; /* group only */
};
@@ -57,7 +57,7 @@ struct special_entry {
struct special_entry entries[] = {
{
.sec = ".altinstructions",
- .group = true,
+ .type = alternative,
.size = ALT_ENTRY_SIZE,
.orig = ALT_ORIG_OFFSET,
.orig_len = ALT_ORIG_LEN_OFFSET,
@@ -66,13 +66,14 @@ struct special_entry entries[] = {
},
{
.sec = "__jump_table",
- .jump_or_nop = true,
+ .type = jump_label,
.size = JUMP_ENTRY_SIZE,
.orig = JUMP_ORIG_OFFSET,
.new = JUMP_NEW_OFFSET,
},
{
.sec = "__ex_table",
+ .type = exception,
.size = EX_ENTRY_SIZE,
.orig = EX_ORIG_OFFSET,
.new = EX_NEW_OFFSET,
@@ -91,10 +92,9 @@ static int get_alt_entry(struct elf *elf
offset = idx * entry->size;
data = sec->data->d_buf + offset;
- alt->group = entry->group;
- alt->jump_or_nop = entry->jump_or_nop;
+ alt->type = entry->type;
- if (alt->group) {
+ if (alt->type == alternative) {
unsigned short feature;
unsigned char type;
@@ -130,7 +130,7 @@ static int get_alt_entry(struct elf *elf
alt->orig_sec = orig_rela->sym->sec;
alt->orig_off = orig_rela->addend;
- if (!entry->group || alt->new_len) {
+ if (entry->type != alternative || alt->new_len) {
new_rela = find_rela_by_dest(sec, offset + entry->new);
if (!new_rela) {
WARN_FUNC("can't find new rela",
--- a/tools/objtool/special.h
+++ b/tools/objtool/special.h
@@ -21,12 +21,18 @@
#include <stdbool.h>
#include "elf.h"
+enum special_type {
+ alternative,
+ jump_label,
+ exception,
+};
+
struct special_alt {
struct list_head list;
- bool group;
+ enum special_type type;
+
bool skip_orig;
- bool jump_or_nop;
bool static_cpu_has;
struct section *orig_sec;
next prev parent reply other threads:[~2018-01-23 15:25 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-23 15:25 [PATCH 00/24] objtool: retpoline and asm-goto validation Peter Zijlstra
2018-01-23 15:25 ` [PATCH 01/24] objtool: Use existing global variables for options Peter Zijlstra
2018-01-23 15:25 ` [PATCH 02/24] objtool: Add retpoline validation Peter Zijlstra
2018-01-23 18:21 ` Borislav Petkov
2018-01-26 9:54 ` David Woodhouse
2018-01-23 15:25 ` [PATCH 03/24] x86/paravirt: Annotate indirect calls Peter Zijlstra
2018-01-25 10:02 ` David Woodhouse
2018-01-25 10:22 ` Peter Zijlstra
2018-01-25 10:26 ` Juergen Gross
2018-01-25 10:52 ` David Woodhouse
2018-01-25 11:35 ` Peter Zijlstra
2018-01-26 9:57 ` David Woodhouse
2018-01-29 17:58 ` Josh Poimboeuf
2018-01-29 18:09 ` David Woodhouse
2018-01-29 18:17 ` Peter Zijlstra
2018-01-29 18:38 ` Josh Poimboeuf
2018-01-29 19:21 ` Peter Zijlstra
2018-01-30 16:02 ` Josh Poimboeuf
2018-01-31 4:13 ` [PATCH] x86/paravirt: Remove 'noreplace-paravirt' cmdline option Josh Poimboeuf
2018-01-31 5:59 ` Juergen Gross
2018-01-31 9:42 ` [tip:x86/pti] " tip-bot for Josh Poimboeuf
2018-01-23 15:25 ` [PATCH 04/24] x86,nospec: Annotate indirect calls/jumps Peter Zijlstra
2018-01-26 10:19 ` David Woodhouse
2018-01-29 17:44 ` Peter Zijlstra
2018-01-23 15:25 ` [PATCH 05/24] x86: Annotate indirect jump in head_64.S Peter Zijlstra
2018-01-26 10:24 ` David Woodhouse
2018-01-23 15:25 ` [PATCH 06/24] x86,kvm: Fix indirect calls in emulator Peter Zijlstra
2018-01-23 20:28 ` Borislav Petkov
2018-01-23 20:48 ` David Woodhouse
2018-01-24 10:35 ` Peter Zijlstra
2018-01-24 10:43 ` Paolo Bonzini
2018-01-25 9:34 ` Peter Zijlstra
2018-01-25 9:49 ` David Woodhouse
2018-01-26 10:57 ` Paolo Bonzini
2018-01-23 15:25 ` [PATCH 07/24] x86,vmx: Fix indirect call Peter Zijlstra
2018-01-25 9:36 ` Peter Zijlstra
2018-01-23 15:25 ` [PATCH 08/24] x86,sme: Annotate " Peter Zijlstra
2018-01-26 10:37 ` David Woodhouse
2018-01-29 17:49 ` Peter Zijlstra
2018-01-29 17:50 ` Peter Zijlstra
2018-01-31 9:29 ` Peter Zijlstra
2018-01-31 15:04 ` Josh Poimboeuf
2018-01-31 16:00 ` Peter Zijlstra
2018-01-23 15:25 ` [PATCH 09/24] jump_label: Add branch hints to static_branch_{un,}likely() Peter Zijlstra
2018-01-24 18:46 ` Borislav Petkov
2018-01-23 15:25 ` [PATCH 10/24] sched: Optimize ttwu_stat() Peter Zijlstra
2018-01-23 15:25 ` [PATCH 11/24] x86: Reindent _static_cpu_has Peter Zijlstra
2018-01-23 15:25 ` [PATCH 12/24] x86: Update _static_cpu_has to use all named variables Peter Zijlstra
2018-01-25 19:31 ` Borislav Petkov
2018-01-23 15:25 ` [PATCH 13/24] objtool: Implement base jump_assert support Peter Zijlstra
2018-01-26 10:45 ` David Woodhouse
2018-01-23 15:25 ` [PATCH 14/24] x86: Add a type field to alt_instr Peter Zijlstra
2018-01-23 15:25 ` [PATCH 15/24] x86: Annotate static_cpu_has alternative Peter Zijlstra
2018-01-23 15:25 ` [PATCH 16/24] objtool: Implement jump_assert for _static_cpu_has() Peter Zijlstra
2018-01-23 15:25 ` Peter Zijlstra [this message]
2018-01-23 15:25 ` [PATCH 18/24] objtool: More complex static jump implementation Peter Zijlstra
2018-01-23 15:25 ` [PATCH 19/24] objtool: Even more complex static block checks Peter Zijlstra
2018-01-23 15:25 ` [PATCH 20/24] objtool: Another static block fail Peter Zijlstra
2018-01-29 22:52 ` Josh Poimboeuf
2018-01-30 9:56 ` Peter Zijlstra
2018-01-31 3:12 ` Josh Poimboeuf
2018-01-31 10:01 ` Peter Zijlstra
2018-01-31 10:07 ` David Woodhouse
2018-01-31 10:27 ` Peter Zijlstra
2018-01-23 15:26 ` [PATCH 21/24] objtool: Skip static assert when KCOV/KASAN Peter Zijlstra
2018-01-23 15:26 ` [PATCH 22/24] x86/jump_label: Implement arch_static_assert() Peter Zijlstra
2018-01-23 15:26 ` [PATCH 23/24] x86: Force asm-goto Peter Zijlstra
2018-01-23 15:26 ` [PATCH 24/24] x86: Remove FAST_FEATURE_TESTS Peter Zijlstra
2018-01-23 15:42 ` [PATCH 00/24] objtool: retpoline and asm-goto validation Peter Zijlstra
2018-01-23 15:57 ` David Woodhouse
2018-01-23 16:03 ` Peter Zijlstra
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=20180123152638.993261209@infradead.org \
--to=peterz@infradead.org \
--cc=aarcange@redhat.com \
--cc=ak@linux.intel.com \
--cc=arjan.van.de.ven@intel.com \
--cc=ashok.raj@intel.com \
--cc=asit.k.mallick@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=dwmw2@infradead.org \
--cc=gregkh@linuxfoundation.org \
--cc=jbaron@akamai.com \
--cc=jpoimboe@redhat.com \
--cc=jun.nakajima@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=pbonzini@redhat.com \
--cc=tglx@linutronix.de \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).