[RFC 15/31] objtool: Interval tree cleanups
From: Josh Poimboeuf
Date: Tue Sep 03 2024 - 00:03:15 EST
Change some comments and variable names to improve readability of the
interval tree code.
Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
---
tools/objtool/elf.c | 50 ++++++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index 12dbcf425321..fc76692ced2c 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -103,7 +103,7 @@ INTERVAL_TREE_DEFINE(struct symbol, node, unsigned long, __subtree_last,
_iter; _iter = __sym_iter_next(_iter, (_start), (_end)))
struct symbol_hole {
- unsigned long key;
+ unsigned long offset;
const struct symbol *sym;
};
@@ -115,10 +115,10 @@ static int symbol_hole_by_offset(const void *key, const struct rb_node *node)
const struct symbol *s = rb_entry(node, struct symbol, node);
struct symbol_hole *sh = (void *)key;
- if (sh->key < s->offset)
+ if (sh->offset < s->offset)
return -1;
- if (sh->key >= s->offset + s->len) {
+ if (sh->offset >= s->offset + s->len) {
if (s->type != STT_SECTION)
sh->sym = s;
return 1;
@@ -167,11 +167,11 @@ static struct symbol *find_symbol_by_index(struct elf *elf, unsigned int idx)
struct symbol *find_symbol_by_offset(struct section *sec, unsigned long offset)
{
struct rb_root_cached *tree = (struct rb_root_cached *)&sec->symbol_tree;
- struct symbol *iter;
+ struct symbol *sym;
- __sym_for_each(iter, tree, offset, offset) {
- if (iter->offset == offset && !is_section_symbol(iter))
- return iter;
+ __sym_for_each(sym, tree, offset, offset) {
+ if (sym->offset == offset && !is_section_symbol(sym))
+ return sym;
}
return NULL;
@@ -180,11 +180,11 @@ struct symbol *find_symbol_by_offset(struct section *sec, unsigned long offset)
struct symbol *find_func_by_offset(struct section *sec, unsigned long offset)
{
struct rb_root_cached *tree = (struct rb_root_cached *)&sec->symbol_tree;
- struct symbol *iter;
+ struct symbol *sym;
- __sym_for_each(iter, tree, offset, offset) {
- if (iter->offset == offset && is_function_symbol(iter))
- return iter;
+ __sym_for_each(sym, tree, offset, offset) {
+ if (sym->offset == offset && is_function_symbol(sym))
+ return sym;
}
return NULL;
@@ -209,26 +209,24 @@ struct symbol *find_symbol_containing(const struct section *sec, unsigned long o
int find_symbol_hole_containing(const struct section *sec, unsigned long offset)
{
struct symbol_hole hole = {
- .key = offset,
+ .offset = offset,
.sym = NULL,
};
struct rb_node *n;
struct symbol *s;
- /*
- * Find the rightmost symbol for which @offset is after it.
- */
+ /* Find the last symbol before @offset */
n = rb_find(&hole, &sec->symbol_tree.rb_root, symbol_hole_by_offset);
- /* found a symbol that contains @offset */
+ /* found a symbol containing @offset */
if (n)
return 0; /* not a hole */
- /* didn't find a symbol for which @offset is after it */
+ /* no symbol before @offset */
if (!hole.sym)
return 0; /* not a hole */
- /* @offset >= sym->offset + sym->len, find symbol after it */
+ /* find first symbol after @offset */
n = rb_next(&hole.sym->node);
if (!n)
return -1; /* until end of address space */
@@ -241,11 +239,11 @@ int find_symbol_hole_containing(const struct section *sec, unsigned long offset)
struct symbol *find_func_containing(struct section *sec, unsigned long offset)
{
struct rb_root_cached *tree = (struct rb_root_cached *)&sec->symbol_tree;
- struct symbol *iter;
+ struct symbol *sym;
- __sym_for_each(iter, tree, offset, offset) {
- if (is_function_symbol(iter))
- return iter;
+ __sym_for_each(sym, tree, offset, offset) {
+ if (is_function_symbol(sym))
+ return sym;
}
return NULL;
@@ -393,7 +391,7 @@ static void elf_add_symbol(struct elf *elf, struct symbol *sym)
{
struct list_head *entry;
struct rb_node *pnode;
- struct symbol *iter;
+ struct symbol *s;
INIT_LIST_HEAD(&sym->pv_target);
sym->alias = sym;
@@ -407,9 +405,9 @@ static void elf_add_symbol(struct elf *elf, struct symbol *sym)
sym->offset = sym->sym.st_value;
sym->len = sym->sym.st_size;
- __sym_for_each(iter, &sym->sec->symbol_tree, sym->offset, sym->offset) {
- if (iter->offset == sym->offset && iter->type == sym->type)
- iter->alias = sym;
+ __sym_for_each(s, &sym->sec->symbol_tree, sym->offset, sym->offset) {
+ if (s->offset == sym->offset && s->type == sym->type)
+ s->alias = sym;
}
__sym_insert(sym, &sym->sec->symbol_tree);
--
2.45.2