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