Commit Graph

4020 Commits

Author SHA1 Message Date
Automerger Merge Worker
dc2db7cf20 Dedup prebuilt cc library creation am: ac6e608da7 am: eb66f93eea am: 1c723d3e21
Change-Id: I61b497048bb341af8918e62558225f76fc31607b
2019-12-12 14:45:43 +00:00
Paul Duffin
9ab556fd8e Added support for using static libraries in sdk snapshot
Parameterized the cc.librarySdkMemberType to allow it to support
both static and shared libraries. Created two instances, one for shared
and one for static libraries. A follow up change will add support for
libraries that can be both.

Added *librarySdkMemberType to nativeMemberInfo as information from
there is needed when generating the snapshot.

Made organizeVariants() func a method of *librarySdkMemberType so that
it can initialize the new field. Moved it to be with all the other
methods of that type.

Added host and device tests for the new module type.

Bug: 142918168
Test: m nothing
Change-Id: I00b1e8424b9d81f7d15edc4883971d10668ec2cc
2019-12-12 11:37:39 +00:00
Paul Duffin
ac6e608da7 Dedup prebuilt cc library creation
Bug: 142918168
Test: m checkbuild
Change-Id: I82cf3b098f024a6ab0884642b21b2238864942a2
2019-12-12 11:37:39 +00:00
Automerger Merge Worker
7000b33b2e Merge "AndroidMkEntries() returns multiple AndroidMkEntries structs" am: 8ce3c2c8df am: aefa4ba9d0 am: c9313f217b
Change-Id: Id9928fa3016190d92d41cfd8ee5f3589600e95c9
2019-12-12 04:08:03 +00:00
Treehugger Robot
8ce3c2c8df Merge "AndroidMkEntries() returns multiple AndroidMkEntries structs" 2019-12-12 03:23:06 +00:00
Automerger Merge Worker
d1a083beb9 Merge "cc_fuzz: add "data" field" am: 3606b00176 am: e6f58d4a61 am: 7fac7783c9
Change-Id: If5ecfe75959c19baba2a7355791d7bbc5b8dacae
2019-12-11 23:48:50 +00:00
Tri Vo
3606b00176 Merge "cc_fuzz: add "data" field" 2019-12-11 23:04:57 +00:00
Jiyong Park
0b0e1b9804 AndroidMkEntries() returns multiple AndroidMkEntries structs
AndroidMkEntries now returns multiple AndroidMkEntires so that a module
can emit multiple Make modules if needed.

Bug: 128708192
Test: m

Change-Id: I56b6f76d22943b80329951c5acb80a1b932441ad
2019-12-11 17:25:27 +09:00
Automerger Merge Worker
e612b4f709 Merge "Run ABI checks for shared libs exported by APEX" am: e87dae6083 am: 0fa84ea03c am: 89f3650141
Change-Id: I224f3e3b95e66ce7636af09c233997e6569100fe
2019-12-10 18:17:50 +00:00
Logan Chien
e87dae6083 Merge "Run ABI checks for shared libs exported by APEX" 2019-12-10 17:36:55 +00:00
Mitch Phillips
734b4cb62f Add $ORIGIN to fuzzer-coverage sanitized .so's.
Build fuzzer-sanitized libraries with an $ORIGIN DT_RUNPATH. Android's linker
uses DT_RUNPATH, not DT_RPATH. When we deploy cc_fuzz targets and their
libraries to /data/fuzz/<arch>/lib, any transient shared library gets the
DT_RUNPATH from the shared library above it, and not the executable, meaning
that the lookup falls back to the system. Adding the $ORIGIN to the DT_RUNPATH
here means that transient shared libraries can be found colocated with their
parents.

This may have some interesting consequences if:

 1. Your fuzz target depends on a shared library which has `sanitize.fuzzer:
 false` (as the DT_RUNPATH won't have `$ORIGIN`, and so you may get missing
 libraries).
 2. A `SANITIZE_TARGET=fuzzer` platform has a shared object in two
 different directories (like system vs. ndk) and is depending on the linker
 implementation details to resolve this in some manner.

I don't believe either of these instances should reasonably happen in
practise.

Fixes: 145973404
Fixes: 145988908
Test: m example_fuzzer
Change-Id: I94cbf628fc1ce15c43283d72bdabd9817de1fef8
2019-12-10 17:35:55 +00:00
Oliver Nguyen
1382ab6d31 Add coverage flags for Clang coverage builds.
Bug: 143977934
Test: m CLANG_COVERAGE=true
Test: m NATIVE_COVERAGE=true
Change-Id: I5d07d336e241856961eb0bc9678fdc9d5a076802
2019-12-09 16:35:15 -08:00
Andrew Chant
4b8d14df54 Merge "Revert "soong: upgrade Android platform to clang-r370808"" am: ed75f18e25 am: 26f8210a88
am: 7bc59d3d19

Change-Id: I9db811783b85f3bfc4747a1047d954d59b4ed060
2019-12-09 16:23:02 -08:00
Martin Stjernholm
213d6533cc Merge "Move/dedupe some host path functions in package_ctx.go." am: 455e3a089d am: 47a7da1485
am: 1c0a6ebb26

Change-Id: I72f384073fff467ba53a8dea9422b4296605bb26
2019-12-09 16:14:37 -08:00
Inseob Kim
af0fb31f63 Merge "Fix generated headers of snapshot" am: 8fc9eeacc8 am: 4b3e3b6720
am: e6e1e2f343

Change-Id: I95ff8bef7a4ef10c201a04f6bf0b06663320dbd0
2019-12-09 16:09:33 -08:00
Andrew Chant
ed75f18e25 Merge "Revert "soong: upgrade Android platform to clang-r370808"" 2019-12-09 23:37:23 +00:00
Treehugger Robot
455e3a089d Merge "Move/dedupe some host path functions in package_ctx.go." 2019-12-09 23:20:16 +00:00
Treehugger Robot
8fc9eeacc8 Merge "Fix generated headers of snapshot" 2019-12-09 23:15:55 +00:00
Martin Stjernholm
7260d066ea Move/dedupe some host path functions in package_ctx.go.
These functions don't need a PackageContext object.

Test: m
Bug: 145934348
Change-Id: Ia1da2c76cbad292f9ca79617199b2b5b6b265568
2019-12-09 22:04:21 +00:00
Paul Duffin
b760b4304b Pass SdkMember to AddPrebuiltModule instead of the name am: 9d8d609fcd am: 210bc6ef3d
am: 8ddf45aa00

Change-Id: I2135138f813ed489f6a6052b2c2c2d110f0a1bf7
2019-12-09 13:23:42 -08:00
Nick Desaulniers
862eb4648a Revert "soong: upgrade Android platform to clang-r370808"
This reverts commit 4f49e35902.

Causes test failures in ndk_translate.
Bug: 145807809
Bug: 145827049
Test: N/A
Change-Id: I8f42a15fec44475b74b1926c70bc98e03fe66f52
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
2019-12-09 19:16:08 +00:00
Paul Duffin
9d8d609fcd Pass SdkMember to AddPrebuiltModule instead of the name
This is needed for a follow up change that makes sure that the
prebuilt modules have the same visibility as the source modules.

Bug: 143678475
Test: m conscrypt-module-sdk
Change-Id: I9461c8c094ab19ee9ececb5e5fd50565789f2fa2
2019-12-09 13:28:36 +00:00
Jooyung Han
b90e491e2b Expose some factories for aidl_test.go
Because aidl_interface depends on some ndk modules, their factories are
exposed so that aidl_test.go can use them.

Bug: n/a
Test: m
Change-Id: I98d282cc77310d5896a7abaf3936456a14d56ccf
2019-12-09 18:21:48 +09:00
Inseob Kim
d110f878a7 Fix generated headers of snapshot
For VNDK snapshot and SDK snapshot, deps files have been used to capture
generated headers. But exported deps might contain intermediate phony
files instead of actual header files, which are for optimization of
ninja. To correctly capture all headers, exported generated header files
are gathered separately.

Bug: 65377115
Test: m nothing
Change-Id: Ia03fa69186490a818578190e3c0bfb0261d1fd6e
2019-12-09 12:38:34 +09:00
Colin Cross
da0c37bb44 Merge "Move ImageMutator after archMutator" am: e2f3b5dfe5 am: a129b29c76
am: 2e8290cfc7

Change-Id: Id08e19ede38a0eaa1999a44f3e012e19913249f3
2019-12-06 16:50:32 -08:00
Treehugger Robot
e2f3b5dfe5 Merge "Move ImageMutator after archMutator" 2019-12-07 00:37:30 +00:00
Elliott Hughes
fe50cc5ba8 Merge "Enable -Wpragma-pack warnings as errors." am: b5d11197d3 am: d06667fc1a
am: e4dd3eb114

Change-Id: I271e7892259010e3760e0080f6326c4cf2c38744
2019-12-06 14:27:27 -08:00
Elliott Hughes
b5d11197d3 Merge "Enable -Wpragma-pack warnings as errors." 2019-12-06 22:07:20 +00:00
Colin Cross
ae6c5207cc Move ImageMutator after archMutator
Move the ImageMutator to be registered just after the archMutator
in preparation for moving it between osMutator and archMutator.
Requries updating variants in a few tests that now run the
ImageMutator.

Bug: 142286466
Test: no change to build.ninja
Test: all soong tests
Change-Id: Ia9d2a7bc0e225bedec3c9a83ea04f471a931bf47
2019-12-06 12:37:14 -08:00
Paul Duffin
6e2ab7db45 Merge changes Ia7dbcd41,I93140450,I4d3fe18f,Ib00870dd,I10203594 am: 3a7caaa80c am: f44ca6b363
am: 4fe2c14a9b

Change-Id: Ib4d1eef9e11c7c10f4912fc446b538ddd229c6dd
2019-12-06 08:03:25 -08:00
Paul Duffin
1387957727 Parameterize the sdk member processing
Extracts the type specific functionality into the SdkMemberType
interface which has to be implemented by each module type that can
be added as a member of the sdk. It provides functionality to add
the required dependencies for the module type, check to see if a
resolved module is the correct instance and build the snapshot.

The latter was previously part of SdkAware but was moved because
it has to be able to process multiple SdkAware variants so delegating
it to a single instance did not make sense.

The custom code for handling each member type specific property,
e.g. java_libs, has been replaced with common code that processes
a list of sdkMemberListProperty struct which associates the
property (name and getter) with the SdkMemberType and a special
DependencyTag which is passed to the SdkMemberType when it has to add
dependencies.

The DependencyTag contains a reference to the appropriate
sdkMemberListProperty which allows the resolved dependencies to be
grouped by type.

Previously, the dependency collection methods would ignore a module if
it was an unsupported type because they did not have a way of
determining which property it was initially listed in. That meant it
was possible to add say a droidstubs module to the java_libs property
(and because they had the same variants) it would work as if it was
added to the stubs_sources property. Or alternatively, a module of an
unsupported type could be added to any property and it would just be
ignored.

However, the DependencyTag provides information about which property
a resolved module was referenced in and so it can detect when the
resolved module is of the wrong type and report an error. That check
identified a bug in one of the tests where the sdk referenced a
java_import module (which is not allowed in an sdk) instead of a
java_library module (which is allowed). That test was fixed as part
of this.

A list of sdkMemberListProperty structs defines the member properties
supported by the sdk and are processed in order to ensure consistent
behaviour.

The resolved dependencies are grouped by type and each group is then
processed in defined order. Within each type dependencies are grouped
by name and encapsulated behind an SdkMember interface which includes
the name and the list of variants.

The Droidstubs and java.Library types can only support one variant and
will fail if given more.

The processing for the native_shared_libs property has been moved into
the cc/library.go file so the sdk package code should now have no type
specific information in it apart from what is if the list of
sdkMemberListProperty structs.

Bug: 143678475
Test: m conscrypt-module-sdk
Change-Id: I10203594d33dbf53441f655aff124f9ab3538d87
2019-12-06 12:16:59 +00:00
Jiyong Park
7cfc8613a4 Merge "apex_available is defaultable" am: cea93afe76 am: f8bde14a30
am: b80bcbae27

Change-Id: Ic262f9b6ef94acbc2109e8d21e68ae5a2f36175d
2019-12-06 01:11:13 -08:00
Ivan Lozano
587697c3fb Merge "Exclude dirs from binder interface whitelisting" am: 1fdb0b55a5 am: cc9c86c35e
am: 450180fedf

Change-Id: I27163dde20667333700e6bd4cc1ad8da739a17e4
2019-12-06 00:58:08 -08:00
Mitch Phillips
03b84f7063 Merge "Fix cc_fuzz ignoring soong namespaces." am: 5eb62bc2fe am: 8e83eb03c7
am: 71d1368552

Change-Id: I472f59e4aa76eda1dbb57f0aafedc8170a2a902a
2019-12-06 00:43:22 -08:00
Nick Desaulniers
0d1f2ae0b4 Merge "soong: upgrade Android platform to clang-r370808" am: ac0336d81f am: e350a6bf35
am: b02c16c39b

Change-Id: I3d0d22be63ede77455bc1be0307b0ce82bf3d847
2019-12-06 00:43:06 -08:00
Treehugger Robot
cea93afe76 Merge "apex_available is defaultable" 2019-12-06 04:23:37 +00:00
Ivan Lozano
1fdb0b55a5 Merge "Exclude dirs from binder interface whitelisting" 2019-12-06 02:25:10 +00:00
Tri Vo
ad172d88b6 cc_fuzz: add "data" field
"data" field specifies data dependencies that will be installed in
fuzzer's output directory.

"data" behaves similar to "corpus", except "data" preserves directory
structure, e.g.

    data: ["foo/bar.txt"]

is installed into

    $OUT/data/fuzz/<arch>/<target>/data/foo/bar.txt

Test: build a fuzzer with data depenency, check data is installed
correctly
Change-Id: Ia1255026278435181b6d93f91f8f9ad39c96d07f
2019-12-05 14:45:51 -08:00
Treehugger Robot
5eb62bc2fe Merge "Fix cc_fuzz ignoring soong namespaces." 2019-12-05 21:41:41 +00:00
Nick Desaulniers
ac0336d81f Merge "soong: upgrade Android platform to clang-r370808" 2019-12-05 20:12:08 +00:00
Mitch Phillips
6a9bf214f9 Fix cc_fuzz ignoring soong namespaces.
cc_fuzz ignored soong namespaces, and built all cc_fuzz modules into the
architecture package. This caused naming conflicts where two modules had
the same name but were in different namespaces.

Now, cc_fuzz will only build modules that are in the same namespace as
the product definition - resolving the duplicate definitions error.

Bug: 145240569
Test: m haiku
Change-Id: I0a0acd139426301586ac5e3aba8ce5527cb7a1b5
2019-12-05 09:38:56 -08:00
Ivan Lozano
d094d4006f Exclude dirs from binder interface whitelisting
Exclude vendor/ and hardware/ from the manually written binder interface
whitelist.

Bug: 136279235
Test: interfaces in excluded directories are not checked against whitelist.
Change-Id: I0d640e23489b37d0c0787d5fca6bcdab10034109
2019-12-04 09:10:21 -08:00
Elliott Hughes
2cdbdf1093 Enable -Wpragma-pack warnings as errors.
The use of pragma pack(1) affects the packed-ness of every struct
definition that follows it in the translation unit, even in following
header files. This can lead to multiple translation units disagreeing
on whether a struct is packed.

Enable the warnings (as errors) that help spot this problem.

Bug: http://b/73971777
Test: treehugger
Change-Id: Id3096f35dff5dc8723d30d1305f1ed7ae8190a32
2019-12-04 08:48:45 -08:00
Logan Chien
e274fc9892 Run ABI checks for shared libs exported by APEX
This commit enables ABI checks for shared libs exported by APEX and
explicitly enabled ABI checks.

Bug: 145608479
Test: m com.android.resolv
Change-Id: I3b58178b0258df35fcc848e84642152516f6774f
2019-12-04 15:26:37 +00:00
Automerger Merge Worker
7a6199666f Merge "Add -instcombine-lower-dbg-declare to hwasan flags." am: e643cd2b61 am: f23fd9f1f9
Change-Id: If8f9d343d956a5cad6932e478714fbcbba1227cf
2019-12-03 02:41:55 +00:00
Treehugger Robot
e643cd2b61 Merge "Add -instcombine-lower-dbg-declare to hwasan flags." 2019-12-03 02:19:08 +00:00
Jiyong Park
3814f4df2b apex_available is defaultable
Previously, it was defaultable only for cc_library. Now, it is
defaultable for all module types.

Bug: 128708192
Test: m
Change-Id: If248f593da6f4b724bf889ccd7f2e077d48069b5
2019-12-02 13:48:33 +09:00
Nick Desaulniers
4f49e35902 soong: upgrade Android platform to clang-r370808
-Wc99-designators warns for the use of nested and array initializers in
C++20 code. Many internal projects have pushed back against this
warning.

Disables:
- -Wimplicit-int-float-conversion
- -Wpointer-compare
- -Wxor-used-as-pow
- -Wfinal-dtor-non-final-class
- -Wreorder-init-list

For projects under external/, vendor/, etc, but only if they use
Android.bp (not Android.mk) and -Wreorder-init-list may be re-enabled by
-Wall if set locally.

-Wno-incomplete-setjmp-declaration is needed for NDK stubs that get
generated (functions without full definitions of their parameters).

Sets
- -Wno-error=implicit-int-float-conversion
- -Wno-error=reorder-init-list
for all projects in order to unblock landing the compiler upgrade due to
internal projects not being able to disable or fix these before the
upgrade.

Bug: 139945549
Test: build (aosp_crosshatch, crosshatch, aosp_x86_64-eng,
  walleye), boot internal devices, bionic + RS atests, kernel builds.
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>

Change-Id: I18e3c0eb657fd59824526f36c6dd57bdcf0526ba
2019-11-26 10:09:15 -08:00
Steven Moreland
1f1b4f6e55 Merge "vndkMustUseVendorVariantList += vintf-vibrator" am: 16fc49db61 am: 3443e7df09
am: 9d05d7e823

Change-Id: Ia7aa7d28f71d7b68bda4a51ac077de70bbfbc1b5
2019-11-25 15:50:17 -08:00
Steven Moreland
16fc49db61 Merge "vndkMustUseVendorVariantList += vintf-vibrator" 2019-11-25 23:42:48 +00:00