linux/Documentation
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-07-13 12:07:44 -07:00
2017-07-12 10:00:04 -07:00
2017-04-14 14:00:49 -06:00
2017-07-07 14:04:47 -07:00
2017-07-08 15:51:57 -07:00
2017-05-05 11:36:44 -07:00
2017-07-09 18:48:37 -07:00
2017-07-06 11:15:19 -07:00
2017-05-02 17:34:32 -07:00
2017-04-03 18:53:50 +01:00
2017-07-07 13:55:45 -07:00
2017-06-08 18:52:43 -07:00
2017-03-31 12:55:11 +02:00
2017-05-16 08:44:18 -03:00
2017-07-06 10:56:51 -07:00
2017-07-13 13:17:19 -07:00
2017-03-17 15:10:49 +09:00
2017-07-26 13:18:20 +02:00
2017-07-07 14:04:47 -07:00
2017-07-14 13:51:29 -06:00
2017-07-05 11:46:59 -07:00
2017-07-14 13:51:34 -06:00
2017-07-14 13:51:40 -06:00
2017-07-14 13:51:42 -06:00
2017-07-14 13:51:43 -06:00
2017-07-14 13:51:43 -06:00
2017-07-14 13:51:45 -06:00
2017-07-14 13:51:45 -06:00
2017-07-14 13:51:46 -06:00
2017-07-14 13:57:58 -06:00
2017-07-14 13:57:59 -06:00
2017-07-06 08:23:30 +02:00
2017-07-07 13:14:14 +02:00
2017-07-14 13:58:04 -06:00
2017-07-14 13:58:08 -06:00
2017-07-14 13:58:14 -06:00
2017-07-14 13:58:10 -06:00
2017-07-14 13:58:11 -06:00