diff options
| -rw-r--r-- | arch/m68knommu/kernel/vmlinux.lds.S | 10 | ||||
| -rw-r--r-- | arch/v850/kernel/vmlinux.lds.S | 8 | ||||
| -rw-r--r-- | include/asm-generic/vmlinux.lds.h | 14 | ||||
| -rw-r--r-- | include/linux/module.h | 9 | ||||
| -rw-r--r-- | kernel/module.c | 49 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.c_shipped | 91 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.gperf | 1 |
7 files changed, 135 insertions, 47 deletions
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index ac9de2661c0b..a331cc90797c 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S | |||
| @@ -269,6 +269,11 @@ SECTIONS { | |||
| 269 | *(__ksymtab_gpl) | 269 | *(__ksymtab_gpl) |
| 270 | __stop___ksymtab_gpl = .; | 270 | __stop___ksymtab_gpl = .; |
| 271 | 271 | ||
| 272 | /* Kernel symbol table: GPL-future symbols */ | ||
| 273 | __start___ksymtab_gpl_future = .; | ||
| 274 | *(__ksymtab_gpl_future) | ||
| 275 | __stop___ksymtab_gpl_future = .; | ||
| 276 | |||
| 272 | /* Kernel symbol table: Normal symbols */ | 277 | /* Kernel symbol table: Normal symbols */ |
| 273 | __start___kcrctab = .; | 278 | __start___kcrctab = .; |
| 274 | *(__kcrctab) | 279 | *(__kcrctab) |
| @@ -279,6 +284,11 @@ SECTIONS { | |||
| 279 | *(__kcrctab_gpl) | 284 | *(__kcrctab_gpl) |
| 280 | __stop___kcrctab_gpl = .; | 285 | __stop___kcrctab_gpl = .; |
| 281 | 286 | ||
| 287 | /* Kernel symbol table: GPL-future symbols */ | ||
| 288 | __start___kcrctab_gpl_future = .; | ||
| 289 | *(__kcrctab_gpl_future) | ||
| 290 | __stop___kcrctab_gpl_future = .; | ||
| 291 | |||
| 282 | /* Kernel symbol table: strings */ | 292 | /* Kernel symbol table: strings */ |
| 283 | *(__ksymtab_strings) | 293 | *(__ksymtab_strings) |
| 284 | 294 | ||
diff --git a/arch/v850/kernel/vmlinux.lds.S b/arch/v850/kernel/vmlinux.lds.S index 5be05f47109e..5b2ffcc6e2b2 100644 --- a/arch/v850/kernel/vmlinux.lds.S +++ b/arch/v850/kernel/vmlinux.lds.S | |||
| @@ -64,6 +64,10 @@ | |||
| 64 | ___start___ksymtab_gpl = .; \ | 64 | ___start___ksymtab_gpl = .; \ |
| 65 | *(__ksymtab_gpl) \ | 65 | *(__ksymtab_gpl) \ |
| 66 | ___stop___ksymtab_gpl = .; \ | 66 | ___stop___ksymtab_gpl = .; \ |
| 67 | /* Kernel symbol table: GPL-future symbols */ \ | ||
| 68 | ___start___ksymtab_gpl_future = .; \ | ||
| 69 | *(__ksymtab_gpl_future) \ | ||
| 70 | ___stop___ksymtab_gpl_future = .; \ | ||
| 67 | /* Kernel symbol table: strings */ \ | 71 | /* Kernel symbol table: strings */ \ |
| 68 | *(__ksymtab_strings) \ | 72 | *(__ksymtab_strings) \ |
| 69 | /* Kernel symbol table: Normal symbols */ \ | 73 | /* Kernel symbol table: Normal symbols */ \ |
| @@ -74,6 +78,10 @@ | |||
| 74 | ___start___kcrctab_gpl = .; \ | 78 | ___start___kcrctab_gpl = .; \ |
| 75 | *(__kcrctab_gpl) \ | 79 | *(__kcrctab_gpl) \ |
| 76 | ___stop___kcrctab_gpl = .; \ | 80 | ___stop___kcrctab_gpl = .; \ |
| 81 | /* Kernel symbol table: GPL-future symbols */ \ | ||
| 82 | ___start___kcrctab_gpl_future = .; \ | ||
| 83 | *(__kcrctab_gpl_future) \ | ||
| 84 | ___stop___kcrctab_gpl_future = .; \ | ||
| 77 | /* Built-in module parameters */ \ | 85 | /* Built-in module parameters */ \ |
| 78 | . = ALIGN (4) ; \ | 86 | . = ALIGN (4) ; \ |
| 79 | ___start___param = .; \ | 87 | ___start___param = .; \ |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 35de20cf8fac..9d11550b4818 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
| @@ -58,6 +58,13 @@ | |||
| 58 | VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \ | 58 | VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \ |
| 59 | } \ | 59 | } \ |
| 60 | \ | 60 | \ |
| 61 | /* Kernel symbol table: GPL-future-only symbols */ \ | ||
| 62 | __ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \ | ||
| 63 | VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .; \ | ||
| 64 | *(__ksymtab_gpl_future) \ | ||
| 65 | VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .; \ | ||
| 66 | } \ | ||
| 67 | \ | ||
| 61 | /* Kernel symbol table: Normal symbols */ \ | 68 | /* Kernel symbol table: Normal symbols */ \ |
| 62 | __kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \ | 69 | __kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \ |
| 63 | VMLINUX_SYMBOL(__start___kcrctab) = .; \ | 70 | VMLINUX_SYMBOL(__start___kcrctab) = .; \ |
| @@ -72,6 +79,13 @@ | |||
| 72 | VMLINUX_SYMBOL(__stop___kcrctab_gpl) = .; \ | 79 | VMLINUX_SYMBOL(__stop___kcrctab_gpl) = .; \ |
| 73 | } \ | 80 | } \ |
| 74 | \ | 81 | \ |
| 82 | /* Kernel symbol table: GPL-future-only symbols */ \ | ||
| 83 | __kcrctab_gpl_future : AT(ADDR(__kcrctab_gpl_future) - LOAD_OFFSET) { \ | ||
| 84 | VMLINUX_SYMBOL(__start___kcrctab_gpl_future) = .; \ | ||
| 85 | *(__kcrctab_gpl_future) \ | ||
| 86 | VMLINUX_SYMBOL(__stop___kcrctab_gpl_future) = .; \ | ||
| 87 | } \ | ||
| 88 | \ | ||
| 75 | /* Kernel symbol table: strings */ \ | 89 | /* Kernel symbol table: strings */ \ |
| 76 | __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ | 90 | __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ |
| 77 | *(__ksymtab_strings) \ | 91 | *(__ksymtab_strings) \ |
diff --git a/include/linux/module.h b/include/linux/module.h index 84d75f3a8aca..a25d5f61548c 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
| @@ -198,6 +198,9 @@ void *__symbol_get_gpl(const char *symbol); | |||
| 198 | #define EXPORT_SYMBOL_GPL(sym) \ | 198 | #define EXPORT_SYMBOL_GPL(sym) \ |
| 199 | __EXPORT_SYMBOL(sym, "_gpl") | 199 | __EXPORT_SYMBOL(sym, "_gpl") |
| 200 | 200 | ||
| 201 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) \ | ||
| 202 | __EXPORT_SYMBOL(sym, "_gpl_future") | ||
| 203 | |||
| 201 | #endif | 204 | #endif |
| 202 | 205 | ||
| 203 | struct module_ref | 206 | struct module_ref |
| @@ -255,6 +258,11 @@ struct module | |||
| 255 | unsigned int num_gpl_syms; | 258 | unsigned int num_gpl_syms; |
| 256 | const unsigned long *gpl_crcs; | 259 | const unsigned long *gpl_crcs; |
| 257 | 260 | ||
| 261 | /* symbols that will be GPL-only in the near future. */ | ||
| 262 | const struct kernel_symbol *gpl_future_syms; | ||
| 263 | unsigned int num_gpl_future_syms; | ||
| 264 | const unsigned long *gpl_future_crcs; | ||
| 265 | |||
| 258 | /* Exception table */ | 266 | /* Exception table */ |
| 259 | unsigned int num_exentries; | 267 | unsigned int num_exentries; |
| 260 | const struct exception_table_entry *extable; | 268 | const struct exception_table_entry *extable; |
| @@ -441,6 +449,7 @@ void module_remove_driver(struct device_driver *); | |||
| 441 | #else /* !CONFIG_MODULES... */ | 449 | #else /* !CONFIG_MODULES... */ |
| 442 | #define EXPORT_SYMBOL(sym) | 450 | #define EXPORT_SYMBOL(sym) |
| 443 | #define EXPORT_SYMBOL_GPL(sym) | 451 | #define EXPORT_SYMBOL_GPL(sym) |
| 452 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) | ||
| 444 | 453 | ||
| 445 | /* Given an address, look for it in the exception tables. */ | 454 | /* Given an address, look for it in the exception tables. */ |
| 446 | static inline const struct exception_table_entry * | 455 | static inline const struct exception_table_entry * |
diff --git a/kernel/module.c b/kernel/module.c index 2a892b20d68f..5ca99fbe9f44 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -126,8 +126,11 @@ extern const struct kernel_symbol __start___ksymtab[]; | |||
| 126 | extern const struct kernel_symbol __stop___ksymtab[]; | 126 | extern const struct kernel_symbol __stop___ksymtab[]; |
| 127 | extern const struct kernel_symbol __start___ksymtab_gpl[]; | 127 | extern const struct kernel_symbol __start___ksymtab_gpl[]; |
| 128 | extern const struct kernel_symbol __stop___ksymtab_gpl[]; | 128 | extern const struct kernel_symbol __stop___ksymtab_gpl[]; |
| 129 | extern const struct kernel_symbol __start___ksymtab_gpl_future[]; | ||
| 130 | extern const struct kernel_symbol __stop___ksymtab_gpl_future[]; | ||
| 129 | extern const unsigned long __start___kcrctab[]; | 131 | extern const unsigned long __start___kcrctab[]; |
| 130 | extern const unsigned long __start___kcrctab_gpl[]; | 132 | extern const unsigned long __start___kcrctab_gpl[]; |
| 133 | extern const unsigned long __start___kcrctab_gpl_future[]; | ||
| 131 | 134 | ||
| 132 | #ifndef CONFIG_MODVERSIONS | 135 | #ifndef CONFIG_MODVERSIONS |
| 133 | #define symversion(base, idx) NULL | 136 | #define symversion(base, idx) NULL |
| @@ -172,6 +175,22 @@ static unsigned long __find_symbol(const char *name, | |||
| 172 | return ks->value; | 175 | return ks->value; |
| 173 | } | 176 | } |
| 174 | } | 177 | } |
| 178 | ks = lookup_symbol(name, __start___ksymtab_gpl_future, | ||
| 179 | __stop___ksymtab_gpl_future); | ||
| 180 | if (ks) { | ||
| 181 | if (!gplok) { | ||
| 182 | printk(KERN_WARNING "Symbol %s is being used " | ||
| 183 | "by a non-GPL module, which will not " | ||
| 184 | "be allowed in the future\n", name); | ||
| 185 | printk(KERN_WARNING "Please see the file " | ||
| 186 | "Documentation/feature-removal-schedule.txt " | ||
| 187 | "in the kernel source tree for more " | ||
| 188 | "details.\n"); | ||
| 189 | } | ||
| 190 | *crc = symversion(__start___kcrctab_gpl_future, | ||
| 191 | (ks - __start___ksymtab_gpl_future)); | ||
| 192 | return ks->value; | ||
| 193 | } | ||
| 175 | 194 | ||
| 176 | /* Now try modules. */ | 195 | /* Now try modules. */ |
| 177 | list_for_each_entry(mod, &modules, list) { | 196 | list_for_each_entry(mod, &modules, list) { |
| @@ -191,6 +210,23 @@ static unsigned long __find_symbol(const char *name, | |||
| 191 | return ks->value; | 210 | return ks->value; |
| 192 | } | 211 | } |
| 193 | } | 212 | } |
| 213 | ks = lookup_symbol(name, mod->gpl_future_syms, | ||
| 214 | (mod->gpl_future_syms + | ||
| 215 | mod->num_gpl_future_syms)); | ||
| 216 | if (ks) { | ||
| 217 | if (!gplok) { | ||
| 218 | printk(KERN_WARNING "Symbol %s is being used " | ||
| 219 | "by a non-GPL module, which will not " | ||
| 220 | "be allowed in the future\n", name); | ||
| 221 | printk(KERN_WARNING "Please see the file " | ||
| 222 | "Documentation/feature-removal-schedule.txt " | ||
| 223 | "in the kernel source tree for more " | ||
| 224 | "details.\n"); | ||
| 225 | } | ||
| 226 | *crc = symversion(mod->gpl_future_crcs, | ||
| 227 | (ks - mod->gpl_future_syms)); | ||
| 228 | return ks->value; | ||
| 229 | } | ||
| 194 | } | 230 | } |
| 195 | DEBUGP("Failed to find symbol %s\n", name); | 231 | DEBUGP("Failed to find symbol %s\n", name); |
| 196 | return 0; | 232 | return 0; |
| @@ -1546,7 +1582,8 @@ static struct module *load_module(void __user *umod, | |||
| 1546 | char *secstrings, *args, *modmagic, *strtab = NULL; | 1582 | char *secstrings, *args, *modmagic, *strtab = NULL; |
| 1547 | unsigned int i, symindex = 0, strindex = 0, setupindex, exindex, | 1583 | unsigned int i, symindex = 0, strindex = 0, setupindex, exindex, |
| 1548 | exportindex, modindex, obsparmindex, infoindex, gplindex, | 1584 | exportindex, modindex, obsparmindex, infoindex, gplindex, |
| 1549 | crcindex, gplcrcindex, versindex, pcpuindex; | 1585 | crcindex, gplcrcindex, versindex, pcpuindex, gplfutureindex, |
| 1586 | gplfuturecrcindex; | ||
| 1550 | long arglen; | 1587 | long arglen; |
| 1551 | struct module *mod; | 1588 | struct module *mod; |
| 1552 | long err = 0; | 1589 | long err = 0; |
| @@ -1627,8 +1664,10 @@ static struct module *load_module(void __user *umod, | |||
| 1627 | /* Optional sections */ | 1664 | /* Optional sections */ |
| 1628 | exportindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab"); | 1665 | exportindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab"); |
| 1629 | gplindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab_gpl"); | 1666 | gplindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab_gpl"); |
| 1667 | gplfutureindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab_gpl_future"); | ||
| 1630 | crcindex = find_sec(hdr, sechdrs, secstrings, "__kcrctab"); | 1668 | crcindex = find_sec(hdr, sechdrs, secstrings, "__kcrctab"); |
| 1631 | gplcrcindex = find_sec(hdr, sechdrs, secstrings, "__kcrctab_gpl"); | 1669 | gplcrcindex = find_sec(hdr, sechdrs, secstrings, "__kcrctab_gpl"); |
| 1670 | gplfuturecrcindex = find_sec(hdr, sechdrs, secstrings, "__kcrctab_gpl_future"); | ||
| 1632 | setupindex = find_sec(hdr, sechdrs, secstrings, "__param"); | 1671 | setupindex = find_sec(hdr, sechdrs, secstrings, "__param"); |
| 1633 | exindex = find_sec(hdr, sechdrs, secstrings, "__ex_table"); | 1672 | exindex = find_sec(hdr, sechdrs, secstrings, "__ex_table"); |
| 1634 | obsparmindex = find_sec(hdr, sechdrs, secstrings, "__obsparm"); | 1673 | obsparmindex = find_sec(hdr, sechdrs, secstrings, "__obsparm"); |
| @@ -1784,10 +1823,16 @@ static struct module *load_module(void __user *umod, | |||
| 1784 | mod->gpl_syms = (void *)sechdrs[gplindex].sh_addr; | 1823 | mod->gpl_syms = (void *)sechdrs[gplindex].sh_addr; |
| 1785 | if (gplcrcindex) | 1824 | if (gplcrcindex) |
| 1786 | mod->gpl_crcs = (void *)sechdrs[gplcrcindex].sh_addr; | 1825 | mod->gpl_crcs = (void *)sechdrs[gplcrcindex].sh_addr; |
| 1826 | mod->num_gpl_future_syms = sechdrs[gplfutureindex].sh_size / | ||
| 1827 | sizeof(*mod->gpl_future_syms); | ||
| 1828 | mod->gpl_future_syms = (void *)sechdrs[gplfutureindex].sh_addr; | ||
| 1829 | if (gplfuturecrcindex) | ||
| 1830 | mod->gpl_future_crcs = (void *)sechdrs[gplfuturecrcindex].sh_addr; | ||
| 1787 | 1831 | ||
| 1788 | #ifdef CONFIG_MODVERSIONS | 1832 | #ifdef CONFIG_MODVERSIONS |
| 1789 | if ((mod->num_syms && !crcindex) || | 1833 | if ((mod->num_syms && !crcindex) || |
| 1790 | (mod->num_gpl_syms && !gplcrcindex)) { | 1834 | (mod->num_gpl_syms && !gplcrcindex) || |
| 1835 | (mod->num_gpl_future_syms && !gplfuturecrcindex)) { | ||
| 1791 | printk(KERN_WARNING "%s: No versions for exported symbols." | 1836 | printk(KERN_WARNING "%s: No versions for exported symbols." |
| 1792 | " Tainting kernel.\n", mod->name); | 1837 | " Tainting kernel.\n", mod->name); |
| 1793 | add_taint(TAINT_FORCED_MODULE); | 1838 | add_taint(TAINT_FORCED_MODULE); |
diff --git a/scripts/genksyms/keywords.c_shipped b/scripts/genksyms/keywords.c_shipped index ee4647805c58..d8153f572e40 100644 --- a/scripts/genksyms/keywords.c_shipped +++ b/scripts/genksyms/keywords.c_shipped | |||
| @@ -52,9 +52,9 @@ is_reserved_hash (register const char *str, register unsigned int len) | |||
| 52 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, | 52 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, |
| 53 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, | 53 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, |
| 54 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, | 54 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, |
| 55 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 15, | 55 | 71, 71, 71, 71, 71, 71, 71, 71, 71, 0, |
| 56 | 71, 71, 71, 71, 71, 71, 15, 71, 71, 71, | 56 | 71, 71, 71, 71, 71, 71, 35, 71, 71, 71, |
| 57 | 10, 71, 71, 71, 71, 71, 71, 71, 71, 71, | 57 | 5, 71, 71, 71, 71, 71, 71, 71, 71, 71, |
| 58 | 71, 71, 71, 71, 71, 0, 71, 0, 71, 5, | 58 | 71, 71, 71, 71, 71, 0, 71, 0, 71, 5, |
| 59 | 5, 0, 10, 20, 71, 25, 71, 71, 20, 0, | 59 | 5, 0, 10, 20, 71, 25, 71, 71, 20, 0, |
| 60 | 20, 30, 25, 71, 10, 5, 0, 20, 15, 71, | 60 | 20, 30, 25, 71, 10, 5, 0, 20, 15, 71, |
| @@ -84,9 +84,9 @@ is_reserved_word (register const char *str, register unsigned int len) | |||
| 84 | { | 84 | { |
| 85 | enum | 85 | enum |
| 86 | { | 86 | { |
| 87 | TOTAL_KEYWORDS = 41, | 87 | TOTAL_KEYWORDS = 42, |
| 88 | MIN_WORD_LENGTH = 3, | 88 | MIN_WORD_LENGTH = 3, |
| 89 | MAX_WORD_LENGTH = 17, | 89 | MAX_WORD_LENGTH = 24, |
| 90 | MIN_HASH_VALUE = 3, | 90 | MIN_HASH_VALUE = 3, |
| 91 | MAX_HASH_VALUE = 70 | 91 | MAX_HASH_VALUE = 70 |
| 92 | }; | 92 | }; |
| @@ -94,104 +94,105 @@ is_reserved_word (register const char *str, register unsigned int len) | |||
| 94 | static const struct resword wordlist[] = | 94 | static const struct resword wordlist[] = |
| 95 | { | 95 | { |
| 96 | {""}, {""}, {""}, | 96 | {""}, {""}, {""}, |
| 97 | #line 24 "scripts/genksyms/keywords.gperf" | 97 | #line 25 "scripts/genksyms/keywords.gperf" |
| 98 | {"asm", ASM_KEYW}, | 98 | {"asm", ASM_KEYW}, |
| 99 | {""}, | 99 | {""}, |
| 100 | #line 7 "scripts/genksyms/keywords.gperf" | 100 | #line 8 "scripts/genksyms/keywords.gperf" |
| 101 | {"__asm", ASM_KEYW}, | 101 | {"__asm", ASM_KEYW}, |
| 102 | {""}, | 102 | {""}, |
| 103 | #line 8 "scripts/genksyms/keywords.gperf" | 103 | #line 9 "scripts/genksyms/keywords.gperf" |
| 104 | {"__asm__", ASM_KEYW}, | 104 | {"__asm__", ASM_KEYW}, |
| 105 | {""}, | 105 | {""}, |
| 106 | #line 21 "scripts/genksyms/keywords.gperf" | 106 | #line 22 "scripts/genksyms/keywords.gperf" |
| 107 | {"_restrict", RESTRICT_KEYW}, | 107 | {"_restrict", RESTRICT_KEYW}, |
| 108 | #line 50 "scripts/genksyms/keywords.gperf" | 108 | #line 51 "scripts/genksyms/keywords.gperf" |
| 109 | {"__typeof__", TYPEOF_KEYW}, | 109 | {"__typeof__", TYPEOF_KEYW}, |
| 110 | #line 9 "scripts/genksyms/keywords.gperf" | 110 | #line 10 "scripts/genksyms/keywords.gperf" |
| 111 | {"__attribute", ATTRIBUTE_KEYW}, | 111 | {"__attribute", ATTRIBUTE_KEYW}, |
| 112 | #line 11 "scripts/genksyms/keywords.gperf" | 112 | #line 12 "scripts/genksyms/keywords.gperf" |
| 113 | {"__const", CONST_KEYW}, | 113 | {"__const", CONST_KEYW}, |
| 114 | #line 10 "scripts/genksyms/keywords.gperf" | 114 | #line 11 "scripts/genksyms/keywords.gperf" |
| 115 | {"__attribute__", ATTRIBUTE_KEYW}, | 115 | {"__attribute__", ATTRIBUTE_KEYW}, |
| 116 | #line 12 "scripts/genksyms/keywords.gperf" | 116 | #line 13 "scripts/genksyms/keywords.gperf" |
| 117 | {"__const__", CONST_KEYW}, | 117 | {"__const__", CONST_KEYW}, |
| 118 | #line 16 "scripts/genksyms/keywords.gperf" | 118 | #line 17 "scripts/genksyms/keywords.gperf" |
| 119 | {"__signed__", SIGNED_KEYW}, | 119 | {"__signed__", SIGNED_KEYW}, |
| 120 | #line 42 "scripts/genksyms/keywords.gperf" | 120 | #line 43 "scripts/genksyms/keywords.gperf" |
| 121 | {"static", STATIC_KEYW}, | 121 | {"static", STATIC_KEYW}, |
| 122 | {""}, | 122 | {""}, |
| 123 | #line 15 "scripts/genksyms/keywords.gperf" | 123 | #line 16 "scripts/genksyms/keywords.gperf" |
| 124 | {"__signed", SIGNED_KEYW}, | 124 | {"__signed", SIGNED_KEYW}, |
| 125 | #line 30 "scripts/genksyms/keywords.gperf" | 125 | #line 31 "scripts/genksyms/keywords.gperf" |
| 126 | {"char", CHAR_KEYW}, | 126 | {"char", CHAR_KEYW}, |
| 127 | {""}, | 127 | {""}, |
| 128 | #line 43 "scripts/genksyms/keywords.gperf" | 128 | #line 44 "scripts/genksyms/keywords.gperf" |
| 129 | {"struct", STRUCT_KEYW}, | 129 | {"struct", STRUCT_KEYW}, |
| 130 | #line 22 "scripts/genksyms/keywords.gperf" | ||
| 131 | {"__restrict__", RESTRICT_KEYW}, | ||
| 132 | #line 23 "scripts/genksyms/keywords.gperf" | 130 | #line 23 "scripts/genksyms/keywords.gperf" |
| 131 | {"__restrict__", RESTRICT_KEYW}, | ||
| 132 | #line 24 "scripts/genksyms/keywords.gperf" | ||
| 133 | {"restrict", RESTRICT_KEYW}, | 133 | {"restrict", RESTRICT_KEYW}, |
| 134 | #line 33 "scripts/genksyms/keywords.gperf" | 134 | #line 34 "scripts/genksyms/keywords.gperf" |
| 135 | {"enum", ENUM_KEYW}, | 135 | {"enum", ENUM_KEYW}, |
| 136 | #line 17 "scripts/genksyms/keywords.gperf" | 136 | #line 18 "scripts/genksyms/keywords.gperf" |
| 137 | {"__volatile", VOLATILE_KEYW}, | 137 | {"__volatile", VOLATILE_KEYW}, |
| 138 | #line 34 "scripts/genksyms/keywords.gperf" | 138 | #line 35 "scripts/genksyms/keywords.gperf" |
| 139 | {"extern", EXTERN_KEYW}, | 139 | {"extern", EXTERN_KEYW}, |
| 140 | #line 18 "scripts/genksyms/keywords.gperf" | 140 | #line 19 "scripts/genksyms/keywords.gperf" |
| 141 | {"__volatile__", VOLATILE_KEYW}, | 141 | {"__volatile__", VOLATILE_KEYW}, |
| 142 | #line 37 "scripts/genksyms/keywords.gperf" | 142 | #line 38 "scripts/genksyms/keywords.gperf" |
| 143 | {"int", INT_KEYW}, | 143 | {"int", INT_KEYW}, |
| 144 | {""}, | 144 | #line 7 "scripts/genksyms/keywords.gperf" |
| 145 | #line 31 "scripts/genksyms/keywords.gperf" | 145 | {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW}, |
| 146 | {"const", CONST_KEYW}, | ||
| 147 | #line 32 "scripts/genksyms/keywords.gperf" | 146 | #line 32 "scripts/genksyms/keywords.gperf" |
| 147 | {"const", CONST_KEYW}, | ||
| 148 | #line 33 "scripts/genksyms/keywords.gperf" | ||
| 148 | {"double", DOUBLE_KEYW}, | 149 | {"double", DOUBLE_KEYW}, |
| 149 | {""}, | 150 | {""}, |
| 150 | #line 13 "scripts/genksyms/keywords.gperf" | 151 | #line 14 "scripts/genksyms/keywords.gperf" |
| 151 | {"__inline", INLINE_KEYW}, | 152 | {"__inline", INLINE_KEYW}, |
| 152 | #line 29 "scripts/genksyms/keywords.gperf" | 153 | #line 30 "scripts/genksyms/keywords.gperf" |
| 153 | {"auto", AUTO_KEYW}, | 154 | {"auto", AUTO_KEYW}, |
| 154 | #line 14 "scripts/genksyms/keywords.gperf" | 155 | #line 15 "scripts/genksyms/keywords.gperf" |
| 155 | {"__inline__", INLINE_KEYW}, | 156 | {"__inline__", INLINE_KEYW}, |
| 156 | #line 41 "scripts/genksyms/keywords.gperf" | 157 | #line 42 "scripts/genksyms/keywords.gperf" |
| 157 | {"signed", SIGNED_KEYW}, | 158 | {"signed", SIGNED_KEYW}, |
| 158 | {""}, | 159 | {""}, |
| 159 | #line 46 "scripts/genksyms/keywords.gperf" | 160 | #line 47 "scripts/genksyms/keywords.gperf" |
| 160 | {"unsigned", UNSIGNED_KEYW}, | 161 | {"unsigned", UNSIGNED_KEYW}, |
| 161 | {""}, | 162 | {""}, |
| 162 | #line 40 "scripts/genksyms/keywords.gperf" | 163 | #line 41 "scripts/genksyms/keywords.gperf" |
| 163 | {"short", SHORT_KEYW}, | 164 | {"short", SHORT_KEYW}, |
| 164 | #line 49 "scripts/genksyms/keywords.gperf" | 165 | #line 50 "scripts/genksyms/keywords.gperf" |
| 165 | {"typeof", TYPEOF_KEYW}, | 166 | {"typeof", TYPEOF_KEYW}, |
| 166 | #line 44 "scripts/genksyms/keywords.gperf" | 167 | #line 45 "scripts/genksyms/keywords.gperf" |
| 167 | {"typedef", TYPEDEF_KEYW}, | 168 | {"typedef", TYPEDEF_KEYW}, |
| 168 | #line 48 "scripts/genksyms/keywords.gperf" | 169 | #line 49 "scripts/genksyms/keywords.gperf" |
| 169 | {"volatile", VOLATILE_KEYW}, | 170 | {"volatile", VOLATILE_KEYW}, |
| 170 | {""}, | 171 | {""}, |
| 171 | #line 35 "scripts/genksyms/keywords.gperf" | 172 | #line 36 "scripts/genksyms/keywords.gperf" |
| 172 | {"float", FLOAT_KEYW}, | 173 | {"float", FLOAT_KEYW}, |
| 173 | {""}, {""}, | 174 | {""}, {""}, |
| 174 | #line 39 "scripts/genksyms/keywords.gperf" | 175 | #line 40 "scripts/genksyms/keywords.gperf" |
| 175 | {"register", REGISTER_KEYW}, | 176 | {"register", REGISTER_KEYW}, |
| 176 | #line 47 "scripts/genksyms/keywords.gperf" | 177 | #line 48 "scripts/genksyms/keywords.gperf" |
| 177 | {"void", VOID_KEYW}, | 178 | {"void", VOID_KEYW}, |
| 178 | {""}, | 179 | {""}, |
| 179 | #line 36 "scripts/genksyms/keywords.gperf" | 180 | #line 37 "scripts/genksyms/keywords.gperf" |
| 180 | {"inline", INLINE_KEYW}, | 181 | {"inline", INLINE_KEYW}, |
| 181 | {""}, | 182 | {""}, |
| 182 | #line 5 "scripts/genksyms/keywords.gperf" | 183 | #line 5 "scripts/genksyms/keywords.gperf" |
| 183 | {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, | 184 | {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, |
| 184 | {""}, | 185 | {""}, |
| 185 | #line 20 "scripts/genksyms/keywords.gperf" | 186 | #line 21 "scripts/genksyms/keywords.gperf" |
| 186 | {"_Bool", BOOL_KEYW}, | 187 | {"_Bool", BOOL_KEYW}, |
| 187 | {""}, | 188 | {""}, |
| 188 | #line 6 "scripts/genksyms/keywords.gperf" | 189 | #line 6 "scripts/genksyms/keywords.gperf" |
| 189 | {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | 190 | {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, |
| 190 | {""}, {""}, {""}, {""}, {""}, {""}, | 191 | {""}, {""}, {""}, {""}, {""}, {""}, |
| 191 | #line 38 "scripts/genksyms/keywords.gperf" | 192 | #line 39 "scripts/genksyms/keywords.gperf" |
| 192 | {"long", LONG_KEYW}, | 193 | {"long", LONG_KEYW}, |
| 193 | {""}, {""}, {""}, {""}, {""}, | 194 | {""}, {""}, {""}, {""}, {""}, |
| 194 | #line 45 "scripts/genksyms/keywords.gperf" | 195 | #line 46 "scripts/genksyms/keywords.gperf" |
| 195 | {"union", UNION_KEYW} | 196 | {"union", UNION_KEYW} |
| 196 | }; | 197 | }; |
| 197 | 198 | ||
diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf index b6bec765996e..c75e0c8d8f0c 100644 --- a/scripts/genksyms/keywords.gperf +++ b/scripts/genksyms/keywords.gperf | |||
| @@ -4,6 +4,7 @@ struct resword { const char *name; int token; } | |||
| 4 | %% | 4 | %% |
| 5 | EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW | 5 | EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW |
| 6 | EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW | 6 | EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW |
| 7 | EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW | ||
| 7 | __asm, ASM_KEYW | 8 | __asm, ASM_KEYW |
| 8 | __asm__, ASM_KEYW | 9 | __asm__, ASM_KEYW |
| 9 | __attribute, ATTRIBUTE_KEYW | 10 | __attribute, ATTRIBUTE_KEYW |
