Merge tag 'kbuild-fixes-v5.6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

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

+47 -39
+1 -1
Documentation/kbuild/kbuild.rst
··· 237 237 KBUILD_EXTRA_SYMBOLS 238 238 -------------------- 239 239 For modules that use symbols from other modules. 240 - See more details in modules.txt. 240 + See more details in modules.rst. 241 241 242 242 ALLSOURCE_ARCHS 243 243 ---------------
+1 -1
Documentation/kbuild/kconfig-macro-language.rst
··· 44 44 def_bool y 45 45 46 46 Then, Kconfig moves onto the evaluation stage to resolve inter-symbol 47 - dependency as explained in kconfig-language.txt. 47 + dependency as explained in kconfig-language.rst. 48 48 49 49 50 50 Variables
+3 -3
Documentation/kbuild/makefiles.rst
··· 924 924 $(KBUILD_AFLAGS_MODULE) is used to add arch-specific options that 925 925 are used for assembler. 926 926 927 - From commandline AFLAGS_MODULE shall be used (see kbuild.txt). 927 + From commandline AFLAGS_MODULE shall be used (see kbuild.rst). 928 928 929 929 KBUILD_CFLAGS_KERNEL 930 930 $(CC) options specific for built-in ··· 937 937 938 938 $(KBUILD_CFLAGS_MODULE) is used to add arch-specific options that 939 939 are used for $(CC). 940 - From commandline CFLAGS_MODULE shall be used (see kbuild.txt). 940 + From commandline CFLAGS_MODULE shall be used (see kbuild.rst). 941 941 942 942 KBUILD_LDFLAGS_MODULE 943 943 Options for $(LD) when linking modules ··· 945 945 $(KBUILD_LDFLAGS_MODULE) is used to add arch-specific options 946 946 used when linking modules. This is often a linker script. 947 947 948 - From commandline LDFLAGS_MODULE shall be used (see kbuild.txt). 948 + From commandline LDFLAGS_MODULE shall be used (see kbuild.rst). 949 949 950 950 KBUILD_LDS 951 951
+2 -2
Documentation/kbuild/modules.rst
··· 470 470 471 471 The syntax of the Module.symvers file is:: 472 472 473 - <CRC> <Symbol> <Namespace> <Module> <Export Type> 473 + <CRC> <Symbol> <Module> <Export Type> <Namespace> 474 474 475 - 0xe1cc2a05 usb_stor_suspend USB_STORAGE drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL 475 + 0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE 476 476 477 477 The fields are separated by tabs and values may be empty (e.g. 478 478 if no namespace is defined for an exported symbol).
+1 -1
Makefile
··· 1804 1804 1805 1805 -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd) 1806 1806 1807 - endif # config-targets 1807 + endif # config-build 1808 1808 endif # mixed-build 1809 1809 endif # need-sub-make 1810 1810
+1 -2
init/Kconfig
··· 767 767 bool 768 768 769 769 config CC_HAS_INT128 770 - def_bool y 771 - depends on !$(cc-option,-D__SIZEOF_INT128__=0) 770 + def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 772 771 773 772 # 774 773 # For architectures that know their GCC __int128 support is sound
+7
scripts/Kconfig.include
··· 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)
+1
scripts/Makefile.extrawarn
··· 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
+1 -1
scripts/export_report.pl
··· 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);
+4 -4
scripts/kallsyms.c
··· 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; 200 + 201 + /* Ignore most absolute/undefined (?) symbols. */ 202 + if (is_ignored_symbol(name, type)) 203 + return NULL; 204 204 205 205 check_symbol_range(name, addr, text_ranges, ARRAY_SIZE(text_ranges)); 206 206 check_symbol_range(name, addr, &percpu_range, 1);
+14 -13
scripts/mod/modpost.c
··· 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; ··· 2428 2427 } 2429 2428 2430 2429 /* parse Module.symvers file. line format: 2431 - * 0x12345678<tab>symbol<tab>module[[<tab>export]<tab>something] 2430 + * 0x12345678<tab>symbol<tab>module<tab>export<tab>namespace 2432 2431 **/ 2433 2432 static void read_dump(const char *fname, unsigned int kernel) 2434 2433 { ··· 2441 2440 return; 2442 2441 2443 2442 while ((line = get_next_line(&pos, file, size))) { 2444 - char *symname, *namespace, *modname, *d, *export, *end; 2443 + char *symname, *namespace, *modname, *d, *export; 2445 2444 unsigned int crc; 2446 2445 struct module *mod; 2447 2446 struct symbol *s; ··· 2449 2448 if (!(symname = strchr(line, '\t'))) 2450 2449 goto fail; 2451 2450 *symname++ = '\0'; 2452 - if (!(namespace = strchr(symname, '\t'))) 2453 - goto fail; 2454 - *namespace++ = '\0'; 2455 - if (!(modname = strchr(namespace, '\t'))) 2451 + if (!(modname = strchr(symname, '\t'))) 2456 2452 goto fail; 2457 2453 *modname++ = '\0'; 2458 - if ((export = strchr(modname, '\t')) != NULL) 2459 - *export++ = '\0'; 2460 - if (export && ((end = strchr(export, '\t')) != NULL)) 2461 - *end = '\0'; 2454 + if (!(export = strchr(modname, '\t'))) 2455 + goto fail; 2456 + *export++ = '\0'; 2457 + if (!(namespace = strchr(export, '\t'))) 2458 + goto fail; 2459 + *namespace++ = '\0'; 2460 + 2462 2461 crc = strtoul(line, &d, 16); 2463 2462 if (*symname == '\0' || *modname == '\0' || *d != '\0') 2464 2463 goto fail; ··· 2509 2508 namespace = symbol->namespace; 2510 2509 buf_printf(&buf, "0x%08x\t%s\t%s\t%s\t%s\n", 2511 2510 symbol->crc, symbol->name, 2512 - namespace ? namespace : "", 2513 2511 symbol->module->name, 2514 - export_str(symbol->export)); 2512 + export_str(symbol->export), 2513 + namespace ? namespace : ""); 2515 2514 } 2516 2515 symbol = symbol->next; 2517 2516 }
+11 -11
usr/Kconfig
··· 124 124 125 125 If in doubt, select 'None' 126 126 127 - config INITRAMFS_COMPRESSION_NONE 128 - bool "None" 129 - help 130 - Do not compress the built-in initramfs at all. This may sound wasteful 131 - in space, but, you should be aware that the built-in initramfs will be 132 - compressed at a later stage anyways along with the rest of the kernel, 133 - on those architectures that support this. However, not compressing the 134 - initramfs may lead to slightly higher memory consumption during a 135 - short time at boot, while both the cpio image and the unpacked 136 - filesystem image will be present in memory simultaneously 137 - 138 127 config INITRAMFS_COMPRESSION_GZIP 139 128 bool "Gzip" 140 129 depends on RD_GZIP ··· 195 206 196 207 If you choose this, keep in mind that most distros don't provide lz4 197 208 by default which could cause a build failure. 209 + 210 + config INITRAMFS_COMPRESSION_NONE 211 + bool "None" 212 + help 213 + Do not compress the built-in initramfs at all. This may sound wasteful 214 + in space, but, you should be aware that the built-in initramfs will be 215 + compressed at a later stage anyways along with the rest of the kernel, 216 + on those architectures that support this. However, not compressing the 217 + initramfs may lead to slightly higher memory consumption during a 218 + short time at boot, while both the cpio image and the unpacked 219 + filesystem image will be present in memory simultaneously 198 220 199 221 endchoice