1) Also, emit all mangled symbols for constructors.
2) Add a shared object file parser to libheader-abi-util to filter out
functions and global variables without DEFAULT or PROTECTED visibility.
3) Update expected tests.
Bug: 62721815
Bug: 62463617
Bug: 62307940
Test: Build libclang with "-UNDEBUG", mm -j64 on external/libcxx
Test: Both C1 and C2 constructors are generated for records.
Change-Id: Id5440a647fe41d27cb857a7d0e06429e28e45d8b
This commit adds --enumerate to deps-closure so that a user can print
the dependency closure for each specified libraries or all libraries.
Bug: 62644173
Test: ./vndk_definition_tool.py deps-closure \
--system ... --vendor ... --enumerate
Change-Id: I18bb27be10c565538356f774cc6752f8cfc79bd4
This commit adds --revert flag to deps-closure so that a user can list
the transitive users of a library.
Bug: 62644173
Test: ./vndk_definition_tool.py deps-closure --revert /system/lib/libc.so ...
Change-Id: I03aab8d629c88074d6111659853b1396d87326ad
This commit fixes a check-dep bug introduced by 7e723126e4. In
7e723126e4, graph.lib_pt[PT_VENDOR].values() was changed to return an
iterator instead of a set. This means we can only traverse the iterator
once, thus vendor-to-vendor dependencies were treated as ineligible
dependencies. This commit fixes the problem by creating a set() object
from the iterator, so that `vendor_libs` can be used several times.
This also makes it faster to lookup an object.
Test: Run `vndk_definition_tool.py check-dep` against sailfish images
and vendor-to-vendor dependencies should not show up.
Change-Id: I3b36efa635220941278c491b83f308a65e9f0ffe
This commit generalizes tag file support so that deps-insight won't
follow the dependencies to ineligible vndk-sp/vndk libs.
Bug: 37867089
Test: libandroid.so will not be tagged as vndk in the html output of
deps-insight tool.
Change-Id: I5482a45acf4232ae7fac1210043ca868b28211ff
This commit adds the --output-format option to vndk command. When
`make` is specified, VNDK definition tool will fill in the placeholders
in the boilerplates and print a make file to stdout.
Bug: 37867089
Test: ./vndk_definition_tool.py vndk --output-format=make ...
Change-Id: I0185e1690264d0cefafa8536db2e0cf34daaeee0
This commit adds extra_vendor_libs and removes extra_vndk_sp_indirect.
With this modification, we can tag each libraries with either vndk_ext,
extra_vendor_libs, vndk_sp_ext or vndk_sp_indirect_ext.
After tagging them precisely, we merge them into vndk_sp, vndk_sp_ext
and extra_vendor_libs before printing the simplified VNDK list. This
will give us accurate tags when --full is specified and give concise
tags when --full is not specified.
Bug: 37867089
Test: 3 essential sets are printed when --full was not specified.
Change-Id: Ic17c5e1dd4420050217e9724f86516c21609f899
This commit removes `follow` option from the default actions to handle
ineligible vndk and vndk-sp usages. We prefer to stop at ineligible
libs instead of pulling all ineligible dependencies.
Bug: 37867089
Test: libandroid.so is not tagged as vndk by default with sailfish images.
Change-Id: Iafeb27bb2c658fc07916517033fbedcc9cdd84eb
This commit adds libz.so back to LL-NDK because the change to move
libz.so to VNDK-SP breaks some CTS testcases (which assume there is only
one libz.so under /system/lib[64].)
Whether this is a short-term temporary fix or a long-term solution will
be discussed or updated in b/37617391.
Bug: 62195853
Bug: 37867089
Bug: 37617391
Test: ./tests/test_ndk_libs.py
Test: ./tests/run.py
Test: libz.so tagged as LL-NDK with sailfish images.
Change-Id: I526f653e6141d658ee19e79eefd44d379ecac0dc
This commit implements the VNDK-SP-Ext properly so that the output will
copy missing VNDK-SP-Indirect to /vendor/lib[64]/vndk-sp.
Bug: 37867089
Bug: 37940694
Test: Add/remove generic reference dump and make sure vndk-sp libs will
be listed as extra_vndk_sp_indirect.
Change-Id: I76bc41e189e566c66c6f96db9555d366921b7995
This commit collects all non-AOSP system libraries that are used by
vendor modules and add them to vndk-ext so that they are copied into
vendor partition.
Bug: 37867089
Test: Some vendor HIDL interface libs are tagged with vndk-ext given
sailfish images.
Change-Id: I77d8f66d97b403991593d5b1f88573411e96d679
This commit excludes vndk-sp libraries from vndk result sets. This CL
eliminates several false warnings on vendor usages on libhwbinder.so
Bug: 37867089
Test: Warnings on libhwbinder.so usages disappeared given sailfish
images.
Change-Id: Icc3b07bc6a57e41a3fcbaf116c1316f77e7a439d
This commit removes vndk-sp-indirect libs from vndk-sp-unused. They
are actually being used (although indirectly).
Bug: 37867089
Test: libhwbinder.so is removed from vndk-sp-unused given sailfish images.
Change-Id: I7a3b253408c53f1d81d1fea39f79e3fe09f6fb75
This commit adds (?:vndk-sp)? to FWK-ONLY-RS matching because some
targets have a copy of libft2.so in /system/lib[64]/vndk-sp but we still
want to treat it as FWK-ONLY-RS.
Bug: 37867089
Test: libft2.so is not labeled as vndk-sp-indirect in sailfish image.
Change-Id: Iad5db6417573f3e25bad5c027cb547d9df4be23a
This commit excludes VNDK-SP and VNDK libs from LL-NDK-INDIRECT and
SP-NDK-INDIRECT libs because in the degenerated VNDK design, FWK-ONLY
libs and VNDK libs share the same file.
Bug: 37867089
Test: All eligible VNDK libs are not tagged with LL-NDK-Indirect and
SP-NDK-Indirect with sailfish image.
Change-Id: I05b20e9d21543d63c1e75896f20e49c3dc0d70de
This commit extracts the code to parse the action when ineligible
vndk-sp or vndk libs occur.
Bug: 37867089
Test: All --action-ineligible-vndk-sp options worked as usual.
Test: All --action-ineligible-vndk options worked as usual.
Change-Id: Ifc06598b1acff828479d804323711ae0da6e7215
This commit replaces a vndk_indirect with vndk because we are computing
the indirect dependencies of vndk (i.e. closure(vndk) - vndk).
Bug: 37867089
Test: vndk-indirect libs are printed with sailfish images.
Change-Id: I218333c7dbb2a372cc9d170f34674510cc01aa0e
Fixed bug where modules with _int in their name are parsed incorrectly
Test: make >log 2>&1 && parse-and-fix-error.sh
Change-Id: Id42c7dd87e66b0932d7def7e01ca84b35d962e27
This commit adds --system-dir-ignored option so that the user can
ignore /system/vendor directory and run the following command on some
devices:
python3 vndk_definition_tool.py vndk \
--system ${ANDROID_PRODUCT_OUT}/system \
--system-dir-ignored vendor \
--vendor ${ANDROID_PRODUCT_OUT}/vendor
Test: ./tests/run.py
Test: Add --system-dir-ignored to make sure /system/vendor on some
devices are not treated as system modules.
Change-Id: I45a82bf81f2e2a6b34c146310f53d47dfe2313c3
This commit updates readme instructions to match with the simplified
VNDK in O workflow.
Test: Run the described command lines with sailfish directories.
Change-Id: I80f3ee4eac34fae772ba6c336e457f537cb8312c
This commit implements the degenerated directory layout for o-release.
This commit also simplifies the output significantly.
Test: Run vndk_definition_tool.py against o-release images.
Change-Id: I5aad29fa4ff7e819778d26d2e2011af1be61bb58
This commit adds TaggedLibDict to read eligible list from CSV files and
decide whether a lib is visible to another module.
Note: The file format for eligible-list.csv has been changed. Prepend
library names with `/system/${LIB}/`, e.g. `/system/${LIB}/libc.so`.
Test: ./tests/test_tagged_lib_dict.py
Test: ./tests/run.py
Change-Id: Id415642b7a5609a3cf791364519a443a6c17c1a3
This commit adds libvndksupport.so to LL-NDK list. libvndksupport.so
is a wrapper library over some platform-only libdl.so APIs.
Test: ./tests/test_ndk_libs.py
Change-Id: I25465f6d94441a22da3bf9a7c8417e2388c764da
This commit updates the vndk-sp list according to b/36705501. Some
libs are still under discussion and might be removed in the future.
Bug: 36705501
Test: ./tests/test_elf_linker.py
Change-Id: I55d4b4e31ac326218f2048f69b7a9a2c51045291
This commit removes `--warn-high-level-ndk-deps` and
`--warn-banned-vendor-lib-deps`. These options are removed in favor of
the eligible vndk list. In next CL, a user can specify an eligible VNDK
list with `--tag-file`. VNDK definition tool will print warnings if
vendor modules are using ineligible framework libraries.
Test: ./tests/run.py
Change-Id: I0bb11de70c93f1447bb041561e80e342aa400fd4
This commit adds `--aosp-system` option to simplify the command line
usages. The user can specify the aosp image system directory directly
and skip the `create-generic-ref` subcommand.
Test: Compare the output with `--load-generic-refs` and `--aosp-system`.
Change-Id: Ibb76bd59ea504808545775562feefcd8a95ee267