blob: 37157fd3311ccadead1bf4c3fff66295400462c0 [file] [log] [blame]
Bob Badouraa7d8352021-02-19 13:06:22 -08001package {
Aditya Choudharyd9d37c02024-02-02 13:57:12 +00002 default_team: "trendy_team_native_tools_libraries",
Bob Badouraa7d8352021-02-19 13:06:22 -08003 default_applicable_licenses: ["bionic_linker_license"],
4}
5
6license {
7 name: "bionic_linker_license",
8 visibility: [":__subpackages__"],
9 license_kinds: [
10 "SPDX-license-identifier-BSD",
11 ],
12 license_text: [
13 "NOTICE",
14 ],
15}
16
Elliott Hughesb1b2e372024-07-08 14:27:46 +000017linker_common_flags = [
18 "-fno-stack-protector",
19 "-Wstrict-overflow=5",
20 "-fvisibility=hidden",
21 "-Wall",
22 "-Wextra",
23 "-Wunused",
24 "-Werror",
25]
26
Elliott Hughes4b5d62e2024-06-20 16:21:08 +000027// ========================================================
28// linker_wrapper - Linux Bionic (on the host)
29// ========================================================
30
31// This is used for bionic on (host) Linux to bootstrap our linker embedded into
32// a binary.
33//
34// Host bionic binaries do not have a PT_INTERP section, instead this gets
35// embedded as the entry point, and the linker is embedded as ELF sections in
36// each binary. There's a linker script that sets all of that up (generated by
37// extract_linker), and defines the extern symbols used in this file.
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070038cc_object {
39 name: "linker_wrapper",
40 host_supported: true,
41 device_supported: false,
Colin Crossda446cc2022-03-08 15:07:57 -080042 enabled: false,
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070043 target: {
Elliott Hughesd50a1de2018-02-05 17:30:57 -080044 linux_bionic: {
45 enabled: true,
46 },
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070047 },
48
Elliott Hughesb1b2e372024-07-08 14:27:46 +000049 cflags: linker_common_flags,
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070050
51 srcs: [
52 "linker_wrapper.cpp",
53 ],
54 arch: {
Jiyong Park3b47d602020-09-18 16:15:53 +090055 arm64: {
Colin Crossa0a591a2021-06-11 12:46:45 -070056 srcs: ["arch/arm64/linker_wrapper_begin.S"],
Jiyong Park3b47d602020-09-18 16:15:53 +090057 },
Elliott Hughes3e4f6032022-10-22 03:54:59 +000058 riscv64: {
59 srcs: ["arch/riscv64/linker_wrapper_begin.S"],
60 },
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070061 x86_64: {
Colin Crossa0a591a2021-06-11 12:46:45 -070062 srcs: ["arch/x86_64/linker_wrapper_begin.S"],
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070063 },
64 },
65
Martin Stjernholm82d84bc2020-04-06 20:32:09 +010066 header_libs: ["libc_headers"],
67
Dan Willemsen7ccc50d2017-09-18 21:28:14 -070068 // We need to access Bionic private headers in the linker.
69 include_dirs: ["bionic/libc"],
70}
71
Ryan Prichard80e40f02019-10-31 19:54:46 -070072// ========================================================
73// linker default configuration
74// ========================================================
75
76// Configuration for the linker binary and any of its static libraries.
77cc_defaults {
78 name: "linker_defaults",
79 arch: {
80 arm: {
81 cflags: ["-D__work_around_b_24465209__"],
82 },
83 x86: {
84 cflags: ["-D__work_around_b_24465209__"],
85 },
86 },
87
Elliott Hughesb1b2e372024-07-08 14:27:46 +000088 cflags: linker_common_flags,
89 asflags: linker_common_flags,
Ryan Prichard80e40f02019-10-31 19:54:46 -070090
91 product_variables: {
92 debuggable: {
93 cppflags: ["-DUSE_LD_CONFIG_FILE"],
94 },
95 },
96
97 cppflags: ["-Wold-style-cast"],
98
99 static_libs: [
100 "libziparchive",
101 "libbase",
102 "libz",
103
104 "libasync_safe",
105
Jiyong Park7157dfb2022-08-19 13:09:18 +0900106 "liblog_for_runtime_apex",
Ryan Prichard80e40f02019-10-31 19:54:46 -0700107 ],
108
109 // We need to access Bionic private headers in the linker.
110 include_dirs: ["bionic/libc"],
111}
112
113// ========================================================
114// linker components
115// ========================================================
116
117// Enable a module on all targets the linker runs on (ordinary Android targets, Linux Bionic, and
118// native bridge implementations).
119cc_defaults {
120 name: "linker_all_targets",
121 defaults: ["linux_bionic_supported"],
122 recovery_available: true,
Yifan Hongb04490d2020-10-21 18:36:36 -0700123 vendor_ramdisk_available: true,
Ryan Prichard80e40f02019-10-31 19:54:46 -0700124 native_bridge_supported: true,
125}
126
127cc_library_static {
Ryan Prichard249757b2019-11-01 17:18:28 -0700128 name: "liblinker_main",
Elliott Hughes1eacc0e2024-01-19 19:05:36 +0000129 defaults: [
130 "linker_defaults",
131 "linker_all_targets",
132 ],
Ryan Prichard249757b2019-11-01 17:18:28 -0700133 srcs: ["linker_main.cpp"],
134
135 // Ensure that the compiler won't insert string function calls before ifuncs are resolved.
136 cflags: ["-ffreestanding"],
Spandan Das0a6cfe92024-01-04 18:06:50 +0000137 apex_available: [
138 "com.android.runtime",
139 ],
Ryan Prichard249757b2019-11-01 17:18:28 -0700140}
141
142cc_library_static {
Ryan Prichard80e40f02019-10-31 19:54:46 -0700143 name: "liblinker_malloc",
Elliott Hughes1eacc0e2024-01-19 19:05:36 +0000144 defaults: [
145 "linker_defaults",
146 "linker_all_targets",
147 ],
Ryan Prichard80e40f02019-10-31 19:54:46 -0700148 srcs: ["linker_memory.cpp"],
Spandan Das0a6cfe92024-01-04 18:06:50 +0000149 apex_available: [
150 "com.android.runtime",
151 ],
Ryan Prichard80e40f02019-10-31 19:54:46 -0700152}
153
154cc_library_static {
155 name: "liblinker_debuggerd_stub",
Elliott Hughes1eacc0e2024-01-19 19:05:36 +0000156 defaults: [
157 "linker_defaults",
158 "linker_all_targets",
159 ],
Ryan Prichard80e40f02019-10-31 19:54:46 -0700160 srcs: ["linker_debuggerd_stub.cpp"],
161}
162
163// ========================================================
164// template for the linker binary
165// ========================================================
166
dimitryb8b3a762018-09-25 12:31:11 +0200167filegroup {
168 name: "linker_sources",
Colin Cross97f0aef2016-07-14 16:05:46 -0700169 srcs: [
170 "dlfcn.cpp",
171 "linker.cpp",
Elliott Hughes838dbac2023-08-22 14:07:48 -0700172 "linker_auxv.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700173 "linker_block_allocator.cpp",
Dimitry Ivanov769b33f2016-07-21 11:33:40 -0700174 "linker_dlwarning.cpp",
Evgenii Stepanov0a3637d2016-07-06 13:20:59 -0700175 "linker_cfi.cpp",
Dimitry Ivanov4cabfaa2017-03-07 11:19:05 -0800176 "linker_config.cpp",
Ryan Prichard551565e2019-12-23 16:03:14 -0800177 "linker_debug.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700178 "linker_gdb_support.cpp",
Dimitry Ivanov48ec2882016-08-04 11:50:36 -0700179 "linker_globals.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700180 "linker_libc_support.c",
Dimitry Ivanov451909d2017-01-26 16:52:59 -0800181 "linker_libcxx_support.cpp",
Dimitry Ivanovb943f302016-08-03 16:00:10 -0700182 "linker_namespaces.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700183 "linker_logger.cpp",
184 "linker_mapped_file_fragment.cpp",
Tamas Petz8d55d182020-02-24 14:15:25 +0100185 "linker_note_gnu_property.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700186 "linker_phdr.cpp",
Kalesh Singhce1c3cf2024-09-30 13:26:23 -0700187 "linker_phdr_16kib_compat.cpp",
Ryan Prichard339ecef2020-01-02 16:36:06 -0800188 "linker_relocate.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700189 "linker_sdk_versions.cpp",
Dimitry Ivanov48ec2882016-08-04 11:50:36 -0700190 "linker_soinfo.cpp",
Collin Fijalkovich47d27aa2021-03-24 10:17:39 -0700191 "linker_transparent_hugepage_support.cpp",
Ryan Prichard45d13492019-01-03 02:51:30 -0800192 "linker_tls.cpp",
Colin Cross97f0aef2016-07-14 16:05:46 -0700193 "linker_utils.cpp",
194 "rt.cpp",
195 ],
dimitryb8b3a762018-09-25 12:31:11 +0200196}
Colin Cross97f0aef2016-07-14 16:05:46 -0700197
dimitryb8b3a762018-09-25 12:31:11 +0200198filegroup {
199 name: "linker_sources_arm",
200 srcs: [
201 "arch/arm/begin.S",
Ryan Prichard129f7a12019-12-23 16:45:47 -0800202 "arch/arm_neon/linker_gnu_hash_neon.cpp",
dimitryb8b3a762018-09-25 12:31:11 +0200203 ],
204}
205
206filegroup {
207 name: "linker_sources_arm64",
208 srcs: [
209 "arch/arm64/begin.S",
Ryan Prichardffaae702019-01-23 17:47:10 -0800210 "arch/arm64/tlsdesc_resolver.S",
Ryan Prichard129f7a12019-12-23 16:45:47 -0800211 "arch/arm_neon/linker_gnu_hash_neon.cpp",
dimitryb8b3a762018-09-25 12:31:11 +0200212 ],
213}
214
215filegroup {
Elliott Hughes3e4f6032022-10-22 03:54:59 +0000216 name: "linker_sources_riscv64",
217 srcs: [
218 "arch/riscv64/begin.S",
Paul Kirth4d437782024-01-30 23:03:14 +0000219 "arch/riscv64/tlsdesc_resolver.S",
Elliott Hughes3e4f6032022-10-22 03:54:59 +0000220 ],
221}
222
223filegroup {
dimitryb8b3a762018-09-25 12:31:11 +0200224 name: "linker_sources_x86",
225 srcs: [
226 "arch/x86/begin.S",
227 ],
228}
229
230filegroup {
231 name: "linker_sources_x86_64",
232 srcs: [
233 "arch/x86_64/begin.S",
234 ],
235}
236
dimitryb8b3a762018-09-25 12:31:11 +0200237cc_defaults {
Ryan Prichard80e40f02019-10-31 19:54:46 -0700238 name: "linker_version_script_overlay",
239 arch: {
Elliott Hughes1eacc0e2024-01-19 19:05:36 +0000240 arm: {
241 version_script: "linker.arm.map",
242 },
243 arm64: {
244 version_script: "linker.generic.map",
245 },
246 riscv64: {
247 version_script: "linker.generic.map",
248 },
249 x86: {
250 version_script: "linker.generic.map",
251 },
252 x86_64: {
253 version_script: "linker.generic.map",
254 },
Ryan Prichard80e40f02019-10-31 19:54:46 -0700255 },
256}
257
258// A template for the linker binary. May be inherited by native bridge implementations.
259cc_defaults {
260 name: "linker_bin_template",
Elliott Hughes89aada12024-07-01 21:59:04 +0000261 defaults: [
262 "linker_defaults",
263 "keep_symbols",
264 ],
Ryan Prichard80e40f02019-10-31 19:54:46 -0700265
266 srcs: [":linker_sources"],
267
Colin Cross97f0aef2016-07-14 16:05:46 -0700268 arch: {
269 arm: {
Ryan Prichard80e40f02019-10-31 19:54:46 -0700270 srcs: [":linker_sources_arm"],
Ryan Prichard80e40f02019-10-31 19:54:46 -0700271 },
272 arm64: {
273 srcs: [":linker_sources_arm64"],
Colin Cross97f0aef2016-07-14 16:05:46 -0700274 },
Elliott Hughes3e4f6032022-10-22 03:54:59 +0000275 riscv64: {
276 srcs: [":linker_sources_riscv64"],
Elliott Hughes3e4f6032022-10-22 03:54:59 +0000277 },
Colin Cross97f0aef2016-07-14 16:05:46 -0700278 x86: {
Ryan Prichard80e40f02019-10-31 19:54:46 -0700279 srcs: [":linker_sources_x86"],
280 },
281 x86_64: {
282 srcs: [":linker_sources_x86_64"],
283 },
Colin Cross97f0aef2016-07-14 16:05:46 -0700284 },
285
Elliott Hughes4b5d62e2024-06-20 16:21:08 +0000286 static_executable: true,
287
Ryan Prichard80e40f02019-10-31 19:54:46 -0700288 // -shared is used to overwrite the -Bstatic and -static flags triggered by enabling
Elliott Hughes4b5d62e2024-06-20 16:21:08 +0000289 // static_executable. The dynamic linker is actually a shared object linked with static
Ryan Prichard80e40f02019-10-31 19:54:46 -0700290 // libraries.
Colin Cross97f0aef2016-07-14 16:05:46 -0700291 ldflags: [
292 "-shared",
293 "-Wl,-Bsymbolic",
294 "-Wl,--exclude-libs,ALL",
dimitry8e8c2c02018-01-04 12:08:32 +0100295 "-Wl,-soname,ld-android.so",
Peter Collingbournec630da52024-03-26 13:24:06 -0700296 // When the linker applies its own IRELATIVE relocations, it will only read DT_REL[A] and
297 // DT_JMPREL, not DT_ANDROID_REL[A], which can also theoretically contain IRELATIVE
298 // relocations. lld has been taught to not store them there as a bug workaround (see
299 // https://llvm.org/pr86751) but the workaround could be removed at some point in the
300 // future. So we explicitly prevent it from doing so by disabling DT_ANDROID_REL[A] when
301 // linking the linker (DT_RELR cannot encode IRELATIVE relocations).
302 "-Wl,--pack-dyn-relocs=relr",
Colin Cross97f0aef2016-07-14 16:05:46 -0700303 ],
304
Elliott Hughes4b5d62e2024-06-20 16:21:08 +0000305 // We link libc++_static manually because otherwise the build system will
306 // automatically add libdl to the list of static libraries.
Dimitry Ivanovfc0d4802016-12-06 11:10:09 -0800307 stl: "none",
308
Elliott Hughes4b5d62e2024-06-20 16:21:08 +0000309 // We don't want crtbegin.o (because we have our own arch/*/begin.o),
310 // so unset it just for this module.
Colin Cross97f0aef2016-07-14 16:05:46 -0700311 nocrt: true,
312
dimitryb8b3a762018-09-25 12:31:11 +0200313 // Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
314 // looking up symbols in the linker by mistake.
315 prefix_symbols: "__dl_",
316
317 sanitize: {
318 hwaddress: false,
Florian Mayerc0aa70a2024-06-24 15:49:20 -0700319 memtag_stack: false,
dimitryb8b3a762018-09-25 12:31:11 +0200320 },
dimitryb8b3a762018-09-25 12:31:11 +0200321
Colin Cross97f0aef2016-07-14 16:05:46 -0700322 static_libs: [
Ryan Prichard249757b2019-11-01 17:18:28 -0700323 "liblinker_main",
Ryan Prichard80e40f02019-10-31 19:54:46 -0700324 "liblinker_malloc",
325
Elliott Hughes4b5d62e2024-06-20 16:21:08 +0000326 // We use a version of libc++ built without exceptions,
327 // because accessing EH globals uses ELF TLS,
328 // which is not supported in the loader.
Ryan Prichard0bac1cb2024-05-03 01:15:00 +0000329 "libc++_static_noexcept",
Elliott Hughes4b5d62e2024-06-20 16:21:08 +0000330
Colin Cross97f0aef2016-07-14 16:05:46 -0700331 "libc_nomalloc",
Ryan Prichard249757b2019-11-01 17:18:28 -0700332 "libc_dynamic_dispatch",
Dimitry Ivanov451909d2017-01-26 16:52:59 -0800333 "libm",
Ryan Prichardcdf71752020-12-16 03:37:22 -0800334 "libunwind",
Colin Cross97f0aef2016-07-14 16:05:46 -0700335 ],
Colin Cross97f0aef2016-07-14 16:05:46 -0700336
Ryan Prichard80e40f02019-10-31 19:54:46 -0700337 system_shared_libs: [],
338
339 // Opt out of native_coverage when opting out of system_shared_libs
340 native_coverage: false,
341}
342
343// ========================================================
344// linker[_asan][64] binary
345// ========================================================
346
347cc_binary {
Colin Cross97f0aef2016-07-14 16:05:46 -0700348 name: "linker",
Ryan Prichard80e40f02019-10-31 19:54:46 -0700349 defaults: [
350 "linker_bin_template",
351 "linux_bionic_supported",
352 "linker_version_script_overlay",
353 ],
354
Victor Khimenkod15229d2020-05-14 22:14:45 +0200355 srcs: [
356 "linker_translate_path.cpp",
357 ],
358
Colin Cross10fffb42016-12-08 09:57:35 -0800359 symlinks: ["linker_asan"],
Florian Mayerc10d0642023-03-22 16:12:49 -0700360 arch: {
361 arm64: {
362 symlinks: ["linker_hwasan"],
363 },
364 },
Colin Cross97f0aef2016-07-14 16:05:46 -0700365 multilib: {
Colin Cross97f0aef2016-07-14 16:05:46 -0700366 lib64: {
367 suffix: "64",
Colin Cross10fffb42016-12-08 09:57:35 -0800368 },
Colin Cross97f0aef2016-07-14 16:05:46 -0700369 },
Pirama Arumuga Nainarfcd35382019-02-14 13:48:01 -0800370
Ryan Prichard80e40f02019-10-31 19:54:46 -0700371 compile_multilib: "both",
Ryan Prichard80e40f02019-10-31 19:54:46 -0700372
373 recovery_available: true,
Yifan Hongb04490d2020-10-21 18:36:36 -0700374 vendor_ramdisk_available: true,
Ryan Prichard80e40f02019-10-31 19:54:46 -0700375 apex_available: [
376 "//apex_available:platform",
377 "com.android.runtime",
378 ],
Pirama Arumuga Nainarfcd35382019-02-14 13:48:01 -0800379
Colin Cross97f0aef2016-07-14 16:05:46 -0700380 target: {
Dan Willemsen7ec52b12016-11-28 17:02:25 -0800381 android: {
Ryan Prichard80e40f02019-10-31 19:54:46 -0700382 srcs: [
383 "linker_debuggerd_android.cpp",
384 ],
Dan Albert4ea19212019-07-23 13:31:14 -0700385 static_libs: [
Ryan Prichard0bac1cb2024-05-03 01:15:00 +0000386 "libc++demangle_noexcept",
Dan Albert4ea19212019-07-23 13:31:14 -0700387 "libdebuggerd_handler_fallback",
388 ],
Dan Willemsen7ec52b12016-11-28 17:02:25 -0800389 },
Ryan Prichard80e40f02019-10-31 19:54:46 -0700390 linux_bionic: {
391 static_libs: [
392 "liblinker_debuggerd_stub",
393 ],
Yi Kong6f6daaa2020-12-10 01:27:44 +0800394 },
Colin Cross97f0aef2016-07-14 16:05:46 -0700395 },
Yi Konga7e363f2020-10-01 04:10:01 +0800396
Yi Konge20a1d92022-01-25 03:19:58 +0800397 afdo: true,
Colin Cross97f0aef2016-07-14 16:05:46 -0700398}
dimitry11da1dc2018-01-05 13:35:43 +0100399
Ryan Prichard80e40f02019-10-31 19:54:46 -0700400// ========================================================
401// assorted modules
402// ========================================================
403
Elliott Hughes90f96b92019-05-09 15:56:39 -0700404sh_binary {
405 name: "ldd",
Rupert Shuttlewortha7e29a82021-02-18 13:35:22 +0000406 src: "ldd.sh",
Elliott Hughes90f96b92019-05-09 15:56:39 -0700407}
408
Collin Fijalkovichc9521e02021-04-29 11:31:50 -0700409// Used to generate binaries that can be backed by transparent hugepages.
410cc_defaults {
411 name: "linker_hugepage_aligned",
412 arch: {
413 arm64: {
414 ldflags: ["-z max-page-size=0x200000"],
415 },
416 x86_64: {
417 ldflags: ["-z max-page-size=0x200000"],
418 },
419 },
420}
421
dimitry11da1dc2018-01-05 13:35:43 +0100422cc_library {
dimitry581723e2018-01-05 14:31:44 +0100423 srcs: ["ld_android.cpp"],
dimitry11da1dc2018-01-05 13:35:43 +0100424 cflags: [
425 "-Wall",
426 "-Wextra",
427 "-Wunused",
428 "-Werror",
429 ],
430 stl: "none",
431
432 name: "ld-android",
Elliott Hughes1eacc0e2024-01-19 19:05:36 +0000433 defaults: [
434 "linux_bionic_supported",
435 "linker_version_script_overlay",
436 ],
Yifan Hong5a39cee2020-01-21 16:43:56 -0800437 ramdisk_available: true,
Yifan Hongb04490d2020-10-21 18:36:36 -0700438 vendor_ramdisk_available: true,
Jiyong Park5603c6e2018-04-27 21:53:11 +0900439 recovery_available: true,
dimitry7f048802019-05-03 15:57:34 +0200440 native_bridge_supported: true,
dimitry11da1dc2018-01-05 13:35:43 +0100441
Ryan Prichard470b6662018-03-27 22:10:55 -0700442 nocrt: true,
dimitry11da1dc2018-01-05 13:35:43 +0100443 system_shared_libs: [],
Martin Stjernholm82d84bc2020-04-06 20:32:09 +0100444 header_libs: ["libc_headers"],
dimitry11da1dc2018-01-05 13:35:43 +0100445
Pirama Arumuga Nainarfcd35382019-02-14 13:48:01 -0800446 // Opt out of native_coverage when opting out of system_shared_libs
447 native_coverage: false,
448
dimitry11da1dc2018-01-05 13:35:43 +0100449 sanitize: {
450 never: true,
451 },
Jiyong Parke87e0dc2019-10-02 17:09:33 +0900452
453 apex_available: [
454 "//apex_available:platform",
455 "com.android.runtime",
456 ],
dimitry11da1dc2018-01-05 13:35:43 +0100457}
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800458
459cc_test {
460 name: "linker-unit-tests",
Colin Cross0cc60af2021-09-30 14:04:39 -0700461 test_suites: ["device-tests"],
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800462
463 cflags: [
464 "-g",
465 "-Wall",
466 "-Wextra",
467 "-Wunused",
468 "-Werror",
469 ],
470
471 // We need to access Bionic private headers in the linker.
472 include_dirs: ["bionic/libc"],
473
474 srcs: [
475 // Tests.
476 "linker_block_allocator_test.cpp",
477 "linker_config_test.cpp",
478 "linked_list_test.cpp",
Tamas Petz8d55d182020-02-24 14:15:25 +0100479 "linker_note_gnu_property_test.cpp",
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800480 "linker_sleb128_test.cpp",
481 "linker_utils_test.cpp",
Ryan Prichard129f7a12019-12-23 16:45:47 -0800482 "linker_gnu_hash_test.cpp",
Kalesh Singh0396f872024-02-02 22:11:08 -0800483 "linker_crt_pad_segment_test.cpp",
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800484
485 // Parts of the linker that we're testing.
Kalesh Singh0396f872024-02-02 22:11:08 -0800486 ":elf_note_sources",
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800487 "linker_block_allocator.cpp",
488 "linker_config.cpp",
Ryan Prichard551565e2019-12-23 16:03:14 -0800489 "linker_debug.cpp",
Tamas Petz8d55d182020-02-24 14:15:25 +0100490 "linker_note_gnu_property.cpp",
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800491 "linker_test_globals.cpp",
492 "linker_utils.cpp",
Kalesh Singh0396f872024-02-02 22:11:08 -0800493 "linker_phdr.cpp",
494 "linker_mapped_file_fragment.cpp",
495 "linker_sdk_versions.cpp",
496 "linker_dlwarning.cpp",
Pawan Wagh8e5de062024-10-17 18:05:19 +0000497 "linker_phdr_16kib_compat.cpp"
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800498 ],
499
500 static_libs: [
501 "libasync_safe",
502 "libbase",
Jiyong Park7157dfb2022-08-19 13:09:18 +0900503 "liblog_for_runtime_apex",
Kalesh Singh4084b552024-03-13 13:35:49 -0700504 "libprocinfo", // For procinfo::MappedFileSize()
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800505 ],
Ryan Prichard129f7a12019-12-23 16:45:47 -0800506
Kalesh Singh0396f872024-02-02 22:11:08 -0800507 data_libs: [
508 "crt_pad_segment_disabled",
509 "crt_pad_segment_enabled",
510 "no_crt_pad_segment",
511 ],
512
Ryan Prichard129f7a12019-12-23 16:45:47 -0800513 arch: {
514 arm: {
515 srcs: ["arch/arm_neon/linker_gnu_hash_neon.cpp"],
516 },
517 arm64: {
518 srcs: ["arch/arm_neon/linker_gnu_hash_neon.cpp"],
519 },
520 },
521}
522
523cc_benchmark {
524 name: "linker-benchmarks",
525
526 srcs: [
527 "linker_gnu_hash_benchmark.cpp",
528 ],
529
530 arch: {
531 arm: {
532 srcs: ["arch/arm_neon/linker_gnu_hash_neon.cpp"],
533 },
534 arm64: {
535 srcs: ["arch/arm_neon/linker_gnu_hash_neon.cpp"],
536 },
537 },
Elliott Hughes15a2b7b2019-02-15 13:48:38 -0800538}