提交 f666751a 编写于 作者: S Sam Ravnborg

kbuild/modpost: improve warnings if symbol is unknown

If we cannot determine the symbol then print
(unknown) to hint the reader that we failed to
find the symbol.
This happens with REL relocation records
in arm object files.
Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
上级 b1d0e4f5
无相关合并请求
...@@ -613,7 +613,7 @@ static const char *sym_name(struct elf_info *elf, Elf_Sym *sym) ...@@ -613,7 +613,7 @@ static const char *sym_name(struct elf_info *elf, Elf_Sym *sym)
if (sym) if (sym)
return elf->strtab + sym->st_name; return elf->strtab + sym->st_name;
else else
return ""; return "(unknown)";
} }
static const char *sec_name(struct elf_info *elf, int shndx) static const char *sec_name(struct elf_info *elf, int shndx)
...@@ -1102,7 +1102,7 @@ static int is_function(Elf_Sym *sym) ...@@ -1102,7 +1102,7 @@ static int is_function(Elf_Sym *sym)
if (sym) if (sym)
return ELF_ST_TYPE(sym->st_info) == STT_FUNC; return ELF_ST_TYPE(sym->st_info) == STT_FUNC;
else else
return 0; return -1;
} }
/* /*
...@@ -1120,10 +1120,17 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch, ...@@ -1120,10 +1120,17 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
{ {
const char *from, *from_p; const char *from, *from_p;
const char *to, *to_p; const char *to, *to_p;
from = from_is_func ? "function" : "variable";
from_p = from_is_func ? "()" : ""; switch (from_is_func) {
to = to_is_func ? "function" : "variable"; case 0: from = "variable"; from_p = ""; break;
to_p = to_is_func ? "()" : ""; case 1: from = "function"; from_p = "()"; break;
default: from = "(unknown reference)"; from_p = ""; break;
}
switch (to_is_func) {
case 0: to = "variable"; to_p = ""; break;
case 1: to = "function"; to_p = "()"; break;
default: to = "(unknown reference)"; to_p = ""; break;
}
sec_mismatch_count++; sec_mismatch_count++;
if (!sec_mismatch_verbose) if (!sec_mismatch_verbose)
...@@ -1137,7 +1144,7 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch, ...@@ -1137,7 +1144,7 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
switch (mismatch) { switch (mismatch) {
case TEXT_TO_INIT: case TEXT_TO_INIT:
fprintf(stderr, fprintf(stderr,
"The function %s %s() references\n" "The function %s%s() references\n"
"the %s %s%s%s.\n" "the %s %s%s%s.\n"
"This is often because %s lacks a %s\n" "This is often because %s lacks a %s\n"
"annotation or the annotation of %s is wrong.\n", "annotation or the annotation of %s is wrong.\n",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部