• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16package {
17    default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
20cc_library_headers {
21    name: "libberberis_runtime_primitives_headers",
22    defaults: ["berberis_all_hosts_defaults"],
23    host_supported: true,
24    export_include_dirs: ["include"],
25    header_libs: [
26        "libberberis_assembler_headers",
27        "libberberis_base_headers",
28        "libberberis_guest_state_headers",
29    ],
30    export_header_lib_headers: [
31        "libberberis_assembler_headers",
32        "libberberis_base_headers",
33        "libberberis_guest_state_headers",
34    ],
35}
36
37cc_library_static {
38    name: "libberberis_runtime_primitives",
39    defaults: ["berberis_all_hosts_defaults"],
40    host_supported: true,
41    srcs: [
42        "code_pool.cc",
43        "crash_reporter.cc",
44        "exec_region_anonymous.cc",
45        "guest_function_wrapper_impl.cc",
46        "host_entries.cc",
47        "host_function_wrapper_impl.cc",
48        "known_guest_function_wrapper.cc",
49        "platform.cc",
50        "profiler_interface.cc",
51        "recovery_code.cc",
52        "signal_queue.cc",
53        "translation_cache.cc",
54        "virtual_guest_call_frame.cc",
55    ],
56    header_libs: [
57        "libberberis_code_gen_lib_headers",
58        "libberberis_base_headers",
59        "libberberis_guest_abi_headers",
60        "libberberis_guest_state_headers",
61        "libberberis_instrument_headers",
62        "libberberis_runtime_primitives_headers",
63    ],
64    export_header_lib_headers: ["libberberis_runtime_primitives_headers"],
65}
66
67filegroup {
68    name: "berberis_memory_region_reservation_srcs",
69    srcs: [
70        "memory_region_reservation.cc",
71    ],
72}
73
74cc_defaults {
75    name: "berberis_memory_region_reservation_defaults",
76    defaults: ["berberis_all_hosts_defaults"],
77    host_supported: true,
78    srcs: [":berberis_memory_region_reservation_srcs"],
79    header_libs: [
80        "libberberis_runtime_primitives_headers",
81    ],
82    arch: {
83        x86_64: {
84            cflags: [
85                // CMPXCHG16B is not enabled for host by default at the moment.
86                // It should be always available for our use cases, though.
87                // TODO(b/123428084): Remove if it becomes the default.
88                "-mcx16",
89            ],
90        },
91    },
92    // Targets using these defaults must provide the following guest-specific fields:
93    // header_libs: ["libberberis_guest_state_<guest>_headers"],
94    // export_header_lib_headers: ["libberberis_guest_state_<guest>_headers"],
95}
96
97cc_library_static {
98    name: "libberberis_runtime_primitives_riscv64",
99    defaults: [
100        "berberis_all_hosts_defaults_64",
101        "berberis_memory_region_reservation_defaults",
102    ],
103    host_supported: true,
104    srcs: [
105        "checks_riscv64.cc",
106        "interpret_helpers_riscv64.cc",
107        "virtual_guest_call_frame_riscv64.cc",
108    ],
109    whole_static_libs: [
110        "libberberis_runtime_primitives",
111    ],
112    header_libs: [
113        "libberberis_assembler_headers",
114        "libberberis_base_headers",
115        "libberberis_guest_state_riscv64_headers",
116        "libberberis_runtime_primitives_headers",
117    ],
118    export_header_lib_headers: [
119        "libberberis_runtime_primitives_headers",
120        "libberberis_guest_state_riscv64_headers",
121    ],
122}
123
124cc_test_library {
125    name: "libberberis_runtime_primitives_unit_tests",
126    defaults: ["berberis_test_library_defaults"],
127    host_supported: true,
128    srcs: [
129        "code_pool_test.cc",
130        "exec_region_anonymous_test.cc",
131        "guest_code_region_test.cc",
132        "signal_queue_test.cc",
133        "table_of_tables_test.cc",
134    ],
135    header_libs: [
136        "berberis_test_utils_headers",
137        "libberberis_guest_state_riscv64_headers",
138        "libberberis_runtime_primitives_headers",
139    ],
140    // libgmock does not have header_lib
141    static_libs: ["libgmock"],
142}
143
144cc_test_library {
145    name: "libberberis_runtime_primitives_riscv64_unit_tests",
146    defaults: ["berberis_test_library_defaults_64"],
147    host_supported: true,
148    srcs: [
149        "memory_region_reservation_test.cc",
150        // Translation cache test relies on implementation of runtime_library
151        // function pointers to link.
152        "translation_cache_test.cc",
153        "virtual_guest_call_frame_riscv64_test.cc",
154    ],
155    header_libs: [
156        "berberis_test_utils_headers",
157        "libberberis_guest_state_riscv64_headers",
158        "libberberis_runtime_primitives_headers",
159    ],
160}
161
162cc_library_static {
163    name: "libberberis_elf_backed_exec_region",
164    defaults: ["berberis_all_hosts_defaults"],
165    host_supported: true,
166    target: {
167        bionic: {
168            srcs: ["exec_region_elf_backed.cc"],
169        },
170    },
171
172    header_libs: [
173        "libberberis_base_headers",
174        "libberberis_runtime_primitives_headers",
175        "libberberis_tinyloader_headers",
176    ],
177}
178
179// ATTENTION: do not use it outside of static tests!
180cc_library_static {
181    name: "libberberis_elf_backed_exec_region_for_static_tests",
182    defaults: ["berberis_all_hosts_defaults"],
183    host_supported: true,
184    target: {
185        bionic: {
186            srcs: ["exec_region_elf_backed_for_static_tests.cc"],
187        },
188    },
189
190    header_libs: [
191        "libberberis_base_headers",
192        "libberberis_runtime_primitives_headers",
193    ],
194}
195
196cc_test_library {
197    name: "libberberis_elf_backed_exec_region_unit_tests",
198    defaults: ["berberis_test_library_defaults"],
199    target: {
200        bionic: {
201            srcs: ["exec_region_elf_backed_test.cc"],
202        },
203    },
204    header_libs: [
205        "libberberis_base_headers",
206        "libberberis_runtime_primitives_headers",
207    ],
208}
209