Skip to content
This repository has been archived by the owner on Jan 12, 2024. It is now read-only.

Commit

Permalink
kbuild/modpost: improve warnings if symbol is unknown
Browse files Browse the repository at this point in the history
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: Sam Ravnborg <sam@ravnborg.org>
  • Loading branch information
sravnborg committed Feb 9, 2008
1 parent b1d0e4f commit f666751
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions scripts/mod/modpost.c
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ static const char *sym_name(struct elf_info *elf, Elf_Sym *sym)
if (sym)
return elf->strtab + sym->st_name;
else
return "";
return "(unknown)";
}

static const char *sec_name(struct elf_info *elf, int shndx)
Expand Down Expand Up @@ -1102,7 +1102,7 @@ static int is_function(Elf_Sym *sym)
if (sym)
return ELF_ST_TYPE(sym->st_info) == STT_FUNC;
else
return 0;
return -1;
}

/*
Expand All @@ -1120,10 +1120,17 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
{
const char *from, *from_p;
const char *to, *to_p;
from = from_is_func ? "function" : "variable";
from_p = from_is_func ? "()" : "";
to = to_is_func ? "function" : "variable";
to_p = to_is_func ? "()" : "";

switch (from_is_func) {
case 0: from = "variable"; from_p = ""; break;
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++;
if (!sec_mismatch_verbose)
Expand All @@ -1137,7 +1144,7 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
switch (mismatch) {
case TEXT_TO_INIT:
fprintf(stderr,
"The function %s %s() references\n"
"The function %s%s() references\n"
"the %s %s%s%s.\n"
"This is often because %s lacks a %s\n"
"annotation or the annotation of %s is wrong.\n",
Expand Down

0 comments on commit f666751

Please sign in to comment.