Josh Poimboeuf ee9f8fce99 x86/unwind: Add the ORC unwinder
Add the new ORC unwinder which is enabled by CONFIG_ORC_UNWINDER=y.
It plugs into the existing x86 unwinder framework.

It relies on objtool to generate the needed .orc_unwind and
.orc_unwind_ip sections.

For more details on why ORC is used instead of DWARF, see
Documentation/x86/orc-unwinder.txt - but the short version is
that it's a simplified, fundamentally more robust debugninfo
data structure, which also allows up to two orders of magnitude
faster lookups than the DWARF unwinder - which matters to
profiling workloads like perf.

Thanks to Andy Lutomirski for the performance improvement ideas:
splitting the ORC unwind table into two parallel arrays and creating a
fast lookup table to search a subset of the unwind table.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: live-patching@vger.kernel.org
Link: http://lkml.kernel.org/r/0a6cbfb40f8da99b7a45a1a8302dc6aef16ec812.1500938583.git.jpoimboe@redhat.com
[ Extended the changelog. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-07-26 13:18:20 +02:00
..
2017-02-24 17:46:57 -08:00
2015-11-23 09:44:58 +01:00
2017-03-30 09:37:20 +02:00
2017-06-09 11:52:07 +02:00
2017-02-24 17:46:57 -08:00
2017-05-09 15:40:28 -07:00
2017-02-24 17:46:57 -08:00
2017-02-13 21:44:10 -05:00
2017-07-07 09:44:06 -07:00
2017-07-26 13:18:20 +02:00
2014-08-08 15:57:25 -07:00
2014-06-25 17:45:43 -07:00
2016-12-06 10:17:03 +02:00
2015-09-08 14:35:59 -07:00
2017-02-24 17:46:57 -08:00
2015-03-23 22:12:08 -04:00
2017-05-15 23:40:22 -04:00
2016-08-02 17:31:41 -04:00
2017-07-07 10:37:54 -07:00