Merge "Support mounting the odm image"
diff --git a/ndk/platforms/android-14/arch-arm/lib/libcompiler_rt-extras.a b/ndk/platforms/android-14/arch-arm/lib/libcompiler_rt-extras.a
new file mode 100644
index 0000000..97af575
--- /dev/null
+++ b/ndk/platforms/android-14/arch-arm/lib/libcompiler_rt-extras.a
Binary files differ
diff --git a/ndk/platforms/android-14/arch-x86/lib/libcompiler_rt-extras.a b/ndk/platforms/android-14/arch-x86/lib/libcompiler_rt-extras.a
new file mode 100644
index 0000000..310d717
--- /dev/null
+++ b/ndk/platforms/android-14/arch-x86/lib/libcompiler_rt-extras.a
Binary files differ
diff --git a/ndk/platforms/android-21/arch-arm/lib/libcompiler_rt-extras.a b/ndk/platforms/android-21/arch-arm/lib/libcompiler_rt-extras.a
new file mode 100644
index 0000000..97af575
--- /dev/null
+++ b/ndk/platforms/android-21/arch-arm/lib/libcompiler_rt-extras.a
Binary files differ
diff --git a/ndk/platforms/android-21/arch-arm64/lib/libcompiler_rt-extras.a b/ndk/platforms/android-21/arch-arm64/lib/libcompiler_rt-extras.a
new file mode 100644
index 0000000..408ca08
--- /dev/null
+++ b/ndk/platforms/android-21/arch-arm64/lib/libcompiler_rt-extras.a
Binary files differ
diff --git a/ndk/platforms/android-21/arch-x86/lib/libcompiler_rt-extras.a b/ndk/platforms/android-21/arch-x86/lib/libcompiler_rt-extras.a
new file mode 100644
index 0000000..310d717
--- /dev/null
+++ b/ndk/platforms/android-21/arch-x86/lib/libcompiler_rt-extras.a
Binary files differ
diff --git a/ndk/platforms/android-21/arch-x86_64/lib64/libcompiler_rt-extras.a b/ndk/platforms/android-21/arch-x86_64/lib64/libcompiler_rt-extras.a
new file mode 100644
index 0000000..c6a5325
--- /dev/null
+++ b/ndk/platforms/android-21/arch-x86_64/lib64/libcompiler_rt-extras.a
Binary files differ
diff --git a/vndk/tools/header-checker/header-abi-diff/src/abi_diff.cpp b/vndk/tools/header-checker/header-abi-diff/src/abi_diff.cpp
index ee3e229..eeacf3c 100644
--- a/vndk/tools/header-checker/header-abi-diff/src/abi_diff.cpp
+++ b/vndk/tools/header-checker/header-abi-diff/src/abi_diff.cpp
@@ -98,7 +98,7 @@
AbiElementMap<const abi_util::RecordTypeIR *> record_types;
// Iterate through the ODRListMap, if there is more than 1 element in the
// list, we cannot really unique the type by name, so skip it. If not, add a
- // map entry ODRListMapKey -> const Record(Enum)TypeIR *.
+ // map entry UniqueId -> const Record(Enum)TypeIR *.
for (auto &it : tu->GetODRListMap()) {
auto &odr_list = it.second;
if (odr_list.size() != 1) {
@@ -107,12 +107,14 @@
const abi_util::TypeIR *type = *(odr_list.begin());
switch (type->GetKind()) {
case abi_util::RecordTypeKind:
- record_types.emplace(type->GetLinkerSetKey(),
- static_cast<const abi_util::RecordTypeIR *>(type));
+ record_types.emplace(
+ static_cast<const abi_util::RecordTypeIR *>(type)->GetUniqueId(),
+ static_cast<const abi_util::RecordTypeIR *>(type));
break;
case abi_util::EnumTypeKind:
- enum_types.emplace(type->GetLinkerSetKey(),
- static_cast<const abi_util::EnumTypeIR *>(type));
+ enum_types.emplace(
+ static_cast<const abi_util::EnumTypeIR *>(type)->GetUniqueId(),
+ static_cast<const abi_util::EnumTypeIR *>(type));
break;
default:
// Only user defined types should have ODR list entries.
diff --git a/vndk/tools/header-checker/tests/gen_all.py b/vndk/tools/header-checker/tests/gen_all.py
index b0b3ed6..78ba2b3 100755
--- a/vndk/tools/header-checker/tests/gen_all.py
+++ b/vndk/tools/header-checker/tests/gen_all.py
@@ -16,12 +16,9 @@
INPUT_DIR = os.path.join(SCRIPT_DIR, 'input')
EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'expected')
REFERENCE_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps')
-
-DEFAULT_CFLAGS = ['-x', 'c++', '-std=c++11']
-
FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c']
-def make_and_copy_reference_dumps(module, default_cflags,
+def make_and_copy_reference_dumps(module, default_cflags=[],
reference_dump_dir=REFERENCE_DUMP_DIR):
lsdump_content = module.make_lsdump(default_cflags)
return copy_reference_dump_content(module.get_name(), lsdump_content,
@@ -45,15 +42,14 @@
output_path = os.path.join(EXPECTED_DIR, input_rel_path)
print('generating', output_path, '...')
- output_content = run_header_abi_dumper(input_path, True,
- DEFAULT_CFLAGS)
+ output_content = run_header_abi_dumper(input_path, True)
os.makedirs(os.path.dirname(output_path), exist_ok=True)
with open(output_path, 'w') as f:
f.write(output_content)
modules = Module.get_test_modules()
for module in modules:
- make_and_copy_reference_dumps(module, DEFAULT_CFLAGS)
+ make_and_copy_reference_dumps(module)
return 0
diff --git a/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h b/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h
index e852a4e..c4a7fcd 100644
--- a/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h
+++ b/vndk/tools/header-checker/tests/integration/c_and_cpp/include/c_and_cpp.h
@@ -1,7 +1,13 @@
#if INCLUDE_UNUSED_STRUCTS
+#if MAKE_UNUSED_STRUCT_C
+extern "C" {
+#endif
struct UnusedStruct {
int mUnusedMember;
};
+#if MAKE_UNUSED_STRUCT_C
+}
+#endif
#endif
class Foo {
diff --git a/vndk/tools/header-checker/tests/integration/c_and_cpp/source1.cpp b/vndk/tools/header-checker/tests/integration/c_and_cpp/source1.cpp
index 8fa6700..a90e98e 100644
--- a/vndk/tools/header-checker/tests/integration/c_and_cpp/source1.cpp
+++ b/vndk/tools/header-checker/tests/integration/c_and_cpp/source1.cpp
@@ -1,4 +1,5 @@
#include <c_and_cpp.h>
+#include <c_include.h>
Foo foo(int *a, int *b) {
// This does not make sense
diff --git a/vndk/tools/header-checker/tests/module.py b/vndk/tools/header-checker/tests/module.py
index 7c472aa..056f12e 100755
--- a/vndk/tools/header-checker/tests/module.py
+++ b/vndk/tools/header-checker/tests/module.py
@@ -137,6 +137,17 @@
api = 'current',
),
Module(
+ name = 'libc_and_cpp_with_unused_cstruct',
+ srcs = ['integration/c_and_cpp/source1.cpp',
+ 'integration/c_and_cpp/source2.c',
+ ],
+ version_script = 'integration/c_and_cpp/map.txt',
+ export_include_dirs = ['integration/c_and_cpp/include'],
+ cflags = ['-DINCLUDE_UNUSED_STRUCTS=1', '-DMAKE_UNUSED_STRUCT_C=1'],
+ arch = '',
+ api = 'current',
+ ),
+ Module(
name = 'libgolden_cpp',
srcs = ['integration/cpp/gold/golden_1.cpp',
'integration/cpp/gold/high_volume_speaker.cpp',
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump
index 406c66c..673efb5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm/libreproducability.so.lsdump
@@ -17,7 +17,7 @@
access: public_access
record_kind: struct_kind
tag_info {
- unique_id: "_ZTS11ShouldRepro"
+ unique_id: "ShouldRepro"
}
}
builtin_types {
diff --git a/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump
index 406c66c..673efb5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/arm64/libreproducability.so.lsdump
@@ -17,7 +17,7 @@
access: public_access
record_kind: struct_kind
tag_info {
- unique_id: "_ZTS11ShouldRepro"
+ unique_id: "ShouldRepro"
}
}
builtin_types {
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump
index 406c66c..673efb5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips/libreproducability.so.lsdump
@@ -17,7 +17,7 @@
access: public_access
record_kind: struct_kind
tag_info {
- unique_id: "_ZTS11ShouldRepro"
+ unique_id: "ShouldRepro"
}
}
builtin_types {
diff --git a/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump
index 406c66c..673efb5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/mips64/libreproducability.so.lsdump
@@ -17,7 +17,7 @@
access: public_access
record_kind: struct_kind
tag_info {
- unique_id: "_ZTS11ShouldRepro"
+ unique_id: "ShouldRepro"
}
}
builtin_types {
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump
index 406c66c..673efb5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86/libreproducability.so.lsdump
@@ -17,7 +17,7 @@
access: public_access
record_kind: struct_kind
tag_info {
- unique_id: "_ZTS11ShouldRepro"
+ unique_id: "ShouldRepro"
}
}
builtin_types {
diff --git a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump
index 406c66c..673efb5 100644
--- a/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump
+++ b/vndk/tools/header-checker/tests/reference_dumps/x86_64/libreproducability.so.lsdump
@@ -17,7 +17,7 @@
access: public_access
record_kind: struct_kind
tag_info {
- unique_id: "_ZTS11ShouldRepro"
+ unique_id: "ShouldRepro"
}
}
builtin_types {
diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py
index a43c227..f6a7a1f 100755
--- a/vndk/tools/header-checker/tests/test.py
+++ b/vndk/tools/header-checker/tests/test.py
@@ -14,7 +14,6 @@
run_abi_diff, run_header_abi_dumper)
from module import Module
from gen_all import make_and_copy_reference_dumps
-from gen_all import DEFAULT_CFLAGS
SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
INPUT_DIR = os.path.join(SCRIPT_DIR, 'input')
@@ -64,7 +63,7 @@
def create_ref_dump(self, name, dir_name, target_arch):
module_bare = Module.get_test_module_by_name(name)
module = Module.mutate_module_for_arch(module_bare, target_arch)
- return make_and_copy_reference_dumps(module, DEFAULT_CFLAGS,
+ return make_and_copy_reference_dumps(module, [],
dir_name)
def get_or_create_ref_dump(self, name, target_arch, dir_name, create):
@@ -135,6 +134,12 @@
"libc_and_cpp", "libc_and_cpp_with_unused_struct", 1,
['-check-all-apis'])
+ def test_libc_and_cpp_with_unused_struct_and_libc_and_cpp_with_unused_cstruct(self):
+ self.prepare_and_run_abi_diff_all_archs(
+ "libc_and_cpp_with_unused_struct",
+ "libc_and_cpp_with_unused_cstruct", 0,
+ ['-check-all-apis', '-allow-unreferenced-changes'])
+
def test_libc_and_cpp_and_libc_and_cpp_with_unused_struct_check_all_advice(
self):
self.prepare_and_run_abi_diff_all_archs(
diff --git a/vndk/tools/header-checker/utils/utils.py b/vndk/tools/header-checker/utils/utils.py
index 83cd8ee..1b8cfdf 100644
--- a/vndk/tools/header-checker/utils/utils.py
+++ b/vndk/tools/header-checker/utils/utils.py
@@ -3,6 +3,8 @@
import tempfile
import os
import subprocess
+import gzip
+import shutil
SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
AOSP_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, *['..'] * 5))
@@ -22,6 +24,9 @@
SOURCE_ABI_DUMP_EXT_END = '.lsdump'
SOURCE_ABI_DUMP_EXT = SO_EXT + SOURCE_ABI_DUMP_EXT_END
+DEFAULT_CPPFLAGS = ['-x', 'c++', '-std=c++11']
+DEFAULT_CFLAGS = ['-std=gnu99']
+
TARGET_ARCHS = ['arm', 'arm64', 'x86', 'x86_64', 'mips', 'mips64']
def get_reference_dump_dir(reference_dump_dir_stem,
@@ -45,11 +50,11 @@
def copy_reference_dump(lib_path, reference_dump_dir):
reference_dump_path = os.path.join(reference_dump_dir,
- os.path.basename(lib_path))
+ os.path.basename(lib_path)) + '.gz'
os.makedirs(os.path.dirname(reference_dump_path), exist_ok=True)
output_content = read_output_content(lib_path, AOSP_DIR)
- with open(reference_dump_path, 'w') as f:
- f.write(output_content)
+ with gzip.open(reference_dump_path, 'wb') as f:
+ f.write(bytes(output_content, 'utf-8'))
print('Created abi dump at ', reference_dump_path)
return reference_dump_path
@@ -64,6 +69,7 @@
os.makedirs(os.path.dirname(reference_dump_path), exist_ok=True)
with open(reference_dump_path, 'w') as f:
f.write(output_content)
+
print('Created abi dump at ', reference_dump_path)
return reference_dump_path
@@ -85,11 +91,17 @@
def run_header_abi_dumper_on_file(input_path, output_path,
export_include_dirs = [], cflags =[]):
+ input_name, input_ext = os.path.splitext(input_path)
cmd = ['header-abi-dumper', '-o', output_path, input_path,]
for dir in export_include_dirs:
cmd += ['-I', dir]
cmd += ['--']
cmd += cflags
+ if input_ext == '.cpp' or input_ext == '.cc' or input_ext == '.h':
+ cmd += DEFAULT_CPPFLAGS
+ else:
+ cmd += DEFAULT_CFLAGS
+
for dir in BUILTIN_HEADERS_DIR:
cmd += ['-isystem', dir]
# export includes imply local includes