diff options
Diffstat (limited to 'scripts/mod')
-rw-r--r-- | scripts/mod/modpost.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 5d546466e6b1..32e9d8ffceef 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -613,7 +613,7 @@ static const char *sym_name(struct elf_info *elf, Elf_Sym *sym) | |||
613 | if (sym) | 613 | if (sym) |
614 | return elf->strtab + sym->st_name; | 614 | return elf->strtab + sym->st_name; |
615 | else | 615 | else |
616 | return ""; | 616 | return "(unknown)"; |
617 | } | 617 | } |
618 | 618 | ||
619 | static const char *sec_name(struct elf_info *elf, int shndx) | 619 | static const char *sec_name(struct elf_info *elf, int shndx) |
@@ -1102,7 +1102,7 @@ static int is_function(Elf_Sym *sym) | |||
1102 | if (sym) | 1102 | if (sym) |
1103 | return ELF_ST_TYPE(sym->st_info) == STT_FUNC; | 1103 | return ELF_ST_TYPE(sym->st_info) == STT_FUNC; |
1104 | else | 1104 | else |
1105 | return 0; | 1105 | return -1; |
1106 | } | 1106 | } |
1107 | 1107 | ||
1108 | /* | 1108 | /* |
@@ -1120,10 +1120,17 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch, | |||
1120 | { | 1120 | { |
1121 | const char *from, *from_p; | 1121 | const char *from, *from_p; |
1122 | const char *to, *to_p; | 1122 | const char *to, *to_p; |
1123 | from = from_is_func ? "function" : "variable"; | 1123 | |
1124 | from_p = from_is_func ? "()" : ""; | 1124 | switch (from_is_func) { |
1125 | to = to_is_func ? "function" : "variable"; | 1125 | case 0: from = "variable"; from_p = ""; break; |
1126 | to_p = to_is_func ? "()" : ""; | 1126 | case 1: from = "function"; from_p = "()"; break; |
1127 | default: from = "(unknown reference)"; from_p = ""; break; | ||
1128 | } | ||
1129 | switch (to_is_func) { | ||
1130 | case 0: to = "variable"; to_p = ""; break; | ||
1131 | case 1: to = "function"; to_p = "()"; break; | ||
1132 | default: to = "(unknown reference)"; to_p = ""; break; | ||
1133 | } | ||
1127 | 1134 | ||
1128 | sec_mismatch_count++; | 1135 | sec_mismatch_count++; |
1129 | if (!sec_mismatch_verbose) | 1136 | if (!sec_mismatch_verbose) |
@@ -1137,7 +1144,7 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch, | |||
1137 | switch (mismatch) { | 1144 | switch (mismatch) { |
1138 | case TEXT_TO_INIT: | 1145 | case TEXT_TO_INIT: |
1139 | fprintf(stderr, | 1146 | fprintf(stderr, |
1140 | "The function %s %s() references\n" | 1147 | "The function %s%s() references\n" |
1141 | "the %s %s%s%s.\n" | 1148 | "the %s %s%s%s.\n" |
1142 | "This is often because %s lacks a %s\n" | 1149 | "This is often because %s lacks a %s\n" |
1143 | "annotation or the annotation of %s is wrong.\n", | 1150 | "annotation or the annotation of %s is wrong.\n", |