diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-02-26 10:45:41 -0500 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-05-02 14:58:07 -0400 |
commit | aae5f662a32c35b1a962627535acb588d48ff5f9 (patch) | |
tree | 6e300ed8557e850e350c95dffb57ff9d5d5b182d /scripts/mod/modpost.c | |
parent | 85bd2fddd68e757da8e1af98f857f61a3c9ce647 (diff) |
kbuild: whitelist section mismatch in init/main.c
In init/main.c we have a reference from rest_init() to .init.text
which is intentional.
Rename the function 'init' to 'kernel_init' to make it a
kernel wide unique symbol and whitelist the reference.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r-- | scripts/mod/modpost.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 1912c752e422..be0827f734c2 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -589,7 +589,7 @@ static int strrcmp(const char *s, const char *sub) | |||
589 | * the pattern is identified by: | 589 | * the pattern is identified by: |
590 | * tosec = .init.text | .exit.text | .init.data | 590 | * tosec = .init.text | .exit.text | .init.data |
591 | * fromsec = .data | 591 | * fromsec = .data |
592 | * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one | 592 | * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one, *_console |
593 | * | 593 | * |
594 | * Pattern 3: | 594 | * Pattern 3: |
595 | * Some symbols belong to init section but still it is ok to reference | 595 | * Some symbols belong to init section but still it is ok to reference |
@@ -599,6 +599,14 @@ static int strrcmp(const char *s, const char *sub) | |||
599 | * For ex. symbols marking the init section boundaries. | 599 | * For ex. symbols marking the init section boundaries. |
600 | * This pattern is identified by | 600 | * This pattern is identified by |
601 | * refsymname = __init_begin, _sinittext, _einittext | 601 | * refsymname = __init_begin, _sinittext, _einittext |
602 | * Pattern 4: | ||
603 | * During the early init phase we have references from .init.text to | ||
604 | * .text we have an intended section mismatch - do not warn about it. | ||
605 | * See kernel_init() in init/main.c | ||
606 | * tosec = .init.text | ||
607 | * fromsec = .text | ||
608 | * atsym = kernel_init | ||
609 | * Some symbols belong to init section but still it is ok to reference | ||
602 | **/ | 610 | **/ |
603 | static int secref_whitelist(const char *modname, const char *tosec, | 611 | static int secref_whitelist(const char *modname, const char *tosec, |
604 | const char *fromsec, const char *atsym, | 612 | const char *fromsec, const char *atsym, |
@@ -668,6 +676,11 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
668 | if (strcmp(refsymname, *s) == 0) | 676 | if (strcmp(refsymname, *s) == 0) |
669 | return 1; | 677 | return 1; |
670 | } | 678 | } |
679 | /* Check for pattern 4 */ | ||
680 | if ((strcmp(tosec, ".init.text") == 0) && | ||
681 | (strcmp(fromsec, ".text") == 0) && | ||
682 | (strcmp(refsymname, "kernel_init") == 0)) | ||
683 | return 1; | ||
671 | return 0; | 684 | return 0; |
672 | } | 685 | } |
673 | 686 | ||