linux/scripts
Nick Desaulniers 86a9df597c kbuild: fix linker feature test macros when cross compiling with Clang
I was not seeing my linker flags getting added when using ld-option when
cross compiling with Clang. Upon investigation, this seems to be due to
a difference in how GCC vs Clang handle cross compilation.

GCC is configured at build time to support one backend, that is implicit
when compiling.  Clang is explicit via the use of `-target <triple>` and
ships with all supported backends by default.

GNU Make feature test macros that compile then link will always fail
when cross compiling with Clang unless Clang's triple is passed along to
the compiler. For example:

$ clang -x c /dev/null -c -o temp.o
$ aarch64-linux-android/bin/ld -E temp.o
aarch64-linux-android/bin/ld:
unknown architecture of input file `temp.o' is incompatible with
aarch64 output
aarch64-linux-android/bin/ld:
warning: cannot find entry symbol _start; defaulting to
0000000000400078
$ echo $?
1

$ clang -target aarch64-linux-android- -x c /dev/null -c -o temp.o
$ aarch64-linux-android/bin/ld -E temp.o
aarch64-linux-android/bin/ld:
warning: cannot find entry symbol _start; defaulting to 00000000004002e4
$ echo $?
0

This causes conditional checks that invoke $(CC) without the target
triple, then $(LD) on the result, to always fail.

Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-11-13 22:54:24 +09:00
..
basic fixdep: trivial: typo fix and correction 2017-08-10 01:01:03 +09:00
coccinelle drm: Introduce drm_property_blob_{get,put}() 2017-02-28 16:16:46 +01:00
dtc scripts/dtc: dtx_diff - 2nd update of include dts paths to match build 2017-09-20 10:13:05 -05:00
gcc-plugins Merge branch 'for-next/gcc-plugin/structleak' into for-next/gcc-plugins 2017-08-07 13:29:04 -07:00
gdb kbuild: use $(abspath ...) instead of $(shell cd ... && /bin/pwd) 2017-09-01 08:50:32 +09:00
genksyms genksyms: fix gperf removal conversion 2017-09-08 14:32:34 -07:00
kconfig Remove gperf usage from toolchain 2017-08-19 11:02:53 -07:00
ksymoops Fix dead URLs to ftp.kernel.org 2017-03-28 16:16:52 +02:00
mod Modules updates for v4.14 2017-09-13 11:28:19 -07:00
package kbuild: rpm-pkg: fix version number handling 2017-09-21 00:06:03 +09:00
selinux selinux: genheaders should fail if too many permissions are defined 2017-07-31 19:03:02 -04:00
tracing ftrace/scripts: Add helper script to bisect function tracing problem functions 2016-09-21 13:56:55 -04:00
.gitignore Docs: clean up some DocBook loose ends 2017-06-23 14:17:38 -06:00
adjust_autoksyms.sh kbuild: fix scripts/adjust_autoksyms.sh* for the no modules case 2016-12-11 22:30:10 +01:00
asn1_compiler.c ASN.1: fix open failure check on headername 2016-04-06 14:06:48 +01:00
bloat-o-meter scripts/bloat-o-meter: compile .NUMBER regex 2016-12-12 18:55:06 -08:00
bootgraph.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
check_00index.sh scripts: add a script to check if Documentation/00-INDEX is sane 2016-12-05 14:21:24 -07:00
check_extable.sh
checkincludes.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
checkkconfigsymbols.py checkkconfigsymbols.py: support Kconfig's 'imply' statement 2017-02-03 11:49:06 +01:00
checkpatch.pl checkpatch: add 6 missing types to --list-types 2017-09-08 18:26:50 -07:00
checkstack.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
checksyscalls.sh kbuild: speed up checksyscalls.sh 2017-06-10 01:15:36 +09:00
checkversion.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
cleanfile scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
cleanpatch scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
coccicheck scripts/coccicheck: Update reference for the corresponding documentation 2016-10-11 09:50:43 +02:00
config
conmakehash.c
const_structs.checkpatch const_structs.checkpatch: add frequently used from Julia Lawall's list 2016-10-11 15:06:30 -07:00
decode_stacktrace.sh scripts/decode_stacktrace.sh: Fix address line detection on x86 2016-11-29 14:19:50 +01:00
decodecode
depmod.sh
diffconfig
export_report.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
extract_xc3028.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
extract-cert.c KEYS: Remove unnecessary header #inclusions from extract-cert.c 2015-09-25 16:31:45 +01:00
extract-ikconfig
extract-module-sig.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
extract-sys-certs.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
extract-vmlinux
faddr2line scripts/faddr2line: Fix "size mismatch" error 2016-10-25 18:40:37 +02:00
gcc-goto.sh
gcc-ld
gcc-plugin.sh gcc-plugins: abort builds cleanly when not supported 2016-08-08 17:49:05 -07:00
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh scripts/has-stack-protector: add -fno-PIE 2016-11-09 22:28:05 +01:00
gen_initramfs_list.sh Kbuild misc updates for 4.13 2017-07-07 15:09:09 -07:00
get_dvb_firmware scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
get_maintainer.pl get_maintainer: Prepare for separate MAINTAINERS files 2017-08-08 11:09:31 -07:00
gfp-translate
headerdep.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
headers_check.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
headers_install.sh
headers.sh
insert-sys-cert.c KEYS: Reserve an extra certificate symbol for inserting without recompiling 2016-02-26 15:30:20 +00:00
kallsyms.c kbuild: modversions: add infrastructure for emitting relative CRCs 2017-02-03 08:28:25 -08:00
Kbuild.include kbuild: fix linker feature test macros when cross compiling with Clang 2017-11-13 22:54:24 +09:00
kernel-doc kernel-doc parser mishandles declarations split into lines 2017-08-30 16:18:16 -06:00
ld-version.sh ld-version: Drop the 4th and 5th version components 2016-05-13 14:02:05 +02:00
Lindent scripts/Lindent: clean up and optimize 2017-02-22 16:41:26 -08:00
link-vmlinux.sh kbuild: link-vmlinux.sh: simplify .version increment 2017-10-09 23:28:46 +09:00
Makefile Docs: clean up some DocBook loose ends 2017-06-23 14:17:38 -06:00
Makefile.asm-generic kbuild: add forward declaration of default target to Makefile.asm-generic 2017-11-13 22:54:17 +09:00
Makefile.build objtool: Skip unreachable warnings for GCC 4.4 and older 2017-09-28 07:23:02 +02:00
Makefile.clean Shared library support 2016-06-07 22:57:10 +02:00
Makefile.dtbinst kbuild: Do not use hyphen in exported variable name 2017-08-21 09:06:00 +09:00
Makefile.extrawarn Kbuild: enable -Wunused-macros warning for "make W=2" 2017-09-01 08:53:17 +09:00
Makefile.gcc-plugins gcc-plugins: structleak: add option to init all vars used as byref args 2017-08-07 11:20:57 -07:00
Makefile.headersinst kbuild: replace $(hdr-arch) with $(SRCARCH) 2017-10-10 10:00:47 +09:00
Makefile.help
Makefile.host kbuild: Add __cc-option macro 2017-06-25 12:47:55 +09:00
Makefile.kasan kasan: turn on -fsanitize-address-use-after-scope 2016-12-12 18:55:09 -08:00
Makefile.lib kbuild: remove KBUILD_SUBDIR_ASFLAGS and KBUILD_SUBDIR_CCFLAGS 2017-10-31 00:39:03 +09:00
Makefile.modbuiltin
Makefile.modinst
Makefile.modpost kbuild: add arch specific post-link Makefile 2016-09-09 10:47:00 +02:00
Makefile.modsign
Makefile.ubsan Kbuild: enable -Wmaybe-uninitialized warning for "make W=1" 2016-11-11 08:45:08 -08:00
makelst
markup_oops.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
mkcompile_h kbuild: mkcompile_h: do not create .version 2017-10-09 23:28:46 +09:00
mkmakefile
mksysmap
mkuboot.sh
module-common.lds module: set .init_array alignment to 8 2017-03-13 09:40:28 -07:00
namespace.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
objdiff scripts: objdiff: Ignore debug info when comparing 2017-03-11 11:13:38 +09:00
parse-maintainers.pl parse-maintainers: Move matching sections from MAINTAINERS 2017-08-08 11:16:14 -07:00
patch-kernel
pnmtologo.c
profile2linkerlist.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
prune-kernel scripts: add "prune-kernel" script to clean up old kernel images 2016-02-09 10:09:52 -08:00
recordmcount.c ftrace: Allow for function tracing to record init functions on boot up 2017-03-24 20:51:49 -04:00
recordmcount.h recordmcount: Fix endianness handling bug for nop_mcount 2015-11-03 10:45:26 -05:00
recordmcount.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
setlocalversion kbuild: setlocalversion: print error to STDERR 2016-06-20 17:37:45 +02:00
show_delta
sign-file.c sign-file: fix build error in sign-file.c with libressl 2017-02-10 12:43:47 +11:00
sortextable.c powerpc: Build-time sort the exception table 2016-11-14 11:11:51 +11:00
sortextable.h
spelling.txt scripts/spelling.txt: add a bunch more spelling mistakes 2017-07-06 16:24:30 -07:00
sphinx-pre-install docs-rst: don't require adjustbox anymore 2017-09-08 10:02:55 -06:00
stackdelta scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
stackusage
tags.sh tags: honor COMPILED_SOURCE with apart output directory 2017-06-06 08:42:34 +09:00
unifdef.c
ver_linux ver_linux: Use /usr/bin/awk instead of /bin/awk 2017-04-08 18:03:42 +02:00
xen-hypercalls.sh
xz_wrap.sh