Commit graph

202 commits

Author SHA1 Message Date
Alistair Strachan
7390ef5553 Avoid accidentally using the host's native 'as' command.
When invoking clang for the host to assemble .S files, the -B flag
would not be provided, which allowed the host prebuilt clang to
use an 'as' from the native environment. Most of the time this
"just works", but some newer 'as' versions cause problems with
the older prebuilt toolchain, for example by generating
unsupported relocation types.

To avoid this problem, simply use the -B flag to tell clang to
invoke the assembler from the correct prebuilt gcc prefix.

(cherry-picked from AOSP commit 5ff9c81b6c)

Change-Id: I18ea4f37ae637b652cfd7321c41929f8be075342
Signed-off-by: Alistair Strachan <alistair.strachan@imgtec.com>
2016-08-22 19:39:25 -07:00
Pirama Arumuga Nainar
83bebe3fc5 Switch to clang-2690385
http://b/26987366

(cherry picked from commit 760aec5fdf)

Change-Id: Ib26fa27c214b67024ad43a1e0b1db277d7c7f929
2016-03-20 22:57:32 -07:00
Pirama Arumuga Nainar
27b18f5c95 Update RenderScript build rules for rebase to LLVM r256229
http://b/26987366

- Use clang-2690385 to build RenderScript toolchain.
- Use armv7-linux-androideabi as the triple used to build RenderScript
  runtime libraries.

(cherry picked from commit 41f4b242e3)

Change-Id: I50751f410a2f7c83532cec9b96c50d9afe1224c1
2016-03-20 22:53:04 -07:00
Stephen Hines
efd50b725b Switch to clang-2658975.
Bug: http://b/27482631

This fixes an issue where krait compiles were not passing the proper
flags to the assembler when -no-integrated-as is used. This was
preventing ART from switching to clang in some cases.

(cherry picked from commit c503d8ef58)

Change-Id: I4a0efb78f37fee73bf61841f0347328b8f61c192
2016-03-11 15:03:18 -08:00
Stephen Hines
6f82901188 Update to use the latest clang-2629532.
Bug: http://b/25642296

(cherry picked from commit 352bccb65e)

Change-Id: I57bcbed0d7d51864ba7d7325334e9bbbba9f847b
2016-02-26 18:51:26 -08:00
Chih-Hung Hsieh
71d8cbd9b6 Use newest clang static analyzers.
* When WITH_STATIC_ANALYZER is set and non-zero, and clang compiler is used,
  call new clang ccc-analyzer or c++-analyzer.
* Otherwise, if WITH_SYNTAX_CHECK is set and non-zero,
  call compiler with -fsyntax-only.
* Replace "--sysroot=path" with "--sysroot path", to work with ccc-analyzer.
* ccc-analyzer executes the original compilation command to generate
  object files before calling clang with --analyze to do static analysis.
* When clang is called with --analyze, macro __clang_analyzer__ is defined.

BUG: 13287788

(cherry picked from commit 765c1ea6d7)

Change-Id: I6e51e51ff4ed3ce514f60d090494dcdf6e520b04
2016-02-26 18:51:26 -08:00
Dan Willemsen
7e57b8ca57 Add 64-bit windows cross-compiles
This is mostly the same as the existing 2ND_HOST / HOST_CROSS support.

The interesting thing I did here was make x86 the 'first' architecture,
and x86_64 the second. This way LOCAL_MULTILIB := first defaults to
32-bit windows modules.

  windows-x86/bin   <- defaults to 32-bit executables
  windows-x86/lib   <- 32-bit libraries, like before
  windows-x86/lib64 <- 64-bit libraries
  windows-x86/obj   <- 32-bit intermediates
  windows-x86/obj64 <- 64-bit intermediates

Then modules are registered with the names:

  host_cross_liblog    <- 32-bit, like before
  host_cross_liblog_64 <- 64-bit

Bug: 26957718

(cherry picked from commit 9ecbf83259)

Change-Id: Iab2d36e20d7002568c3534e7781e9ac8ab21a4a9
2016-02-26 18:51:26 -08:00
Stephen Hines
cdb52b5186 Fix LLVM_RTLIB_PATH for new prebuilts.
This moved from lib/ to lib64/, but wasn't noticed because no one builds
with the profiler on by default.

Change-Id: I0155263b4a50437ea0864338fb34baefc3df59d2
2016-02-04 11:43:41 -08:00
Stephen Hines
6ef329eb4d Switch to clang-2577113.
Bug: http://b/25282907

This is actually based on clang/LLVM upstream revision r256229.

Change-Id: I335be68f196e5b55ac2816fa854e97b841b54240
2016-02-01 23:37:14 -08:00
Colin Cross
41fed8c082 Merge "Don't force color diagnostics outside of ninja" 2016-02-01 18:57:50 +00:00
Stephen Hines
49b695375c Add an RS_CLANG variable as well for RenderScript.
Change-Id: I33a73c4c2b19aa17bc18a64c92a86565111de3d0
2016-01-22 15:11:58 -08:00
Stephen Hines
96d2a8c5e4 Add clang rules for RS_LLVM_* tools.
This change adds new variables for RS_LLVM_* tools, which correspond
to the version of LLVM checked in currently to external/, instead of
mapping to the latest host prebuilts. This will help prevent version
differences for newer IR generated by the updated host prebuilts, which
then might not be readable with the on-device LLVM bits we build from
external/.

Change-Id: I6c7b0fa9082e9c8244cc508cb23960569a057740
2016-01-21 23:50:53 -08:00
Colin Cross
dbd43849fb Don't force color diagnostics outside of ninja
Building with USE_NINJA=false and piping build output to a file will
result in ANSI color codes in the build output.  Only force ANSI codes
on when building with ninja, which strips the ANSI codes when writing
build output to a non-TTY.

Change-Id: Ifd2fb53799fd99c23b7ad91cdb84d943bf707db0
2016-01-13 14:05:54 -08:00
Dan Willemsen
d1baa0f001 Remove -Wa,noexecstack from unsupported arm clang flags
This was marked as unsupported only on arm[64], even though it works.
For soong, we want to keep a single list of unsupported clang flags
for all architectures.

Change-Id: I9c4ae0f255c549d2346ba7abae57e22c86ddcc61
2016-01-12 15:54:57 -08:00
Evgenii Stepanov
18733b9b0c Merge "Remove RPATH for AddressSanitizer." 2015-12-21 18:32:36 +00:00
Evgenii Stepanov
bbd944a25d Remove RPATH for AddressSanitizer.
RPATH was used in order for ASan executables to prefer ASan libraries
under /data. Now ASan executables use a special loader (linker_asan),
which implements this logic. RPATH is no longer needed.

Change-Id: Ic7a39b022267b80bd0ce3e95a2e822eb308a1fba
2015-12-21 10:29:54 -08:00
Elliott Hughes
505e4ec646 Be smarter about stack-protector on the host.
Some projects are still built with our host GCC 4.8, which doesn't
support -fstack-protector-strong. The combo .mk files are used by
GCC and clang, so it's not safe to turn on -fstack-protector-strong
there. Instead, do it in the clang-specific .mk for now.

We can clean this up when elfutils (the last code built for the host
with GCC that I'm aware of) is built by clang. We'll be able to
remove the host GCC prebuilts too!

Change-Id: I314b9eab071c132a8e2cb8cc779a75ae8abb12e2
2015-12-14 13:20:59 -08:00
Stephen Hines
af9e29d040 Merge "Rename AArch64 ASan target runtime library to match upstream convention." 2015-11-19 16:14:08 +00:00
Stephen Hines
bf45029dc4 Rename AArch64 ASan target runtime library to match upstream convention.
Rename from
 libclang_rt.asan-arm64-android.so
to
 libclang_rt.asan-aarch64-android.so

Change-Id: I6d73f458f437440c1de5bc72d2188d392c80cb98
2015-11-18 22:13:16 -08:00
Dan Albert
2d6d5c6e53 Really allow overriding the LLVM prebuilts path.
Not sure why my previous testing was working without this, but kati is
a bit pickier about ?= vs :=.

Change-Id: I80243a3c93dec7fd9b8e6f92e2c6cc956706ace0
2015-11-18 18:01:31 -08:00
Dan Albert
8b1d17706f Allow overriding the LLVM prebuilts path.
The automated build will need to do a two stage build, and we want to
do that without altering the source directory. Building with
`make LLVM_PREBUILTS_BASE=/path/to/prebuilts` will build using an
arbitrary toolchain instead of the installed one.

Bug: http://b/17441393
Change-Id: I4ff5c5224fbb8ebeb3a752907d6c4cd0a925aa1e
2015-11-13 23:06:07 -08:00
Stephen Hines
e8119e96fc Switch from clang 3.6 to new clang repository (with 3.8).
This reverts commit f7dbab16ff.

Bug: 23396112

Switch from "-fsanitize-undefined-trap-on-error" to
"-fsanitize-trap=all". The former ends up accidentally leaving
unresolved calls to __ubsan* helper functions in the object file with
clang 3.8. The latter is used when we don't include address sanitizer,
and replaces any misbehavior with a direct call to abort().
2015-11-09 16:32:11 -08:00
Stephen Hines
f7dbab16ff Revert "Switch from clang 3.6 to new clang repository (with 3.8)."
This reverts commit 1332828b6e.

Bug: 25141123

Change-Id: Idd5d8757095b2b370046a84aea76bc95e16f3876
2015-10-21 09:09:38 -07:00
Stephen Hines
f5782d6097 Merge "Switch from clang 3.6 to new clang repository (with 3.8)." 2015-10-21 00:18:05 +00:00
Dan Willemsen
6a66a887ba Stop encoding absolute paths in symbols
GCC & Clang encode the current working directory into the symbol files.
Even if the binaries are stripped before being installed, the build-id
hash will be different. This means that two different checkouts will
produce different installed binaries, even if the sources are identical.

To prevent this, set PWD=/proc/self/cwd, so that it replaces the
absolute path with the static path /proc/self/cwd. With GCC, use
-fdebug-prefix-map to remove that static path. Our clang does not yet
support this flag, but it was merged in r250094.

This does change the behavior when using gdb -- you now need to be in
$ANDROID_BUILD_TOP before gdb will load the sources.

Bug: 24204119
Change-Id: I792d65b042b7a3fdc78d567c5a6e93cdf0141b9b
2015-10-14 17:30:11 -07:00
Stephen Hines
1332828b6e Switch from clang 3.6 to new clang repository (with 3.8).
Bug: 23396112

Switch from "-fsanitize-undefined-trap-on-error" to
"-fsanitize-trap=all". The former ends up accidentally leaving
unresolved calls to __ubsan* helper functions in the object file with
clang 3.8. The latter is used when we don't include address sanitizer,
and replaces any misbehavior with a direct call to abort().

Change-Id: I8a67461b45f5f1dd9f2d179b6b64a4ca905e999f
2015-10-01 10:42:15 -07:00
Colin Cross
ba9bc4d70f am 0d97557d: Merge "Enable color output from gcc and clang"
* commit '0d97557d3d6f56cf6dfdb7552d4f1471d56dfabe':
  Enable color output from gcc and clang
2015-09-25 23:17:02 +00:00
Colin Cross
63e3b0294f Enable color output from gcc and clang
Force gcc and clang to always output color diagnostics.  Ninja will
strip the ANSI color codes if it is not running in a terminal.

Bug: 24273983
Change-Id: Ic9252549bfacf3bbb3f4b9d20f63010fc24ac21d
2015-09-24 22:39:17 -07:00
Colin Cross
45b0c8f163 am c180dd0b: Merge "Revert "disable Krait for Mac builds to avoid assembler issues""
* commit 'c180dd0bfc55ae222f143dc86a333caf000cbf03':
  Revert "disable Krait for Mac builds to avoid assembler issues"
2015-09-25 01:11:48 +00:00
Colin Cross
c180dd0bfc Merge "Revert "disable Krait for Mac builds to avoid assembler issues"" 2015-09-25 01:07:52 +00:00
Colin Cross
737cc70b50 Revert "disable Krait for Mac builds to avoid assembler issues"
This doesn't seem to be a problem any more, and mac builds
that differ from linux builds is causing other problems.

This reverts commit 7c40fb95dc.

Bug: 24339250
Change-Id: I8a0da11df42d58ba9c3ded4571f1db870f400a21
2015-09-25 00:30:34 +00:00
Dan Albert
d9f9836e5e am 3ee9daac: Merge "Remove WITHOUT_(HOST|TARGET)_CLANG."
* commit '3ee9daac6a3bf8d2a9030b99f62595330f22cafa':
  Remove WITHOUT_(HOST|TARGET)_CLANG.
2015-09-16 23:31:41 +00:00
Dan Albert
32f7ff14ce Remove WITHOUT_(HOST|TARGET)_CLANG.
This is unused.

Change-Id: Ibc461fef02c82d110718003aceffb943c930ffe6
2015-09-16 15:43:00 -07:00
Dan Willemsen
c98d9a9d0f am f1c09d7f: Merge "Add HOST_CROSS_OS"
* commit 'f1c09d7fbd92a08cc51950a7d35fb5f7fc564a20':
  Add HOST_CROSS_OS
2015-09-09 18:19:13 +00:00
Dan Willemsen
057aaea54a Add HOST_CROSS_OS
Instead of using recursive make to change the HOST_OS when building the
windows SDK under linux, add the concept of cross-building to another
host os.

Bug: 23566667
Change-Id: I6dc525b601b6251d458d197c30bf4660d7485502
2015-09-09 18:12:29 +00:00
Evgenii Stepanov
d259ecd171 am 617770c1: Merge "Add AddressSanitizer linker flags for x86."
* commit '617770c133330fc06070e97ce39bbf065c749c97':
  Add AddressSanitizer linker flags for x86.
2015-09-02 20:18:12 +00:00
Ivan Krasin
b83e171c8d Add AddressSanitizer linker flags for x86.
This is the 1/4 change required to get AddressSanitizer
for Android x86 to work.

Change-Id: I848805af34fdd32a313c991504d6014f9b97ab88
2015-09-02 11:59:45 -07:00
Elliott Hughes
f04f391b5f am 4548e7f4: Merge "Remove AndroidConfig.h."
* commit '4548e7f49dbec05c8b8187b0ea9e746fc47ec5d3':
  Remove AndroidConfig.h.
2015-08-28 19:59:18 +00:00
Elliott Hughes
43146118aa Remove AndroidConfig.h.
This change leaves soong references.

Change-Id: Iee32b6b97ad9711f69e999c9d01f01d71562b63f
2015-08-28 10:31:28 -07:00
Chih-hung Hsieh
2cc00c305c am 3eccd047: am 59c858fc: Merge "Remove special x86 flag that disables tail call optimization."
* commit '3eccd04784d4a92e224bf0e6917f9a3b0353da1d':
  Remove special x86 flag that disables tail call optimization.
2015-08-18 22:22:23 +00:00
Chih-hung Hsieh
59c858fc94 Merge "Remove special x86 flag that disables tail call optimization." 2015-08-18 22:11:03 +00:00
Stephen Hines
7b6af490e9 am 5d17a7e2: am 2e08cb6e: Merge "Add -mfpu=neon-vfpv4 if cpu is krait"
* commit '5d17a7e2adf505fd7a97782f54856c86a237369d':
  Add -mfpu=neon-vfpv4 if cpu is krait
2015-08-15 02:18:58 +00:00
Stephen Hines
2e08cb6e1b Merge "Add -mfpu=neon-vfpv4 if cpu is krait" 2015-08-15 02:04:55 +00:00
Ying Wang
c7b8ee0974 am 66c8e8c7: Don\'t prepend CC_WRAPPER to CLANG.
* commit '66c8e8c756fb1790cac792b32ba2de057c3b1b4e':
  Don't prepend CC_WRAPPER to CLANG.
2015-08-03 21:21:01 +00:00
Ying Wang
3e3d7b5ce5 Don't prepend CC_WRAPPER to CLANG.
We have deferred the CC_WRAPPER prepending to binary.mk per module.

Bug: 22612634
Change-Id: If2c0549503989d17ff7be619fdd49c26fd78f0a5
(cherry-pick from commit 66c8e8c756)
2015-08-03 14:08:54 -07:00
Ying Wang
66c8e8c756 Don't prepend CC_WRAPPER to CLANG.
We have deferred the CC_WRAPPER prepending to binary.mk per module.

Bug: 22612634
Change-Id: If2c0549503989d17ff7be619fdd49c26fd78f0a5
2015-08-03 14:06:58 -07:00
Evgenii Stepanov
436a2fb9e3 am 275e3c8c: am 2d0ec893: Merge "Use a different linker for ASan binaries."
* commit '275e3c8c105e5702b25868f80983c82c668e5664':
  Use a different linker for ASan binaries.
2015-07-15 21:27:42 +00:00
Evgenii Stepanov
8f5e67a98c Use a different linker for ASan binaries.
Another change in bionic/linker adds linker_asan/linker_asan64 that
know where to find ASan shared libraries.
Also, include linker_asan to the required packages list when building
for ASan.

Change-Id: I8ebe7c0091bbeb0c135708a891d33d9844373d37
2015-07-14 11:10:40 -07:00
Pirama Arumuga Nainar
2d5a50e686 Add -mfpu=neon-vfpv4 if cpu is krait
Upstream clang r239152 (http://reviews.llvm.org/D10239) caused a pretty
significant change in behavior.  Passing an FPU feature via -mfpu
disables any feature not supported by those flags (in addition to the
old behavior of enabling features supported by the flags).  For e.g.,
-mfpu=neon used to just pass +neon, +vfp3 as target features to the
backend.  Now, -mfpu=neon also passes -vfp4, -fp16, -fp-armv8.

The backend has always disabled implied feature bits if a feature is
disabled.  Upon seeing the target feature -vfp4, it will disable any
processor/feature that implies vfp4, including the bit that the
processor is a Krait.  Since Krait has both Neon and vfp4, it is safe to
pass '-mfpu=neon-vfpv4'.

Change-Id: Ibbb992e80b8cbc8dc36d5df556885d0912baea22
2015-07-09 12:55:00 -07:00
Ying Wang
91a38d07d0 am 68787b3d: am bbaeaa58: Merge "Configure synci generation explicitly"
* commit '68787b3d1e0b230f3fd812759be03736f73daaf4':
  Configure synci generation explicitly
2015-07-02 06:39:10 +00:00