This commit adds VTableLayoutDiffIR::IsExtended() that determines
whether the difference is a pure extension, i.e., appending virtual
functions to vtables.
Test: ./test.py
Bug: 248418092
Change-Id: I339713c5fff1dfa50dc7875272c0e3a59f858f57
The instructions are organized into a section. The developers who need
to resolve ABI difference can easily find it.
Test: None
Bug: 244520027
Change-Id: I211de0e1f65eece093fe716122753ea795c43b3e
Bug: http://b/241011085
Create symlink lib -> lib64 as toolchain libraries have a RUNPATH pointing
to $ORIGIN/../lib instead of lib64
Test: presubmit with new clang-tools prebuilts
Change-Id: I90973fc756b9489a16a0837473b86e728f50d8e0
The types defined in more than one source file are identified with
"#ODR:" and the source paths. The paths can be in intermediate
directories and differ between build targets. They cause ABI check
failure on opaque types. This commit fixes the bug by removing the
suffixes before the comparison.
Test: make libcamera2ndk
Bug: 253095767
Change-Id: I79e6e843460c981afcf2ce0e0d2ad9335d0b3e90
Function parameters can be opaque and have no size information. For
example, __va_list in AArch64 ABI. header-abi-diff considers opaque
types compatible if their mangled names are the same.
The mangled name of __va_list can be _ZTI9__va_list or _ZTISt9__va_list.
They are also compatible.
Test: ./test.py
Bug: 248418092
Change-Id: I812abcabb620301eb575c54c7e3d2ff63dade488
- Remove "VNDK" from the message.
- Deprecate -elf-unreferenced-symbol-errors.
- Fix the status string for CompatibilityStatusIR::UnreferencedChanges.
Test: ./test.py
Bug: 249324120
Change-Id: I5a1fd64f9101caa29d87d9f65bd4d17b8bd77059
This commit removes the comparison between class size and member offsets
from RecordTypeDiffIR::IsExtended. New members can be added to padding
space in a class without changing the existing members.
Test: ./test.py
Bug: 248418092
Change-Id: I34d002478f1dcfd3c183e76899917e602de2b4c1
Resizing the parameters or return types changes the stack layout. It
is not an allowed extension to functions.
AbiDiffHelper::CompareFunctionTypes additionally checks the sizes of the
parameters and the return types. The difference cannot be ignored by
-allow-extensions. The user who intends to ignore the difference should
specify -ignore-symbols or -ignore-linker-set-key.
Test: ./test.py
Bug: 248418092
Change-Id: Ibef3b9260504afff3fc0260b0565736133b8e0dc
This commit adds RecordTypeDiffIR::IsExtended() that determines whether
the difference is a pure extension, i.e., appending members and
increasing the size. The extensions are stored in
record_type_extension_diffs in abi_diff messages. They can be ignored by
specifying -allow-extensions.
Test: ./test.py
Bug: 248418092
Change-Id: Ibdef042c6176dc84d2dd61f71a3f88035e943dd4
RecordTypeDiff and EnumTypeDiff in abi_diff.proto contain linker set
keys. The developers can copy them to the ignore list. The other Diff
messages do not need the field because it's in the messages imported
from abi_dump.proto.
Test: Update prebuilts/clang-tools; make libz
Bug: 243903630
Change-Id: I1e90d3c6cbfd09d72b3fdb244a4079ae899630aa
The tools have not been maintained since Android 11.
vndk-lib-extra-list-*.txt are not deleted because VTS depends on them.
Test: make
Bug: 247032590
Change-Id: Iafaf98d13e77edea34a45c84ac44804703aa6d24
Sometimes developers may want to ignore some incompatible changes in ABI
because it is safe for some reason. An option should be added to
header-abi-diff so it ignores these LinkerSetKeys passed from cli or
config file.
Test: perform abi diff on libz with abi-dump version 33 with the LinkerSetKey _ZTI14internal_stat is specified.
Bug: 243903630
Change-Id: Iccc79d648ae17634a987faac32a2a7cbaa784e5c
NDK and platform Libraries are required to ensure the compatibility
across SDK version. However, some changes of a library that break its
ABI compatibility are necessary. Thus a ignored_linker_set_keys option
is added to let developers to skip some symobls.
Test: no need
Bug: 243903630
Change-Id: If6ca665189fdeec7c3e735a0f691dffd180ddc63
Add description of the config format and logic for developer to add
flags to header-abi-diff in Cross-Version ABI Check.
Test: no need
Bug: 239790286
Change-Id: I5b8fbe57aaafd1357495395a416a5d6b51f0ff3f
Skip loading config.json when the config.json is not found so the
header-abi-diff will still perform abi diff.
Test: preform abi diff without config.json
Bug: 243328443
Change-Id: I92ebf7e7bfe6abb57bdefa211eaf604efaee517e
Enable the Cross-Version ABI diff configuration so developers can
specify different flags for current and previous version ABI Check. The
-target-version flag were added to determine the config section to be
selected. The details of this configuration logic could be found in
go/cross-version-abi-diff-configuration.
Test: preform abi diff with config.json
Bug: 239792343
Change-Id: I8fdad2d18096cfa7866183ecc2d7826682c85eb6
Since Cross-Version ABI Check is introduced, the flags could be
different when diffing with previous or current dumps. The structure and
format of the newly proposed config are changed so users can configure
flags for different diff targets. This CL changes the config format from
.ini to .json with the same features the format of the json is described
in go/cross-version-abi-diff-configuration.
Test: preform abi diff with config.json
Bug: 239792343
Change-Id: I731bafbfdacd2a780c5f7a27997893cecb2eb1f3
This fixes a bug for the VNDK license collector that fails to get the
license kinds when a path is given.
Bug: 192434786
Test: python3 development/vndk/snapshot/gen_buildfiles.py -vv 29
Change-Id: I101b08b97cfc1229f4e0c67fa66341d4b49fa201
header-checker build may use an older version of clang than the platform
version, causing errors for unknown cflags. Setting the env var allows
these errors to be suppressed.
Test: presubmit
Change-Id: Icf08ec5913f5608ffc1e14daf3e6ed71610f733a
The module is a host python binary with embedded launcher. It is
independent of the python runtime installed on the OS.
Test: m create_reference_dumps && \
create_reference_dumps -products aosp_x86_64 -libs libc
Bug: 238984913
Change-Id: Ie84ef5c78cec978f83a2bddb370978fb962de4bd
* changes:
Refactor GetRefDumpDirStem to avoid excessive arguments passing
Generate dumps for non-VNDK into folder that matches Cross-Version ABI Check mechanism
Generate LLNDK ABI dumps to platform/ instead of vndk/
The arguments required by function get_ref_dump_dir_stem() would be
carried all the way to get_ref_dump_dir_stem(). In this CL, the logic
of get_ref_dump_dir_stem() would be wrapped into a class so that the
other functions can be cleaner.
Test: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py --llndk -l libvndksupport -l libbinder_ndk -l libprocinfo
Bug: 238828401
Change-Id: If1ccc3d9de0408c5e1ef252412630df341d38e14
The dumps of non-VNDK was generated to PLATFORM_SDK_VERSION. To enable
the Cross-Version ABI Check, before finalization (when
PLATFORM_VERSION_CODENAME is not REL), dumps should be generate to
current/ no matter what PLATFORM_SDK_VERSION is; After finalization,
dumps should be generate to PLATFORM_SDK_VERSION/.
Test: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py \
--llndk -l libvndksupport -l libbinder_ndk -l libprocinfo
Bug: 238573414
Change-Id: I198bf3e1fb1382a9378dcde16deb9262f0eb9f64
Since vndk libraries don't need to maintain Cross-Version abi
compatibility. The newly proposed Cross-Version ABi checking mechanism
is applied to only ndk/ and platform/. The dumps of LLNDK libraries
should be generated to platform/ to be benefited from this checking
mechanism.
Test: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py \
--llndk -l libvndksupport
Bug: 238383972
Change-Id: I0d903c16eecfd57001a539c14bd4d6945c148e3c