kbuild: whitelist logo references from .text to .init.data
authorSam Ravnborg <sam@ravnborg.org>
Tue, 27 Feb 2007 08:14:58 +0000 (09:14 +0100)
committerSam Ravnborg <sam@ravnborg.org>
Wed, 2 May 2007 18:58:08 +0000 (20:58 +0200)
drivers/video/logo has references from .text to .init.data
but function is only used during early init.
So reference is OK and we do not want to warn about them =>
whitelist the reference.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
scripts/mod/modpost.c

index 281abb77e03329bf83df6b02fb3896c2643d83f7..5f2ecd51bde3f352940a68b547c1d4240ce9748d 100644 (file)
@@ -616,6 +616,15 @@ static int strrcmp(const char *s, const char *sub)
  *   fromsec = .text
  *   atsym = kernel_init
  *   Some symbols belong to init section but still it is ok to reference
+ *
+ * Pattern 7:
+ *  Logos used in drivers/video/logo reside in __initdata but the
+ *  funtion that references them are EXPORT_SYMBOL() so cannot be
+ *  marker __init. So we whitelist them here.
+ *  The pattern is:
+ *  tosec      = .init.data
+ *  fromsec    = .text*
+ *  refsymname = logo_
  **/
 static int secref_whitelist(const char *modname, const char *tosec,
                            const char *fromsec, const char *atsym,
@@ -687,6 +696,12 @@ static int secref_whitelist(const char *modname, const char *tosec,
            (strcmp(fromsec, ".text") == 0) &&
            (strcmp(refsymname, "kernel_init") == 0))
                return 1;
+
+       /* Check for pattern 7 */
+       if ((strcmp(tosec, ".init.data") == 0) &&
+           (strncmp(fromsec, ".text", strlen(".text")) == 0) &&
+           (strncmp(refsymname, "logo_", strlen("logo_")) == 0))
+               return 1;
        return 0;
 }