|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] symbols: avoid emitting "end" symbols for data items
commit 6eede548df21c0ed1f7fae7781805370fb024af5
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri Oct 31 08:37:57 2025 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Oct 31 08:37:57 2025 +0100
symbols: avoid emitting "end" symbols for data items
symbols-dummy.c and the generated .xen-syms.?.S may place their symbols in
different sections: Like for all C files, -fdata-sections may be in effect
there. As a result, besides these symbols moving, there may then also be
different amounts of "end" symbols inserted between them. While the
movement is likely not problematic, the change in table size is - linking
passes 2 and 3 want no address (and hence no size) changes between them.
As, at least right now, the "end" symbols are useful only for code, limit
their emission accordingly. When data symbols are emitted (i.e. when
LIVEPATCH=y), this obviously also has a positive effect on overall table
size (I'm seeing almost 600 entries going away in the build I'm looking
at).
Fixes: d3b637fba31b ("symbols: arrange to know where functions end")
Reported-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Tested-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Release-Acked-By: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
---
xen/tools/symbols.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/xen/tools/symbols.c b/xen/tools/symbols.c
index 399edc8578..7685866b97 100644
--- a/xen/tools/symbols.c
+++ b/xen/tools/symbols.c
@@ -176,10 +176,9 @@ static int read_symbol(FILE *in, struct sym_entry *s)
*sym++ = '#';
}
strcpy(sym, str);
- if (sort_by_name || map_only) {
+ if (sort_by_name || map_only)
s->orig_symbol = strdup(SYMBOL_NAME(s));
- s->type = stype; /* As s->sym[0] ends mangled. */
- }
+ s->type = stype; /* As s->sym[0] may end up mangled. */
s->sym[0] = stype;
s->typed = strcmp(type, "FUNC") == 0 ||
strcmp(type, "OBJECT") == 0 ||
@@ -313,6 +312,7 @@ static int compare_name_orig(const void *p1, const void *p2)
static bool want_symbol_end(unsigned int idx)
{
return table[idx].size &&
+ toupper(table[idx].type) == 'T' &&
(idx + 1 == table_cnt ||
table[idx].addr + table[idx].size < table[idx + 1].addr);
}
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |