Pull Kbuild fixes from Masahiro Yamada: - fix __uint128_t capability test in Kconfig when GCC that defaults to 32-bit is used to build the 64-bit kernel - suppress new noisy Clang warnings -Wpointer-to-enum-cast - move the namespace field in Module.symvers for the backward compatibility reason for the depmod tool - use available compression for initramdisk when INTRAMFS_SOURCE is defined, which was the original behavior - fix modpost to handle correct large section numbers when it refers to modversion CRCs and module namespaces - fix comments and documents * tag 'kbuild-fixes-v5.6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: scripts/kallsyms: fix wrong kallsyms_relative_base modpost: Get proper section index by get_secindex() instead of st_shndx initramfs: restore default compression behavior modpost: move the namespace field in Module.symvers last kbuild: Disable -Wpointer-to-enum-cast kbuild: doc: fix references to other documents int128: fix __uint128_t compiler test in Kconfig kconfig: introduce m32-flag and m64-flag kbuild: Fix inconsistent comment
Showing the changes to scripts (5 of 12 files). Show all
Unified · Split
| @@ -44,3 +44,10 @@ $(error-if,$(success, $(LD) -v | grep -q gold), gold linker '$(LD)' not supporte · 43 unmodified lines | ||
| 44 | 44 | |
| 45 | 45 | # gcc version including patch level |
| 46 | 46 | gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) |
| 47 | + | |
| 48 | +# machine bit flags | |
| 49 | +# $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise. | |
| 50 | +# $(m64-flag): -m64 if the compiler supports it, or an empty string otherwise. | |
| 51 | +cc-option-bit = $(if-success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null,$(1)) | |
| 52 | +m32-flag := $(cc-option-bit,-m32) | |
| 53 | +m64-flag := $(cc-option-bit,-m64) | |
| @@ -48,6 +48,7 @@ KBUILD_CFLAGS += -Wno-initializer-overrides · 47 unmodified lines | ||
| 48 | 48 | KBUILD_CFLAGS += -Wno-format |
| 49 | 49 | KBUILD_CFLAGS += -Wno-sign-compare |
| 50 | 50 | KBUILD_CFLAGS += -Wno-format-zero-length |
| 51 | +KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) | |
| 51 | 52 | endif |
| 52 | 53 | |
| 53 | 54 | endif |
| @@ -94,7 +94,7 @@ if (defined $opt{'o'}) { · 93 unmodified lines | ||
| 94 | 94 | # |
| 95 | 95 | while ( <$module_symvers> ) { |
| 96 | 96 | chomp; |
| 97 | − my (undef, $symbol, $namespace, $module, $gpl) = split('\t'); | |
| 97 | + my (undef, $symbol, $module, $gpl, $namespace) = split('\t'); | |
| 98 | 98 | $SYMBOL { $symbol } = [ $module , "0" , $symbol, $gpl]; |
| 99 | 99 | } |
| 100 | 100 | close($module_symvers); |
| @@ -195,13 +195,13 @@ static struct sym_entry *read_symbol(FILE *in) · 194 unmodified lines | ||
| 195 | 195 | return NULL; |
| 196 | 196 | } |
| 197 | 197 | |
| 198 | − if (is_ignored_symbol(name, type)) | |
| 199 | − return NULL; | |
| 200 | − | |
| 201 | − /* Ignore most absolute/undefined (?) symbols. */ | |
| 202 | 198 | if (strcmp(name, "_text") == 0) |
| 203 | 199 | _text = addr; |
| 204 | 200 | |
| 201 | + /* Ignore most absolute/undefined (?) symbols. */ | |
| 202 | + if (is_ignored_symbol(name, type)) | |
| 203 | + return NULL; | |
| 204 | + | |
| 205 | 205 | check_symbol_range(name, addr, text_ranges, ARRAY_SIZE(text_ranges)); |
| 206 | 206 | check_symbol_range(name, addr, &percpu_range, 1); |
| 207 | 207 | |
| @@ -308,7 +308,8 @@ static const char *sec_name(struct elf_info *elf, int secindex) · 307 unmodified lines | ||
| 308 | 308 | |
| 309 | 309 | static void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym) |
| 310 | 310 | { |
| 311 | − Elf_Shdr *sechdr = &info->sechdrs[sym->st_shndx]; | |
| 311 | + unsigned int secindex = get_secindex(info, sym); | |
| 312 | + Elf_Shdr *sechdr = &info->sechdrs[secindex]; | |
| 312 | 313 | unsigned long offset; |
| 313 | 314 | |
| 314 | 315 | offset = sym->st_value; |
| @@ -2427,7 +2428,7 @@ static void write_if_changed(struct buffer *b, const char *fname) · 2112 unmodified lines | ||
| 2427 | 2428 | } |
| 2428 | 2429 | |
| 2429 | 2430 | /* parse Module.symvers file. line format: |
| 2430 | − * 0x12345678<tab>symbol<tab>module[[<tab>export]<tab>something] | |
| 2431 | + * 0x12345678<tab>symbol<tab>module<tab>export<tab>namespace | |
| 2431 | 2432 | **/ |
| 2432 | 2433 | static void read_dump(const char *fname, unsigned int kernel) |
| 2433 | 2434 | { |
| @@ -2440,7 +2441,7 @@ static void read_dump(const char *fname, unsigned int kernel) · 6 unmodified lines | ||
| 2440 | 2441 | return; |
| 2441 | 2442 | |
| 2442 | 2443 | while ((line = get_next_line(&pos, file, size))) { |
| 2443 | − char *symname, *namespace, *modname, *d, *export, *end; | |
| 2444 | + char *symname, *namespace, *modname, *d, *export; | |
| 2444 | 2445 | unsigned int crc; |
| 2445 | 2446 | struct module *mod; |
| 2446 | 2447 | struct symbol *s; |
| @@ -2448,16 +2449,16 @@ static void read_dump(const char *fname, unsigned int kernel) · 1 unmodified line | ||
| 2448 | 2449 | if (!(symname = strchr(line, '\t'))) |
| 2449 | 2450 | goto fail; |
| 2450 | 2451 | *symname++ = '\0'; |
| 2451 | − if (!(namespace = strchr(symname, '\t'))) | |
| 2452 | − goto fail; | |
| 2453 | − *namespace++ = '\0'; | |
| 2454 | − if (!(modname = strchr(namespace, '\t'))) | |
| 2452 | + if (!(modname = strchr(symname, '\t'))) | |
| 2455 | 2453 | goto fail; |
| 2456 | 2454 | *modname++ = '\0'; |
| 2457 | − if ((export = strchr(modname, '\t')) != NULL) | |
| 2458 | − *export++ = '\0'; | |
| 2459 | − if (export && ((end = strchr(export, '\t')) != NULL)) | |
| 2460 | − *end = '\0'; | |
| 2455 | + if (!(export = strchr(modname, '\t'))) | |
| 2456 | + goto fail; | |
| 2457 | + *export++ = '\0'; | |
| 2458 | + if (!(namespace = strchr(export, '\t'))) | |
| 2459 | + goto fail; | |
| 2460 | + *namespace++ = '\0'; | |
| 2461 | + | |
| 2461 | 2462 | crc = strtoul(line, &d, 16); |
| 2462 | 2463 | if (*symname == '\0' || *modname == '\0' || *d != '\0') |
| 2463 | 2464 | goto fail; |
| @@ -2508,9 +2509,9 @@ static void write_dump(const char *fname) · 44 unmodified lines | ||
| 2508 | 2509 | namespace = symbol->namespace; |
| 2509 | 2510 | buf_printf(&buf, "0x%08x\t%s\t%s\t%s\t%s\n", |
| 2510 | 2511 | symbol->crc, symbol->name, |
| 2511 | − namespace ? namespace : "", | |
| 2512 | 2512 | symbol->module->name, |
| 2513 | − export_str(symbol->export)); | |
| 2513 | + export_str(symbol->export), | |
| 2514 | + namespace ? namespace : ""); | |
| 2514 | 2515 | } |
| 2515 | 2516 | symbol = symbol->next; |
| 2516 | 2517 | } |