diff options
Diffstat (limited to 'scripts/mod/modpost.c')
| -rw-r--r-- | scripts/mod/modpost.c | 80 |
1 files changed, 48 insertions, 32 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 87e3ee56e87d..c903a16ba0e6 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
| @@ -586,6 +586,54 @@ static int strrcmp(const char *s, const char *sub) | |||
| 586 | return memcmp(s + slen - sublen, sub, sublen); | 586 | return memcmp(s + slen - sublen, sub, sublen); |
| 587 | } | 587 | } |
| 588 | 588 | ||
| 589 | /* | ||
| 590 | * Functions used only during module init is marked __init and is stored in | ||
| 591 | * a .init.text section. Likewise data is marked __initdata and stored in | ||
| 592 | * a .init.data section. | ||
| 593 | * If this section is one of these sections return 1 | ||
| 594 | * See include/linux/init.h for the details | ||
| 595 | */ | ||
| 596 | static int init_section(const char *name) | ||
| 597 | { | ||
| 598 | if (strcmp(name, ".init") == 0) | ||
| 599 | return 1; | ||
| 600 | if (strncmp(name, ".init.", strlen(".init.")) == 0) | ||
| 601 | return 1; | ||
| 602 | return 0; | ||
| 603 | } | ||
| 604 | |||
| 605 | /* | ||
| 606 | * Functions used only during module exit is marked __exit and is stored in | ||
| 607 | * a .exit.text section. Likewise data is marked __exitdata and stored in | ||
| 608 | * a .exit.data section. | ||
| 609 | * If this section is one of these sections return 1 | ||
| 610 | * See include/linux/init.h for the details | ||
| 611 | **/ | ||
| 612 | static int exit_section(const char *name) | ||
| 613 | { | ||
| 614 | if (strcmp(name, ".exit.text") == 0) | ||
| 615 | return 1; | ||
| 616 | if (strcmp(name, ".exit.data") == 0) | ||
| 617 | return 1; | ||
| 618 | return 0; | ||
| 619 | |||
| 620 | } | ||
| 621 | |||
| 622 | /* | ||
| 623 | * Data sections are named like this: | ||
| 624 | * .data | .data.rel | .data.rel.* | ||
| 625 | * Return 1 if the specified section is a data section | ||
| 626 | */ | ||
| 627 | static int data_section(const char *name) | ||
| 628 | { | ||
| 629 | if ((strcmp(name, ".data") == 0) || | ||
| 630 | (strcmp(name, ".data.rel") == 0) || | ||
| 631 | (strncmp(name, ".data.rel.", strlen(".data.rel.")) == 0)) | ||
| 632 | return 1; | ||
| 633 | else | ||
| 634 | return 0; | ||
| 635 | } | ||
| 636 | |||
| 589 | /** | 637 | /** |
| 590 | * Whitelist to allow certain references to pass with no warning. | 638 | * Whitelist to allow certain references to pass with no warning. |
| 591 | * | 639 | * |
| @@ -1108,21 +1156,6 @@ static int initexit_section_ref_ok(const char *name) | |||
| 1108 | return 0; | 1156 | return 0; |
| 1109 | } | 1157 | } |
| 1110 | 1158 | ||
| 1111 | /** | ||
| 1112 | * Functions used only during module init is marked __init and is stored in | ||
| 1113 | * a .init.text section. Likewise data is marked __initdata and stored in | ||
| 1114 | * a .init.data section. | ||
| 1115 | * If this section is one of these sections return 1 | ||
| 1116 | * See include/linux/init.h for the details | ||
| 1117 | **/ | ||
| 1118 | static int init_section(const char *name) | ||
| 1119 | { | ||
| 1120 | if (strcmp(name, ".init") == 0) | ||
| 1121 | return 1; | ||
| 1122 | if (strncmp(name, ".init.", strlen(".init.")) == 0) | ||
| 1123 | return 1; | ||
| 1124 | return 0; | ||
| 1125 | } | ||
| 1126 | 1159 | ||
| 1127 | /* | 1160 | /* |
| 1128 | * Identify sections from which references to a .init section is OK. | 1161 | * Identify sections from which references to a .init section is OK. |
| @@ -1180,23 +1213,6 @@ static int init_section_ref_ok(const char *name) | |||
| 1180 | } | 1213 | } |
| 1181 | 1214 | ||
| 1182 | /* | 1215 | /* |
| 1183 | * Functions used only during module exit is marked __exit and is stored in | ||
| 1184 | * a .exit.text section. Likewise data is marked __exitdata and stored in | ||
| 1185 | * a .exit.data section. | ||
| 1186 | * If this section is one of these sections return 1 | ||
| 1187 | * See include/linux/init.h for the details | ||
| 1188 | **/ | ||
| 1189 | static int exit_section(const char *name) | ||
| 1190 | { | ||
| 1191 | if (strcmp(name, ".exit.text") == 0) | ||
| 1192 | return 1; | ||
| 1193 | if (strcmp(name, ".exit.data") == 0) | ||
| 1194 | return 1; | ||
| 1195 | return 0; | ||
| 1196 | |||
| 1197 | } | ||
| 1198 | |||
| 1199 | /* | ||
| 1200 | * Identify sections from which references to a .exit section is OK. | 1216 | * Identify sections from which references to a .exit section is OK. |
| 1201 | */ | 1217 | */ |
| 1202 | static int exit_section_ref_ok(const char *name) | 1218 | static int exit_section_ref_ok(const char *name) |
