Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 413c536..d3e509e 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -37,6 +37,8 @@
static int external_module = 0;
/* Warn about section mismatch in vmlinux if set to 1 */
static int vmlinux_section_warnings = 1;
+/* Exit with an error when there is a section mismatch if set to 1 */
+static int section_error_on_mismatch;
/* Only warn about unresolved symbols */
static int warn_unresolved = 0;
/* How a symbol is exported */
@@ -2068,7 +2070,7 @@
struct ext_sym_list *extsym_iter;
struct ext_sym_list *extsym_start = NULL;
- while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:")) != -1) {
+ while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:E")) != -1) {
switch (opt) {
case 'i':
kernel_read = optarg;
@@ -2106,6 +2108,9 @@
case 'w':
warn_unresolved = 1;
break;
+ case 'E':
+ section_error_on_mismatch = 1;
+ break;
default:
exit(1);
}
@@ -2154,11 +2159,23 @@
if (dump_write)
write_dump(dump_write);
- if (sec_mismatch_count && !sec_mismatch_verbose)
- warn("modpost: Found %d section mismatch(es).\n"
- "To see full details build your kernel with:\n"
- "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n",
- sec_mismatch_count);
+
+ if (sec_mismatch_count && !sec_mismatch_verbose) {
+ merror(
+ "modpost: Found %d section mismatch(es).\n"
+ "To see full details build your kernel with:\n"
+ "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n",
+ sec_mismatch_count);
+
+ }
+
+ if (sec_mismatch_count && section_error_on_mismatch) {
+ err |= 1;
+ printf(
+ "To build the kernel despite the mismatches, "
+ "build with:\n'make CONFIG_NO_ERROR_ON_MISMATCH=y'\n"
+ "(NOTE: This is not recommended)\n");
+ }
return err;
}