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