mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 16:41:25 +00:00
Kbuild updates for v5.7
[Build system] - add CONFIG_UNUSED_KSYMS_WHITELIST, which will be useful to define a fixed set of export symbols for Generic Kernel Image (GKI) - allow to run 'make dt_binding_check' without .config - use full schema for checking DT examples in *.yaml files - make modpost fail for missing MODULE_IMPORT_NS(), which makes more sense because we know the produced modules are never loadable - Remove unused 'AS' variable [Kconfig] - sanitize DEFCONFIG_LIST, and remove ARCH_DEFCONFIG from Kconfig files - relax the 'imply' behavior so that symbols implied by y can become m - make 'imply' obey 'depends on' in order to make 'imply' really weak [Misc] - add documentation on building the kernel with Clang/LLVM - revive __HAVE_ARCH_STRLEN for 32bit sparc to use optimized strlen() - fix warning from deb-pkg builds when CONFIG_DEBUG_INFO=n - various script and Makefile cleanups -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAl6DbP8VHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsGAfkQALZqMCqtX9cAJej04+lnBCzwVPep 6s8/s6vW6PF92sHv+SJtHvKSnDekcZT2xT8dkPDaVmuOye8xhENs5dFZ4tSKO5D0 F8YkkM17mu/cylNZ2UCy/8weh6/TjsD7pa+mFqWo/++30JiXm12v3mVFR568KPXI kFau/3ALvY1NIr2wUAI2SOd6A4v/Epzpk0ltnFg3f5iWVFKlE03MGueAF+YZzq7v UrU73HdUxF/SBW2Jz3UtV9XY8P38uQmmtoDE8SZikG4PjW03q9w6pnhntDBl/H2b dZFg40eG7SHXN4L+OOI32ae9jePHvKpsnjeaeNoT/DZpwpuuxXu7C2EmUy+wCAnM Rw4+kiAVNppRMRH1GTdp1XjLY6PwPqizzZGmufwX+W3MI8oZdlLSUJLbrO73P/aF QR3MgkJkjvgmRVPP9fr8SNcZ39tDGI4KqLdWvjVVSC/s86aDnw/34puEfw0lj4vs gCi923iJQ7Y/QWX63TYZhy96pnedlwE2s6aR1InVER3+XMH9K1nW34CDaKQsp1CB 6zyrd40+K5ETOKo3OAjq4FttlhRkEpX9nIsffCzOz6tybysHTSrCzYhfjpIAzzYj Et5HpXbegHShIqN44yqBumt6YkTZac6Aub9FzInW2LPzZgiofDaNesDQmnQmIZOa JlUyBrjXRfwkvCH0 =wT8A -----END PGP SIGNATURE----- Merge tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild updates from Masahiro Yamada: "Build system: - add CONFIG_UNUSED_KSYMS_WHITELIST, which will be useful to define a fixed set of export symbols for Generic Kernel Image (GKI) - allow to run 'make dt_binding_check' without .config - use full schema for checking DT examples in *.yaml files - make modpost fail for missing MODULE_IMPORT_NS(), which makes more sense because we know the produced modules are never loadable - Remove unused 'AS' variable Kconfig: - sanitize DEFCONFIG_LIST, and remove ARCH_DEFCONFIG from Kconfig files - relax the 'imply' behavior so that symbols implied by 'y' can become 'm' - make 'imply' obey 'depends on' in order to make 'imply' really weak Misc: - add documentation on building the kernel with Clang/LLVM - revive __HAVE_ARCH_STRLEN for 32bit sparc to use optimized strlen() - fix warning from deb-pkg builds when CONFIG_DEBUG_INFO=n - various script and Makefile cleanups" * tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits) Makefile: Update kselftest help information kbuild: deb-pkg: fix warning when CONFIG_DEBUG_INFO is unset kbuild: add outputmakefile to no-dot-config-targets kbuild: remove AS variable net: wan: wanxl: refactor the firmware rebuild rule net: wan: wanxl: use $(M68KCC) instead of $(M68KAS) for rebuilding firmware net: wan: wanxl: use allow to pass CROSS_COMPILE_M68k for rebuilding firmware kbuild: add comment about grouped target kbuild: add -Wall to KBUILD_HOSTCXXFLAGS kconfig: remove unused variable in qconf.cc sparc: revive __HAVE_ARCH_STRLEN for 32bit sparc kbuild: refactor Makefile.dtbinst more kbuild: compute the dtbs_install destination more simply Makefile: disallow data races on gcc-10 as well kconfig: make 'imply' obey the direct dependency kconfig: allow symbols implied by y to become m net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report() modpost: return error if module is missing ns imports and MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=n modpost: rework and consolidate logging interface kbuild: allow to run dt_binding_check without kernel configuration ...
This commit is contained in:
commit
5b67fbfc32
35 changed files with 357 additions and 201 deletions
|
@ -39,6 +39,8 @@ static int sec_mismatch_count = 0;
|
|||
static int sec_mismatch_fatal = 0;
|
||||
/* ignore missing files */
|
||||
static int ignore_missing_files;
|
||||
/* If set to 1, only warn (instead of error) about missing ns imports */
|
||||
static int allow_missing_ns_imports;
|
||||
|
||||
enum export {
|
||||
export_plain, export_unused, export_gpl,
|
||||
|
@ -51,41 +53,33 @@ enum export {
|
|||
|
||||
#define MODULE_NAME_LEN (64 - sizeof(Elf_Addr))
|
||||
|
||||
#define PRINTF __attribute__ ((format (printf, 1, 2)))
|
||||
|
||||
PRINTF void fatal(const char *fmt, ...)
|
||||
void __attribute__((format(printf, 2, 3)))
|
||||
modpost_log(enum loglevel loglevel, const char *fmt, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
|
||||
fprintf(stderr, "FATAL: ");
|
||||
switch (loglevel) {
|
||||
case LOG_WARN:
|
||||
fprintf(stderr, "WARNING: ");
|
||||
break;
|
||||
case LOG_ERROR:
|
||||
fprintf(stderr, "ERROR: ");
|
||||
break;
|
||||
case LOG_FATAL:
|
||||
fprintf(stderr, "FATAL: ");
|
||||
break;
|
||||
default: /* invalid loglevel, ignore */
|
||||
break;
|
||||
}
|
||||
|
||||
fprintf(stderr, "modpost: ");
|
||||
|
||||
va_start(arglist, fmt);
|
||||
vfprintf(stderr, fmt, arglist);
|
||||
va_end(arglist);
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
PRINTF void warn(const char *fmt, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
|
||||
fprintf(stderr, "WARNING: ");
|
||||
|
||||
va_start(arglist, fmt);
|
||||
vfprintf(stderr, fmt, arglist);
|
||||
va_end(arglist);
|
||||
}
|
||||
|
||||
PRINTF void merror(const char *fmt, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
|
||||
fprintf(stderr, "ERROR: ");
|
||||
|
||||
va_start(arglist, fmt);
|
||||
vfprintf(stderr, fmt, arglist);
|
||||
va_end(arglist);
|
||||
if (loglevel == LOG_FATAL)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static inline bool strends(const char *str, const char *postfix)
|
||||
|
@ -113,7 +107,7 @@ static int is_vmlinux(const char *modname)
|
|||
void *do_nofail(void *ptr, const char *expr)
|
||||
{
|
||||
if (!ptr)
|
||||
fatal("modpost: Memory allocation failure: %s.\n", expr);
|
||||
fatal("Memory allocation failure: %s.\n", expr);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
@ -2022,7 +2016,7 @@ static void read_symbols(const char *modname)
|
|||
|
||||
license = get_modinfo(&info, "license");
|
||||
if (!license && !is_vmlinux(modname))
|
||||
warn("modpost: missing MODULE_LICENSE() in %s\n"
|
||||
warn("missing MODULE_LICENSE() in %s\n"
|
||||
"see include/linux/module.h for "
|
||||
"more information\n", modname);
|
||||
while (license) {
|
||||
|
@ -2153,15 +2147,15 @@ static void check_for_gpl_usage(enum export exp, const char *m, const char *s)
|
|||
|
||||
switch (exp) {
|
||||
case export_gpl:
|
||||
fatal("modpost: GPL-incompatible module %s%s "
|
||||
fatal("GPL-incompatible module %s%s "
|
||||
"uses GPL-only symbol '%s'\n", m, e, s);
|
||||
break;
|
||||
case export_unused_gpl:
|
||||
fatal("modpost: GPL-incompatible module %s%s "
|
||||
fatal("GPL-incompatible module %s%s "
|
||||
"uses GPL-only symbol marked UNUSED '%s'\n", m, e, s);
|
||||
break;
|
||||
case export_gpl_future:
|
||||
warn("modpost: GPL-incompatible module %s%s "
|
||||
warn("GPL-incompatible module %s%s "
|
||||
"uses future GPL-only symbol '%s'\n", m, e, s);
|
||||
break;
|
||||
case export_plain:
|
||||
|
@ -2179,7 +2173,7 @@ static void check_for_unused(enum export exp, const char *m, const char *s)
|
|||
switch (exp) {
|
||||
case export_unused:
|
||||
case export_unused_gpl:
|
||||
warn("modpost: module %s%s "
|
||||
warn("module %s%s "
|
||||
"uses symbol '%s' marked UNUSED\n", m, e, s);
|
||||
break;
|
||||
default:
|
||||
|
@ -2198,14 +2192,11 @@ static int check_exports(struct module *mod)
|
|||
exp = find_symbol(s->name);
|
||||
if (!exp || exp->module == mod) {
|
||||
if (have_vmlinux && !s->weak) {
|
||||
if (warn_unresolved) {
|
||||
warn("\"%s\" [%s.ko] undefined!\n",
|
||||
s->name, mod->name);
|
||||
} else {
|
||||
merror("\"%s\" [%s.ko] undefined!\n",
|
||||
s->name, mod->name);
|
||||
modpost_log(warn_unresolved ? LOG_WARN : LOG_ERROR,
|
||||
"\"%s\" [%s.ko] undefined!\n",
|
||||
s->name, mod->name);
|
||||
if (!warn_unresolved)
|
||||
err = 1;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -2217,8 +2208,11 @@ static int check_exports(struct module *mod)
|
|||
|
||||
if (exp->namespace &&
|
||||
!module_imports_namespace(mod, exp->namespace)) {
|
||||
warn("module %s uses symbol %s from namespace %s, but does not import it.\n",
|
||||
basename, exp->name, exp->namespace);
|
||||
modpost_log(allow_missing_ns_imports ? LOG_WARN : LOG_ERROR,
|
||||
"module %s uses symbol %s from namespace %s, but does not import it.\n",
|
||||
basename, exp->name, exp->namespace);
|
||||
if (!allow_missing_ns_imports)
|
||||
err = 1;
|
||||
add_namespace(&mod->missing_namespaces, exp->namespace);
|
||||
}
|
||||
|
||||
|
@ -2565,7 +2559,7 @@ int main(int argc, char **argv)
|
|||
struct ext_sym_list *extsym_iter;
|
||||
struct ext_sym_list *extsym_start = NULL;
|
||||
|
||||
while ((opt = getopt(argc, argv, "i:e:mnsT:o:awEd:")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "i:e:mnsT:o:awENd:")) != -1) {
|
||||
switch (opt) {
|
||||
case 'i':
|
||||
kernel_read = optarg;
|
||||
|
@ -2603,6 +2597,9 @@ int main(int argc, char **argv)
|
|||
case 'E':
|
||||
sec_mismatch_fatal = 1;
|
||||
break;
|
||||
case 'N':
|
||||
allow_missing_ns_imports = 1;
|
||||
break;
|
||||
case 'd':
|
||||
missing_namespace_deps = optarg;
|
||||
break;
|
||||
|
@ -2658,7 +2655,7 @@ int main(int argc, char **argv)
|
|||
if (dump_write)
|
||||
write_dump(dump_write);
|
||||
if (sec_mismatch_count && sec_mismatch_fatal)
|
||||
fatal("modpost: Section mismatches detected.\n"
|
||||
fatal("Section mismatches detected.\n"
|
||||
"Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n");
|
||||
for (n = 0; n < SYMBOL_HASH_SIZE; n++) {
|
||||
struct symbol *s;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue