All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Nicolas Schier <nicolas@fjasle.eu>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-modules <linux-modules@vger.kernel.org>,
	linux-s390 <linux-s390@vger.kernel.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	clang-built-linux <clang-built-linux@googlegroups.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Sami Tolvanen <samitolvanen@google.com>
Subject: Re: [PATCH v4 02/14] modpost: change the license of EXPORT_SYMBOL to bool type
Date: Thu, 12 May 2022 13:36:13 +0900	[thread overview]
Message-ID: <CAK7LNARhgfkSP+jmoTF2nVJtd=amPTNsNRjgaV+H7NhgjV+6Bw@mail.gmail.com> (raw)
In-Reply-To: <20220508190631.2386038-3-masahiroy@kernel.org>

On Mon, May 9, 2022 at 4:09 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> There were more EXPORT_SYMBOL types in the past. The following commits
> removed unused ones.
>
>  - f1c3d73e973c ("module: remove EXPORT_SYMBOL_GPL_FUTURE")
>  - 367948220fce ("module: remove EXPORT_UNUSED_SYMBOL*")
>
> There are 3 remaining in enum export, but export_unknown does not make
> any sense because we never expect such a situation like "we do not know
> how it was exported".
>
> If the symbol name starts with "__ksymtab_", but the section name
> does not start with "___ksymtab+" or "___ksymtab_gpl+", it is not an
> exported symbol.
>
> It occurs when a variable starting with "__ksymtab_" is directly defined:
>
>    int __ksymtab_foo;
>
> Presumably, there is no practical issue for using such a weird variable
> name (but there is no good reason for doing so, either).
>
> Anyway, that is not an exported symbol. Setting export_unknown is not
> the right thing to do. Do not call sym_add_exported() in this case.
>
> With pointless export_unknown removed, the export type finally becomes
> boolean (either EXPORT_SYMBOL or EXPORT_SYMBOL_GPL).
>
> I renamed the field name to is_gpl_only. EXPORT_SYMBOL_GPL sets it true.
> Only GPL-compatible modules can use it.
>
> I removed the orphan comment, "How a symbol is exported", which is
> unrelated to sec_mismatch_count. It is about enum export.
> See commit bd5cbcedf446 ("kbuild: export-type enhancement to modpost.c")
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
> Tested-by: Nathan Chancellor <nathan@kernel.org>
> ---

Applied to linux-kbuild.


>
> Changes in v4:
>   - Rebase again because I dropped
>      https://patchwork.kernel.org/project/linux-kbuild/patch/20220501084032.1025918-11-masahiroy@kernel.org/
>   - Remove warning message because I plan to change this hunk again in a later commit
>   - Remove orphan comment
>
> Changes in v3:
>   - New patch
>
>  scripts/mod/modpost.c | 108 ++++++++++++------------------------------
>  1 file changed, 30 insertions(+), 78 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index d9efbd5b31a6..a78b75f0eeb0 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -30,7 +30,7 @@ static bool all_versions;
>  static bool external_module;
>  /* Only warn about unresolved symbols */
>  static bool warn_unresolved;
> -/* How a symbol is exported */
> +
>  static int sec_mismatch_count;
>  static bool sec_mismatch_warn_only = true;
>  /* ignore missing files */
> @@ -47,12 +47,6 @@ static bool error_occurred;
>  #define MAX_UNRESOLVED_REPORTS 10
>  static unsigned int nr_unresolved;
>
> -enum export {
> -       export_plain,
> -       export_gpl,
> -       export_unknown
> -};
> -
>  /* In kernel, this size is defined in linux/module.h;
>   * here we use Elf_Addr instead of long for covering cross-compile
>   */
> @@ -219,7 +213,7 @@ struct symbol {
>         bool crc_valid;
>         bool weak;
>         bool is_static;         /* true if symbol is not global */
> -       enum export  export;       /* Type of export */
> +       bool is_gpl_only;       /* exported by EXPORT_SYMBOL_GPL */
>         char name[];
>  };
>
> @@ -316,34 +310,6 @@ static void add_namespace(struct list_head *head, const char *namespace)
>         }
>  }
>
> -static const struct {
> -       const char *str;
> -       enum export export;
> -} export_list[] = {
> -       { .str = "EXPORT_SYMBOL",            .export = export_plain },
> -       { .str = "EXPORT_SYMBOL_GPL",        .export = export_gpl },
> -       { .str = "(unknown)",                .export = export_unknown },
> -};
> -
> -
> -static const char *export_str(enum export ex)
> -{
> -       return export_list[ex].str;
> -}
> -
> -static enum export export_no(const char *s)
> -{
> -       int i;
> -
> -       if (!s)
> -               return export_unknown;
> -       for (i = 0; export_list[i].export != export_unknown; i++) {
> -               if (strcmp(export_list[i].str, s) == 0)
> -                       return export_list[i].export;
> -       }
> -       return export_unknown;
> -}
> -
>  static void *sym_get_data_by_offset(const struct elf_info *info,
>                                     unsigned int secindex, unsigned long offset)
>  {
> @@ -374,18 +340,6 @@ static const char *sec_name(const struct elf_info *info, int secindex)
>
>  #define strstarts(str, prefix) (strncmp(str, prefix, strlen(prefix)) == 0)
>
> -static enum export export_from_secname(struct elf_info *elf, unsigned int sec)
> -{
> -       const char *secname = sec_name(elf, sec);
> -
> -       if (strstarts(secname, "___ksymtab+"))
> -               return export_plain;
> -       else if (strstarts(secname, "___ksymtab_gpl+"))
> -               return export_gpl;
> -       else
> -               return export_unknown;
> -}
> -
>  static void sym_update_namespace(const char *symname, const char *namespace)
>  {
>         struct symbol *s = find_symbol(symname);
> @@ -405,7 +359,7 @@ static void sym_update_namespace(const char *symname, const char *namespace)
>  }
>
>  static struct symbol *sym_add_exported(const char *name, struct module *mod,
> -                                      enum export export)
> +                                      bool gpl_only)
>  {
>         struct symbol *s = find_symbol(name);
>
> @@ -417,7 +371,7 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod,
>
>         s = alloc_symbol(name);
>         s->module = mod;
> -       s->export    = export;
> +       s->is_gpl_only = gpl_only;
>         list_add_tail(&s->list, &mod->exported_symbols);
>         hash_add_symbol(s);
>
> @@ -689,8 +643,6 @@ static void handle_modversion(const struct module *mod,
>  static void handle_symbol(struct module *mod, struct elf_info *info,
>                           const Elf_Sym *sym, const char *symname)
>  {
> -       const char *name;
> -
>         switch (sym->st_shndx) {
>         case SHN_COMMON:
>                 if (strstarts(symname, "__gnu_lto_")) {
> @@ -724,12 +676,15 @@ static void handle_symbol(struct module *mod, struct elf_info *info,
>         default:
>                 /* All exported symbols */
>                 if (strstarts(symname, "__ksymtab_")) {
> -                       enum export export;
> +                       const char *name, *secname;
>
>                         name = symname + strlen("__ksymtab_");
> -                       export = export_from_secname(info,
> -                                                    get_secindex(info, sym));
> -                       sym_add_exported(name, mod, export);
> +                       secname = sec_name(info, get_secindex(info, sym));
> +
> +                       if (strstarts(secname, "___ksymtab_gpl+"))
> +                               sym_add_exported(name, mod, true);
> +                       else if (strstarts(secname, "___ksymtab+"))
> +                               sym_add_exported(name, mod, false);
>                 }
>                 if (strcmp(symname, "init_module") == 0)
>                         mod->has_init = true;
> @@ -2140,20 +2095,6 @@ void buf_write(struct buffer *buf, const char *s, int len)
>         buf->pos += len;
>  }
>
> -static void check_for_gpl_usage(enum export exp, const char *m, const char *s)
> -{
> -       switch (exp) {
> -       case export_gpl:
> -               error("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
> -                     m, s);
> -               break;
> -       case export_plain:
> -       case export_unknown:
> -               /* ignore */
> -               break;
> -       }
> -}
> -
>  static void check_exports(struct module *mod)
>  {
>         struct symbol *s, *exp;
> @@ -2192,8 +2133,9 @@ static void check_exports(struct module *mod)
>                         add_namespace(&mod->missing_namespaces, exp->namespace);
>                 }
>
> -               if (!mod->is_gpl_compatible)
> -                       check_for_gpl_usage(exp->export, basename, exp->name);
> +               if (!mod->is_gpl_compatible && exp->is_gpl_only)
> +                       error("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
> +                             basename, exp->name);
>         }
>  }
>
> @@ -2437,6 +2379,7 @@ static void read_dump(const char *fname)
>                 unsigned int crc;
>                 struct module *mod;
>                 struct symbol *s;
> +               bool gpl_only;
>
>                 if (!(symname = strchr(line, '\t')))
>                         goto fail;
> @@ -2454,12 +2397,22 @@ static void read_dump(const char *fname)
>                 crc = strtoul(line, &d, 16);
>                 if (*symname == '\0' || *modname == '\0' || *d != '\0')
>                         goto fail;
> +
> +               if (!strcmp(export, "EXPORT_SYMBOL_GPL")) {
> +                       gpl_only = true;
> +               } else if (!strcmp(export, "EXPORT_SYMBOL")) {
> +                       gpl_only = false;
> +               } else {
> +                       error("%s: unknown license %s. skip", symname, export);
> +                       continue;
> +               }
> +
>                 mod = find_module(modname);
>                 if (!mod) {
>                         mod = new_module(modname);
>                         mod->from_dump = true;
>                 }
> -               s = sym_add_exported(symname, mod, export_no(export));
> +               s = sym_add_exported(symname, mod, gpl_only);
>                 s->is_static = false;
>                 sym_set_crc(symname, crc);
>                 sym_update_namespace(symname, namespace);
> @@ -2481,9 +2434,9 @@ static void write_dump(const char *fname)
>                 if (mod->from_dump)
>                         continue;
>                 list_for_each_entry(sym, &mod->exported_symbols, list) {
> -                       buf_printf(&buf, "0x%08x\t%s\t%s\t%s\t%s\n",
> +                       buf_printf(&buf, "0x%08x\t%s\t%s\tEXPORT_SYMBOL%s\t%s\n",
>                                    sym->crc, sym->name, mod->name,
> -                                  export_str(sym->export),
> +                                  sym->is_gpl_only ? "_GPL" : "",
>                                    sym->namespace ?: "");
>                 }
>         }
> @@ -2604,9 +2557,8 @@ int main(int argc, char **argv)
>
>                 for (s = symbolhash[n]; s; s = s->next) {
>                         if (s->is_static)
> -                               error("\"%s\" [%s] is a static %s\n",
> -                                     s->name, s->module->name,
> -                                     export_str(s->export));
> +                               error("\"%s\" [%s] is a static EXPORT_SYMBOL\n",
> +                                     s->name, s->module->name);
>                 }
>         }
>
> --
> 2.32.0
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20220508190631.2386038-3-masahiroy%40kernel.org.



-- 
Best Regards
Masahiro Yamada

WARNING: multiple messages have this Message-ID
From: Masahiro Yamada <masahiroy@kernel.org>
To: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>
Cc: linux-s390 <linux-s390@vger.kernel.org>,
	Nicolas Schier <nicolas@fjasle.eu>,
	Peter Zijlstra <peterz@infradead.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	clang-built-linux <clang-built-linux@googlegroups.com>,
	Sami Tolvanen <samitolvanen@google.com>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Ard Biesheuvel <ardb@kernel.org>,
	linux-modules <linux-modules@vger.kernel.org>
Subject: Re: [PATCH v4 02/14] modpost: change the license of EXPORT_SYMBOL to bool type
Date: Thu, 12 May 2022 13:36:13 +0900	[thread overview]
Message-ID: <CAK7LNARhgfkSP+jmoTF2nVJtd=amPTNsNRjgaV+H7NhgjV+6Bw@mail.gmail.com> (raw)
In-Reply-To: <20220508190631.2386038-3-masahiroy@kernel.org>

On Mon, May 9, 2022 at 4:09 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> There were more EXPORT_SYMBOL types in the past. The following commits
> removed unused ones.
>
>  - f1c3d73e973c ("module: remove EXPORT_SYMBOL_GPL_FUTURE")
>  - 367948220fce ("module: remove EXPORT_UNUSED_SYMBOL*")
>
> There are 3 remaining in enum export, but export_unknown does not make
> any sense because we never expect such a situation like "we do not know
> how it was exported".
>
> If the symbol name starts with "__ksymtab_", but the section name
> does not start with "___ksymtab+" or "___ksymtab_gpl+", it is not an
> exported symbol.
>
> It occurs when a variable starting with "__ksymtab_" is directly defined:
>
>    int __ksymtab_foo;
>
> Presumably, there is no practical issue for using such a weird variable
> name (but there is no good reason for doing so, either).
>
> Anyway, that is not an exported symbol. Setting export_unknown is not
> the right thing to do. Do not call sym_add_exported() in this case.
>
> With pointless export_unknown removed, the export type finally becomes
> boolean (either EXPORT_SYMBOL or EXPORT_SYMBOL_GPL).
>
> I renamed the field name to is_gpl_only. EXPORT_SYMBOL_GPL sets it true.
> Only GPL-compatible modules can use it.
>
> I removed the orphan comment, "How a symbol is exported", which is
> unrelated to sec_mismatch_count. It is about enum export.
> See commit bd5cbcedf446 ("kbuild: export-type enhancement to modpost.c")
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
> Tested-by: Nathan Chancellor <nathan@kernel.org>
> ---

Applied to linux-kbuild.


>
> Changes in v4:
>   - Rebase again because I dropped
>      https://patchwork.kernel.org/project/linux-kbuild/patch/20220501084032.1025918-11-masahiroy@kernel.org/
>   - Remove warning message because I plan to change this hunk again in a later commit
>   - Remove orphan comment
>
> Changes in v3:
>   - New patch
>
>  scripts/mod/modpost.c | 108 ++++++++++++------------------------------
>  1 file changed, 30 insertions(+), 78 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index d9efbd5b31a6..a78b75f0eeb0 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -30,7 +30,7 @@ static bool all_versions;
>  static bool external_module;
>  /* Only warn about unresolved symbols */
>  static bool warn_unresolved;
> -/* How a symbol is exported */
> +
>  static int sec_mismatch_count;
>  static bool sec_mismatch_warn_only = true;
>  /* ignore missing files */
> @@ -47,12 +47,6 @@ static bool error_occurred;
>  #define MAX_UNRESOLVED_REPORTS 10
>  static unsigned int nr_unresolved;
>
> -enum export {
> -       export_plain,
> -       export_gpl,
> -       export_unknown
> -};
> -
>  /* In kernel, this size is defined in linux/module.h;
>   * here we use Elf_Addr instead of long for covering cross-compile
>   */
> @@ -219,7 +213,7 @@ struct symbol {
>         bool crc_valid;
>         bool weak;
>         bool is_static;         /* true if symbol is not global */
> -       enum export  export;       /* Type of export */
> +       bool is_gpl_only;       /* exported by EXPORT_SYMBOL_GPL */
>         char name[];
>  };
>
> @@ -316,34 +310,6 @@ static void add_namespace(struct list_head *head, const char *namespace)
>         }
>  }
>
> -static const struct {
> -       const char *str;
> -       enum export export;
> -} export_list[] = {
> -       { .str = "EXPORT_SYMBOL",            .export = export_plain },
> -       { .str = "EXPORT_SYMBOL_GPL",        .export = export_gpl },
> -       { .str = "(unknown)",                .export = export_unknown },
> -};
> -
> -
> -static const char *export_str(enum export ex)
> -{
> -       return export_list[ex].str;
> -}
> -
> -static enum export export_no(const char *s)
> -{
> -       int i;
> -
> -       if (!s)
> -               return export_unknown;
> -       for (i = 0; export_list[i].export != export_unknown; i++) {
> -               if (strcmp(export_list[i].str, s) == 0)
> -                       return export_list[i].export;
> -       }
> -       return export_unknown;
> -}
> -
>  static void *sym_get_data_by_offset(const struct elf_info *info,
>                                     unsigned int secindex, unsigned long offset)
>  {
> @@ -374,18 +340,6 @@ static const char *sec_name(const struct elf_info *info, int secindex)
>
>  #define strstarts(str, prefix) (strncmp(str, prefix, strlen(prefix)) == 0)
>
> -static enum export export_from_secname(struct elf_info *elf, unsigned int sec)
> -{
> -       const char *secname = sec_name(elf, sec);
> -
> -       if (strstarts(secname, "___ksymtab+"))
> -               return export_plain;
> -       else if (strstarts(secname, "___ksymtab_gpl+"))
> -               return export_gpl;
> -       else
> -               return export_unknown;
> -}
> -
>  static void sym_update_namespace(const char *symname, const char *namespace)
>  {
>         struct symbol *s = find_symbol(symname);
> @@ -405,7 +359,7 @@ static void sym_update_namespace(const char *symname, const char *namespace)
>  }
>
>  static struct symbol *sym_add_exported(const char *name, struct module *mod,
> -                                      enum export export)
> +                                      bool gpl_only)
>  {
>         struct symbol *s = find_symbol(name);
>
> @@ -417,7 +371,7 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod,
>
>         s = alloc_symbol(name);
>         s->module = mod;
> -       s->export    = export;
> +       s->is_gpl_only = gpl_only;
>         list_add_tail(&s->list, &mod->exported_symbols);
>         hash_add_symbol(s);
>
> @@ -689,8 +643,6 @@ static void handle_modversion(const struct module *mod,
>  static void handle_symbol(struct module *mod, struct elf_info *info,
>                           const Elf_Sym *sym, const char *symname)
>  {
> -       const char *name;
> -
>         switch (sym->st_shndx) {
>         case SHN_COMMON:
>                 if (strstarts(symname, "__gnu_lto_")) {
> @@ -724,12 +676,15 @@ static void handle_symbol(struct module *mod, struct elf_info *info,
>         default:
>                 /* All exported symbols */
>                 if (strstarts(symname, "__ksymtab_")) {
> -                       enum export export;
> +                       const char *name, *secname;
>
>                         name = symname + strlen("__ksymtab_");
> -                       export = export_from_secname(info,
> -                                                    get_secindex(info, sym));
> -                       sym_add_exported(name, mod, export);
> +                       secname = sec_name(info, get_secindex(info, sym));
> +
> +                       if (strstarts(secname, "___ksymtab_gpl+"))
> +                               sym_add_exported(name, mod, true);
> +                       else if (strstarts(secname, "___ksymtab+"))
> +                               sym_add_exported(name, mod, false);
>                 }
>                 if (strcmp(symname, "init_module") == 0)
>                         mod->has_init = true;
> @@ -2140,20 +2095,6 @@ void buf_write(struct buffer *buf, const char *s, int len)
>         buf->pos += len;
>  }
>
> -static void check_for_gpl_usage(enum export exp, const char *m, const char *s)
> -{
> -       switch (exp) {
> -       case export_gpl:
> -               error("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
> -                     m, s);
> -               break;
> -       case export_plain:
> -       case export_unknown:
> -               /* ignore */
> -               break;
> -       }
> -}
> -
>  static void check_exports(struct module *mod)
>  {
>         struct symbol *s, *exp;
> @@ -2192,8 +2133,9 @@ static void check_exports(struct module *mod)
>                         add_namespace(&mod->missing_namespaces, exp->namespace);
>                 }
>
> -               if (!mod->is_gpl_compatible)
> -                       check_for_gpl_usage(exp->export, basename, exp->name);
> +               if (!mod->is_gpl_compatible && exp->is_gpl_only)
> +                       error("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
> +                             basename, exp->name);
>         }
>  }
>
> @@ -2437,6 +2379,7 @@ static void read_dump(const char *fname)
>                 unsigned int crc;
>                 struct module *mod;
>                 struct symbol *s;
> +               bool gpl_only;
>
>                 if (!(symname = strchr(line, '\t')))
>                         goto fail;
> @@ -2454,12 +2397,22 @@ static void read_dump(const char *fname)
>                 crc = strtoul(line, &d, 16);
>                 if (*symname == '\0' || *modname == '\0' || *d != '\0')
>                         goto fail;
> +
> +               if (!strcmp(export, "EXPORT_SYMBOL_GPL")) {
> +                       gpl_only = true;
> +               } else if (!strcmp(export, "EXPORT_SYMBOL")) {
> +                       gpl_only = false;
> +               } else {
> +                       error("%s: unknown license %s. skip", symname, export);
> +                       continue;
> +               }
> +
>                 mod = find_module(modname);
>                 if (!mod) {
>                         mod = new_module(modname);
>                         mod->from_dump = true;
>                 }
> -               s = sym_add_exported(symname, mod, export_no(export));
> +               s = sym_add_exported(symname, mod, gpl_only);
>                 s->is_static = false;
>                 sym_set_crc(symname, crc);
>                 sym_update_namespace(symname, namespace);
> @@ -2481,9 +2434,9 @@ static void write_dump(const char *fname)
>                 if (mod->from_dump)
>                         continue;
>                 list_for_each_entry(sym, &mod->exported_symbols, list) {
> -                       buf_printf(&buf, "0x%08x\t%s\t%s\t%s\t%s\n",
> +                       buf_printf(&buf, "0x%08x\t%s\t%s\tEXPORT_SYMBOL%s\t%s\n",
>                                    sym->crc, sym->name, mod->name,
> -                                  export_str(sym->export),
> +                                  sym->is_gpl_only ? "_GPL" : "",
>                                    sym->namespace ?: "");
>                 }
>         }
> @@ -2604,9 +2557,8 @@ int main(int argc, char **argv)
>
>                 for (s = symbolhash[n]; s; s = s->next) {
>                         if (s->is_static)
> -                               error("\"%s\" [%s] is a static %s\n",
> -                                     s->name, s->module->name,
> -                                     export_str(s->export));
> +                               error("\"%s\" [%s] is a static EXPORT_SYMBOL\n",
> +                                     s->name, s->module->name);
>                 }
>         }
>
> --
> 2.32.0
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20220508190631.2386038-3-masahiroy%40kernel.org.



-- 
Best Regards
Masahiro Yamada

  reply	other threads:[~2022-05-12  4:38 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-08 19:06 [PATCH v4 00/14] kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h) Masahiro Yamada
2022-05-08 19:06 ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 01/14] modpost: remove left-over cross_compile declaration Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09 17:08   ` Nick Desaulniers
2022-05-09 17:08     ` Nick Desaulniers
2022-05-12  4:35   ` Masahiro Yamada
2022-05-12  4:35     ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 02/14] modpost: change the license of EXPORT_SYMBOL to bool type Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-12  4:36   ` Masahiro Yamada [this message]
2022-05-12  4:36     ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 03/14] modpost: split the section mismatch checks into section-check.c Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09 17:19   ` Nick Desaulniers
2022-05-09 17:19     ` Nick Desaulniers
2022-05-10  6:55     ` Masahiro Yamada
2022-05-10  6:55       ` Masahiro Yamada
2022-05-11 18:47       ` Nick Desaulniers
2022-05-11 18:47         ` Nick Desaulniers
2022-05-11 19:27         ` Masahiro Yamada
2022-05-11 19:27           ` Masahiro Yamada
2022-05-11 19:51           ` Jeff Johnson
2022-05-11 19:51             ` Jeff Johnson
2022-05-11 20:01             ` Nick Desaulniers
2022-05-11 20:01               ` Nick Desaulniers
2022-05-08 19:06 ` [PATCH v4 04/14] modpost: add sym_find_with_module() helper Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 05/14] modpost: extract symbol versions from *.cmd files Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09 21:52   ` Sami Tolvanen
2022-05-09 21:52     ` Sami Tolvanen
2022-05-08 19:06 ` [PATCH v4 06/14] kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09 17:50   ` Nick Desaulniers
2022-05-09 17:50     ` Nick Desaulniers
2022-05-10 13:03     ` Masahiro Yamada
2022-05-10 13:03       ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 07/14] kbuild: stop merging *.symversions Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 08/14] genksyms: adjust the output format to modpost Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 09/14] kbuild: do not create *.prelink.o for Clang LTO or IBT Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09 23:13   ` Sami Tolvanen
2022-05-09 23:13     ` Sami Tolvanen
2022-05-08 19:06 ` [PATCH v4 10/14] kbuild: check static EXPORT_SYMBOL* by script instead of modpost Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09 18:05   ` Nick Desaulniers
2022-05-09 18:05     ` Nick Desaulniers
2022-05-10 13:53     ` Masahiro Yamada
2022-05-10 13:53       ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 11/14] kbuild: make built-in.a rule robust against too long argument error Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 12/14] kbuild: make *.mod " Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 13/14] kbuild: add cmd_and_savecmd macro Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-08 19:06 ` [PATCH v4 14/14] kbuild: rebuild multi-object modules when objtool is updated Masahiro Yamada
2022-05-08 19:06   ` Masahiro Yamada
2022-05-09  4:24 ` [PATCH v4 00/14] kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h) Masahiro Yamada
2022-05-09  4:24   ` Masahiro Yamada
2022-05-09 22:13   ` Nathan Chancellor
2022-05-09 22:13     ` Nathan Chancellor
2022-05-10  6:55     ` Masahiro Yamada
2022-05-10  6:55       ` Masahiro Yamada
2022-05-09 22:19   ` Nathan Chancellor
2022-05-09 22:19     ` Nathan Chancellor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK7LNARhgfkSP+jmoTF2nVJtd=amPTNsNRjgaV+H7NhgjV+6Bw@mail.gmail.com' \
    --to=masahiroy@kernel.org \
    --cc=ardb@kernel.org \
    --cc=clang-built-linux@googlegroups.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=nicolas@fjasle.eu \
    --cc=peterz@infradead.org \
    --cc=samitolvanen@google.com \
    --subject='Re: [PATCH v4 02/14] modpost: change the license of EXPORT_SYMBOL to bool type' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.