Commit Graph

2991 Commits

Author SHA1 Message Date
Nan Zhang
0007d810e2 Change bool, and string properties to *bool, and *string for cc
there's no use case for prepending/appending to bool, and string
properties within module struct. Declearing "*bool" and "*string" almost
cover everything user need.

I did see one case that user specify relative_install_path as
path prefix in cc_defaults, and concatenate with the one in real module
to get the final relative install path in Android.bp <bionic/tests/libs>.

Test: m -j checkbuild
Bug: b/68853585
Change-Id: If3a7a2689c3fc307aae136af6bc9c57f27a1e1a0
2017-11-07 15:57:16 -08:00
Colin Cross
ee40f04b3c Merge changes Ie8ecb6c9,Ia9befd7c am: a632e9f4d2 am: 0ced97e7f1
am: 354b878e31

Change-Id: I8e548d8508bf5d0816f772f00103344df0ed1eb7
2017-11-06 23:25:50 +00:00
Treehugger Robot
a632e9f4d2 Merge changes Ie8ecb6c9,Ia9befd7c
* changes:
  Use relative paths in copygcclib.sh deps files
  Move -fno-canonical-system-headers to global cflags
2017-11-06 23:04:09 +00:00
Colin Cross
39d450b374 Move -fno-canonical-system-headers to global cflags
-fno-canonical-system-headers is required for gcc to use relative
paths to system headers in deps files, and is stripped out for
clang.  Move it to the global flags so it affects windows gcc builds.

Bug: 68719465
Test: m checkbuild
Test: prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-${TARGET_PRODUCT}.ninja -t deps | grep -E '^[[:space:]]*/' | sort | uniq
Change-Id: Ia9befd7cf8cfd714241e636fb786c319aecc79fe
2017-11-06 12:56:34 -08:00
Pirama Arumuga Nainar
cc9206b313 Merge "Remove CFI-related WARs that seem no longer necessary" am: 9c7dcfd72c am: dae7f2b07b
am: 46695ac392

Change-Id: I718895793df2a93bbe86a3d8f6e1f4e8dfa6f49c
2017-11-06 20:39:40 +00:00
Treehugger Robot
9c7dcfd72c Merge "Remove CFI-related WARs that seem no longer necessary" 2017-11-06 20:28:23 +00:00
Colin Cross
3d2da75029 Merge changes from topic "crt_cflags" am: 5c9cf6eb84 am: 3568303af8
am: b916e0f4f9

Change-Id: I4871e64c0b3e611c0c72321218f15a2080a3742e
2017-11-06 19:07:43 +00:00
Colin Cross
5c9cf6eb84 Merge changes from topic "crt_cflags"
* changes:
  Remove no_default_compiler_flags property
  Move -fomit-frame-pointer to armCflags
  Consolidate ldflags that are used on all devices
  Remove -Wl,--gc-sections from target flags
  Consolidate cflags that are set on all devices
  Consolidate global cflags
2017-11-06 18:59:00 +00:00
Colin Cross
87dd963ace Remove no_default_compiler_flags property
no_default_compiler_flags is only used by the crt* modules,
is unnecessary, and causes problems when necessary flags like
-no-canonical-prefixes are not passed.  Remove the property.

Use useVndk() instead of noDefaultCompilerFlags() to determine
if adding libc as a dependency is necessary and won't cause a
circular dependency.

Bug: 68719465
Test: m checkbuild
Change-Id: Iea1a082dc701dfeab211049a22f7066257347b80
2017-11-03 22:28:57 -07:00
Colin Cross
0f1f679f5e Move -fomit-frame-pointer to armCflags
-fomit-frame-pointer was specified twice, once for arm and once for
thumb.  Move it to the shared cflags.

Bug: 68855788
Test: m checkbuild
Change-Id: Iab1299c247808f1a2542b468084600b7c32996e8
2017-11-03 22:28:12 -07:00
Colin Cross
324a457440 Consolidate ldflags that are used on all devices
Move ldflags that are specified for all devices into
deviceGlobalLdflags, and add them to linker.go:
-Wl,-z,noexecstack
-Wl,-z,relro
-Wl,-z,now
-Wl,--build-id=md5
-Wl,--warn-shared-textrel
-Wl,--fatal-warnings
-Wl,--no-undefined-version

Bug: 68855788
Test: m checkbuild
Change-Id: I82561b4189287d7638006f9e298c5151f9930c5e
2017-11-03 22:28:03 -07:00
Steven Moreland
726652c007 Merge "Export test/benchmark factory symbols." am: 8eaca18c49 am: c09932274b
am: e7a2ee9c6e

Change-Id: I4a8e8cc49d379c5ed0a5fb29e44f9036073a21a6
2017-11-04 03:07:48 +00:00
Treehugger Robot
8eaca18c49 Merge "Export test/benchmark factory symbols." 2017-11-04 02:59:00 +00:00
Colin Cross
0e37bc78d4 Remove -Wl,--gc-sections from target flags
-Wl,--gc-sections is already added by library.go and binary.go for
anything that uses bionic.

Bug: 68855788
Test: m checkbuild
Change-Id: I229199045ef8595d69c07fcf1aa6bbdc0b753fe3
2017-11-03 11:34:45 -07:00
Colin Cross
133dbe7bb0 Consolidate cflags that are set on all devices
Move cflags that are set on all devices to deviceGlobalCflags:
-fno-canonical-system-headers
-ffunction-sections
-funwind-tables
-fstack-protector-strong
-Wa,--noexecstack
-D_FORTIFY_SOURCE=2
-Wstrict-aliasing=2
-Werror=format-security

Bug: 68855788
Test: m checkbuild
Change-Id: Iefec689fdd2749013d0cc003b3abec674a85fb74
2017-11-03 11:34:45 -07:00
Colin Cross
7278afc5a8 Consolidate global cflags
Move all the flags that are used everywhere (or should be used
everywhere) into cc/config/global.go:
-no-canonical-prefixes
-fno-exceptions
-Wno-multichar
-O2
-g
-fno-strict-aliasing

Also remove flags that are already in noOverrideGlobalCflags:
-Werror=pointer-to-int-cast
-Werror=int-to-pointer-cast

x86 and x86_64 were specifying -fstrict-aliasing, but that was
being overriden later by -fno-strict-aliasing, so remove it.
ARM devices still override -fno-strict-aliasing to -fstrict-aliasing
when using ARM (vs. Thumb) instruction set.

Bug: 68855788
Test: m checkbuild
Change-Id: Ia2b5891bdefb60f974ad92b4b84a8548c2dcc7dc
2017-11-03 11:34:45 -07:00
Pirama Arumuga Nainar
bdb17f068c Remove CFI-related WARs that seem no longer necessary
Bug: http://b/33678192

Clang has been updated past the revisions mentioned in the work arounds.
So these seem no longer necessary.

Test: Build

Change-Id: I08fee0db7c5785836a1ad0104688245435865cb7
2017-11-02 23:37:28 -07:00
Steven Moreland
87c9d7bb8f Export test/benchmark factory symbols.
Bug: 35570956
Test: manual
Change-Id: I3dc2d7fd8876a0a222d1fc3e0f6ba27ecc2f50e8
2017-11-02 21:38:58 -07:00
Steven Moreland
578fa4a9a3 Export cc library factories. am: f9e621603b am: 9fa7f9ecc1
am: d33cce05f0

Change-Id: I8265c86087d3f75036f34c503e561bd4d96cf154
2017-11-03 02:04:38 +00:00
Steven Moreland
f9e621603b Export cc library factories.
Previously not useful, they are required to use CreateModule
to create additional libraries.

Bug: 35570956
Test: manual :)

Change-Id: Ibb6b1c0d365512fce8969e1e6237ebbed0bc9cdc
2017-11-03 00:05:54 +00:00
Vishwath Mohan
777109063f Merge "Don't install both variants for host or non-make builds." am: 845da14a35 am: 511ff4330f
am: d9f2552053

Change-Id: I275ca2f82b09ae8f390c95d0b463b63a9d174c23
2017-11-02 17:50:09 +00:00
Treehugger Robot
845da14a35 Merge "Don't install both variants for host or non-make builds." 2017-11-02 17:41:20 +00:00
Jayant Chowdhary
d55c644e96 Merge "Convert abi warnings to errors." am: 7a709dae7a am: 4845af3d41
am: e3811588b5

Change-Id: Ie07e7ac7582794c47f2ce665fe3dabecfe91578c
2017-11-02 16:58:02 +00:00
Jayant Chowdhary
7a709dae7a Merge "Convert abi warnings to errors." 2017-11-02 16:44:56 +00:00
Vishwath Mohan
e21fe42662 Don't install both variants for host or non-make builds.
This CL ensures that only one of the two generated variants are
installed for non-make builds and for host binaries.

Bug: 30227045
Test: OUT_DIR=/tmp/ndk build/soong/scripts/build-ndk-prebuilts.sh
Change-Id: I7ca78af51ea6bd3ae1107a69331abd6ff68f2150
2017-11-02 03:03:50 -07:00
Jayant Chowdhary
a3bb1b3e3b Convert abi warnings to errors.
Convert abi warnings to errors by removing the -advice-only flag from
the invocation of header-abi-diff. This will only apply to branches with
reference abi dumps checked into prebuilts/abi-dumps/(v)ndk (since
abi-diffing will only be triggered on them.)

Also allow for:

1) Extensions.
2) Changes to types in exported headers, unreferenced by public symbols still
   trigger warnings.
3) Any removal of symbols appearing in a shared library's .dynsym table, but not
   in exported headers is still a warning.

Bug: 64267858

Test: make -j64 from ToT.

Change-Id: Iadeac8d060cb693d4310afb841dc48d91f38597d
2017-11-01 17:32:26 -07:00
Vishwath Mohan
4f34146713 Revert "Revert "Build system changes for CFI (Soong)"" am: b743e9c16a am: 39375fe131
am: 2f85998479

Change-Id: I66198384659259f34b79458d9d85b2861a310288
2017-11-01 23:17:00 +00:00
Vishwath Mohan
b743e9c16a Revert "Revert "Build system changes for CFI (Soong)""
This reverts commit 33c252c2f1.

I have a fix to the crashes that this CL set was causing, and have
uploaded it as a patchset to this revert.

This also contains a partial fix that was initially submitted
separately as
https://android-review.googlesource.com/#/c/platform/build/soong/+/524295/

Bug: 30227045
Test: ./art/test/testrunner/run_build_test_target.py -j110 art-asan #no
build errors
Test: m -j50 ASAN_OPTIONS=detect_leaks=0 SANITIZE_HOST=address # no
build errors

Change-Id: I3e53549fa03413d35d9a952f04de1e7629e1f06d
2017-11-01 12:50:01 -07:00
Orion Hodson
4e628dd1ba Revert "Build system changes for CFI (Soong)" am: 33c252c2f1 am: db9c663d66
am: c39c56f06b

Change-Id: If348f5e9091bd7ae80fca87d1761594f9c6bfbb5
2017-11-01 00:53:23 +00:00
Orion Hodson
754deece71 Revert "Hide mutated variant in non-make builds." am: da11d7422f am: 062d42f4e9
am: 86fee971ea

Change-Id: If9a453c59ec3e994b0f1ba0ea795d1e308eec904
2017-11-01 00:53:13 +00:00
Orion Hodson
33c252c2f1 Revert "Build system changes for CFI (Soong)"
This reverts commit d4b484b070.

Rationale: second in group of commits that left aosp_x86_64 not
building. (See https://android-build.googleplex.com/builds/
submitted/4426589/aosp_x86_64-eng/latest/logs/build_error.log)

Bug: 30227045
Test: builds
Change-Id: I38ab5284c614d6ee68e7359219bd75c7d50131be
2017-10-31 21:01:00 +00:00
Orion Hodson
da11d7422f Revert "Hide mutated variant in non-make builds."
This reverts commit 6147c6972a.

Rationale: first in group of commits that left aosp_x86_64 not
building. (See https://android-build.googleplex.com/builds/
submitted/4426589/aosp_x86_64-eng/latest/logs/build_error.log)

Bug: 30227045
Test: builds
Change-Id: I632869d13d09b43e2040da187d7ced4f05c332de
2017-10-31 20:47:44 +00:00
Vishwath Mohan
665f603423 Hide mutated variant in non-make builds. am: 6147c6972a am: 34cb708379
am: 2f84c65d3b

Change-Id: I7012d41646618418628e3f34c318bdff86f268fb
2017-10-31 12:10:28 +00:00
Vishwath Mohan
6147c6972a Hide mutated variant in non-make builds.
This CL hides (using Module.Properties.PreventInstall) either the
sanitized or stock variant for non-make embedded builds (based on
whether a sanitizer is enabled or not) so we don't have duplicate
rules for installing the same target.

Bug: 30227045
Test: OUT_DIR=out build/soong/scripts/build-ndk-prebuilts.sh # no
longer generates a duplicate build error.

Change-Id: I0b2dbb0afd5d426b32da67f951e2a4f9fbb3f3b9
2017-10-30 20:33:41 -07:00
Vishwath Mohan
89037dddd2 Merge "Build system changes for CFI (Soong)" am: 9ee01976fe am: 33af0d78bf
am: 7a8a392974

Change-Id: I6b560262ac999f461ace5fc62bd8ab0d5c890723
2017-10-31 02:04:42 +00:00
Vishwath Mohan
9ee01976fe Merge "Build system changes for CFI (Soong)" 2017-10-31 01:42:16 +00:00
Stephen Hines
62110067b7 Switch to clang-4393122. am: 0ed7d24f7a am: bc7ab77eb9
am: a3b8634ce3

Change-Id: I537685aa802ea64842b3416f25f7520b3f5a06d8
2017-10-30 20:06:47 +00:00
Stephen Hines
0ed7d24f7a Switch to clang-4393122.
Bug: http://b/62580008
Bug: http://b/68236239
Bug: http://b/68236396
Test: https://goto.google.com/clang-4393122-testing
Change-Id: Ib6bcf93e356172aad2a762b730a6f93916a5d845
2017-10-30 16:00:44 +00:00
Vishwath Mohan
d4b484b070 Build system changes for CFI (Soong)
This CL makes multiples changes in preparation for platform-wide CFI.

(a) Adds a second -version-script=... to the command line
when building components that use a version script. This ensures that
__cfi_check is also exported, and allows CFI to be enabled for these
components.

(b) Adds both topdown and bottom up mutators for CFI to help propagate
dependencies correctly for components that may need CFI disabled.

(c) Fixes an issue with the mutators to correctly apply settings to
both generated variants

(d) Fixes issues when components have more than a single visibility
flag.

Bug: 30227045
Test: SANITIZE_TARGET=cfi m -j40 # dependencies are correctly built
                                 # with/without CFI

Change-Id: I44793cc03bcbcdaa957cc49c7240b87d7c9db327
2017-10-30 01:42:31 -07:00
Jayant Chowdhary
cc793be92b Merge "Make clang libTooling tools ignore all lto flags." am: bdb04acd57 am: 4b26316680
am: a744ff6711

Change-Id: I9ba560a610d5341b10e9dece263e97e175082ab9
2017-10-27 21:01:39 +00:00
Treehugger Robot
bdb04acd57 Merge "Make clang libTooling tools ignore all lto flags." 2017-10-27 20:42:19 +00:00
Dan Albert
6227619e54 Merge "Add support for packaging static libs in the NDK." am: 3ae6d30804 am: 33196e13c3
am: 7998e52156

Change-Id: I1ba9584d7d081ff1bc70a9a152aa96368f3eaf6f
2017-10-27 18:38:28 +00:00
Jayant Chowdhary
20f5d137ed Make clang libTooling tools ignore all lto flags.
LLVM r275480 does not recognize flto flags, suppress the option in clang
libTooling tools for now.

Bug: 62839002

Test: mma

Change-Id: Ia9d80b46320e551a93dbff780405d8ff8ad73f35
2017-10-27 11:29:52 -07:00
Treehugger Robot
3ae6d30804 Merge "Add support for packaging static libs in the NDK." 2017-10-27 18:20:31 +00:00
Dan Albert
f563d25578 Add support for packaging static libs in the NDK.
Adding `static_ndk_lib: true` to a module installs the static library
to the NDK sysroot.

Test: Set property for libc.a, make ndk
Test: Set property for libc.a, scripts/build-ndk-prebuilts.sh
Bug: https://github.com/android-ndk/ndk/issues/272
Change-Id: Ib368a25705f2adb7129dac207c1b727d4ccc1eb2
2017-10-26 12:19:29 -07:00
Dan Willemsen
208506f373 Merge "Switch instruction_set to *string" am: b563989f97 am: 4f487cdd96
am: 9d2cb72bb8

Change-Id: I43a56b7dc30ff2b1a8441efec233cbeb35109ea2
2017-10-26 07:09:23 +00:00
Treehugger Robot
b563989f97 Merge "Switch instruction_set to *string" 2017-10-26 06:56:35 +00:00
Dan Willemsen
5922f3cb6e Switch instruction_set to *string
So that the contents gets replaced when prepended/appended instead of
merged.

Test: Set instruction_set in a cc_defaults, and in a module.
Change-Id: I0f2c789231d89efa1ab053f9dc118cd19f11b0e6
2017-10-25 15:20:50 -07:00
Jiyong Park
9e272b9f69 LLNDK can re-export headers am: 2a45412445 am: 939658c4a8
am: 4d7d02483e

Change-Id: Icfb55fd76d74752ce7a44c5d27fe213439f09ddd
2017-10-25 03:15:22 +00:00
Jiyong Park
2a45412445 LLNDK can re-export headers
Added export_llndk_headers properties to llndk_library module. And a new
module type llndk_headers is added. This is to enable an LLNDK library
to reexport other LLNDK headers.

Bug: 65395259
Test: do the following
// frameworks/native/libs/arect/Android.bp
llndk_headers {
    name: "libarect_vendor_headers",
    export_include_dirs: ["include"],
}

// frameworks/native/libs/nativewindow/Android.bp
llndk_library {
    name: "libnativewindow",
    ....
    export_llndk_headers: ["libarect_vendor_headers"],
}

check that
-Iframeworks/native/libs/arect/include is in LOCAL_EXPORT_CFLAGS of
libnativewindow.vendor in out/soong/Android-<product>.mk

Change-Id: If1650414b2967f2042f4ebe2b593ed3f3ea45d3a
2017-10-25 10:30:05 +09:00