Re: [PATCH v4 10/14] kbuild: check static EXPORT_SYMBOL* by script instead of modpost

Masahiro Yamada
2022-05-10T14:34:15Z

On Tue, May 10, 2022 at 3:05 AM 'Nick Desaulniers' via Clang Built
Linux <clang-built-linux@googlegroups.com> wrote:
>
> On Sun, May 8, 2022 at 12:10 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > diff --git a/scripts/check-local-export b/scripts/check-local-export
> > new file mode 100755
> > index 000000000000..d1721fa63057
> > --- /dev/null
> > +++ b/scripts/check-local-export
> > @@ -0,0 +1,48 @@
> > +#!/bin/bash
> > +# SPDX-License-Identifier: GPL-2.0-only
> > +#
> > +# Copyright (C) 2022 Masahiro Yamada
> > +
> > +set -e
> > +set -o pipefail
> > +
> > +declare -A symbol_types
> > +declare -a export_symbols
> > +
> > +exit_code=0
> > +
> > +while read value type name
> > +do
> > + # to avoid error for clang LTO; $name may be empty
> > + if [[ $value = -* && -z $name ]]; then
> > + continue
> > + fi
> > +
> > + # The first field (value) may be empty. If so, fix it up.
> > + if [[ -z $name ]]; then
> > + name=${type}
> > + type=${value}
> > + fi
>
> Consider adding examples of output from NM as comments where you're
> handling special cases.
>
> Aren't BOTH from LTO? The first case is:
>
> ---------------- T strncpy

For LTO, I see

---------------- t

in the llvm-nm output.

>
> while the second is
>
> U strncpy

Right, this happens for all unresolved symbols.
The address part is empty.

I will add the output example in the comment block.

> IIUC?
>
> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> --
> Thanks,
> ~Nick Desaulniers
>
> --
> 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/CAKwvOdkhcJB8Bnrt51siRefWe%2BZSvHagCs2G011PzkkrD3cxQw%40mail.gmail.com.

--
Best Regards
Masahiro Yamada