Hi
I found an issue when the kernel build by LLVM,many symbol missing,such as irq_desc_tree,causes irq -s command execution failed ,so i add llvm to strip_symbol_end:
Issue fix after applying the patch
crash> irq -s
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
irq: neither irq_desc, _irq_desc, irq_desc_ptrs or irq_desc_tree symbols exist
crash> sym irq_desc_tree
symbol not found: irq_desc_tree
possible alternatives:
ffffffd44bcbbf60 (d) irq_desc_tree.llvm.7481403593665956221
diff --git a/symbols.c b/symbols.c
index 449d6d4..3b1f08a 100644
--- a/symbols.c
+++ b/symbols.c
@@ -540,30 +540,28 @@ get_text_init_space(void)
static char *
strip_symbol_end(const char *name, char *buf)
{
+ int i;
char *p;
+ char *strip[] = {
+ ".isra.",
+ ".part.",
+ ".llvm.",
+ NULL
+ };
if (st->flags & NO_STRIP)
return (char *)name;
- if ((p = strstr(name, ".isra."))) {
- if (buf) {
- strcpy(buf, name);
- buf[p-name] = NULLCHAR;
- return buf;
- } else {
- *p = NULLCHAR;
- return (char *)name;
- }
- }
-
- if ((p = strstr(name, ".part."))) {
- if (buf) {
- strcpy(buf, name);
- buf[p-name] = NULLCHAR;
- return buf;
- } else {
- *p = NULLCHAR;
- return (char *)name;
+ for (i = 0; strip[i]; i++) {
+ if ((p = strstr(name, strip[i]))) {
+ if (buf) {
+ strcpy(buf, name);
+ buf[p-name] = NULLCHAR;
+ return buf;
+ } else {
+ *p = NULLCHAR;
+ return (char *)name;
+ }
}
}