diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-07-25 15:52:31 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-07-25 15:52:31 -0400 |
commit | 83cda2bb37cb8476cd84659d9698ab48553be974 (patch) | |
tree | c0db0c2f3c6fa6c97e1185c0995c57d3ba3c87be /scripts/mod/modpost.c | |
parent | 2f5ee619045d923de9137b6a263a99cc2428391a (diff) |
kbuild: be more foregiving on init section naming
In the whitelist function of modpost now use the same
check to identify init_section as in other places of modpost.
This has the effect that we now recognize sections named
.init.text.19 as init sections and we no longer warn
when we see these.
At the same time make surrounding code readable by dropping
use of temporary flags.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r-- | scripts/mod/modpost.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index c903a16ba0e6..3db4edcc5a12 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -658,8 +658,8 @@ static int data_section(const char *name) | |||
658 | * These functions may often be marked __init and we do not want to | 658 | * These functions may often be marked __init and we do not want to |
659 | * warn here. | 659 | * warn here. |
660 | * the pattern is identified by: | 660 | * the pattern is identified by: |
661 | * tosec = .init.text | .exit.text | .init.data | 661 | * tosec = init or exit section |
662 | * fromsec = .data | .data.rel | .data.rel.* | 662 | * fromsec = data section |
663 | * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one, *_console, *_timer | 663 | * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one, *_console, *_timer |
664 | * | 664 | * |
665 | * Pattern 3: | 665 | * Pattern 3: |
@@ -680,7 +680,6 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
680 | const char *fromsec, const char *atsym, | 680 | const char *fromsec, const char *atsym, |
681 | const char *refsymname) | 681 | const char *refsymname) |
682 | { | 682 | { |
683 | int f1 = 1, f2 = 1; | ||
684 | const char **s; | 683 | const char **s; |
685 | const char *pat2sym[] = { | 684 | const char *pat2sym[] = { |
686 | "driver", | 685 | "driver", |
@@ -707,31 +706,16 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
707 | return 1; | 706 | return 1; |
708 | 707 | ||
709 | /* Check for pattern 1 */ | 708 | /* Check for pattern 1 */ |
710 | if (strcmp(tosec, ".init.data") != 0) | 709 | if ((strcmp(tosec, ".init.data") == 0) && |
711 | f1 = 0; | 710 | (strncmp(fromsec, ".data", strlen(".data")) == 0) && |
712 | if (strncmp(fromsec, ".data", strlen(".data")) != 0) | 711 | (strncmp(atsym, "__param", strlen("__param")) == 0)) |
713 | f1 = 0; | 712 | return 1; |
714 | if (strncmp(atsym, "__param", strlen("__param")) != 0) | ||
715 | f1 = 0; | ||
716 | |||
717 | if (f1) | ||
718 | return f1; | ||
719 | 713 | ||
720 | /* Check for pattern 2 */ | 714 | /* Check for pattern 2 */ |
721 | if ((strcmp(tosec, ".init.text") != 0) && | 715 | if ((init_section(tosec) || exit_section(tosec)) && data_section(fromsec)) |
722 | (strcmp(tosec, ".exit.text") != 0) && | 716 | for (s = pat2sym; *s; s++) |
723 | (strcmp(tosec, ".init.data") != 0)) | 717 | if (strrcmp(atsym, *s) == 0) |
724 | f2 = 0; | 718 | return 1; |
725 | if ((strcmp(fromsec, ".data") != 0) && | ||
726 | (strcmp(fromsec, ".data.rel") != 0) && | ||
727 | (strncmp(fromsec, ".data.rel.", strlen(".data.rel.")) != 0)) | ||
728 | f2 = 0; | ||
729 | |||
730 | for (s = pat2sym; *s; s++) | ||
731 | if (strrcmp(atsym, *s) == 0) | ||
732 | f1 = 1; | ||
733 | if (f1 && f2) | ||
734 | return 1; | ||
735 | 719 | ||
736 | /* Check for pattern 3 */ | 720 | /* Check for pattern 3 */ |
737 | if ((strcmp(fromsec, ".text.head") == 0) && | 721 | if ((strcmp(fromsec, ".text.head") == 0) && |