mirror-linux/tools/objtool
Peter Zijlstra 2d24dd5798 rbtree: Add generic add and find helpers
I've always been bothered by the endless (fragile) boilerplate for
rbtree, and I recently wrote some rbtree helpers for objtool and
figured I should lift them into the kernel and use them more widely.

Provide:

partial-order; less() based:
 - rb_add(): add a new entry to the rbtree
 - rb_add_cached(): like rb_add(), but for a rb_root_cached

total-order; cmp() based:
 - rb_find(): find an entry in an rbtree
 - rb_find_add(): find an entry, and add if not found

 - rb_find_first(): find the first (leftmost) matching entry
 - rb_next_match(): continue from rb_find_first()
 - rb_for_each(): iterate a sub-tree using the previous two

Inlining and constant propagation should see the compiler inline the
whole thing, including the various compare functions.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Michel Lespinasse <walken@google.com>
Acked-by: Davidlohr Bueso <dbueso@suse.de>
2021-02-17 14:07:31 +01:00
..
Documentation objtool: Add support for intra-function calls 2020-04-30 20:14:33 +02:00
arch/x86 objtool: Decode unwind hint register depending on architecture 2020-09-10 10:43:13 -05:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Build objtool: Enable compilation of objtool for all architectures 2020-05-20 09:17:28 -05:00
Makefile tools: Factor HOSTCC, HOSTLD, HOSTAR definitions 2020-11-11 12:18:22 -08:00
arch.h objtool: Decode unwind hint register depending on architecture 2020-09-10 10:43:13 -05:00
builtin-check.c objtool: Move ORC logic out of check() 2020-09-01 17:19:11 -05:00
builtin-orc.c objtool: Move ORC logic out of check() 2020-09-01 17:19:11 -05:00
builtin.h objtool: Implement noinstr validation 2020-04-22 10:53:50 +02:00
cfi.h objtool: Fix !CFI insn_state propagation 2020-04-22 10:53:50 +02:00
check.c objtool: Don't fail the kernel build on fatal errors 2021-01-21 15:49:39 -06:00
check.h objtool: Refactor jump table code to support other architectures 2020-09-10 10:43:13 -05:00
elf.c rbtree: Add generic add and find helpers 2021-02-17 14:07:31 +01:00
elf.h objtool: Fix seg fault with Clang non-section symbols 2020-12-16 14:35:46 +01:00
objtool.c objtool: Move object file loading out of check() 2020-09-01 17:19:07 -05:00
objtool.h objtool: Abstract alternative special case handling 2020-09-10 10:43:13 -05:00
orc_dump.c objtool: Make unwind hint definitions available to other architectures 2020-09-10 10:43:13 -05:00
orc_gen.c objtool: Fix seg fault with Clang non-section symbols 2020-12-16 14:35:46 +01:00
special.c objtool: Abstract alternative special case handling 2020-09-10 10:43:13 -05:00
special.h objtool: Refactor jump table code to support other architectures 2020-09-10 10:43:13 -05:00
sync-check.sh objtool: Make unwind hint definitions available to other architectures 2020-09-10 10:43:13 -05:00
warn.h objtool: Rename find_containing_func() 2020-03-25 18:28:29 +01:00
weak.c objtool: Abstract alternative special case handling 2020-09-10 10:43:13 -05:00