1// Define the common source files for all the libc instances 2// ========================================================= 3libc_common_src_files = [ 4 "async_safe/async_safe_log.cpp", 5 "bionic/ether_aton.c", 6 "bionic/ether_ntoa.c", 7 "bionic/fts.c", 8 "bionic/initgroups.c", 9 "bionic/isatty.c", 10 "bionic/pututline.c", 11 "bionic/sched_cpualloc.c", 12 "bionic/sched_cpucount.c", 13 "bionic/sigblock.c", 14 "bionic/siginterrupt.c", 15 "bionic/sigsetmask.c", 16 "stdio/fread.c", 17 "stdio/parsefloat.c", 18 "stdio/refill.c", 19 "stdio/stdio.cpp", 20 "stdio/stdio_ext.cpp", 21 "stdio/vfscanf.c", 22 "stdio/vfwscanf.c", 23 "stdlib/atexit.c", 24 "stdlib/exit.c", 25] 26 27// Various kinds of cruft. 28// ======================================================== 29libc_common_src_files += [ 30 "bionic/ndk_cruft.cpp", 31] 32 33libc_common_src_files_32 = [ 34 "bionic/legacy_32_bit_support.cpp", 35 "bionic/time64.c", 36] 37 38libc_common_flags = [ 39 "-D_LIBC=1", 40 "-Wall", 41 "-Wextra", 42 "-Wunused", 43 "-Wno-deprecated-declarations", 44 "-Wframe-larger-than=2048", 45 46 // Try to catch typical 32-bit assumptions that break with 64-bit pointers. 47 "-Werror=pointer-to-int-cast", 48 "-Werror=int-to-pointer-cast", 49 "-Werror=type-limits", 50 "-Werror", 51] 52 53// Define some common cflags 54// ======================================================== 55cc_defaults { 56 name: "libc_defaults", 57 defaults: ["linux_bionic_supported"], 58 cflags: libc_common_flags, 59 asflags: libc_common_flags, 60 conlyflags: ["-std=gnu99"], 61 cppflags: [], 62 include_dirs: [ 63 "bionic/libc/async_safe/include", 64 "external/jemalloc/include", 65 ], 66 67 stl: "none", 68 system_shared_libs: [], 69 sanitize: { 70 never: true, 71 }, 72 native_coverage: false, 73 clang: true, 74} 75 76// ANDROIDMK TRANSLATION ERROR: unsupported directive 77// ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true) 78//libc_common_cflags += ["-DDEBUG"] 79// ANDROIDMK TRANSLATION ERROR: unsupported directive 80// endif 81 82// ======================================================== 83// libc_stack_protector.a - stack protector code 84// ======================================================== 85// 86// Code that implements the stack protector (or that runs 87// before TLS has been set up) needs to be compiled with 88// -fno-stack-protector, since it accesses the stack canary 89// TLS slot. 90 91cc_library_static { 92 93 srcs: [ 94 "bionic/__libc_init_main_thread.cpp", 95 "bionic/__stack_chk_fail.cpp", 96 ], 97 arch: { 98 arm64: { 99 srcs: ["arch-arm64/bionic/__set_tls.c"], 100 }, 101 x86: { 102 srcs: ["arch-x86/bionic/__set_tls.cpp"], 103 }, 104 x86_64: { 105 srcs: ["arch-x86_64/bionic/__set_tls.c"], 106 }, 107 }, 108 109 defaults: ["libc_defaults"], 110 cflags: ["-fno-stack-protector"], 111 name: "libc_stack_protector", 112} 113 114// libc_init_static.cpp also needs to be built without stack protector, 115// because it's responsible for setting up TLS for static executables. 116// This isn't the case for dynamic executables because the dynamic linker 117// has already set up the main thread's TLS. 118 119cc_library_static { 120 name: "libc_init_static", 121 defaults: ["libc_defaults"], 122 srcs: ["bionic/libc_init_static.cpp"], 123 cflags: ["-fno-stack-protector"], 124} 125 126cc_library_static { 127 name: "libc_init_dynamic", 128 defaults: ["libc_defaults"], 129 srcs: ["bionic/libc_init_dynamic.cpp"], 130 cflags: ["-fno-stack-protector"], 131} 132 133// ======================================================== 134// libc_tzcode.a - upstream 'tzcode' code 135// ======================================================== 136 137cc_library_static { 138 139 defaults: ["libc_defaults"], 140 srcs: [ 141 "tzcode/**/*.c", 142 "tzcode/bionic.cpp", 143 "upstream-openbsd/lib/libc/time/wcsftime.c", // tzcode doesn't include wcsftime, so we use the OpenBSD one. 144 ], 145 146 cflags: [ 147 "-Wno-unused-parameter", 148 // Don't use ridiculous amounts of stack. 149 "-DALL_STATE", 150 // Include tzsetwall, timelocal, timegm, time2posix, and posix2time. 151 "-DSTD_INSPIRED", 152 // Obviously, we want to be thread-safe. 153 "-DTHREAD_SAFE", 154 // The name of the tm_gmtoff field in our struct tm. 155 "-DTM_GMTOFF=tm_gmtoff", 156 // Where we store our tzdata. 157 "-DTZDIR=\"/system/usr/share/zoneinfo\"", 158 // Include `tzname`, `timezone`, and `daylight` globals. 159 "-DHAVE_POSIX_DECLS=0", 160 "-DUSG_COMPAT=1", 161 // Use the empty string (instead of " ") as the timezone abbreviation 162 // fallback. 163 "-DWILDABBR=\"\"", 164 "-DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU", 165 "-Dlint", 166 ], 167 168 local_include_dirs: ["tzcode/"], 169 name: "libc_tzcode", 170} 171 172// ======================================================== 173// libc_dns.a - modified NetBSD DNS code 174// ======================================================== 175 176cc_library_static { 177 178 defaults: ["libc_defaults"], 179 srcs: [ 180 "dns/**/*.c", 181 182 "upstream-netbsd/lib/libc/isc/ev_streams.c", 183 "upstream-netbsd/lib/libc/isc/ev_timers.c", 184 "upstream-netbsd/lib/libc/resolv/mtctxres.c", 185 ], 186 187 cflags: [ 188 "-DANDROID_CHANGES", 189 "-DINET6", 190 "-Wno-unused-parameter", 191 "-include netbsd-compat.h", 192 "-Wframe-larger-than=66000", 193 ], 194 195 local_include_dirs: [ 196 "dns/include", 197 "private", 198 "upstream-netbsd/lib/libc/include", 199 "upstream-netbsd/android/include", 200 ], 201 202 name: "libc_dns", 203} 204 205// ======================================================== 206// libc_freebsd.a - upstream FreeBSD C library code 207// ======================================================== 208// 209// These files are built with the freebsd-compat.h header file 210// automatically included. 211 212cc_library_static { 213 defaults: ["libc_defaults"], 214 srcs: [ 215 "upstream-freebsd/lib/libc/gen/ldexp.c", 216 "upstream-freebsd/lib/libc/gen/sleep.c", 217 "upstream-freebsd/lib/libc/gen/usleep.c", 218 "upstream-freebsd/lib/libc/stdlib/getopt_long.c", 219 "upstream-freebsd/lib/libc/stdlib/qsort.c", 220 "upstream-freebsd/lib/libc/stdlib/quick_exit.c", 221 "upstream-freebsd/lib/libc/string/wcpcpy.c", 222 "upstream-freebsd/lib/libc/string/wcpncpy.c", 223 "upstream-freebsd/lib/libc/string/wcscasecmp.c", 224 "upstream-freebsd/lib/libc/string/wcscat.c", 225 "upstream-freebsd/lib/libc/string/wcschr.c", 226 "upstream-freebsd/lib/libc/string/wcscmp.c", 227 "upstream-freebsd/lib/libc/string/wcscpy.c", 228 "upstream-freebsd/lib/libc/string/wcscspn.c", 229 "upstream-freebsd/lib/libc/string/wcsdup.c", 230 "upstream-freebsd/lib/libc/string/wcslcat.c", 231 "upstream-freebsd/lib/libc/string/wcslen.c", 232 "upstream-freebsd/lib/libc/string/wcsncasecmp.c", 233 "upstream-freebsd/lib/libc/string/wcsncat.c", 234 "upstream-freebsd/lib/libc/string/wcsncmp.c", 235 "upstream-freebsd/lib/libc/string/wcsncpy.c", 236 "upstream-freebsd/lib/libc/string/wcsnlen.c", 237 "upstream-freebsd/lib/libc/string/wcspbrk.c", 238 "upstream-freebsd/lib/libc/string/wcsrchr.c", 239 "upstream-freebsd/lib/libc/string/wcsspn.c", 240 "upstream-freebsd/lib/libc/string/wcstok.c", 241 "upstream-freebsd/lib/libc/string/wmemchr.c", 242 "upstream-freebsd/lib/libc/string/wmemcmp.c", 243 "upstream-freebsd/lib/libc/string/wmemmove.c", 244 "upstream-freebsd/lib/libc/string/wmemset.c", 245 ], 246 arch: { 247 arm64: { 248 exclude_srcs: [ 249 "upstream-freebsd/lib/libc/string/wmemmove.c", 250 ], 251 }, 252 x86: { 253 exclude_srcs: [ 254 "upstream-freebsd/lib/libc/string/wcschr.c", 255 "upstream-freebsd/lib/libc/string/wcscmp.c", 256 "upstream-freebsd/lib/libc/string/wcslen.c", 257 "upstream-freebsd/lib/libc/string/wcsrchr.c", 258 ], 259 atom: { 260 exclude_srcs: [ 261 "upstream-freebsd/lib/libc/string/wmemcmp.c", 262 ], 263 }, 264 ssse3: { 265 exclude_srcs: [ 266 "upstream-freebsd/lib/libc/string/wcscat.c", 267 "upstream-freebsd/lib/libc/string/wcscpy.c", 268 ], 269 }, 270 sse4: { 271 exclude_srcs: [ 272 "upstream-freebsd/lib/libc/string/wmemcmp.c", 273 ], 274 }, 275 }, 276 }, 277 278 cflags: [ 279 "-Wno-sign-compare", 280 "-Wno-uninitialized", 281 "-include freebsd-compat.h", 282 ], 283 284 local_include_dirs: [ 285 "upstream-freebsd/android/include", 286 ], 287 288 name: "libc_freebsd", 289} 290 291cc_library_static { 292 defaults: ["libc_defaults"], 293 srcs: [ 294 "upstream-freebsd/lib/libc/stdlib/realpath.c", 295 ], 296 297 cflags: [ 298 "-Wno-sign-compare", 299 "-include freebsd-compat.h", 300 "-Wframe-larger-than=15000", 301 ], 302 303 local_include_dirs: [ 304 "upstream-freebsd/android/include", 305 ], 306 307 name: "libc_freebsd_large_stack", 308} 309 310// ======================================================== 311// libc_netbsd.a - upstream NetBSD C library code 312// ======================================================== 313// 314// These files are built with the netbsd-compat.h header file 315// automatically included. 316 317cc_library_static { 318 319 defaults: ["libc_defaults"], 320 srcs: [ 321 "upstream-netbsd/common/lib/libc/stdlib/random.c", 322 "upstream-netbsd/lib/libc/gen/nice.c", 323 "upstream-netbsd/lib/libc/gen/popen.c", 324 "upstream-netbsd/lib/libc/gen/psignal.c", 325 "upstream-netbsd/lib/libc/gen/utime.c", 326 "upstream-netbsd/lib/libc/gen/utmp.c", 327 "upstream-netbsd/lib/libc/inet/nsap_addr.c", 328 "upstream-netbsd/lib/libc/regex/regcomp.c", 329 "upstream-netbsd/lib/libc/regex/regerror.c", 330 "upstream-netbsd/lib/libc/regex/regexec.c", 331 "upstream-netbsd/lib/libc/regex/regfree.c", 332 "upstream-netbsd/lib/libc/stdlib/bsearch.c", 333 "upstream-netbsd/lib/libc/stdlib/div.c", 334 "upstream-netbsd/lib/libc/stdlib/drand48.c", 335 "upstream-netbsd/lib/libc/stdlib/erand48.c", 336 "upstream-netbsd/lib/libc/stdlib/jrand48.c", 337 "upstream-netbsd/lib/libc/stdlib/lcong48.c", 338 "upstream-netbsd/lib/libc/stdlib/ldiv.c", 339 "upstream-netbsd/lib/libc/stdlib/lldiv.c", 340 "upstream-netbsd/lib/libc/stdlib/lrand48.c", 341 "upstream-netbsd/lib/libc/stdlib/mrand48.c", 342 "upstream-netbsd/lib/libc/stdlib/nrand48.c", 343 "upstream-netbsd/lib/libc/stdlib/_rand48.c", 344 "upstream-netbsd/lib/libc/stdlib/rand_r.c", 345 "upstream-netbsd/lib/libc/stdlib/reallocarr.c", 346 "upstream-netbsd/lib/libc/stdlib/seed48.c", 347 "upstream-netbsd/lib/libc/stdlib/srand48.c", 348 "upstream-netbsd/lib/libc/string/memccpy.c", 349 "upstream-netbsd/lib/libc/string/strcasestr.c", 350 "upstream-netbsd/lib/libc/string/strcoll.c", 351 "upstream-netbsd/lib/libc/string/strxfrm.c", 352 ], 353 multilib: { 354 lib32: { 355 // LP32 cruft 356 srcs: ["upstream-netbsd/common/lib/libc/hash/sha1/sha1.c"], 357 }, 358 }, 359 cflags: [ 360 "-Wno-sign-compare", 361 "-Wno-uninitialized", 362 "-Wno-unused-parameter", 363 "-DPOSIX_MISTAKE", 364 "-include netbsd-compat.h", 365 ], 366 367 local_include_dirs: [ 368 "upstream-netbsd/android/include", 369 "upstream-netbsd/lib/libc/include", 370 ], 371 372 name: "libc_netbsd", 373} 374 375// ======================================================== 376// libc_openbsd_ndk.a - upstream OpenBSD C library code 377// that can be safely included in the libc_ndk.a (doesn't 378// contain any troublesome global data or constructors). 379// ======================================================== 380// 381// These files are built with the openbsd-compat.h header file 382// automatically included. 383 384cc_library_static { 385 name: "libc_openbsd_ndk", 386 defaults: ["libc_defaults"], 387 srcs: [ 388 "upstream-openbsd/lib/libc/compat-43/killpg.c", 389 "upstream-openbsd/lib/libc/gen/alarm.c", 390 "upstream-openbsd/lib/libc/gen/ctype_.c", 391 "upstream-openbsd/lib/libc/gen/daemon.c", 392 "upstream-openbsd/lib/libc/gen/err.c", 393 "upstream-openbsd/lib/libc/gen/errx.c", 394 "upstream-openbsd/lib/libc/gen/fnmatch.c", 395 "upstream-openbsd/lib/libc/gen/ftok.c", 396 "upstream-openbsd/lib/libc/gen/getprogname.c", 397 "upstream-openbsd/lib/libc/gen/isctype.c", 398 "upstream-openbsd/lib/libc/gen/setprogname.c", 399 "upstream-openbsd/lib/libc/gen/time.c", 400 "upstream-openbsd/lib/libc/gen/tolower_.c", 401 "upstream-openbsd/lib/libc/gen/toupper_.c", 402 "upstream-openbsd/lib/libc/gen/verr.c", 403 "upstream-openbsd/lib/libc/gen/verrx.c", 404 "upstream-openbsd/lib/libc/gen/vwarn.c", 405 "upstream-openbsd/lib/libc/gen/vwarnx.c", 406 "upstream-openbsd/lib/libc/gen/warn.c", 407 "upstream-openbsd/lib/libc/gen/warnx.c", 408 "upstream-openbsd/lib/libc/locale/btowc.c", 409 "upstream-openbsd/lib/libc/locale/mbrlen.c", 410 "upstream-openbsd/lib/libc/locale/mbstowcs.c", 411 "upstream-openbsd/lib/libc/locale/mbtowc.c", 412 "upstream-openbsd/lib/libc/locale/wcscoll.c", 413 "upstream-openbsd/lib/libc/locale/wcstoimax.c", 414 "upstream-openbsd/lib/libc/locale/wcstol.c", 415 "upstream-openbsd/lib/libc/locale/wcstoll.c", 416 "upstream-openbsd/lib/libc/locale/wcstombs.c", 417 "upstream-openbsd/lib/libc/locale/wcstoul.c", 418 "upstream-openbsd/lib/libc/locale/wcstoull.c", 419 "upstream-openbsd/lib/libc/locale/wcstoumax.c", 420 "upstream-openbsd/lib/libc/locale/wcsxfrm.c", 421 "upstream-openbsd/lib/libc/locale/wctob.c", 422 "upstream-openbsd/lib/libc/locale/wctomb.c", 423 "upstream-openbsd/lib/libc/net/base64.c", 424 "upstream-openbsd/lib/libc/net/htonl.c", 425 "upstream-openbsd/lib/libc/net/htons.c", 426 "upstream-openbsd/lib/libc/net/inet_lnaof.c", 427 "upstream-openbsd/lib/libc/net/inet_makeaddr.c", 428 "upstream-openbsd/lib/libc/net/inet_netof.c", 429 "upstream-openbsd/lib/libc/net/inet_ntoa.c", 430 "upstream-openbsd/lib/libc/net/inet_ntop.c", 431 "upstream-openbsd/lib/libc/net/inet_pton.c", 432 "upstream-openbsd/lib/libc/net/ntohl.c", 433 "upstream-openbsd/lib/libc/net/ntohs.c", 434 "upstream-openbsd/lib/libc/net/res_random.c", 435 "upstream-openbsd/lib/libc/stdio/fflush.c", 436 "upstream-openbsd/lib/libc/stdio/fgetln.c", 437 "upstream-openbsd/lib/libc/stdio/fgets.c", 438 "upstream-openbsd/lib/libc/stdio/fgetwc.c", 439 "upstream-openbsd/lib/libc/stdio/fgetws.c", 440 "upstream-openbsd/lib/libc/stdio/flags.c", 441 "upstream-openbsd/lib/libc/stdio/fmemopen.c", 442 "upstream-openbsd/lib/libc/stdio/fpurge.c", 443 "upstream-openbsd/lib/libc/stdio/fputs.c", 444 "upstream-openbsd/lib/libc/stdio/fputwc.c", 445 "upstream-openbsd/lib/libc/stdio/fputws.c", 446 "upstream-openbsd/lib/libc/stdio/fvwrite.c", 447 "upstream-openbsd/lib/libc/stdio/fwalk.c", 448 "upstream-openbsd/lib/libc/stdio/fwide.c", 449 "upstream-openbsd/lib/libc/stdio/fwrite.c", 450 "upstream-openbsd/lib/libc/stdio/getdelim.c", 451 "upstream-openbsd/lib/libc/stdio/gets.c", 452 "upstream-openbsd/lib/libc/stdio/makebuf.c", 453 "upstream-openbsd/lib/libc/stdio/mktemp.c", 454 "upstream-openbsd/lib/libc/stdio/open_memstream.c", 455 "upstream-openbsd/lib/libc/stdio/open_wmemstream.c", 456 "upstream-openbsd/lib/libc/stdio/perror.c", 457 "upstream-openbsd/lib/libc/stdio/puts.c", 458 "upstream-openbsd/lib/libc/stdio/rget.c", 459 "upstream-openbsd/lib/libc/stdio/setvbuf.c", 460 "upstream-openbsd/lib/libc/stdio/tempnam.c", 461 "upstream-openbsd/lib/libc/stdio/tmpnam.c", 462 "upstream-openbsd/lib/libc/stdio/ungetc.c", 463 "upstream-openbsd/lib/libc/stdio/ungetwc.c", 464 "upstream-openbsd/lib/libc/stdio/vasprintf.c", 465 "upstream-openbsd/lib/libc/stdio/vdprintf.c", 466 "upstream-openbsd/lib/libc/stdio/vsscanf.c", 467 "upstream-openbsd/lib/libc/stdio/vswprintf.c", 468 "upstream-openbsd/lib/libc/stdio/vswscanf.c", 469 "upstream-openbsd/lib/libc/stdio/wbuf.c", 470 "upstream-openbsd/lib/libc/stdio/wsetup.c", 471 "upstream-openbsd/lib/libc/stdlib/abs.c", 472 "upstream-openbsd/lib/libc/stdlib/atoi.c", 473 "upstream-openbsd/lib/libc/stdlib/atol.c", 474 "upstream-openbsd/lib/libc/stdlib/atoll.c", 475 "upstream-openbsd/lib/libc/stdlib/getenv.c", 476 "upstream-openbsd/lib/libc/stdlib/getsubopt.c", 477 "upstream-openbsd/lib/libc/stdlib/insque.c", 478 "upstream-openbsd/lib/libc/stdlib/imaxabs.c", 479 "upstream-openbsd/lib/libc/stdlib/imaxdiv.c", 480 "upstream-openbsd/lib/libc/stdlib/labs.c", 481 "upstream-openbsd/lib/libc/stdlib/llabs.c", 482 "upstream-openbsd/lib/libc/stdlib/lsearch.c", 483 "upstream-openbsd/lib/libc/stdlib/reallocarray.c", 484 "upstream-openbsd/lib/libc/stdlib/remque.c", 485 "upstream-openbsd/lib/libc/stdlib/setenv.c", 486 "upstream-openbsd/lib/libc/stdlib/strtoimax.c", 487 "upstream-openbsd/lib/libc/stdlib/strtol.c", 488 "upstream-openbsd/lib/libc/stdlib/strtoll.c", 489 "upstream-openbsd/lib/libc/stdlib/strtoul.c", 490 "upstream-openbsd/lib/libc/stdlib/strtoull.c", 491 "upstream-openbsd/lib/libc/stdlib/strtoumax.c", 492 "upstream-openbsd/lib/libc/stdlib/system.c", 493 "upstream-openbsd/lib/libc/stdlib/tfind.c", 494 "upstream-openbsd/lib/libc/stdlib/tsearch.c", 495 "upstream-openbsd/lib/libc/string/strcasecmp.c", 496 "upstream-openbsd/lib/libc/string/strcspn.c", 497 "upstream-openbsd/lib/libc/string/strdup.c", 498 "upstream-openbsd/lib/libc/string/strndup.c", 499 "upstream-openbsd/lib/libc/string/strpbrk.c", 500 "upstream-openbsd/lib/libc/string/strsep.c", 501 "upstream-openbsd/lib/libc/string/strspn.c", 502 "upstream-openbsd/lib/libc/string/strstr.c", 503 "upstream-openbsd/lib/libc/string/strtok.c", 504 "upstream-openbsd/lib/libc/string/wmemcpy.c", 505 "upstream-openbsd/lib/libc/string/wcslcpy.c", 506 "upstream-openbsd/lib/libc/string/wcsstr.c", 507 "upstream-openbsd/lib/libc/string/wcswidth.c", 508 ], 509 510 cflags: [ 511 "-Wno-sign-compare", 512 "-Wno-uninitialized", 513 "-Wno-unused-parameter", 514 "-include openbsd-compat.h", 515 ], 516 517 local_include_dirs: [ 518 "private", 519 "stdio", 520 "upstream-openbsd/android/include", 521 "upstream-openbsd/lib/libc/include", 522 "upstream-openbsd/lib/libc/gdtoa/", 523 ], 524} 525 526cc_library_static { 527 name: "libc_openbsd_large_stack", 528 defaults: ["libc_defaults"], 529 srcs: [ 530 "upstream-openbsd/lib/libc/stdio/vfprintf.c", 531 "upstream-openbsd/lib/libc/stdio/vfwprintf.c", 532 ], 533 cflags: [ 534 "-include openbsd-compat.h", 535 "-Wno-sign-compare", 536 "-Wframe-larger-than=5000", 537 ], 538 539 local_include_dirs: [ 540 "stdio", 541 "upstream-openbsd/android/include", 542 "upstream-openbsd/lib/libc/include", 543 "upstream-openbsd/lib/libc/gdtoa/", 544 ], 545} 546 547// ======================================================== 548// libc_openbsd.a - upstream OpenBSD C library code 549// ======================================================== 550// 551// These files are built with the openbsd-compat.h header file 552// automatically included. 553cc_library_static { 554 defaults: ["libc_defaults"], 555 srcs: [ 556 // These two depend on getentropy_linux.c, which isn't in libc_ndk.a. 557 "upstream-openbsd/lib/libc/crypt/arc4random.c", 558 "upstream-openbsd/lib/libc/crypt/arc4random_uniform.c", 559 560 // May be overriden by per-arch optimized versions 561 "upstream-openbsd/lib/libc/string/memchr.c", 562 "upstream-openbsd/lib/libc/string/memmove.c", 563 "upstream-openbsd/lib/libc/string/memrchr.c", 564 "upstream-openbsd/lib/libc/string/stpcpy.c", 565 "upstream-openbsd/lib/libc/string/stpncpy.c", 566 "upstream-openbsd/lib/libc/string/strcat.c", 567 "upstream-openbsd/lib/libc/string/strcpy.c", 568 "upstream-openbsd/lib/libc/string/strlcat.c", 569 "upstream-openbsd/lib/libc/string/strlcpy.c", 570 "upstream-openbsd/lib/libc/string/strncat.c", 571 "upstream-openbsd/lib/libc/string/strncmp.c", 572 "upstream-openbsd/lib/libc/string/strncpy.c", 573 ], 574 575 arch: { 576 arm: { 577 exclude_srcs: [ 578 "upstream-openbsd/lib/libc/string/strcpy.c", 579 ], 580 cortex_a7: { 581 exclude_srcs: [ 582 "upstream-openbsd/lib/libc/string/memmove.c", 583 "upstream-openbsd/lib/libc/string/stpcpy.c", 584 "upstream-openbsd/lib/libc/string/strcat.c", 585 ], 586 }, 587 cortex_a53: { 588 exclude_srcs: [ 589 "upstream-openbsd/lib/libc/string/memmove.c", 590 "upstream-openbsd/lib/libc/string/stpcpy.c", 591 "upstream-openbsd/lib/libc/string/strcat.c", 592 ], 593 }, 594 cortex_a53_a57: { 595 exclude_srcs: [ 596 "upstream-openbsd/lib/libc/string/memmove.c", 597 "upstream-openbsd/lib/libc/string/stpcpy.c", 598 "upstream-openbsd/lib/libc/string/strcat.c", 599 ], 600 }, 601 cortex_a8: { 602 exclude_srcs: [ 603 "upstream-openbsd/lib/libc/string/memmove.c", 604 "upstream-openbsd/lib/libc/string/stpcpy.c", 605 "upstream-openbsd/lib/libc/string/strcat.c", 606 ], 607 }, 608 cortex_a9: { 609 exclude_srcs: [ 610 "upstream-openbsd/lib/libc/string/memmove.c", 611 "upstream-openbsd/lib/libc/string/stpcpy.c", 612 "upstream-openbsd/lib/libc/string/strcat.c", 613 ], 614 }, 615 cortex_a15: { 616 exclude_srcs: [ 617 "upstream-openbsd/lib/libc/string/memmove.c", 618 "upstream-openbsd/lib/libc/string/stpcpy.c", 619 "upstream-openbsd/lib/libc/string/strcat.c", 620 ], 621 }, 622 cortex_a73: { 623 exclude_srcs: [ 624 "upstream-openbsd/lib/libc/string/memmove.c", 625 "upstream-openbsd/lib/libc/string/stpcpy.c", 626 "upstream-openbsd/lib/libc/string/strcat.c", 627 ], 628 }, 629 denver: { 630 exclude_srcs: [ 631 "upstream-openbsd/lib/libc/string/memmove.c", 632 "upstream-openbsd/lib/libc/string/stpcpy.c", 633 "upstream-openbsd/lib/libc/string/strcat.c", 634 ], 635 }, 636 krait: { 637 exclude_srcs: [ 638 "upstream-openbsd/lib/libc/string/memmove.c", 639 "upstream-openbsd/lib/libc/string/stpcpy.c", 640 "upstream-openbsd/lib/libc/string/strcat.c", 641 ], 642 }, 643 kryo: { 644 exclude_srcs: [ 645 "upstream-openbsd/lib/libc/string/memmove.c", 646 "upstream-openbsd/lib/libc/string/stpcpy.c", 647 "upstream-openbsd/lib/libc/string/strcat.c", 648 ], 649 }, 650 }, 651 arm64: { 652 exclude_srcs: [ 653 "upstream-openbsd/lib/libc/string/memchr.c", 654 "upstream-openbsd/lib/libc/string/memmove.c", 655 "upstream-openbsd/lib/libc/string/stpcpy.c", 656 "upstream-openbsd/lib/libc/string/strcpy.c", 657 "upstream-openbsd/lib/libc/string/strncmp.c", 658 ], 659 }, 660 mips: { 661 exclude_srcs: [ 662 "upstream-openbsd/lib/libc/string/memchr.c", 663 "upstream-openbsd/lib/libc/string/memmove.c", 664 "upstream-openbsd/lib/libc/string/strcpy.c", 665 "upstream-openbsd/lib/libc/string/strncmp.c", 666 ], 667 }, 668 mips64: { 669 exclude_srcs: [ 670 "upstream-openbsd/lib/libc/string/memchr.c", 671 "upstream-openbsd/lib/libc/string/memmove.c", 672 "upstream-openbsd/lib/libc/string/strcpy.c", 673 "upstream-openbsd/lib/libc/string/strncmp.c", 674 ], 675 }, 676 x86: { 677 exclude_srcs: [ 678 "upstream-openbsd/lib/libc/string/memchr.c", 679 "upstream-openbsd/lib/libc/string/memmove.c", 680 "upstream-openbsd/lib/libc/string/memrchr.c", 681 "upstream-openbsd/lib/libc/string/stpcpy.c", 682 "upstream-openbsd/lib/libc/string/stpncpy.c", 683 "upstream-openbsd/lib/libc/string/strcat.c", 684 "upstream-openbsd/lib/libc/string/strcpy.c", 685 "upstream-openbsd/lib/libc/string/strncmp.c", 686 "upstream-openbsd/lib/libc/string/strncpy.c", 687 ], 688 ssse3: { 689 exclude_srcs: [ 690 "upstream-openbsd/lib/libc/string/strlcat.c", 691 "upstream-openbsd/lib/libc/string/strlcpy.c", 692 "upstream-openbsd/lib/libc/string/strncat.c", 693 ], 694 }, 695 }, 696 697 x86_64: { 698 exclude_srcs: [ 699 "upstream-openbsd/lib/libc/string/memmove.c", 700 "upstream-openbsd/lib/libc/string/stpcpy.c", 701 "upstream-openbsd/lib/libc/string/stpncpy.c", 702 "upstream-openbsd/lib/libc/string/strcat.c", 703 "upstream-openbsd/lib/libc/string/strcpy.c", 704 "upstream-openbsd/lib/libc/string/strlcat.c", 705 "upstream-openbsd/lib/libc/string/strlcpy.c", 706 "upstream-openbsd/lib/libc/string/strncat.c", 707 "upstream-openbsd/lib/libc/string/strncmp.c", 708 "upstream-openbsd/lib/libc/string/strncpy.c", 709 ], 710 }, 711 }, 712 713 cflags: [ 714 "-Wno-sign-compare", 715 "-Wno-uninitialized", 716 "-Wno-unused-parameter", 717 "-include openbsd-compat.h", 718 ], 719 720 local_include_dirs: [ 721 "private", 722 "upstream-openbsd/android/include", 723 ], 724 725 name: "libc_openbsd", 726} 727 728// ======================================================== 729// libc_gdtoa.a - upstream OpenBSD C library gdtoa code 730// ======================================================== 731// 732// These files are built with the openbsd-compat.h header file 733// automatically included. 734 735cc_library_static { 736 defaults: ["libc_defaults"], 737 srcs: [ 738 "upstream-openbsd/android/gdtoa_support.cpp", 739 "upstream-openbsd/lib/libc/gdtoa/dmisc.c", 740 "upstream-openbsd/lib/libc/gdtoa/dtoa.c", 741 "upstream-openbsd/lib/libc/gdtoa/gdtoa.c", 742 "upstream-openbsd/lib/libc/gdtoa/gethex.c", 743 "upstream-openbsd/lib/libc/gdtoa/gmisc.c", 744 "upstream-openbsd/lib/libc/gdtoa/hd_init.c", 745 "upstream-openbsd/lib/libc/gdtoa/hdtoa.c", 746 "upstream-openbsd/lib/libc/gdtoa/hexnan.c", 747 "upstream-openbsd/lib/libc/gdtoa/ldtoa.c", 748 "upstream-openbsd/lib/libc/gdtoa/misc.c", 749 "upstream-openbsd/lib/libc/gdtoa/smisc.c", 750 "upstream-openbsd/lib/libc/gdtoa/strtod.c", 751 "upstream-openbsd/lib/libc/gdtoa/strtodg.c", 752 "upstream-openbsd/lib/libc/gdtoa/strtof.c", 753 "upstream-openbsd/lib/libc/gdtoa/strtord.c", 754 "upstream-openbsd/lib/libc/gdtoa/sum.c", 755 "upstream-openbsd/lib/libc/gdtoa/ulp.c", 756 ], 757 multilib: { 758 lib64: { 759 srcs: ["upstream-openbsd/lib/libc/gdtoa/strtorQ.c"], 760 }, 761 }, 762 763 cflags: [ 764 "-Wno-sign-compare", 765 "-Wno-uninitialized", 766 "-include openbsd-compat.h", 767 ], 768 769 local_include_dirs: [ 770 "private", 771 "upstream-openbsd/android/include", 772 "upstream-openbsd/lib/libc/include", 773 ], 774 775 name: "libc_gdtoa", 776} 777 778// ======================================================== 779// libc_bionic.a - home-grown C library code 780// ======================================================== 781 782cc_library_static { 783 defaults: ["libc_defaults"], 784 srcs: [ 785 // The following implementations depend on pthread data, so we can't 786 // include them in libc_ndk.a. 787 "bionic/__cxa_thread_atexit_impl.cpp", 788 "bionic/fork.cpp", 789 790 // The data that backs getauxval is initialized in the libc init 791 // functions which are invoked by the linker. If this file is included 792 // in libc_ndk.a, only one of the copies of the global data will be 793 // initialized, resulting in nullptr dereferences. 794 "bionic/getauxval.cpp", 795 796 // These four require getauxval, which isn't available on older 797 // platforms. 798 "bionic/getentropy_linux.c", 799 "bionic/sysconf.cpp", 800 "bionic/vdso.cpp", 801 "bionic/setjmp_cookie.cpp", 802 803 // The following must not be statically linked into libc_ndk.a, because 804 // debuggerd will look for the abort message in libc.so's copy. 805 "bionic/android_set_abort_message.cpp", 806 807 "bionic/__memcpy_chk.cpp", 808 "bionic/__strcat_chk.cpp", 809 "bionic/__strcpy_chk.cpp", 810 "bionic/strchr.cpp", 811 "bionic/strnlen.c", 812 "bionic/strrchr.cpp", 813 ], 814 815 arch: { 816 arm: { 817 srcs: [ 818 "arch-arm/generic/bionic/memcmp.S", 819 "arch-arm/generic/bionic/memcpy.S", 820 "arch-arm/generic/bionic/memset.S", 821 "arch-arm/generic/bionic/strcmp.S", 822 "arch-arm/generic/bionic/strcpy.S", 823 "arch-arm/generic/bionic/strlen.c", 824 825 "arch-arm/bionic/atomics_arm.c", 826 "arch-arm/bionic/__bionic_clone.S", 827 "arch-arm/bionic/_exit_with_stack_teardown.S", 828 "arch-arm/bionic/libgcc_compat.c", 829 "arch-arm/bionic/popcount_tab.c", 830 "arch-arm/bionic/__restore.S", 831 "arch-arm/bionic/setjmp.S", 832 "arch-arm/bionic/syscall.S", 833 "arch-arm/bionic/vfork.S", 834 ], 835 exclude_srcs: [ 836 "bionic/__memcpy_chk.cpp", 837 ], 838 cortex_a7: { 839 srcs: [ 840 "arch-arm/cortex-a7/bionic/memset.S", 841 "arch-arm/cortex-a7/bionic/memcpy.S", 842 "arch-arm/cortex-a7/bionic/__strcat_chk.S", 843 "arch-arm/cortex-a7/bionic/__strcpy_chk.S", 844 845 "arch-arm/cortex-a15/bionic/stpcpy.S", 846 "arch-arm/cortex-a15/bionic/strcat.S", 847 "arch-arm/cortex-a15/bionic/strcmp.S", 848 "arch-arm/cortex-a15/bionic/strcpy.S", 849 "arch-arm/cortex-a15/bionic/strlen.S", 850 851 "arch-arm/denver/bionic/memmove.S", 852 ], 853 exclude_srcs: [ 854 "arch-arm/generic/bionic/memcpy.S", 855 "arch-arm/generic/bionic/memset.S", 856 "arch-arm/generic/bionic/strcmp.S", 857 "arch-arm/generic/bionic/strcpy.S", 858 "arch-arm/generic/bionic/strlen.c", 859 "bionic/__strcat_chk.cpp", 860 "bionic/__strcpy_chk.cpp", 861 ], 862 }, 863 cortex_a53: { 864 srcs: [ 865 "arch-arm/cortex-a53/bionic/memcpy.S", 866 "arch-arm/cortex-a53/bionic/__strcat_chk.S", 867 "arch-arm/cortex-a53/bionic/__strcpy_chk.S", 868 869 "arch-arm/cortex-a7/bionic/memset.S", 870 871 "arch-arm/cortex-a15/bionic/stpcpy.S", 872 "arch-arm/cortex-a15/bionic/strcat.S", 873 "arch-arm/cortex-a15/bionic/strcmp.S", 874 "arch-arm/cortex-a15/bionic/strcpy.S", 875 "arch-arm/cortex-a15/bionic/strlen.S", 876 877 "arch-arm/denver/bionic/memmove.S", 878 ], 879 exclude_srcs: [ 880 "arch-arm/generic/bionic/memcpy.S", 881 "arch-arm/generic/bionic/memset.S", 882 "arch-arm/generic/bionic/strcmp.S", 883 "arch-arm/generic/bionic/strcpy.S", 884 "arch-arm/generic/bionic/strlen.c", 885 "bionic/__strcat_chk.cpp", 886 "bionic/__strcpy_chk.cpp", 887 ], 888 }, 889 cortex_a53_a57: { 890 srcs: [ 891 "arch-arm/cortex-a15/bionic/memcpy.S", 892 "arch-arm/cortex-a15/bionic/memset.S", 893 "arch-arm/cortex-a15/bionic/stpcpy.S", 894 "arch-arm/cortex-a15/bionic/strcat.S", 895 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 896 "arch-arm/cortex-a15/bionic/strcmp.S", 897 "arch-arm/cortex-a15/bionic/strcpy.S", 898 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 899 "arch-arm/cortex-a15/bionic/strlen.S", 900 901 "arch-arm/denver/bionic/memmove.S", 902 ], 903 exclude_srcs: [ 904 "arch-arm/generic/bionic/memcpy.S", 905 "arch-arm/generic/bionic/memset.S", 906 "arch-arm/generic/bionic/strcmp.S", 907 "arch-arm/generic/bionic/strcpy.S", 908 "arch-arm/generic/bionic/strlen.c", 909 "bionic/__strcat_chk.cpp", 910 "bionic/__strcpy_chk.cpp", 911 ], 912 }, 913 cortex_a8: { 914 srcs: [ 915 "arch-arm/cortex-a15/bionic/memcpy.S", 916 "arch-arm/cortex-a15/bionic/memset.S", 917 "arch-arm/cortex-a15/bionic/stpcpy.S", 918 "arch-arm/cortex-a15/bionic/strcat.S", 919 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 920 "arch-arm/cortex-a15/bionic/strcmp.S", 921 "arch-arm/cortex-a15/bionic/strcpy.S", 922 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 923 "arch-arm/cortex-a15/bionic/strlen.S", 924 925 "arch-arm/denver/bionic/memmove.S", 926 ], 927 exclude_srcs: [ 928 "arch-arm/generic/bionic/memcpy.S", 929 "arch-arm/generic/bionic/memset.S", 930 "arch-arm/generic/bionic/strcmp.S", 931 "arch-arm/generic/bionic/strcpy.S", 932 "arch-arm/generic/bionic/strlen.c", 933 "bionic/__strcat_chk.cpp", 934 "bionic/__strcpy_chk.cpp", 935 ], 936 }, 937 cortex_a9: { 938 srcs: [ 939 "arch-arm/cortex-a9/bionic/memcpy.S", 940 "arch-arm/cortex-a9/bionic/memset.S", 941 "arch-arm/cortex-a9/bionic/stpcpy.S", 942 "arch-arm/cortex-a9/bionic/strcat.S", 943 "arch-arm/cortex-a9/bionic/__strcat_chk.S", 944 "arch-arm/cortex-a9/bionic/strcmp.S", 945 "arch-arm/cortex-a9/bionic/strcpy.S", 946 "arch-arm/cortex-a9/bionic/__strcpy_chk.S", 947 "arch-arm/cortex-a9/bionic/strlen.S", 948 949 "arch-arm/denver/bionic/memmove.S", 950 ], 951 exclude_srcs: [ 952 "arch-arm/generic/bionic/memcpy.S", 953 "arch-arm/generic/bionic/memset.S", 954 "arch-arm/generic/bionic/strcmp.S", 955 "arch-arm/generic/bionic/strcpy.S", 956 "arch-arm/generic/bionic/strlen.c", 957 "bionic/__strcat_chk.cpp", 958 "bionic/__strcpy_chk.cpp", 959 ], 960 }, 961 cortex_a15: { 962 srcs: [ 963 "arch-arm/cortex-a15/bionic/memcpy.S", 964 "arch-arm/cortex-a15/bionic/memset.S", 965 "arch-arm/cortex-a15/bionic/stpcpy.S", 966 "arch-arm/cortex-a15/bionic/strcat.S", 967 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 968 "arch-arm/cortex-a15/bionic/strcmp.S", 969 "arch-arm/cortex-a15/bionic/strcpy.S", 970 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 971 "arch-arm/cortex-a15/bionic/strlen.S", 972 973 "arch-arm/denver/bionic/memmove.S", 974 ], 975 exclude_srcs: [ 976 "arch-arm/generic/bionic/memcpy.S", 977 "arch-arm/generic/bionic/memset.S", 978 "arch-arm/generic/bionic/strcmp.S", 979 "arch-arm/generic/bionic/strcpy.S", 980 "arch-arm/generic/bionic/strlen.c", 981 "bionic/__strcat_chk.cpp", 982 "bionic/__strcpy_chk.cpp", 983 ], 984 }, 985 cortex_a73: { 986 srcs: [ 987 "arch-arm/cortex-a7/bionic/memset.S", 988 989 "arch-arm/denver/bionic/memcpy.S", 990 "arch-arm/denver/bionic/memmove.S", 991 "arch-arm/denver/bionic/__strcat_chk.S", 992 "arch-arm/denver/bionic/__strcpy_chk.S", 993 994 "arch-arm/krait/bionic/strcmp.S", 995 996 "arch-arm/cortex-a15/bionic/stpcpy.S", 997 "arch-arm/cortex-a15/bionic/strcat.S", 998 "arch-arm/cortex-a15/bionic/strcpy.S", 999 "arch-arm/cortex-a15/bionic/strlen.S", 1000 ], 1001 exclude_srcs: [ 1002 "arch-arm/generic/bionic/memcpy.S", 1003 "arch-arm/generic/bionic/memset.S", 1004 "arch-arm/generic/bionic/strcmp.S", 1005 "arch-arm/generic/bionic/strcpy.S", 1006 "arch-arm/generic/bionic/strlen.c", 1007 "bionic/__strcat_chk.cpp", 1008 "bionic/__strcpy_chk.cpp", 1009 ], 1010 }, 1011 denver: { 1012 srcs: [ 1013 "arch-arm/denver/bionic/memcpy.S", 1014 "arch-arm/denver/bionic/memmove.S", 1015 "arch-arm/denver/bionic/memset.S", 1016 "arch-arm/denver/bionic/__strcat_chk.S", 1017 "arch-arm/denver/bionic/__strcpy_chk.S", 1018 1019 // Use cortex-a15 versions of strcat/strcpy/strlen. 1020 "arch-arm/cortex-a15/bionic/stpcpy.S", 1021 "arch-arm/cortex-a15/bionic/strcat.S", 1022 "arch-arm/cortex-a15/bionic/strcmp.S", 1023 "arch-arm/cortex-a15/bionic/strcpy.S", 1024 "arch-arm/cortex-a15/bionic/strlen.S", 1025 ], 1026 exclude_srcs: [ 1027 "arch-arm/generic/bionic/memcpy.S", 1028 "arch-arm/generic/bionic/memset.S", 1029 "arch-arm/generic/bionic/strcmp.S", 1030 "arch-arm/generic/bionic/strcpy.S", 1031 "arch-arm/generic/bionic/strlen.c", 1032 "bionic/__strcat_chk.cpp", 1033 "bionic/__strcpy_chk.cpp", 1034 ], 1035 }, 1036 krait: { 1037 srcs: [ 1038 "arch-arm/krait/bionic/memcpy.S", 1039 "arch-arm/krait/bionic/memset.S", 1040 "arch-arm/krait/bionic/strcmp.S", 1041 "arch-arm/krait/bionic/__strcat_chk.S", 1042 "arch-arm/krait/bionic/__strcpy_chk.S", 1043 1044 // Use cortex-a15 versions of strcat/strcpy/strlen. 1045 "arch-arm/cortex-a15/bionic/stpcpy.S", 1046 "arch-arm/cortex-a15/bionic/strcat.S", 1047 "arch-arm/cortex-a15/bionic/strcpy.S", 1048 "arch-arm/cortex-a15/bionic/strlen.S", 1049 1050 "arch-arm/denver/bionic/memmove.S", 1051 ], 1052 exclude_srcs: [ 1053 "arch-arm/generic/bionic/memcpy.S", 1054 "arch-arm/generic/bionic/memset.S", 1055 "arch-arm/generic/bionic/strcmp.S", 1056 "arch-arm/generic/bionic/strcpy.S", 1057 "arch-arm/generic/bionic/strlen.c", 1058 "bionic/__strcat_chk.cpp", 1059 "bionic/__strcpy_chk.cpp", 1060 ], 1061 }, 1062 kryo: { 1063 srcs: [ 1064 "arch-arm/kryo/bionic/memcpy.S", 1065 "arch-arm/cortex-a7/bionic/memset.S", 1066 "arch-arm/krait/bionic/strcmp.S", 1067 "arch-arm/krait/bionic/__strcat_chk.S", 1068 "arch-arm/krait/bionic/__strcpy_chk.S", 1069 1070 // Use cortex-a15 versions of strcat/strcpy/strlen. 1071 "arch-arm/cortex-a15/bionic/stpcpy.S", 1072 "arch-arm/cortex-a15/bionic/strcat.S", 1073 "arch-arm/cortex-a15/bionic/strcpy.S", 1074 "arch-arm/cortex-a15/bionic/strlen.S", 1075 1076 "arch-arm/denver/bionic/memmove.S", 1077 ], 1078 exclude_srcs: [ 1079 "arch-arm/generic/bionic/memcpy.S", 1080 "arch-arm/generic/bionic/memset.S", 1081 "arch-arm/generic/bionic/strcmp.S", 1082 "arch-arm/generic/bionic/strcpy.S", 1083 "arch-arm/generic/bionic/strlen.c", 1084 "bionic/__strcat_chk.cpp", 1085 "bionic/__strcpy_chk.cpp", 1086 ], 1087 }, 1088 }, 1089 arm64: { 1090 srcs: [ 1091 "arch-arm64/generic/bionic/memchr.S", 1092 "arch-arm64/generic/bionic/memcmp.S", 1093 "arch-arm64/generic/bionic/memcpy.S", 1094 "arch-arm64/generic/bionic/memmove.S", 1095 "arch-arm64/generic/bionic/memset.S", 1096 "arch-arm64/generic/bionic/stpcpy.S", 1097 "arch-arm64/generic/bionic/strchr.S", 1098 "arch-arm64/generic/bionic/strcmp.S", 1099 "arch-arm64/generic/bionic/strcpy.S", 1100 "arch-arm64/generic/bionic/strlen.S", 1101 "arch-arm64/generic/bionic/strncmp.S", 1102 "arch-arm64/generic/bionic/strnlen.S", 1103 "arch-arm64/generic/bionic/wmemmove.S", 1104 1105 "arch-arm64/bionic/__bionic_clone.S", 1106 "arch-arm64/bionic/_exit_with_stack_teardown.S", 1107 "arch-arm64/bionic/setjmp.S", 1108 "arch-arm64/bionic/syscall.S", 1109 "arch-arm64/bionic/vfork.S", 1110 ], 1111 exclude_srcs: [ 1112 "bionic/__memcpy_chk.cpp", 1113 "bionic/strchr.cpp", 1114 "bionic/strnlen.c", 1115 ], 1116 denver64: { 1117 srcs: [ 1118 "arch-arm64/denver64/bionic/memcpy.S", 1119 "arch-arm64/denver64/bionic/memset.S", 1120 ], 1121 exclude_srcs: [ 1122 "arch-arm64/generic/bionic/memcpy.S", 1123 "arch-arm64/generic/bionic/memset.S", 1124 ], 1125 }, 1126 cortex_a53: { 1127 srcs: [ 1128 "arch-arm64/cortex-a53/bionic/memmove.S", 1129 ], 1130 exclude_srcs: [ 1131 "arch-arm64/generic/bionic/memmove.S", 1132 ], 1133 }, 1134 cortex_a73: { 1135 srcs: [ 1136 "arch-arm64/cortex-a53/bionic/memmove.S", 1137 ], 1138 exclude_srcs: [ 1139 "arch-arm64/generic/bionic/memmove.S", 1140 ], 1141 }, 1142 }, 1143 1144 mips: { 1145 srcs: [ 1146 "arch-mips/string/memcmp.c", 1147 "arch-mips/string/memcpy.c", 1148 "arch-mips/string/memset.S", 1149 "arch-mips/string/strcmp.S", 1150 "arch-mips/string/strncmp.S", 1151 "arch-mips/string/strlen.c", 1152 "arch-mips/string/strnlen.c", 1153 "arch-mips/string/strchr.c", 1154 "arch-mips/string/strcpy.c", 1155 "arch-mips/string/memchr.c", 1156 "arch-mips/string/memmove.c", 1157 1158 "arch-mips/bionic/__bionic_clone.S", 1159 "arch-mips/bionic/cacheflush.cpp", 1160 "arch-mips/bionic/_exit_with_stack_teardown.S", 1161 "arch-mips/bionic/libgcc_compat.c", 1162 "arch-mips/bionic/setjmp.S", 1163 "arch-mips/bionic/syscall.S", 1164 "arch-mips/bionic/vfork.S", 1165 ], 1166 exclude_srcs: [ 1167 "bionic/strchr.cpp", 1168 "bionic/strnlen.c", 1169 ], 1170 }, 1171 mips64: { 1172 srcs: [ 1173 "arch-mips/string/memcmp.c", 1174 "arch-mips/string/memcpy.c", 1175 "arch-mips/string/memset.S", 1176 "arch-mips/string/strcmp.S", 1177 "arch-mips/string/strncmp.S", 1178 "arch-mips/string/strlen.c", 1179 "arch-mips/string/strnlen.c", 1180 "arch-mips/string/strchr.c", 1181 "arch-mips/string/strcpy.c", 1182 "arch-mips/string/memchr.c", 1183 "arch-mips/string/memmove.c", 1184 1185 "arch-mips64/bionic/__bionic_clone.S", 1186 "arch-mips64/bionic/_exit_with_stack_teardown.S", 1187 "arch-mips64/bionic/setjmp.S", 1188 "arch-mips64/bionic/syscall.S", 1189 "arch-mips64/bionic/vfork.S", 1190 "arch-mips64/bionic/stat.cpp", 1191 ], 1192 exclude_srcs: [ 1193 "bionic/strchr.cpp", 1194 "bionic/strnlen.c", 1195 ], 1196 }, 1197 1198 x86: { 1199 srcs: [ 1200 "arch-x86/generic/string/memcmp.S", 1201 "arch-x86/generic/string/strcmp.S", 1202 "arch-x86/generic/string/strncmp.S", 1203 "arch-x86/generic/string/strcat.S", 1204 "arch-x86/atom/string/sse2-memchr-atom.S", 1205 "arch-x86/atom/string/sse2-memrchr-atom.S", 1206 "arch-x86/atom/string/sse2-strchr-atom.S", 1207 "arch-x86/atom/string/sse2-strnlen-atom.S", 1208 "arch-x86/atom/string/sse2-strrchr-atom.S", 1209 "arch-x86/atom/string/sse2-wcschr-atom.S", 1210 "arch-x86/atom/string/sse2-wcsrchr-atom.S", 1211 "arch-x86/atom/string/sse2-wcslen-atom.S", 1212 "arch-x86/atom/string/sse2-wcscmp-atom.S", 1213 "arch-x86/silvermont/string/sse2-memcpy-slm.S", 1214 "arch-x86/silvermont/string/sse2-memmove-slm.S", 1215 "arch-x86/silvermont/string/sse2-memset-slm.S", 1216 "arch-x86/silvermont/string/sse2-stpcpy-slm.S", 1217 "arch-x86/silvermont/string/sse2-stpncpy-slm.S", 1218 "arch-x86/silvermont/string/sse2-strcpy-slm.S", 1219 "arch-x86/silvermont/string/sse2-strlen-slm.S", 1220 "arch-x86/silvermont/string/sse2-strncpy-slm.S", 1221 1222 "arch-x86/bionic/__bionic_clone.S", 1223 "arch-x86/bionic/_exit_with_stack_teardown.S", 1224 "arch-x86/bionic/libgcc_compat.c", 1225 "arch-x86/bionic/__restore.S", 1226 "arch-x86/bionic/setjmp.S", 1227 "arch-x86/bionic/syscall.S", 1228 "arch-x86/bionic/vfork.S", 1229 ], 1230 1231 exclude_srcs: [ 1232 "bionic/strchr.cpp", 1233 "bionic/strnlen.c", 1234 "bionic/strrchr.cpp", 1235 ], 1236 atom: { 1237 srcs: [ 1238 "arch-x86/atom/string/sse2-memset-atom.S", 1239 "arch-x86/atom/string/sse2-strlen-atom.S", 1240 "arch-x86/atom/string/ssse3-memcmp-atom.S", 1241 "arch-x86/atom/string/ssse3-memcpy-atom.S", 1242 "arch-x86/atom/string/ssse3-memmove-atom.S", 1243 "arch-x86/atom/string/ssse3-strcpy-atom.S", 1244 "arch-x86/atom/string/ssse3-strncpy-atom.S", 1245 "arch-x86/atom/string/ssse3-wmemcmp-atom.S", 1246 ], 1247 exclude_srcs: [ 1248 "arch-x86/generic/string/memcmp.S", 1249 "arch-x86/silvermont/string/sse2-memcpy-slm.S", 1250 "arch-x86/silvermont/string/sse2-memmove-slm.S", 1251 "arch-x86/silvermont/string/sse2-memset-slm.S", 1252 "arch-x86/silvermont/string/sse2-strcpy-slm.S", 1253 "arch-x86/silvermont/string/sse2-strlen-slm.S", 1254 "arch-x86/silvermont/string/sse2-strncpy-slm.S", 1255 ], 1256 }, 1257 ssse3: { 1258 srcs: [ 1259 "arch-x86/atom/string/ssse3-strncat-atom.S", 1260 "arch-x86/atom/string/ssse3-strlcat-atom.S", 1261 "arch-x86/atom/string/ssse3-strlcpy-atom.S", 1262 "arch-x86/atom/string/ssse3-strcat-atom.S", 1263 "arch-x86/atom/string/ssse3-strcmp-atom.S", 1264 "arch-x86/atom/string/ssse3-strncmp-atom.S", 1265 "arch-x86/atom/string/ssse3-wcscat-atom.S", 1266 "arch-x86/atom/string/ssse3-wcscpy-atom.S", 1267 ], 1268 exclude_srcs: [ 1269 "arch-x86/generic/string/strcmp.S", 1270 "arch-x86/generic/string/strncmp.S", 1271 "arch-x86/generic/string/strcat.S", 1272 ], 1273 }, 1274 sse4: { 1275 srcs: [ 1276 "arch-x86/silvermont/string/sse4-memcmp-slm.S", 1277 "arch-x86/silvermont/string/sse4-wmemcmp-slm.S", 1278 ], 1279 exclude_srcs: [ 1280 "arch-x86/generic/string/memcmp.S", 1281 ], 1282 }, 1283 }, 1284 x86_64: { 1285 srcs: [ 1286 "arch-x86_64/string/sse2-memcpy-slm.S", 1287 "arch-x86_64/string/sse2-memmove-slm.S", 1288 "arch-x86_64/string/sse2-memset-slm.S", 1289 "arch-x86_64/string/sse2-stpcpy-slm.S", 1290 "arch-x86_64/string/sse2-stpncpy-slm.S", 1291 "arch-x86_64/string/sse2-strcat-slm.S", 1292 "arch-x86_64/string/sse2-strcpy-slm.S", 1293 "arch-x86_64/string/sse2-strlcat-slm.S", 1294 "arch-x86_64/string/sse2-strlcpy-slm.S", 1295 "arch-x86_64/string/sse2-strlen-slm.S", 1296 "arch-x86_64/string/sse2-strncat-slm.S", 1297 "arch-x86_64/string/sse2-strncpy-slm.S", 1298 "arch-x86_64/string/sse4-memcmp-slm.S", 1299 "arch-x86_64/string/ssse3-strcmp-slm.S", 1300 "arch-x86_64/string/ssse3-strncmp-slm.S", 1301 1302 "arch-x86_64/bionic/__bionic_clone.S", 1303 "arch-x86_64/bionic/_exit_with_stack_teardown.S", 1304 "arch-x86_64/bionic/__restore_rt.S", 1305 "arch-x86_64/bionic/setjmp.S", 1306 "arch-x86_64/bionic/syscall.S", 1307 "arch-x86_64/bionic/vfork.S", 1308 ], 1309 }, 1310 }, 1311 1312 cppflags: ["-Wold-style-cast"], 1313 include_dirs: ["bionic/libstdc++/include"], 1314 name: "libc_bionic", 1315} 1316 1317genrule { 1318 name: "generated_android_ids", 1319 out: ["generated_android_ids.h"], 1320 srcs: [":android_filesystem_config_header"], 1321 tool_files: ["fs_config_generator.py"], 1322 cmd: "$(location fs_config_generator.py) aidarray $(in) > $(out)", 1323} 1324 1325// ======================================================== 1326// libc_bionic_ndk.a- The portions of libc_bionic that can 1327// be safely used in libc_ndk.a (no troublesome global data 1328// or constructors). 1329// ======================================================== 1330cc_library_static { 1331 defaults: ["libc_defaults"], 1332 srcs: [ 1333 "bionic/NetdClientDispatch.cpp", 1334 "bionic/__bionic_get_shell_path.cpp", 1335 "bionic/__cmsg_nxthdr.cpp", 1336 "bionic/__errno.cpp", 1337 "bionic/__gnu_basename.cpp", 1338 "bionic/__libc_current_sigrtmax.cpp", 1339 "bionic/__libc_current_sigrtmin.cpp", 1340 "bionic/__set_errno.cpp", 1341 "bionic/abort.cpp", 1342 "bionic/accept.cpp", 1343 "bionic/accept4.cpp", 1344 "bionic/access.cpp", 1345 "bionic/arpa_inet.cpp", 1346 "bionic/assert.cpp", 1347 "bionic/atof.cpp", 1348 "bionic/bionic_arc4random.cpp", 1349 "bionic/bionic_netlink.cpp", 1350 "bionic/bionic_systrace.cpp", 1351 "bionic/bionic_time_conversions.cpp", 1352 "bionic/brk.cpp", 1353 "bionic/c16rtomb.cpp", 1354 "bionic/c32rtomb.cpp", 1355 "bionic/chmod.cpp", 1356 "bionic/chown.cpp", 1357 "bionic/clearenv.cpp", 1358 "bionic/clock.cpp", 1359 "bionic/clock_getcpuclockid.cpp", 1360 "bionic/clock_nanosleep.cpp", 1361 "bionic/clone.cpp", 1362 "bionic/close.cpp", 1363 "bionic/connect.cpp", 1364 "bionic/ctype.cpp", 1365 "bionic/dirent.cpp", 1366 "bionic/dup2.cpp", 1367 "bionic/environ.cpp", 1368 "bionic/epoll_create.cpp", 1369 "bionic/epoll_pwait.cpp", 1370 "bionic/epoll_wait.cpp", 1371 "bionic/error.cpp", 1372 "bionic/eventfd_read.cpp", 1373 "bionic/eventfd_write.cpp", 1374 "bionic/exec.cpp", 1375 "bionic/faccessat.cpp", 1376 "bionic/fchmod.cpp", 1377 "bionic/fchmodat.cpp", 1378 "bionic/ffs.cpp", 1379 "bionic/fgetxattr.cpp", 1380 "bionic/flistxattr.cpp", 1381 "bionic/flockfile.cpp", 1382 "bionic/fortify.cpp", 1383 "bionic/fpclassify.cpp", 1384 "bionic/fsetxattr.cpp", 1385 "bionic/ftruncate.cpp", 1386 "bionic/ftw.cpp", 1387 "bionic/futimens.cpp", 1388 "bionic/getcwd.cpp", 1389 "bionic/getdomainname.cpp", 1390 "bionic/gethostname.cpp", 1391 "bionic/getpagesize.cpp", 1392 "bionic/getpgrp.cpp", 1393 "bionic/getpid.cpp", 1394 "bionic/getpriority.cpp", 1395 "bionic/gettid.cpp", 1396 "bionic/grp_pwd.cpp", 1397 "bionic/ifaddrs.cpp", 1398 "bionic/inotify_init.cpp", 1399 "bionic/ioctl.cpp", 1400 "bionic/langinfo.cpp", 1401 "bionic/lchown.cpp", 1402 "bionic/lfs64_support.cpp", 1403 "bionic/libc_init_common.cpp", 1404 "bionic/libgen.cpp", 1405 "bionic/link.cpp", 1406 "bionic/locale.cpp", 1407 "bionic/lockf.cpp", 1408 "bionic/lstat.cpp", 1409 "bionic/malloc_info.cpp", 1410 "bionic/mblen.cpp", 1411 "bionic/mbrtoc16.cpp", 1412 "bionic/mbrtoc32.cpp", 1413 "bionic/memmem.cpp", 1414 "bionic/mempcpy.cpp", 1415 "bionic/mkdir.cpp", 1416 "bionic/mkfifo.cpp", 1417 "bionic/mknod.cpp", 1418 "bionic/mntent.cpp", 1419 "bionic/mremap.cpp", 1420 "bionic/net_if.cpp", 1421 "bionic/netdb.cpp", 1422 "bionic/netinet_in.cpp", 1423 "bionic/nl_types.cpp", 1424 "bionic/open.cpp", 1425 "bionic/pathconf.cpp", 1426 "bionic/pause.cpp", 1427 "bionic/pipe.cpp", 1428 "bionic/poll.cpp", 1429 "bionic/posix_fadvise.cpp", 1430 "bionic/posix_fallocate.cpp", 1431 "bionic/posix_madvise.cpp", 1432 "bionic/posix_timers.cpp", 1433 "bionic/ptrace.cpp", 1434 "bionic/pty.cpp", 1435 "bionic/raise.cpp", 1436 "bionic/rand.cpp", 1437 "bionic/readlink.cpp", 1438 "bionic/reboot.cpp", 1439 "bionic/recv.cpp", 1440 "bionic/rename.cpp", 1441 "bionic/rmdir.cpp", 1442 "bionic/scandir.cpp", 1443 "bionic/sched_getaffinity.cpp", 1444 "bionic/sched_getcpu.cpp", 1445 "bionic/semaphore.cpp", 1446 "bionic/send.cpp", 1447 "bionic/setegid.cpp", 1448 "bionic/seteuid.cpp", 1449 "bionic/setpgrp.cpp", 1450 "bionic/sigaction.cpp", 1451 "bionic/sigaddset.cpp", 1452 "bionic/sigdelset.cpp", 1453 "bionic/sigemptyset.cpp", 1454 "bionic/sigfillset.cpp", 1455 "bionic/sighold.cpp", 1456 "bionic/sigignore.cpp", 1457 "bionic/sigismember.cpp", 1458 "bionic/signal.cpp", 1459 "bionic/signalfd.cpp", 1460 "bionic/sigpause.cpp", 1461 "bionic/sigpending.cpp", 1462 "bionic/sigprocmask.cpp", 1463 "bionic/sigqueue.cpp", 1464 "bionic/sigrelse.cpp", 1465 "bionic/sigset.cpp", 1466 "bionic/sigsuspend.cpp", 1467 "bionic/sigtimedwait.cpp", 1468 "bionic/sigwait.cpp", 1469 "bionic/sigwaitinfo.cpp", 1470 "bionic/socket.cpp", 1471 "bionic/stat.cpp", 1472 "bionic/statvfs.cpp", 1473 "bionic/stdlib_l.cpp", 1474 "bionic/strchrnul.cpp", 1475 "bionic/strerror.cpp", 1476 "bionic/strerror_r.cpp", 1477 "bionic/string_l.cpp", 1478 "bionic/strings_l.cpp", 1479 "bionic/strsignal.cpp", 1480 "bionic/strtold.cpp", 1481 "bionic/symlink.cpp", 1482 "bionic/sync_file_range.cpp", 1483 "bionic/sys_msg.cpp", 1484 "bionic/sys_sem.cpp", 1485 "bionic/sys_shm.cpp", 1486 "bionic/sys_siglist.c", 1487 "bionic/sys_signame.c", 1488 "bionic/sys_time.cpp", 1489 "bionic/sysinfo.cpp", 1490 "bionic/syslog.cpp", 1491 "bionic/system_properties.cpp", 1492 "bionic/tdestroy.cpp", 1493 "bionic/termios.cpp", 1494 "bionic/thread_private.cpp", 1495 "bionic/tmpfile.cpp", 1496 "bionic/umount.cpp", 1497 "bionic/unlink.cpp", 1498 "bionic/wait.cpp", 1499 "bionic/wchar.cpp", 1500 "bionic/wchar_l.cpp", 1501 "bionic/wcstod.cpp", 1502 "bionic/wctype.cpp", 1503 "bionic/wmempcpy.cpp", 1504 ], 1505 1506 multilib: { 1507 lib32: { 1508 // LP32 cruft 1509 srcs: ["bionic/mmap.cpp"], 1510 }, 1511 }, 1512 product_variables: { 1513 treble: { 1514 cflags: ["-D__ANDROID_TREBLE__"], 1515 }, 1516 }, 1517 cppflags: ["-Wold-style-cast"], 1518 local_include_dirs: ["stdio"], 1519 include_dirs: ["bionic/libstdc++/include"], 1520 name: "libc_bionic_ndk", 1521 generated_headers: ["generated_android_ids"], 1522} 1523 1524// ======================================================== 1525// libc_pthread.a - pthreads parts that previously lived in 1526// libc_bionic.a. Relocated to their own library because 1527// they can't be included in libc_ndk.a (as they layout of 1528// pthread_t has changed over the years and has ABI 1529// compatibility issues). 1530// ======================================================== 1531 1532cc_library_static { 1533 defaults: ["libc_defaults"], 1534 srcs: [ 1535 "bionic/pthread_atfork.cpp", 1536 "bionic/pthread_attr.cpp", 1537 "bionic/pthread_barrier.cpp", 1538 "bionic/pthread_cond.cpp", 1539 "bionic/pthread_create.cpp", 1540 "bionic/pthread_detach.cpp", 1541 "bionic/pthread_equal.cpp", 1542 "bionic/pthread_exit.cpp", 1543 "bionic/pthread_getcpuclockid.cpp", 1544 "bionic/pthread_getschedparam.cpp", 1545 "bionic/pthread_gettid_np.cpp", 1546 "bionic/pthread_internal.cpp", 1547 "bionic/pthread_join.cpp", 1548 "bionic/pthread_key.cpp", 1549 "bionic/pthread_kill.cpp", 1550 "bionic/pthread_mutex.cpp", 1551 "bionic/pthread_once.cpp", 1552 "bionic/pthread_rwlock.cpp", 1553 "bionic/pthread_self.cpp", 1554 "bionic/pthread_setname_np.cpp", 1555 "bionic/pthread_setschedparam.cpp", 1556 "bionic/pthread_sigmask.cpp", 1557 "bionic/pthread_spinlock.cpp", 1558 ], 1559 1560 cppflags: ["-Wold-style-cast"], 1561 include_dirs: ["bionic/libstdc++/include"], 1562 name: "libc_pthread", 1563} 1564 1565// ======================================================== 1566// libc_syscalls.a 1567// ======================================================== 1568 1569cc_library_static { 1570 defaults: ["libc_defaults"], 1571 arch: { 1572 arm: { 1573 srcs: ["arch-arm/syscalls/**/*.S"], 1574 }, 1575 arm64: { 1576 srcs: ["arch-arm64/syscalls/**/*.S"], 1577 }, 1578 mips: { 1579 srcs: ["arch-mips/syscalls/**/*.S"], 1580 }, 1581 mips64: { 1582 srcs: ["arch-mips64/syscalls/**/*.S"], 1583 }, 1584 x86: { 1585 srcs: ["arch-x86/syscalls/**/*.S"], 1586 }, 1587 x86_64: { 1588 srcs: ["arch-x86_64/syscalls/**/*.S"], 1589 }, 1590 }, 1591 name: "libc_syscalls", 1592} 1593 1594// ======================================================== 1595// libc_aeabi.a 1596// This is an LP32 ARM-only library that needs to be built with -fno-builtin 1597// to avoid infinite recursion. For the other architectures we just build an 1598// empty library to keep this makefile simple. 1599// ======================================================== 1600 1601cc_library_static { 1602 defaults: ["libc_defaults"], 1603 arch: { 1604 arm: { 1605 srcs: ["arch-arm/bionic/__aeabi.c"], 1606 }, 1607 }, 1608 name: "libc_aeabi", 1609 cflags: ["-fno-builtin"], 1610} 1611 1612// ======================================================== 1613// libc_ndk.a 1614// Compatibility library for the NDK. This library contains 1615// all the parts of libc that are safe to statically link. 1616// We can't safely statically link things that can only run 1617// on a certain version of the OS. Examples include 1618// anything that talks to netd (a large portion of the DNS 1619// code) and anything that is dependent on the layout of a 1620// data structure that has changed across releases (such as 1621// pthread_t). 1622// ======================================================== 1623 1624cc_library_static { 1625 name: "libc_ndk", 1626 defaults: ["libc_defaults"], 1627 srcs: libc_common_src_files + ["bionic/malloc_common.cpp"], 1628 multilib: { 1629 lib32: { 1630 srcs: libc_common_src_files_32, 1631 }, 1632 }, 1633 arch: { 1634 arm: { 1635 srcs: [ 1636 "arch-arm/bionic/exidx_dynamic.c", 1637 "arch-common/bionic/crtbegin_so.c", 1638 "arch-arm/bionic/atexit_legacy.c", 1639 "arch-common/bionic/crtend_so.S", 1640 ], 1641 whole_static_libs: ["libc_aeabi"], 1642 }, 1643 }, 1644 1645 cflags: [ 1646 "-fvisibility=hidden", 1647 "-DLIBC_STATIC", 1648 ], 1649 1650 whole_static_libs: [ 1651 "libc_bionic_ndk", 1652 "libc_freebsd", 1653 "libc_freebsd_large_stack", 1654 "libc_gdtoa", 1655 "libc_malloc", 1656 "libc_netbsd", 1657 "libc_openbsd_large_stack", 1658 "libc_openbsd_ndk", 1659 "libc_stack_protector", 1660 "libc_syscalls", 1661 "libc_tzcode", 1662 "libm", 1663 "libjemalloc", 1664 "libstdc++", 1665 ], 1666} 1667 1668// ======================================================== 1669// libc_common.a 1670// ======================================================== 1671 1672cc_library_static { 1673 defaults: ["libc_defaults"], 1674 srcs: libc_common_src_files, 1675 multilib: { 1676 lib32: { 1677 srcs: libc_common_src_files_32, 1678 }, 1679 }, 1680 name: "libc_common", 1681 1682 whole_static_libs: [ 1683 "libc_bionic", 1684 "libc_bionic_ndk", 1685 "libc_dns", 1686 "libc_freebsd", 1687 "libc_freebsd_large_stack", 1688 "libc_gdtoa", 1689 "libc_malloc", 1690 "libc_netbsd", 1691 "libc_openbsd", 1692 "libc_openbsd_large_stack", 1693 "libc_openbsd_ndk", 1694 "libc_pthread", 1695 "libc_stack_protector", 1696 "libc_syscalls", 1697 "libc_tzcode", 1698 "libstdc++", 1699 ], 1700 1701 arch: { 1702 arm: { 1703 whole_static_libs: ["libc_aeabi"], 1704 }, 1705 }, 1706} 1707 1708// ======================================================== 1709// libc_nomalloc.a 1710// ======================================================== 1711// 1712// This is a version of the static C library that does not 1713// include malloc. It's useful in situations when the user wants 1714// to provide their own malloc implementation, or wants to 1715// explicitly disallow the use of malloc, such as in the 1716// dynamic linker. 1717 1718cc_library_static { 1719 name: "libc_nomalloc", 1720 1721 defaults: ["libc_defaults"], 1722 1723 arch: { 1724 arm: { 1725 srcs: ["arch-arm/bionic/exidx_static.c"], 1726 }, 1727 }, 1728 1729 cflags: ["-DLIBC_STATIC"], 1730 1731 whole_static_libs: [ 1732 "libc_common", 1733 "libc_init_static", 1734 ], 1735} 1736 1737// ======================================================== 1738// libc_malloc.a: the _prefixed_ malloc functions (like dlcalloc). 1739// ======================================================== 1740cc_library_static { 1741 defaults: ["libc_defaults"], 1742 srcs: ["bionic/jemalloc_wrapper.cpp"], 1743 cflags: ["-fvisibility=hidden"], 1744 1745 name: "libc_malloc", 1746} 1747 1748// ======================================================== 1749// libc.a + libc.so 1750// ======================================================== 1751cc_library { 1752 defaults: ["libc_defaults"], 1753 name: "libc", 1754 product_variables: { 1755 platform_sdk_version: { 1756 asflags: ["-DPLATFORM_SDK_VERSION=%d"], 1757 }, 1758 }, 1759 static: { 1760 srcs: [ 1761 "bionic/dl_iterate_phdr_static.cpp", 1762 "bionic/icu_static.cpp", 1763 "bionic/malloc_common.cpp", 1764 "bionic/libc_init_static.cpp", 1765 ], 1766 cflags: ["-DLIBC_STATIC"], 1767 whole_static_libs: ["libc_init_static"], 1768 }, 1769 shared: { 1770 srcs: [ 1771 "arch-common/bionic/crtbegin_so.c", 1772 "arch-common/bionic/crtbrand.S", 1773 "bionic/icu.cpp", 1774 "bionic/malloc_common.cpp", 1775 "bionic/NetdClient.cpp", 1776 "arch-common/bionic/crtend_so.S", 1777 ], 1778 whole_static_libs: ["libc_init_dynamic"], 1779 }, 1780 1781 required: ["tzdata"], 1782 1783 // Leave the symbols in the shared library so that stack unwinders can produce 1784 // meaningful name resolution. 1785 strip: { 1786 keep_symbols: true, 1787 }, 1788 1789 // Do not pack libc.so relocations; see http://b/20645321 for details. 1790 pack_relocations: false, 1791 1792 // WARNING: The only library libc.so should depend on is libdl.so! If you add other libraries, 1793 // make sure to add -Wl,--exclude-libs=libgcc.a to the LOCAL_LDFLAGS for those libraries. This 1794 // ensures that symbols that are pulled into those new libraries from libgcc.a are not declared 1795 // external; if that were the case, then libc would not pull those symbols from libgcc.a as it 1796 // should, instead relying on the external symbols from the dependent libraries. That would 1797 // create a "cloaked" dependency on libgcc.a in libc though the libraries, which is not what 1798 // you wanted! 1799 1800 shared_libs: ["libdl"], 1801 whole_static_libs: ["libc_common", "libjemalloc"], 1802 1803 nocrt: true, 1804 1805 arch: { 1806 arm: { 1807 //TODO: This is to work around b/24465209. Remove after root cause is fixed 1808 ldflags: ["-Wl,--hash-style=both"], 1809 1810 // Don't re-export new/delete and friends, even if the compiler really wants to. 1811 version_script: "libc.arm.map", 1812 1813 shared: { 1814 srcs: [ 1815 "arch-arm/bionic/exidx_dynamic.c", 1816 1817 // special for arm 1818 "arch-arm/bionic/atexit_legacy.c", 1819 ], 1820 // special for arm 1821 cflags: ["-DCRT_LEGACY_WORKAROUND"], 1822 }, 1823 static: { 1824 srcs: ["arch-arm/bionic/exidx_static.c"], 1825 }, 1826 }, 1827 arm64: { 1828 // Don't re-export new/delete and friends, even if the compiler really wants to. 1829 version_script: "libc.arm64.map", 1830 }, 1831 mips: { 1832 // Don't re-export new/delete and friends, even if the compiler really wants to. 1833 version_script: "libc.mips.map", 1834 }, 1835 mips64: { 1836 // Don't re-export new/delete and friends, even if the compiler really wants to. 1837 version_script: "libc.mips64.map", 1838 }, 1839 x86: { 1840 //TODO: This is to work around b/24465209. Remove after root cause is fixed 1841 ldflags: ["-Wl,--hash-style=both"], 1842 1843 // Don't re-export new/delete and friends, even if the compiler really wants to. 1844 version_script: "libc.x86.map", 1845 }, 1846 x86_64: { 1847 // Don't re-export new/delete and friends, even if the compiler really wants to. 1848 version_script: "libc.x86_64.map", 1849 }, 1850 }, 1851} 1852 1853// ======================================================== 1854// libstdc++.so + libstdc++.a 1855// ======================================================== 1856cc_library { 1857 defaults: ["libc_defaults"], 1858 include_dirs: ["bionic/libstdc++/include"], 1859 srcs: [ 1860 "bionic/__cxa_guard.cpp", 1861 "bionic/__cxa_pure_virtual.cpp", 1862 "bionic/new.cpp", 1863 ], 1864 name: "libstdc++", 1865 system_shared_libs: ["libc"], 1866 static_libs: ["libasync_safe"], 1867 1868 //TODO (dimitry): This is to work around b/24465209. Remove after root cause is fixed 1869 arch: { 1870 arm: { 1871 ldflags: ["-Wl,--hash-style=both"], 1872 version_script: "libstdc++.arm.map", 1873 }, 1874 arm64: { 1875 version_script: "libstdc++.arm64.map", 1876 }, 1877 mips: { 1878 version_script: "libstdc++.mips.map", 1879 }, 1880 mips64: { 1881 version_script: "libstdc++.mips64.map", 1882 }, 1883 x86: { 1884 ldflags: ["-Wl,--hash-style=both"], 1885 version_script: "libstdc++.x86.map", 1886 }, 1887 x86_64: { 1888 version_script: "libstdc++.x86_64.map", 1889 }, 1890 }, 1891} 1892 1893cc_defaults { 1894 name: "crt_defaults", 1895 defaults: ["linux_bionic_supported"], 1896 vendor_available: true, 1897 1898 no_default_compiler_flags: true, 1899 1900 arch: { 1901 arm: { 1902 local_include_dirs: ["arch-arm/include"], 1903 }, 1904 arm64: { 1905 local_include_dirs: ["arch-arm64/include"], 1906 }, 1907 mips: { 1908 local_include_dirs: ["arch-mips/include"], 1909 }, 1910 mips64: { 1911 local_include_dirs: ["arch-mips64/include"], 1912 }, 1913 x86: { 1914 local_include_dirs: ["arch-x86/include"], 1915 }, 1916 x86_64: { 1917 local_include_dirs: ["arch-x86_64/include"], 1918 }, 1919 }, 1920 clang: false, 1921} 1922 1923cc_defaults { 1924 name: "crt_so_defaults", 1925 1926 vendor_available: true, 1927 arch: { 1928 mips: { 1929 cflags: ["-fPIC"], 1930 }, 1931 mips64: { 1932 cflags: ["-fPIC"], 1933 }, 1934 x86: { 1935 cflags: ["-fPIC"], 1936 }, 1937 x86_64: { 1938 cflags: ["-fPIC"], 1939 }, 1940 }, 1941} 1942 1943// crt obj files 1944cc_object { 1945 name: "crtbrand", 1946 // crtbrand.c needs <stdint.h> and a #define for the platform SDK version. 1947 local_include_dirs: ["include"], 1948 product_variables: { 1949 platform_sdk_version: { 1950 asflags: ["-DPLATFORM_SDK_VERSION=%d"], 1951 }, 1952 }, 1953 srcs: ["arch-common/bionic/crtbrand.S"], 1954 1955 defaults: [ 1956 "crt_defaults", 1957 "crt_so_defaults", 1958 ], 1959} 1960 1961cc_object { 1962 name: "crtbegin_so1", 1963 local_include_dirs: ["include"], 1964 srcs: ["arch-common/bionic/crtbegin_so.c"], 1965 1966 defaults: [ 1967 "crt_defaults", 1968 "crt_so_defaults", 1969 ], 1970} 1971 1972cc_object { 1973 name: "crtbegin_so", 1974 1975 defaults: [ 1976 "crt_defaults", 1977 "crt_so_defaults", 1978 ], 1979 objs: [ 1980 "crtbegin_so1", 1981 "crtbrand", 1982 ], 1983} 1984 1985cc_object { 1986 name: "crtend_so", 1987 local_include_dirs: ["include"], 1988 srcs: ["arch-common/bionic/crtend_so.S"], 1989 1990 defaults: [ 1991 "crt_defaults", 1992 "crt_so_defaults", 1993 ], 1994} 1995 1996cc_object { 1997 name: "crtbegin_static1", 1998 local_include_dirs: ["include"], 1999 srcs: ["arch-common/bionic/crtbegin.c"], 2000 2001 arch: { 2002 mips: { 2003 srcs: [ 2004 "arch-mips/bionic/crtbegin.c", 2005 ], 2006 exclude_srcs: [ 2007 "arch-common/bionic/crtbegin.c", 2008 ], 2009 }, 2010 mips64: { 2011 srcs: [ 2012 "arch-mips64/bionic/crtbegin.c", 2013 ], 2014 exclude_srcs: [ 2015 "arch-common/bionic/crtbegin.c", 2016 ], 2017 }, 2018 }, 2019 2020 defaults: ["crt_defaults"], 2021} 2022 2023cc_object { 2024 name: "crtbegin_static", 2025 2026 objs: [ 2027 "crtbegin_static1", 2028 "crtbrand", 2029 ], 2030 defaults: ["crt_defaults"], 2031} 2032 2033cc_object { 2034 name: "crtbegin_dynamic1", 2035 local_include_dirs: ["include"], 2036 srcs: ["arch-common/bionic/crtbegin.c"], 2037 2038 arch: { 2039 mips: { 2040 srcs: [ 2041 "arch-mips/bionic/crtbegin.c", 2042 ], 2043 exclude_srcs: [ 2044 "arch-common/bionic/crtbegin.c", 2045 ], 2046 }, 2047 mips64: { 2048 srcs: [ 2049 "arch-mips64/bionic/crtbegin.c", 2050 ], 2051 exclude_srcs: [ 2052 "arch-common/bionic/crtbegin.c", 2053 ], 2054 }, 2055 }, 2056 defaults: ["crt_defaults"], 2057} 2058 2059cc_object { 2060 name: "crtbegin_dynamic", 2061 2062 objs: [ 2063 "crtbegin_dynamic1", 2064 "crtbrand", 2065 ], 2066 defaults: ["crt_defaults"], 2067} 2068 2069cc_object { 2070 // We rename crtend.o to crtend_android.o to avoid a 2071 // name clash between gcc and bionic. 2072 name: "crtend_android", 2073 local_include_dirs: ["include"], 2074 srcs: ["arch-common/bionic/crtend.S"], 2075 2076 defaults: ["crt_defaults"], 2077} 2078 2079preprocessed_ndk_headers { 2080 name: "common_libc", 2081 from: "include", 2082 to: "", 2083 license: "NOTICE", 2084} 2085 2086ndk_headers { 2087 name: "libc_uapi", 2088 from: "kernel/uapi", 2089 to: "", 2090 srcs: [ 2091 "kernel/uapi/asm-generic/**/*.h", 2092 "kernel/uapi/drm/**/*.h", 2093 "kernel/uapi/linux/**/*.h", 2094 "kernel/uapi/misc/**/*.h", 2095 "kernel/uapi/mtd/**/*.h", 2096 "kernel/uapi/rdma/**/*.h", 2097 "kernel/uapi/scsi/**/*.h", 2098 "kernel/uapi/sound/**/*.h", 2099 "kernel/uapi/video/**/*.h", 2100 "kernel/uapi/xen/**/*.h", 2101 ], 2102 license: "NOTICE", 2103} 2104 2105ndk_headers { 2106 name: "libc_kernel_android_uapi_linux", 2107 from: "kernel/android/uapi/linux", 2108 to: "linux", 2109 srcs: ["kernel/android/uapi/linux/**/*.h"], 2110 license: "NOTICE", 2111} 2112 2113ndk_headers { 2114 name: "libc_kernel_android_scsi", 2115 from: "kernel/android/scsi/scsi", 2116 to: "scsi", 2117 srcs: ["kernel/android/scsi/**/*.h"], 2118 license: "NOTICE", 2119} 2120 2121ndk_headers { 2122 name: "libc_asm_arm", 2123 from: "kernel/uapi/asm-arm", 2124 to: "arm-linux-androideabi", 2125 srcs: ["kernel/uapi/asm-arm/**/*.h"], 2126 license: "NOTICE", 2127} 2128 2129ndk_headers { 2130 name: "libc_asm_arm64", 2131 from: "kernel/uapi/asm-arm64", 2132 to: "aarch64-linux-android", 2133 srcs: ["kernel/uapi/asm-arm64/**/*.h"], 2134 license: "NOTICE", 2135} 2136 2137ndk_headers { 2138 name: "libc_asm_mips", 2139 from: "kernel/uapi/asm-mips", 2140 to: "mipsel-linux-android", 2141 srcs: ["kernel/uapi/asm-mips/**/*.h"], 2142 license: "NOTICE", 2143} 2144 2145ndk_headers { 2146 name: "libc_asm_mips64", 2147 from: "kernel/uapi/asm-mips", 2148 to: "mips64el-linux-android", 2149 srcs: ["kernel/uapi/asm-mips/**/*.h"], 2150 license: "NOTICE", 2151} 2152 2153ndk_headers { 2154 name: "libc_asm_x86", 2155 from: "kernel/uapi/asm-x86", 2156 to: "i686-linux-android", 2157 srcs: ["kernel/uapi/asm-x86/**/*.h"], 2158 license: "NOTICE", 2159} 2160 2161ndk_headers { 2162 name: "libc_asm_x86_64", 2163 from: "kernel/uapi/asm-x86", 2164 to: "x86_64-linux-android", 2165 srcs: ["kernel/uapi/asm-x86/**/*.h"], 2166 license: "NOTICE", 2167} 2168 2169ndk_headers { 2170 name: "libc_machine_arm", 2171 from: "arch-arm/include", 2172 to: "arm-linux-androideabi", 2173 srcs: ["arch-arm/include/**/*.h"], 2174 license: "NOTICE", 2175} 2176 2177ndk_headers { 2178 name: "libc_machine_arm64", 2179 from: "arch-arm64/include", 2180 to: "aarch64-linux-android", 2181 srcs: ["arch-arm64/include/**/*.h"], 2182 license: "NOTICE", 2183} 2184 2185ndk_headers { 2186 name: "libc_machine_mips", 2187 from: "arch-mips/include", 2188 to: "mipsel-linux-android", 2189 srcs: ["arch-mips/include/**/*.h"], 2190 license: "NOTICE", 2191} 2192 2193ndk_headers { 2194 name: "libc_machine_mips64", 2195 from: "arch-mips/include", 2196 to: "mips64el-linux-android", 2197 srcs: ["arch-mips/include/**/*.h"], 2198 license: "NOTICE", 2199} 2200 2201ndk_headers { 2202 name: "libc_machine_x86", 2203 from: "arch-x86/include", 2204 to: "i686-linux-android", 2205 srcs: ["arch-x86/include/**/*.h"], 2206 license: "NOTICE", 2207} 2208 2209ndk_headers { 2210 name: "libc_machine_x86_64", 2211 from: "arch-x86_64/include", 2212 to: "x86_64-linux-android", 2213 srcs: ["arch-x86_64/include/**/*.h"], 2214 license: "NOTICE", 2215} 2216 2217ndk_library { 2218 name: "libc", 2219 symbol_file: "libc.map.txt", 2220 first_version: "9", 2221} 2222 2223llndk_library { 2224 name: "libc", 2225 symbol_file: "libc.map.txt", 2226 export_headers_as_system: true, 2227 export_preprocessed_headers: ["include"], 2228 arch: { 2229 arm: { 2230 export_include_dirs: [ 2231 "arch-arm/include", 2232 "kernel/uapi", 2233 "kernel/uapi/asm-arm", 2234 "kernel/android/uapi", 2235 ], 2236 }, 2237 arm64: { 2238 export_include_dirs: [ 2239 "arch-arm64/include", 2240 "kernel/uapi", 2241 "kernel/uapi/asm-arm64", 2242 "kernel/android/uapi", 2243 ], 2244 }, 2245 mips: { 2246 export_include_dirs: [ 2247 "arch-mips/include", 2248 "kernel/uapi", 2249 "kernel/uapi/asm-mips", 2250 "kernel/android/uapi", 2251 ], 2252 }, 2253 mips64: { 2254 export_include_dirs: [ 2255 "arch-mips64/include", 2256 "kernel/uapi", 2257 "kernel/uapi/asm-mips", 2258 "kernel/android/uapi", 2259 ], 2260 }, 2261 x86: { 2262 export_include_dirs: [ 2263 "arch-x86/include", 2264 "kernel/uapi", 2265 "kernel/uapi/asm-x86", 2266 "kernel/android/uapi", 2267 ], 2268 }, 2269 x86_64: { 2270 export_include_dirs: [ 2271 "arch-x86_64/include", 2272 "kernel/uapi", 2273 "kernel/uapi/asm-x86", 2274 "kernel/android/uapi", 2275 ], 2276 }, 2277 }, 2278} 2279 2280ndk_library { 2281 name: "libstdc++", 2282 symbol_file: "libstdc++.map.txt", 2283 first_version: "9", 2284} 2285 2286subdirs = ["*"] 2287