Commit 16bc1d54 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-fixes-v5.9-4' of...

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

Pull Kbuild fixes from Masahiro Yamada:

 - ignore compiler stubs for PPC to fix builds

 - fix the usage of --target mentioned in the LLVM document

* tag 'kbuild-fixes-v5.9-4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  Documentation/llvm: Fix clang target examples
  scripts/kallsyms: skip ppc compiler stub *.long_branch.* / *.plt_branch.*
parents f8818559 e30d694c
...@@ -39,10 +39,10 @@ which can help simplify cross compiling. :: ...@@ -39,10 +39,10 @@ which can help simplify cross compiling. ::
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang
``CROSS_COMPILE`` is not used to prefix the Clang compiler binary, instead ``CROSS_COMPILE`` is not used to prefix the Clang compiler binary, instead
``CROSS_COMPILE`` is used to set a command line flag: ``--target <triple>``. For ``CROSS_COMPILE`` is used to set a command line flag: ``--target=<triple>``. For
example: :: example: ::
clang --target aarch64-linux-gnu foo.c clang --target=aarch64-linux-gnu foo.c
LLVM Utilities LLVM Utilities
-------------- --------------
......
...@@ -82,6 +82,7 @@ static char *sym_name(const struct sym_entry *s) ...@@ -82,6 +82,7 @@ static char *sym_name(const struct sym_entry *s)
static bool is_ignored_symbol(const char *name, char type) static bool is_ignored_symbol(const char *name, char type)
{ {
/* Symbol names that exactly match to the following are ignored.*/
static const char * const ignored_symbols[] = { static const char * const ignored_symbols[] = {
/* /*
* Symbols which vary between passes. Passes 1 and 2 must have * Symbols which vary between passes. Passes 1 and 2 must have
...@@ -104,6 +105,7 @@ static bool is_ignored_symbol(const char *name, char type) ...@@ -104,6 +105,7 @@ static bool is_ignored_symbol(const char *name, char type)
NULL NULL
}; };
/* Symbol names that begin with the following are ignored.*/
static const char * const ignored_prefixes[] = { static const char * const ignored_prefixes[] = {
"$", /* local symbols for ARM, MIPS, etc. */ "$", /* local symbols for ARM, MIPS, etc. */
".LASANPC", /* s390 kasan local symbols */ ".LASANPC", /* s390 kasan local symbols */
...@@ -113,6 +115,7 @@ static bool is_ignored_symbol(const char *name, char type) ...@@ -113,6 +115,7 @@ static bool is_ignored_symbol(const char *name, char type)
NULL NULL
}; };
/* Symbol names that end with the following are ignored.*/
static const char * const ignored_suffixes[] = { static const char * const ignored_suffixes[] = {
"_from_arm", /* arm */ "_from_arm", /* arm */
"_from_thumb", /* arm */ "_from_thumb", /* arm */
...@@ -120,9 +123,15 @@ static bool is_ignored_symbol(const char *name, char type) ...@@ -120,9 +123,15 @@ static bool is_ignored_symbol(const char *name, char type)
NULL NULL
}; };
/* Symbol names that contain the following are ignored.*/
static const char * const ignored_matches[] = {
".long_branch.", /* ppc stub */
".plt_branch.", /* ppc stub */
NULL
};
const char * const *p; const char * const *p;
/* Exclude symbols which vary between passes. */
for (p = ignored_symbols; *p; p++) for (p = ignored_symbols; *p; p++)
if (!strcmp(name, *p)) if (!strcmp(name, *p))
return true; return true;
...@@ -138,6 +147,11 @@ static bool is_ignored_symbol(const char *name, char type) ...@@ -138,6 +147,11 @@ static bool is_ignored_symbol(const char *name, char type)
return true; return true;
} }
for (p = ignored_matches; *p; p++) {
if (strstr(name, *p))
return true;
}
if (type == 'U' || type == 'u') if (type == 'U' || type == 'u')
return true; return true;
/* exclude debugging symbols */ /* exclude debugging symbols */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment