[PATCH 22/46] kbuild: do not warn when unwind sections references .init/.exit sections

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Morton reported a number of false positives for ia64 - like these:
WARNING: drivers/acpi/button.o - Section mismatch: reference to .init.text: from .IA_64.unwind.init.text after '' (at offset 0x0)
WARNING: drivers/acpi/button.o - Section mismatch: reference to .exit.text: from .IA_64.unwind.exit.text after '' (at offset 0x0)
WARNING: drivers/acpi/processor.o - Section mismatch: reference to .init.text: from .IA_64.unwind after '' (at offset 0x1e8)

They are all false positives - or at least the .c code looks OK.
It is not known why sometimes a section name is appended and sometimes not.

Fix is to accept references from all sections that includes "unwind." in the name.

Signed-off-by: Sam Ravnborg <[email protected]>

---

 scripts/mod/modpost.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

6e10133fa4b2366e8ef18bc2ce34afe727b1c4ba
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 5b076ef..7f25354 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -671,13 +671,21 @@ static int init_section_ref_ok(const cha
 		".debug",
 		NULL
 	};
-	
+	/* part of section name */
+	const char *namelist3 [] = {
+		".unwind",  /* sample: IA_64.unwind.init.text */
+		NULL
+	};
+
 	for (s = namelist1; *s; s++)
 		if (strcmp(*s, name) == 0)
 			return 1;
 	for (s = namelist2; *s; s++)	
 		if (strncmp(*s, name, strlen(*s)) == 0)
 			return 1;
+	for (s = namelist3; *s; s++)	
+		if (strstr(*s, name) != NULL)
+			return 1;
 	return 0;
 }
 
@@ -727,6 +735,11 @@ static int exit_section_ref_ok(const cha
 		".debug",
 		NULL
 	};
+	/* part of section name */
+	const char *namelist3 [] = {
+		".unwind",  /* Sample: IA_64.unwind.exit.text */
+		NULL
+	};
 	
 	for (s = namelist1; *s; s++)
 		if (strcmp(*s, name) == 0)
@@ -734,6 +747,9 @@ static int exit_section_ref_ok(const cha
 	for (s = namelist2; *s; s++)	
 		if (strncmp(*s, name, strlen(*s)) == 0)
 			return 1;
+	for (s = namelist3; *s; s++)	
+		if (strstr(*s, name) != NULL)
+			return 1;
 	return 0;
 }
 
-- 
1.0.GIT


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux