ABI monitoring only needs to be configured for core kernel build targets. Mixed build configurations (ones that define base_kernel
) that compile directly with the GKI kernel only need to add support for tracking the device symbol list. The ABI definition should be updated using the GKI build.
To set up the device symbol list, update the relevant targets in BUILD.bazel
.
kernel_build
targetAdd these attributes to the kernel_build
target for KMI symbol list support:
kmi_symbol_list
: The KMI symbol list for the device, e.g. "//common:android/abi_gki_aarch64_virtual_device"
.kernel_abi
targetAdd a new kernel_abi
target. The target should usually be named {name}_abi
by convention, where {name}
is the name of the kernel_build
target.
Add these attributes to the kernel_abi
target for KMI symbol list support:
kernel_build
: point to the kernel_build
target.kernel_modules
: The list of external modules. This should be consistent with the kernel_modules_install
target.You may optionally define the following:
define_abi_targets
True
by default. If False
, ABI monitoring is disabled.android-mainline
and a KMI frozen branch.module_grouping
kmi_symbol_list_add_only
kmi_enforced
See documentation for explanation of the kernel_abi
rule and its attributes: API Reference and Documentation for all rules.
See virtual_device_aarch64_abi
in common-modules/virtual-device/BUILD.bazel for an example.
Similar to updating the KMI symbol list for GKI, you may update the kmi_symbol_list
defined previously with the following.
$ tools/bazel run //path/to/package:{name}_abi_update_symbol_list
In the above example for virtual_device_aarch64, the command is
$ tools/bazel run //common-modules/virtual-device:virtual_device_aarch64_abi_update_symbol_list
This updates common/android/abi_gki_aarch64_virtual_device
file.
After the KMI symbol list updated you may update the ABI definition at common/android/abi_gki_aarch64.stg
with the following command:
$ tools/bazel run //common:kernel_aarch64_abi_update
See abi.md#update-abi.
NOTE: Do not update the ABI definition via the virtual_device_aarch64_abi_update
target! The ABI definition should always be updated via the GKI kernel_aarch64_abi_update
target.