Copy disabled (too large)
Download .txt
Showing preview only (27,614K chars total). Download the full file to get everything.
Repository: crystax/android-platform-ndk
Branch: master
Commit: d86e23c82617
Files: 3568
Total size: 25.6 MB
Directory structure:
gitextract_s5vlq68o/
├── .gitignore
├── Android.mk
├── BACKERS.md
├── CHANGELOG.md
├── CleanSpec.mk
├── OWNERS
├── README.md
├── build/
│ ├── NOTICE
│ ├── awk/
│ │ ├── check-awk.awk
│ │ ├── extract-debuggable.awk
│ │ ├── extract-launchable.awk
│ │ ├── extract-minsdkversion.awk
│ │ ├── extract-package-name.awk
│ │ ├── extract-pid.awk
│ │ ├── extract-platform.awk
│ │ ├── gen-cygwin-deps-converter.awk
│ │ ├── gen-windows-host-path.awk
│ │ └── xml.awk
│ ├── core/
│ │ ├── add-application.mk
│ │ ├── add-platform.mk
│ │ ├── add-toolchain.mk
│ │ ├── build-all.mk
│ │ ├── build-binary.mk
│ │ ├── build-executable.mk
│ │ ├── build-local.mk
│ │ ├── build-module.mk
│ │ ├── build-shared-library.mk
│ │ ├── build-static-library.mk
│ │ ├── check-cygwin-make.mk
│ │ ├── clear-vars.mk
│ │ ├── default-application.mk
│ │ ├── default-build-commands.mk
│ │ ├── defaults.mk
│ │ ├── definitions-graph.mk
│ │ ├── definitions-host.mk
│ │ ├── definitions-tests.mk
│ │ ├── definitions-utils.mk
│ │ ├── definitions.mk
│ │ ├── import-locals.mk
│ │ ├── init.mk
│ │ ├── main.mk
│ │ ├── prebuilt-library.mk
│ │ ├── prebuilt-shared-library.mk
│ │ ├── prebuilt-static-library.mk
│ │ ├── setup-abi.mk
│ │ ├── setup-app.mk
│ │ ├── setup-imports.mk
│ │ └── setup-toolchain.mk
│ ├── gmsl/
│ │ ├── README
│ │ ├── __gmsl
│ │ ├── gmsl
│ │ ├── gmsl-tests
│ │ └── index.html
│ ├── instruments/
│ │ ├── README.md
│ │ ├── build-analyzer.sh
│ │ ├── build-boost.sh
│ │ ├── build-ccache.sh
│ │ ├── build-cocotron.sh
│ │ ├── build-compiler-rt.sh
│ │ ├── build-crystax.sh
│ │ ├── build-docs.sh
│ │ ├── build-gcc.sh
│ │ ├── build-gdb-stub.sh
│ │ ├── build-gdbserver.sh
│ │ ├── build-gnu-libstdc++.sh
│ │ ├── build-gnustep-libobjc2.sh
│ │ ├── build-host-awk.sh
│ │ ├── build-host-gdb.sh
│ │ ├── build-host-make.sh
│ │ ├── build-host-prebuilts.sh
│ │ ├── build-host-python.sh
│ │ ├── build-host-toolbox.sh
│ │ ├── build-host-yasm.sh
│ │ ├── build-icu.sh
│ │ ├── build-libjpeg-turbo.sh
│ │ ├── build-libjpeg.sh
│ │ ├── build-libpng.sh
│ │ ├── build-libtiff.sh
│ │ ├── build-llvm-libc++.sh
│ │ ├── build-llvm.py
│ │ ├── build-llvm.sh
│ │ ├── build-mingw64-toolchain.sh
│ │ ├── build-ndk-stack.sh
│ │ ├── build-ndk-sysroot.sh
│ │ ├── build-python/
│ │ │ ├── _sitebuiltins.py
│ │ │ ├── _sysconfigdata.py
│ │ │ ├── android.mk.2.7
│ │ │ ├── android.mk.3.5
│ │ │ ├── build_stdlib.py
│ │ │ ├── config.c.2.7
│ │ │ ├── config.c.3.5
│ │ │ ├── freeze_stdlib.py
│ │ │ ├── frozen.c.2.7
│ │ │ ├── frozen.c.3.x
│ │ │ ├── getpath.c.2.7
│ │ │ ├── getpath.c.3.x
│ │ │ ├── host/
│ │ │ │ ├── CMakeLists.txt.2.7
│ │ │ │ ├── CMakeLists.txt.3.5
│ │ │ │ ├── callproc.c.2.7.mingw.patch
│ │ │ │ ├── callproc.c.3.5.mingw.patch
│ │ │ │ ├── config.c.2.7
│ │ │ │ ├── config.c.3.5
│ │ │ │ ├── dynload_win.c.2.7.mingw.patch
│ │ │ │ ├── dynload_win.c.3.5.mingw.patch
│ │ │ │ ├── getpath.c.2.7
│ │ │ │ ├── getpath.c.3.x
│ │ │ │ ├── interpreter-posix.c.2.7
│ │ │ │ ├── interpreter-posix.c.3.x
│ │ │ │ ├── interpreter-winapi.c.2.7
│ │ │ │ ├── interpreter-winapi.c.3.x
│ │ │ │ ├── posixmodule.c.2.7.mingw.patch
│ │ │ │ ├── posixmodule.c.3.5.1.mingw.patch
│ │ │ │ ├── posixmodule.c.3.5.x.mingw.patch
│ │ │ │ ├── pyconfig.h.2.7.mingw.patch
│ │ │ │ └── pyconfig.h.3.5.mingw.patch
│ │ │ ├── interpreter-static.c.2.7
│ │ │ ├── interpreter-static.c.3.x
│ │ │ ├── pyconfig.h
│ │ │ ├── site.py
│ │ │ ├── stdlib.config
│ │ │ └── sysconfig.py
│ │ ├── build-renderscript.sh
│ │ ├── build-sqlite3.sh
│ │ ├── build-support.sh
│ │ ├── build-target-bash.sh
│ │ ├── build-target-cpulimit.sh
│ │ ├── build-target-ffmpeg.sh
│ │ ├── build-target-gnu-coreutils.sh
│ │ ├── build-target-gnu-grep.sh
│ │ ├── build-target-gnu-less.sh
│ │ ├── build-target-gnu-sed.sh
│ │ ├── build-target-gnu-tar.sh
│ │ ├── build-target-gnu-which.sh
│ │ ├── build-target-gnu-zip.sh
│ │ ├── build-target-htop.sh
│ │ ├── build-target-info-unzip.sh
│ │ ├── build-target-info-zip.sh
│ │ ├── build-target-ncurses.sh
│ │ ├── build-target-net-tools.sh
│ │ ├── build-target-openssh.sh
│ │ ├── build-target-openssl.sh
│ │ ├── build-target-prebuilts.sh
│ │ ├── build-target-procps-ng.sh
│ │ ├── build-target-python.sh
│ │ ├── build-target-vim.sh
│ │ ├── build-target-x264.sh
│ │ ├── build-vendor-host-python.sh
│ │ ├── builder-funcs.sh
│ │ ├── check-glibc.sh
│ │ ├── cleanup-apps.sh
│ │ ├── common-build-host-funcs.sh
│ │ ├── dev-defaults.sh
│ │ ├── dev-platform-compress.sh
│ │ ├── dev-platform-expand-all.sh
│ │ ├── dev-platform-expand.sh
│ │ ├── dev-platform-import.sh
│ │ ├── dev-system-import.sh
│ │ ├── find-case-duplicates.sh
│ │ ├── gen-platforms.sh
│ │ ├── gen-system-symbols.sh
│ │ ├── gen-toolchain-wrapper.sh
│ │ ├── make-release.sh
│ │ ├── ndk-ccache-g++.sh
│ │ ├── ndk-ccache-gcc.sh
│ │ ├── ndk-common.sh
│ │ ├── package-platforms.sh
│ │ ├── package-release.sh
│ │ ├── patch-sources.sh
│ │ ├── prebuilt-common.sh
│ │ ├── rebuild-all-prebuilt.sh
│ │ ├── regenerate-platforms
│ │ ├── toolchain-licenses/
│ │ │ ├── COPYING
│ │ │ ├── COPYING.LIB
│ │ │ ├── COPYING.RUNTIME
│ │ │ ├── COPYING3
│ │ │ └── COPYING3.LIB
│ │ ├── toolchain-patches-host/
│ │ │ └── mingw-w64/
│ │ │ └── mingw-w64-widl.patch
│ │ ├── unpack-build-cache
│ │ ├── unwanted-symbols/
│ │ │ ├── arm/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── arm64/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── mips/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── mips64/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── x86/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ └── x86_64/
│ │ │ ├── libc.so.functions.txt
│ │ │ ├── libc.so.variables.txt
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ └── update-build-cache
│ ├── lib/
│ │ └── build_support.py
│ ├── ndk-build
│ ├── ndk-build.cmd
│ ├── scripts/
│ │ ├── build-crew-utils
│ │ ├── build-curl
│ │ ├── build-host-gcc
│ │ ├── build-libarchive
│ │ ├── build-ruby
│ │ ├── build-xz
│ │ ├── builder.rb
│ │ ├── cache.rb
│ │ ├── commander.rb
│ │ ├── common.rb
│ │ ├── exceptions.rb
│ │ ├── install-crew
│ │ ├── install-crew-utils
│ │ ├── logger.rb
│ │ ├── options.rb
│ │ ├── ruby
│ │ └── ruby.cmd
│ └── tools/
│ ├── README.md
│ ├── build-analyzer.sh
│ ├── build-boost.sh
│ ├── build-cocotron.sh
│ ├── build-compiler-rt.sh
│ ├── build-crystax.sh
│ ├── build-gcc.py
│ ├── build-gdb-stub.sh
│ ├── build-gdbserver.py
│ ├── build-gdbserver.sh
│ ├── build-gnustep-libobjc2.sh
│ ├── build-icu.sh
│ ├── build-libjpeg-turbo.sh
│ ├── build-libjpeg.sh
│ ├── build-libpng.sh
│ ├── build-libtiff.sh
│ ├── build-llvm-libc++.sh
│ ├── build-llvm.py
│ ├── build-llvm.sh
│ ├── build-platforms.py
│ ├── build-renderscript.sh
│ ├── build-shader-tools.py
│ ├── build-sqlite3.sh
│ ├── builder-funcs.sh
│ ├── common-build-host-funcs.sh
│ ├── dev-defaults.sh
│ ├── gen-platforms.sh
│ ├── gen-toolchain-wrapper.sh
│ ├── make-release.sh
│ ├── make-standalone-toolchain.sh
│ ├── ndk-ccache-g++.sh
│ ├── ndk-ccache-gcc.sh
│ ├── ndk-common.sh
│ ├── package-platforms.sh
│ ├── package.py
│ ├── prebuilt-common.sh
│ ├── regenerate-platforms
│ ├── toolchain-licenses/
│ │ ├── COPYING
│ │ ├── COPYING.LIB
│ │ ├── COPYING.RUNTIME
│ │ ├── COPYING3
│ │ └── COPYING3.LIB
│ ├── unpack-build-cache
│ ├── unwanted-symbols/
│ │ ├── arm/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── arm64/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── mips/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── mips64/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── x86/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ └── x86_64/
│ │ ├── libgcc.a.functions.txt
│ │ └── libgcc.a.variables.txt
│ └── update-build-cache
├── checkbuild.py
├── cmake/
│ ├── modules/
│ │ ├── FindBZip2.cmake
│ │ ├── FindBoost.cmake
│ │ ├── FindJNI.cmake
│ │ ├── FindThreads.cmake
│ │ └── FindZLIB.cmake
│ └── toolchain.cmake
├── config.py
├── crew
├── crew.cmd
├── docs/
│ ├── GeneratingSysroots.md
│ ├── Testing.md
│ └── Toolchains.md
├── ndk-build
├── ndk-build.cmd
├── ndk-gdb
├── ndk-gdb.cmd
├── ndk-gdb.py
├── ndk-which
├── prebuilt/
│ └── common/
│ └── gdb/
│ └── common.setup
├── samples/
│ ├── .gitignore
│ ├── README.md
│ └── test-debug/
│ ├── .gitignore
│ ├── AndroidManifest.xml
│ ├── jni/
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ └── testdebug.c
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res/
│ │ └── values/
│ │ └── strings.xml
│ └── src/
│ └── com/
│ └── example/
│ └── testdebug/
│ └── TestDebug.java
├── sources/
│ ├── android/
│ │ ├── .gitignore
│ │ ├── compiler-rt/
│ │ │ └── Android.mk
│ │ ├── cpufeatures/
│ │ │ ├── Android.mk
│ │ │ ├── NOTICE
│ │ │ ├── cpu-features.c
│ │ │ └── cpu-features.h
│ │ ├── libthread_db/
│ │ │ ├── README
│ │ │ ├── gdb-7.7/
│ │ │ │ ├── libthread_db.c
│ │ │ │ └── thread_db.h
│ │ │ ├── libthread_db.c
│ │ │ └── thread_db.h
│ │ └── support/
│ │ └── NOTICE
│ ├── cpufeatures/
│ │ ├── Android.mk
│ │ └── README.TXT
│ ├── crystax/
│ │ ├── .gitignore
│ │ ├── .syntastic/
│ │ │ └── c
│ │ ├── GNUmakefile
│ │ ├── LICENSE
│ │ ├── bin/
│ │ │ ├── check-symbols
│ │ │ ├── config
│ │ │ ├── gen-arith
│ │ │ ├── gen-bionic-sources
│ │ │ ├── gen-bsd-sources
│ │ │ ├── gen-compiler-rt-headers
│ │ │ ├── gen-libkqueue-sources
│ │ │ ├── gen-libpwq-sources
│ │ │ ├── gen-locales
│ │ │ ├── gen-musl-sources
│ │ │ ├── gen-sources
│ │ │ ├── gen-system-core-headers
│ │ │ └── patch-sysroot
│ │ ├── crazy_linker/
│ │ │ ├── Android.mk
│ │ │ ├── DESIGN.TXT
│ │ │ ├── LICENSE
│ │ │ ├── README.TXT
│ │ │ ├── include/
│ │ │ │ └── crazy_linker.h
│ │ │ ├── minitest/
│ │ │ │ ├── minitest.cc
│ │ │ │ └── minitest.h
│ │ │ ├── src/
│ │ │ │ ├── crazy_linker_api.cpp
│ │ │ │ ├── crazy_linker_ashmem.cpp
│ │ │ │ ├── crazy_linker_ashmem.h
│ │ │ │ ├── crazy_linker_ashmem_unittest.cpp
│ │ │ │ ├── crazy_linker_debug.cpp
│ │ │ │ ├── crazy_linker_debug.h
│ │ │ │ ├── crazy_linker_elf_loader.cpp
│ │ │ │ ├── crazy_linker_elf_loader.h
│ │ │ │ ├── crazy_linker_elf_relocations.cpp
│ │ │ │ ├── crazy_linker_elf_relocations.h
│ │ │ │ ├── crazy_linker_elf_relro.cpp
│ │ │ │ ├── crazy_linker_elf_relro.h
│ │ │ │ ├── crazy_linker_elf_symbols.cpp
│ │ │ │ ├── crazy_linker_elf_symbols.h
│ │ │ │ ├── crazy_linker_elf_view.cpp
│ │ │ │ ├── crazy_linker_elf_view.h
│ │ │ │ ├── crazy_linker_error.cpp
│ │ │ │ ├── crazy_linker_error.h
│ │ │ │ ├── crazy_linker_error_unittest.cpp
│ │ │ │ ├── crazy_linker_globals.cpp
│ │ │ │ ├── crazy_linker_globals.h
│ │ │ │ ├── crazy_linker_globals_unittest.cpp
│ │ │ │ ├── crazy_linker_library_list.cpp
│ │ │ │ ├── crazy_linker_library_list.h
│ │ │ │ ├── crazy_linker_library_view.cpp
│ │ │ │ ├── crazy_linker_library_view.h
│ │ │ │ ├── crazy_linker_line_reader.cpp
│ │ │ │ ├── crazy_linker_line_reader.h
│ │ │ │ ├── crazy_linker_line_reader_unittest.cpp
│ │ │ │ ├── crazy_linker_memory_mapping.h
│ │ │ │ ├── crazy_linker_proc_maps.cpp
│ │ │ │ ├── crazy_linker_proc_maps.h
│ │ │ │ ├── crazy_linker_proc_maps_unittest.cpp
│ │ │ │ ├── crazy_linker_rdebug.cpp
│ │ │ │ ├── crazy_linker_rdebug.h
│ │ │ │ ├── crazy_linker_search_path_list.cpp
│ │ │ │ ├── crazy_linker_search_path_list.h
│ │ │ │ ├── crazy_linker_search_path_list_unittest.cpp
│ │ │ │ ├── crazy_linker_shared_library.cpp
│ │ │ │ ├── crazy_linker_shared_library.h
│ │ │ │ ├── crazy_linker_system.cpp
│ │ │ │ ├── crazy_linker_system.h
│ │ │ │ ├── crazy_linker_system_mock.cpp
│ │ │ │ ├── crazy_linker_system_mock.h
│ │ │ │ ├── crazy_linker_system_unittest.cpp
│ │ │ │ ├── crazy_linker_thread.cpp
│ │ │ │ ├── crazy_linker_thread.h
│ │ │ │ ├── crazy_linker_thread_unittest.cpp
│ │ │ │ ├── crazy_linker_util.cpp
│ │ │ │ ├── crazy_linker_util.h
│ │ │ │ ├── crazy_linker_util_unittest.cpp
│ │ │ │ ├── crazy_linker_wrappers.cpp
│ │ │ │ ├── crazy_linker_wrappers.h
│ │ │ │ ├── elf_traits.h
│ │ │ │ ├── linker_phdr.cpp
│ │ │ │ └── linker_phdr.h
│ │ │ └── tests/
│ │ │ ├── Android.mk
│ │ │ ├── bar.cpp
│ │ │ ├── bar_with_relro.cpp
│ │ │ ├── bench_load_library.cpp
│ │ │ ├── foo.cpp
│ │ │ ├── foo2.cpp
│ │ │ ├── foo_with_relro.cpp
│ │ │ ├── foo_with_static_constructor.cpp
│ │ │ ├── jni_lib.cpp
│ │ │ ├── test_constructors_destructors.cpp
│ │ │ ├── test_dl_wrappers.cpp
│ │ │ ├── test_jni_hooks.cpp
│ │ │ ├── test_load_library.cpp
│ │ │ ├── test_load_library_callbacks.cpp
│ │ │ ├── test_load_library_depends.cpp
│ │ │ ├── test_relocated_shared_relro.cpp
│ │ │ ├── test_search_path_list.cpp
│ │ │ ├── test_shared_relro.cpp
│ │ │ ├── test_two_shared_relros.cpp
│ │ │ ├── test_util.h
│ │ │ └── zoo.cpp
│ │ ├── empty/
│ │ │ └── libcrystax.a
│ │ ├── include/
│ │ │ ├── OpenGLES/
│ │ │ │ ├── ES1/
│ │ │ │ │ ├── gl.h
│ │ │ │ │ └── glext.h
│ │ │ │ ├── ES2/
│ │ │ │ │ ├── gl.h
│ │ │ │ │ └── glext.h
│ │ │ │ └── ES3/
│ │ │ │ ├── gl.h
│ │ │ │ └── glext.h
│ │ │ ├── alloca.h
│ │ │ ├── asm/
│ │ │ │ ├── bitsperlong.h
│ │ │ │ ├── posix_types.h
│ │ │ │ ├── siginfo.h
│ │ │ │ ├── signal.h
│ │ │ │ ├── unistd.h
│ │ │ │ ├── unistd_32.h
│ │ │ │ ├── unistd_64.h
│ │ │ │ └── unistd_x32.h
│ │ │ ├── crystax/
│ │ │ │ ├── arm/
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── arm64/
│ │ │ │ │ ├── _inttypes.h
│ │ │ │ │ ├── _limits.h
│ │ │ │ │ ├── _stdint.h
│ │ │ │ │ ├── endian.h
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── common.hpp
│ │ │ │ ├── ctassert.h
│ │ │ │ ├── details/
│ │ │ │ │ └── jni.inc
│ │ │ │ ├── freebsd.h
│ │ │ │ ├── id.h
│ │ │ │ ├── jutils/
│ │ │ │ │ ├── class.hpp
│ │ │ │ │ ├── exceptions.hpp
│ │ │ │ │ ├── field.hpp
│ │ │ │ │ ├── helper.hpp
│ │ │ │ │ ├── jcast.hpp
│ │ │ │ │ ├── jholder.hpp
│ │ │ │ │ ├── jni.hpp
│ │ │ │ │ └── method.hpp
│ │ │ │ ├── jutils.hpp
│ │ │ │ ├── list.hpp
│ │ │ │ ├── log.h
│ │ │ │ ├── memory.hpp
│ │ │ │ ├── mips/
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── mips64/
│ │ │ │ │ ├── _inttypes.h
│ │ │ │ │ ├── _limits.h
│ │ │ │ │ ├── _stdint.h
│ │ │ │ │ ├── endian.h
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── path.hpp
│ │ │ │ ├── sys/
│ │ │ │ │ ├── ctype.h
│ │ │ │ │ ├── endian.h
│ │ │ │ │ ├── fenvsoft.h
│ │ │ │ │ ├── fpmath.h
│ │ │ │ │ ├── inttypes.h
│ │ │ │ │ ├── langinfo.h
│ │ │ │ │ ├── limits.h
│ │ │ │ │ ├── locale.h
│ │ │ │ │ ├── math.h
│ │ │ │ │ ├── monetary.h
│ │ │ │ │ ├── stdio.h
│ │ │ │ │ ├── stdlib.h
│ │ │ │ │ ├── string.h
│ │ │ │ │ ├── strings.h
│ │ │ │ │ ├── time.h
│ │ │ │ │ ├── tls.h
│ │ │ │ │ ├── wait.h
│ │ │ │ │ ├── wchar.h
│ │ │ │ │ └── wctype.h
│ │ │ │ ├── system.h
│ │ │ │ ├── x86/
│ │ │ │ │ └── fenv.h
│ │ │ │ └── x86_64/
│ │ │ │ └── fenv.h
│ │ │ ├── crystax.h
│ │ │ ├── dlfcn.h
│ │ │ ├── elf.h
│ │ │ ├── endian.h
│ │ │ ├── errno.h
│ │ │ ├── fcntl.h
│ │ │ ├── fenv.h
│ │ │ ├── getrrsetbyname.h
│ │ │ ├── grp.h
│ │ │ ├── ieeefp.h
│ │ │ ├── linux/
│ │ │ │ ├── elf.h
│ │ │ │ ├── in.h
│ │ │ │ ├── shm.h
│ │ │ │ └── sysctl.h
│ │ │ ├── machine/
│ │ │ │ ├── _align.h
│ │ │ │ ├── _types.h
│ │ │ │ ├── atomic.h
│ │ │ │ ├── fenv.h
│ │ │ │ ├── limits.h
│ │ │ │ └── wchar_limits.h
│ │ │ ├── malloc.h
│ │ │ ├── netinet/
│ │ │ │ └── tcp.h
│ │ │ ├── paths.h
│ │ │ ├── pthread_np.h
│ │ │ ├── semaphore.h
│ │ │ ├── stdint.h
│ │ │ ├── sys/
│ │ │ │ ├── _types.h
│ │ │ │ ├── cdefs.h
│ │ │ │ ├── fcntl.h
│ │ │ │ ├── mman.h
│ │ │ │ ├── param.h
│ │ │ │ ├── shm.h
│ │ │ │ ├── socket.h
│ │ │ │ ├── sysctl.h
│ │ │ │ ├── syslimits.h
│ │ │ │ ├── syslog.h
│ │ │ │ ├── timeb.h
│ │ │ │ ├── timespec.h
│ │ │ │ ├── types.h
│ │ │ │ └── wait.h
│ │ │ ├── syscall.h
│ │ │ ├── termios.h
│ │ │ ├── timeb.h
│ │ │ └── xlocale.h
│ │ ├── src/
│ │ │ ├── __get_thread.cpp
│ │ │ ├── __wait4.c
│ │ │ ├── bsd_signal.c
│ │ │ ├── bzip2/
│ │ │ │ └── error.c
│ │ │ ├── crystax/
│ │ │ │ ├── android.cpp
│ │ │ │ ├── android_jni.cpp
│ │ │ │ ├── crystax_posix_base.c
│ │ │ │ ├── fenvimpl.c
│ │ │ │ ├── isthreaded.c
│ │ │ │ ├── jutils/
│ │ │ │ │ ├── exceptions.cpp
│ │ │ │ │ ├── helper.cpp
│ │ │ │ │ ├── jcast.cpp
│ │ │ │ │ └── rethrow.cpp
│ │ │ │ ├── locale/
│ │ │ │ │ ├── locale.c
│ │ │ │ │ └── localeinit.c
│ │ │ │ ├── lock.cpp
│ │ │ │ ├── log.c
│ │ │ │ ├── logcat.c
│ │ │ │ ├── pthread_workqueue_impl.c
│ │ │ │ ├── rawargs.cpp
│ │ │ │ └── system.cpp
│ │ │ ├── domainname.c
│ │ │ ├── execve.c
│ │ │ ├── fcntl/
│ │ │ │ └── fcntl.c
│ │ │ ├── fdprintf.c
│ │ │ ├── ftime.c
│ │ │ ├── futex.c
│ │ │ ├── getdents.c
│ │ │ ├── getdtablesize.c
│ │ │ ├── getnetgrent.c
│ │ │ ├── getrlimit64.c
│ │ │ ├── grent.c
│ │ │ ├── include/
│ │ │ │ ├── crystax/
│ │ │ │ │ ├── arm/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── arm64/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── atomic.h
│ │ │ │ │ ├── fenvimpl.h
│ │ │ │ │ ├── internal.h
│ │ │ │ │ ├── localeimpl.h
│ │ │ │ │ ├── lock.hpp
│ │ │ │ │ ├── mips/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── mips64/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── private.h
│ │ │ │ │ ├── pthread_workqueue_impl.h
│ │ │ │ │ ├── x86/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ └── x86_64/
│ │ │ │ │ ├── arith.h
│ │ │ │ │ └── gd_qnan.h
│ │ │ │ └── jemalloc_defs.h
│ │ │ ├── issetugid.c
│ │ │ ├── lchmod.c
│ │ │ ├── lseek64.cpp
│ │ │ ├── makedev.c
│ │ │ ├── math/
│ │ │ │ ├── complex.c
│ │ │ │ ├── fenvsoft.c
│ │ │ │ ├── math.c
│ │ │ │ └── sincos.c
│ │ │ ├── memswap.c
│ │ │ ├── msgcat.c
│ │ │ ├── openbsd/
│ │ │ │ └── getrrsetbyname.c
│ │ │ ├── posix_fadvise.c
│ │ │ ├── posix_fallocate.c
│ │ │ ├── pread.c
│ │ │ ├── progname.c
│ │ │ ├── pthread_attr_getstackaddr.c
│ │ │ ├── pthread_gettid.c
│ │ │ ├── pthread_main_np.cpp
│ │ │ ├── pwent.c
│ │ │ ├── pwrite.c
│ │ │ ├── shmat.c
│ │ │ ├── shmctl.c
│ │ │ ├── shmdt.c
│ │ │ ├── shmget.c
│ │ │ ├── stdlib/
│ │ │ │ ├── abort.c
│ │ │ │ └── rand.c
│ │ │ ├── string/
│ │ │ │ └── strerror.c
│ │ │ ├── strntoimax.c
│ │ │ ├── strverscmp.c
│ │ │ ├── swapxx.c
│ │ │ ├── sysctl.c
│ │ │ ├── sysv_signal.cpp
│ │ │ ├── tkill.c
│ │ │ ├── tls.c
│ │ │ ├── uname.c
│ │ │ ├── usershell.c
│ │ │ ├── vfdprintf.c
│ │ │ ├── wait3.c
│ │ │ ├── wcswcs.c
│ │ │ └── write.c
│ │ └── vfs/
│ │ ├── accept.cpp
│ │ ├── access.cpp
│ │ ├── android.cpp
│ │ ├── android_jni.cpp
│ │ ├── assets/
│ │ │ ├── adriver.cpp
│ │ │ └── driver.hpp
│ │ ├── bind.cpp
│ │ ├── chdir.cpp
│ │ ├── chown.cpp
│ │ ├── chroot.cpp
│ │ ├── close.cpp
│ │ ├── closedir.cpp
│ │ ├── connect.cpp
│ │ ├── dirfd.cpp
│ │ ├── dup.cpp
│ │ ├── dup2.cpp
│ │ ├── fchdir.cpp
│ │ ├── fchown.cpp
│ │ ├── fcntl.cpp
│ │ ├── fdatasync.cpp
│ │ ├── fdopendir.cpp
│ │ ├── fileio/
│ │ │ ├── api.hpp
│ │ │ ├── common.hpp
│ │ │ └── driver.hpp
│ │ ├── fileio.cpp
│ │ ├── flock.cpp
│ │ ├── fstat.cpp
│ │ ├── fsync.cpp
│ │ ├── ftruncate.cpp
│ │ ├── futils.cpp
│ │ ├── getcwd.cpp
│ │ ├── getdents.cpp
│ │ ├── getsockname.cpp
│ │ ├── getsockopt.cpp
│ │ ├── include/
│ │ │ └── crystax/
│ │ │ └── vfs.h
│ │ ├── ioctl.cpp
│ │ ├── lchown.cpp
│ │ ├── link.cpp
│ │ ├── listen.cpp
│ │ ├── lseek.cpp
│ │ ├── lseek64.cpp
│ │ ├── lstat.cpp
│ │ ├── mkdir.cpp
│ │ ├── mmap.cpp
│ │ ├── mount.cpp
│ │ ├── open.cpp
│ │ ├── opendir.cpp
│ │ ├── osfs/
│ │ │ ├── asyncsocketclosemonitor.cpp
│ │ │ ├── asyncsocketclosemonitor.h
│ │ │ ├── osfs.cpp
│ │ │ ├── osfs.hpp
│ │ │ ├── osfs_eclair.cpp
│ │ │ ├── osfs_froyo.cpp
│ │ │ ├── osfs_gingerbread.cpp
│ │ │ └── osfs_ics.cpp
│ │ ├── pipe.cpp
│ │ ├── pread.cpp
│ │ ├── pwrite.cpp
│ │ ├── read.cpp
│ │ ├── readdir.cpp
│ │ ├── readdir_r.cpp
│ │ ├── readlink.cpp
│ │ ├── readv.cpp
│ │ ├── recv.cpp
│ │ ├── recvfrom.cpp
│ │ ├── recvmsg.cpp
│ │ ├── remove.cpp
│ │ ├── rename.cpp
│ │ ├── rewinddir.cpp
│ │ ├── rmdir.cpp
│ │ ├── scandir.cpp
│ │ ├── seekdir.cpp
│ │ ├── select.cpp
│ │ ├── send.cpp
│ │ ├── sendmsg.cpp
│ │ ├── sendto.cpp
│ │ ├── setsockopt.cpp
│ │ ├── shutdown.cpp
│ │ ├── socket.cpp
│ │ ├── stat.cpp
│ │ ├── symlink.cpp
│ │ ├── system/
│ │ │ ├── driver.hpp
│ │ │ └── sdriver.cpp
│ │ ├── telldir.cpp
│ │ ├── unlink.cpp
│ │ ├── write.cpp
│ │ └── writev.cpp
│ ├── cxx-stl/
│ │ ├── gabi++/
│ │ │ └── NOTICE
│ │ ├── gnu-libstdc++/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ ├── README
│ │ │ ├── build-gnu-libstdc++.sh
│ │ │ └── build.py
│ │ ├── llvm-libc++/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ ├── README.NDK
│ │ │ ├── build.py
│ │ │ ├── export_symbols.txt
│ │ │ └── test/
│ │ │ ├── Android.mk
│ │ │ └── test_1.cc
│ │ ├── llvm-libc++abi/
│ │ │ ├── libcxxabi/
│ │ │ │ ├── CREDITS.TXT
│ │ │ │ ├── LICENSE.TXT
│ │ │ │ ├── include/
│ │ │ │ │ ├── __cxxabi_config.h
│ │ │ │ │ ├── cxxabi.h
│ │ │ │ │ ├── libunwind.h
│ │ │ │ │ ├── mach-o/
│ │ │ │ │ │ └── compact_unwind_encoding.h
│ │ │ │ │ └── unwind.h
│ │ │ │ ├── lib/
│ │ │ │ │ └── buildit
│ │ │ │ ├── src/
│ │ │ │ │ ├── Unwind/
│ │ │ │ │ │ ├── AddressSpace.hpp
│ │ │ │ │ │ ├── CompactUnwinder.hpp
│ │ │ │ │ │ ├── DwarfInstructions.hpp
│ │ │ │ │ │ ├── DwarfParser.hpp
│ │ │ │ │ │ ├── EHHeaderParser.hpp
│ │ │ │ │ │ ├── Registers.hpp
│ │ │ │ │ │ ├── Unwind-EHABI.cpp
│ │ │ │ │ │ ├── Unwind-EHABI.h
│ │ │ │ │ │ ├── Unwind-sjlj.c
│ │ │ │ │ │ ├── UnwindCursor.hpp
│ │ │ │ │ │ ├── UnwindLevel1-gcc-ext.c
│ │ │ │ │ │ ├── UnwindLevel1.c
│ │ │ │ │ │ ├── UnwindRegistersRestore.S
│ │ │ │ │ │ ├── UnwindRegistersSave.S
│ │ │ │ │ │ ├── Unwind_AppleExtras.cpp
│ │ │ │ │ │ ├── assembly.h
│ │ │ │ │ │ ├── config.h
│ │ │ │ │ │ ├── dwarf2.h
│ │ │ │ │ │ ├── libunwind.cpp
│ │ │ │ │ │ ├── libunwind_ext.h
│ │ │ │ │ │ └── unwind_ext.h
│ │ │ │ │ ├── abort_message.cpp
│ │ │ │ │ ├── abort_message.h
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── cxa_aux_runtime.cpp
│ │ │ │ │ ├── cxa_default_handlers.cpp
│ │ │ │ │ ├── cxa_demangle.cpp
│ │ │ │ │ ├── cxa_exception.cpp
│ │ │ │ │ ├── cxa_exception.hpp
│ │ │ │ │ ├── cxa_exception_storage.cpp
│ │ │ │ │ ├── cxa_guard.cpp
│ │ │ │ │ ├── cxa_handlers.cpp
│ │ │ │ │ ├── cxa_handlers.hpp
│ │ │ │ │ ├── cxa_new_delete.cpp
│ │ │ │ │ ├── cxa_personality.cpp
│ │ │ │ │ ├── cxa_thread_atexit.cpp
│ │ │ │ │ ├── cxa_unexpected.cpp
│ │ │ │ │ ├── cxa_vector.cpp
│ │ │ │ │ ├── cxa_virtual.cpp
│ │ │ │ │ ├── exception.cpp
│ │ │ │ │ ├── fallback_malloc.ipp
│ │ │ │ │ ├── private_typeinfo.cpp
│ │ │ │ │ ├── private_typeinfo.h
│ │ │ │ │ ├── stdexcept.cpp
│ │ │ │ │ └── typeinfo.cpp
│ │ │ │ └── test/
│ │ │ │ ├── backtrace_test.pass.cpp
│ │ │ │ ├── catch_array_01.pass.cpp
│ │ │ │ ├── catch_array_02.pass.cpp
│ │ │ │ ├── catch_class_01.pass.cpp
│ │ │ │ ├── catch_class_02.pass.cpp
│ │ │ │ ├── catch_class_03.pass.cpp
│ │ │ │ ├── catch_class_04.pass.cpp
│ │ │ │ ├── catch_const_pointer_nullptr.pass.cpp
│ │ │ │ ├── catch_function_01.pass.cpp
│ │ │ │ ├── catch_function_02.pass.cpp
│ │ │ │ ├── catch_in_noexcept.pass.cpp
│ │ │ │ ├── catch_member_data_pointer_01.pass.cpp
│ │ │ │ ├── catch_member_function_pointer_01.pass.cpp
│ │ │ │ ├── catch_member_pointer_nullptr.pass.cpp
│ │ │ │ ├── catch_pointer_nullptr.pass.cpp
│ │ │ │ ├── catch_pointer_reference.pass.cpp
│ │ │ │ ├── catch_ptr.pass.cpp
│ │ │ │ ├── catch_ptr_02.pass.cpp
│ │ │ │ ├── cxa_thread_atexit_test.pass.cpp
│ │ │ │ ├── dynamic_cast14.pass.cpp
│ │ │ │ ├── dynamic_cast3.pass.cpp
│ │ │ │ ├── dynamic_cast5.pass.cpp
│ │ │ │ ├── dynamic_cast_stress.pass.cpp
│ │ │ │ ├── inherited_exception.pass.cpp
│ │ │ │ ├── libcxxabi/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── test/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── config.py
│ │ │ │ ├── lit.cfg
│ │ │ │ ├── lit.site.cfg.in
│ │ │ │ ├── support/
│ │ │ │ │ └── timer.hpp
│ │ │ │ ├── test_aux_runtime.pass.cpp
│ │ │ │ ├── test_aux_runtime_op_array_new.pass.cpp
│ │ │ │ ├── test_demangle.pass.cpp
│ │ │ │ ├── test_exception_storage.pass.cpp
│ │ │ │ ├── test_fallback_malloc.pass.cpp
│ │ │ │ ├── test_guard.pass.cpp
│ │ │ │ ├── test_vector1.pass.cpp
│ │ │ │ ├── test_vector2.pass.cpp
│ │ │ │ ├── test_vector3.pass.cpp
│ │ │ │ ├── testit
│ │ │ │ ├── testit_android
│ │ │ │ ├── unwind_01.pass.cpp
│ │ │ │ ├── unwind_02.pass.cpp
│ │ │ │ ├── unwind_03.pass.cpp
│ │ │ │ ├── unwind_04.pass.cpp
│ │ │ │ ├── unwind_05.pass.cpp
│ │ │ │ └── unwind_06.pass.cpp
│ │ │ └── sources.mk
│ │ └── system/
│ │ ├── Android.mk
│ │ ├── MODULE_LICENSE_BSD
│ │ ├── NOTICE
│ │ ├── include/
│ │ │ ├── cassert
│ │ │ ├── cctype
│ │ │ ├── cerrno
│ │ │ ├── cfloat
│ │ │ ├── climits
│ │ │ ├── cmath
│ │ │ ├── csetjmp
│ │ │ ├── csignal
│ │ │ ├── cstddef
│ │ │ ├── cstdint
│ │ │ ├── cstdio
│ │ │ ├── cstdlib
│ │ │ ├── cstring
│ │ │ ├── ctime
│ │ │ ├── cwchar
│ │ │ ├── cwctype_is_not_supported
│ │ │ ├── new
│ │ │ ├── stl_pair.h
│ │ │ ├── typeinfo
│ │ │ └── utility
│ │ └── setup.mk
│ ├── host-tools/
│ │ ├── gdb-pretty-printers/
│ │ │ └── stlport/
│ │ │ └── gppfs-0.2/
│ │ │ ├── COPYING
│ │ │ ├── ChangeLog
│ │ │ ├── README
│ │ │ ├── stlport/
│ │ │ │ ├── __init__.py
│ │ │ │ └── printers.py
│ │ │ └── test/
│ │ │ ├── .gdbinit
│ │ │ ├── Makefile
│ │ │ ├── script
│ │ │ └── test.cpp
│ │ ├── gdb-stub/
│ │ │ └── gdb-stub.c
│ │ ├── make-3.81/
│ │ │ ├── ABOUT-NLS
│ │ │ ├── AUTHORS
│ │ │ ├── COPYING
│ │ │ ├── ChangeLog
│ │ │ ├── INSTALL
│ │ │ ├── Makefile.DOS
│ │ │ ├── Makefile.am
│ │ │ ├── Makefile.ami
│ │ │ ├── Makefile.in
│ │ │ ├── NEWS
│ │ │ ├── NMakefile
│ │ │ ├── README
│ │ │ ├── README.Amiga
│ │ │ ├── README.DOS
│ │ │ ├── README.OS2
│ │ │ ├── README.W32
│ │ │ ├── README.customs
│ │ │ ├── SCOPTIONS
│ │ │ ├── SMakefile
│ │ │ ├── acinclude.m4
│ │ │ ├── aclocal.m4
│ │ │ ├── alloca.c
│ │ │ ├── amiga.c
│ │ │ ├── amiga.h
│ │ │ ├── ansi2knr.1
│ │ │ ├── ansi2knr.c
│ │ │ ├── ar.c
│ │ │ ├── arscan.c
│ │ │ ├── autom4te.cache/
│ │ │ │ ├── output.0
│ │ │ │ ├── requests
│ │ │ │ └── traces.0
│ │ │ ├── build-make.sh
│ │ │ ├── build.py
│ │ │ ├── build.sh.in
│ │ │ ├── build_w32.bat
│ │ │ ├── commands.c
│ │ │ ├── commands.h
│ │ │ ├── config/
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── Makefile.am
│ │ │ │ ├── Makefile.in
│ │ │ │ ├── codeset.m4
│ │ │ │ ├── compile
│ │ │ │ ├── config.guess
│ │ │ │ ├── config.rpath
│ │ │ │ ├── config.sub
│ │ │ │ ├── depcomp
│ │ │ │ ├── dospaths.m4
│ │ │ │ ├── gettext.m4
│ │ │ │ ├── glibc21.m4
│ │ │ │ ├── iconv.m4
│ │ │ │ ├── install-sh
│ │ │ │ ├── intdiv0.m4
│ │ │ │ ├── intmax.m4
│ │ │ │ ├── inttypes-pri.m4
│ │ │ │ ├── inttypes.m4
│ │ │ │ ├── inttypes_h.m4
│ │ │ │ ├── isc-posix.m4
│ │ │ │ ├── lcmessage.m4
│ │ │ │ ├── lib-ld.m4
│ │ │ │ ├── lib-link.m4
│ │ │ │ ├── lib-prefix.m4
│ │ │ │ ├── longdouble.m4
│ │ │ │ ├── longlong.m4
│ │ │ │ ├── mdate-sh
│ │ │ │ ├── missing
│ │ │ │ ├── mkinstalldirs
│ │ │ │ ├── nls.m4
│ │ │ │ ├── po.m4
│ │ │ │ ├── printf-posix.m4
│ │ │ │ ├── progtest.m4
│ │ │ │ ├── signed.m4
│ │ │ │ ├── size_max.m4
│ │ │ │ ├── stdint_h.m4
│ │ │ │ ├── texinfo.tex
│ │ │ │ ├── uintmax_t.m4
│ │ │ │ ├── ulonglong.m4
│ │ │ │ ├── wchar_t.m4
│ │ │ │ ├── wint_t.m4
│ │ │ │ └── xsize.m4
│ │ │ ├── config.ami
│ │ │ ├── config.h-vms
│ │ │ ├── config.h.W32
│ │ │ ├── config.h.in
│ │ │ ├── config.log
│ │ │ ├── configh.dos
│ │ │ ├── configure
│ │ │ ├── configure.bat
│ │ │ ├── configure.in
│ │ │ ├── debug.h
│ │ │ ├── default.c
│ │ │ ├── dep.h
│ │ │ ├── dir.c
│ │ │ ├── doc/
│ │ │ │ ├── Makefile.am
│ │ │ │ ├── Makefile.in
│ │ │ │ ├── fdl.texi
│ │ │ │ ├── make-stds.texi
│ │ │ │ ├── make.info
│ │ │ │ ├── make.info-1
│ │ │ │ ├── make.info-2
│ │ │ │ ├── make.texi
│ │ │ │ ├── stamp-vti
│ │ │ │ └── version.texi
│ │ │ ├── dosbuild.bat
│ │ │ ├── expand.c
│ │ │ ├── file.c
│ │ │ ├── filedef.h
│ │ │ ├── function.c
│ │ │ ├── getloadavg.c
│ │ │ ├── getopt.c
│ │ │ ├── getopt.h
│ │ │ ├── getopt1.c
│ │ │ ├── gettext.h
│ │ │ ├── glob/
│ │ │ │ ├── COPYING.LIB
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── Makefile.am
│ │ │ │ ├── Makefile.ami
│ │ │ │ ├── Makefile.in
│ │ │ │ ├── SCOPTIONS
│ │ │ │ ├── SMakefile
│ │ │ │ ├── configure.bat
│ │ │ │ ├── fnmatch.c
│ │ │ │ ├── fnmatch.h
│ │ │ │ ├── glob.c
│ │ │ │ └── glob.h
│ │ │ ├── hash.c
│ │ │ ├── hash.h
│ │ │ ├── implicit.c
│ │ │ ├── job.c
│ │ │ ├── job.h
│ │ │ ├── main.c
│ │ │ ├── make.1
│ │ │ ├── make.h
│ │ │ ├── make.lnk
│ │ │ ├── make_msvc_net2003.sln
│ │ │ ├── make_msvc_net2003.vcproj
│ │ │ ├── makefile.com
│ │ │ ├── makefile.vms
│ │ │ ├── misc.c
│ │ │ ├── po/
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── LINGUAS
│ │ │ │ ├── Makefile.in.in
│ │ │ │ ├── Makevars
│ │ │ │ ├── POTFILES.in
│ │ │ │ ├── Rules-quot
│ │ │ │ ├── be.gmo
│ │ │ │ ├── be.po
│ │ │ │ ├── boldquot.sed
│ │ │ │ ├── da.gmo
│ │ │ │ ├── da.po
│ │ │ │ ├── de.gmo
│ │ │ │ ├── de.po
│ │ │ │ ├── en@boldquot.header
│ │ │ │ ├── en@quot.header
│ │ │ │ ├── es.gmo
│ │ │ │ ├── es.po
│ │ │ │ ├── fi.gmo
│ │ │ │ ├── fi.po
│ │ │ │ ├── fr.gmo
│ │ │ │ ├── fr.po
│ │ │ │ ├── ga.gmo
│ │ │ │ ├── ga.po
│ │ │ │ ├── gl.gmo
│ │ │ │ ├── gl.po
│ │ │ │ ├── he.gmo
│ │ │ │ ├── he.po
│ │ │ │ ├── hr.gmo
│ │ │ │ ├── hr.po
│ │ │ │ ├── id.gmo
│ │ │ │ ├── id.po
│ │ │ │ ├── insert-header.sin
│ │ │ │ ├── ja.gmo
│ │ │ │ ├── ja.po
│ │ │ │ ├── ko.gmo
│ │ │ │ ├── ko.po
│ │ │ │ ├── make.pot
│ │ │ │ ├── nl.gmo
│ │ │ │ ├── nl.po
│ │ │ │ ├── pl.gmo
│ │ │ │ ├── pl.po
│ │ │ │ ├── pt_BR.gmo
│ │ │ │ ├── pt_BR.po
│ │ │ │ ├── quot.sed
│ │ │ │ ├── remove-potcdate.sin
│ │ │ │ ├── ru.gmo
│ │ │ │ ├── ru.po
│ │ │ │ ├── rw.gmo
│ │ │ │ ├── rw.po
│ │ │ │ ├── stamp-po
│ │ │ │ ├── sv.gmo
│ │ │ │ ├── sv.po
│ │ │ │ ├── tr.gmo
│ │ │ │ ├── tr.po
│ │ │ │ ├── uk.gmo
│ │ │ │ ├── uk.po
│ │ │ │ ├── vi.gmo
│ │ │ │ ├── vi.po
│ │ │ │ ├── zh_CN.gmo
│ │ │ │ └── zh_CN.po
│ │ │ ├── read.c
│ │ │ ├── readme.vms
│ │ │ ├── remake.c
│ │ │ ├── remote-cstms.c
│ │ │ ├── remote-stub.c
│ │ │ ├── rule.c
│ │ │ ├── rule.h
│ │ │ ├── signame.c
│ │ │ ├── strcache.c
│ │ │ ├── subproc.bat
│ │ │ ├── tests/
│ │ │ │ ├── COPYING
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── NEWS
│ │ │ │ ├── README
│ │ │ │ ├── mkshadow
│ │ │ │ ├── run_make_tests
│ │ │ │ ├── run_make_tests.pl
│ │ │ │ ├── scripts/
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── comments
│ │ │ │ │ │ ├── conditionals
│ │ │ │ │ │ ├── default_names
│ │ │ │ │ │ ├── double_colon
│ │ │ │ │ │ ├── echoing
│ │ │ │ │ │ ├── errors
│ │ │ │ │ │ ├── escape
│ │ │ │ │ │ ├── export
│ │ │ │ │ │ ├── include
│ │ │ │ │ │ ├── mult_rules
│ │ │ │ │ │ ├── mult_targets
│ │ │ │ │ │ ├── order_only
│ │ │ │ │ │ ├── override
│ │ │ │ │ │ ├── parallelism
│ │ │ │ │ │ ├── patspecific_vars
│ │ │ │ │ │ ├── patternrules
│ │ │ │ │ │ ├── quoting
│ │ │ │ │ │ ├── recursion
│ │ │ │ │ │ ├── reinvoke
│ │ │ │ │ │ ├── se_explicit
│ │ │ │ │ │ ├── se_implicit
│ │ │ │ │ │ ├── se_statpat
│ │ │ │ │ │ ├── statipattrules
│ │ │ │ │ │ ├── targetvars
│ │ │ │ │ │ ├── varnesting
│ │ │ │ │ │ ├── vpath
│ │ │ │ │ │ ├── vpath2
│ │ │ │ │ │ ├── vpathgpath
│ │ │ │ │ │ └── vpathplus
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── abspath
│ │ │ │ │ │ ├── addprefix
│ │ │ │ │ │ ├── addsuffix
│ │ │ │ │ │ ├── andor
│ │ │ │ │ │ ├── basename
│ │ │ │ │ │ ├── call
│ │ │ │ │ │ ├── dir
│ │ │ │ │ │ ├── error
│ │ │ │ │ │ ├── eval
│ │ │ │ │ │ ├── filter-out
│ │ │ │ │ │ ├── findstring
│ │ │ │ │ │ ├── flavor
│ │ │ │ │ │ ├── foreach
│ │ │ │ │ │ ├── if
│ │ │ │ │ │ ├── join
│ │ │ │ │ │ ├── notdir
│ │ │ │ │ │ ├── origin
│ │ │ │ │ │ ├── realpath
│ │ │ │ │ │ ├── shell
│ │ │ │ │ │ ├── sort
│ │ │ │ │ │ ├── strip
│ │ │ │ │ │ ├── substitution
│ │ │ │ │ │ ├── suffix
│ │ │ │ │ │ ├── value
│ │ │ │ │ │ ├── warning
│ │ │ │ │ │ ├── wildcard
│ │ │ │ │ │ └── word
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ ├── close_stdout
│ │ │ │ │ │ ├── general1
│ │ │ │ │ │ ├── general2
│ │ │ │ │ │ ├── general3
│ │ │ │ │ │ └── general4
│ │ │ │ │ ├── options/
│ │ │ │ │ │ ├── dash-B
│ │ │ │ │ │ ├── dash-C
│ │ │ │ │ │ ├── dash-I
│ │ │ │ │ │ ├── dash-W
│ │ │ │ │ │ ├── dash-e
│ │ │ │ │ │ ├── dash-f
│ │ │ │ │ │ ├── dash-k
│ │ │ │ │ │ ├── dash-l
│ │ │ │ │ │ ├── dash-n
│ │ │ │ │ │ ├── dash-q
│ │ │ │ │ │ ├── dash-t
│ │ │ │ │ │ ├── general
│ │ │ │ │ │ ├── symlinks
│ │ │ │ │ │ └── warn-undefined-variables
│ │ │ │ │ ├── targets/
│ │ │ │ │ │ ├── DEFAULT
│ │ │ │ │ │ ├── FORCE
│ │ │ │ │ │ ├── INTERMEDIATE
│ │ │ │ │ │ ├── PHONY
│ │ │ │ │ │ ├── SECONDARY
│ │ │ │ │ │ ├── SILENT
│ │ │ │ │ │ └── clean
│ │ │ │ │ ├── test_template
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── CURDIR
│ │ │ │ │ ├── DEFAULT_GOAL
│ │ │ │ │ ├── INCLUDE_DIRS
│ │ │ │ │ ├── MAKE
│ │ │ │ │ ├── MAKECMDGOALS
│ │ │ │ │ ├── MAKEFILES
│ │ │ │ │ ├── MAKELEVEL
│ │ │ │ │ ├── MAKE_RESTARTS
│ │ │ │ │ ├── MFILE_LIST
│ │ │ │ │ ├── SHELL
│ │ │ │ │ ├── automatic
│ │ │ │ │ ├── flavors
│ │ │ │ │ ├── negative
│ │ │ │ │ └── special
│ │ │ │ └── test_driver.pl
│ │ │ ├── variable.c
│ │ │ ├── variable.h
│ │ │ ├── version.c
│ │ │ ├── vmsdir.h
│ │ │ ├── vmsfunctions.c
│ │ │ ├── vmsify.c
│ │ │ ├── vmsjobs.c
│ │ │ ├── vpath.c
│ │ │ └── w32/
│ │ │ ├── .deps/
│ │ │ │ ├── libw32_a-misc.Po
│ │ │ │ ├── libw32_a-pathstuff.Po
│ │ │ │ ├── libw32_a-sub_proc.Po
│ │ │ │ └── libw32_a-w32err.Po
│ │ │ ├── Makefile
│ │ │ ├── Makefile.am
│ │ │ ├── Makefile.in
│ │ │ ├── compat/
│ │ │ │ └── dirent.c
│ │ │ ├── include/
│ │ │ │ ├── dirent.h
│ │ │ │ ├── pathstuff.h
│ │ │ │ ├── sub_proc.h
│ │ │ │ └── w32err.h
│ │ │ ├── pathstuff.c
│ │ │ └── subproc/
│ │ │ ├── NMakefile
│ │ │ ├── build.bat
│ │ │ ├── misc.c
│ │ │ ├── proc.h
│ │ │ ├── sub_proc.c
│ │ │ └── w32err.c
│ │ ├── nawk-20071023/
│ │ │ ├── FIXES
│ │ │ ├── GNUmakefile
│ │ │ ├── NOTICE
│ │ │ ├── README
│ │ │ ├── awk.h
│ │ │ ├── awkgram.y
│ │ │ ├── b.c
│ │ │ ├── build-awk.sh
│ │ │ ├── build.py
│ │ │ ├── lex.c
│ │ │ ├── lib.c
│ │ │ ├── main.c
│ │ │ ├── maketab.c
│ │ │ ├── parse.c
│ │ │ ├── proto.h
│ │ │ ├── run.c
│ │ │ └── tran.c
│ │ ├── ndk-depends/
│ │ │ ├── GNUmakefile
│ │ │ ├── NOTICE
│ │ │ ├── build-ndk-depends.sh
│ │ │ ├── build.py
│ │ │ └── ndk-depends.cc
│ │ ├── ndk-stack/
│ │ │ ├── GNUmakefile
│ │ │ ├── NOTICE
│ │ │ ├── binutils/
│ │ │ │ ├── COPYING3
│ │ │ │ └── addr2line.c
│ │ │ ├── build-ndk-stack.sh
│ │ │ ├── build.py
│ │ │ ├── ndk-stack-parser.c
│ │ │ ├── ndk-stack-parser.h
│ │ │ ├── ndk-stack.c
│ │ │ └── regex/
│ │ │ ├── cclass.h
│ │ │ ├── cname.h
│ │ │ ├── engine.c
│ │ │ ├── regcomp.c
│ │ │ ├── regerror.c
│ │ │ ├── regex.h
│ │ │ ├── regex2.h
│ │ │ ├── regexec.c
│ │ │ ├── regfree.c
│ │ │ ├── targetver.h
│ │ │ └── utils.h
│ │ └── toolbox/
│ │ ├── NOTICE
│ │ ├── build-toolbox.sh
│ │ ├── build.py
│ │ ├── cmp_win.c
│ │ └── echo_win.c
│ ├── objc/
│ │ ├── cocotron/
│ │ │ └── 0.1.0/
│ │ │ ├── .gitignore
│ │ │ └── Android.mk
│ │ ├── gnustep-libobjc2/
│ │ │ ├── .gitignore
│ │ │ └── Android.mk
│ │ └── none/
│ │ └── Android.mk
│ ├── python/
│ │ ├── 2.7/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ └── frozen/
│ │ │ ├── _ctypes/
│ │ │ │ └── Android.mk
│ │ │ ├── _multiprocessing/
│ │ │ │ └── Android.mk
│ │ │ ├── _socket/
│ │ │ │ └── Android.mk
│ │ │ ├── _sqlite3/
│ │ │ │ └── Android.mk
│ │ │ ├── _ssl/
│ │ │ │ └── Android.mk
│ │ │ ├── pyexpat/
│ │ │ │ └── Android.mk
│ │ │ ├── select/
│ │ │ │ └── Android.mk
│ │ │ ├── stdlib/
│ │ │ │ └── Android.mk
│ │ │ └── unicodedata/
│ │ │ └── Android.mk
│ │ └── 3.5/
│ │ ├── .gitignore
│ │ ├── Android.mk
│ │ └── frozen/
│ │ ├── _ctypes/
│ │ │ └── Android.mk
│ │ ├── _multiprocessing/
│ │ │ └── Android.mk
│ │ ├── _socket/
│ │ │ └── Android.mk
│ │ ├── _sqlite3/
│ │ │ └── Android.mk
│ │ ├── _ssl/
│ │ │ └── Android.mk
│ │ ├── pyexpat/
│ │ │ └── Android.mk
│ │ ├── select/
│ │ │ └── Android.mk
│ │ ├── stdlib/
│ │ │ └── Android.mk
│ │ └── unicodedata/
│ │ └── Android.mk
│ └── third_party/
│ └── googletest/
│ ├── Android.mk
│ ├── README.NDK
│ ├── googletest/
│ │ ├── CHANGES
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── include/
│ │ │ └── gtest/
│ │ │ ├── gtest-death-test.h
│ │ │ ├── gtest-message.h
│ │ │ ├── gtest-param-test.h
│ │ │ ├── gtest-param-test.h.pump
│ │ │ ├── gtest-printers.h
│ │ │ ├── gtest-spi.h
│ │ │ ├── gtest-test-part.h
│ │ │ ├── gtest-typed-test.h
│ │ │ ├── gtest.h
│ │ │ ├── gtest_pred_impl.h
│ │ │ ├── gtest_prod.h
│ │ │ └── internal/
│ │ │ ├── gtest-death-test-internal.h
│ │ │ ├── gtest-filepath.h
│ │ │ ├── gtest-internal.h
│ │ │ ├── gtest-linked_ptr.h
│ │ │ ├── gtest-param-util-generated.h
│ │ │ ├── gtest-param-util-generated.h.pump
│ │ │ ├── gtest-param-util.h
│ │ │ ├── gtest-port.h
│ │ │ ├── gtest-string.h
│ │ │ ├── gtest-tuple.h
│ │ │ ├── gtest-tuple.h.pump
│ │ │ ├── gtest-type-util.h
│ │ │ └── gtest-type-util.h.pump
│ │ ├── samples/
│ │ │ ├── prime_tables.h
│ │ │ ├── sample1.cc
│ │ │ ├── sample1.h
│ │ │ ├── sample10_unittest.cc
│ │ │ ├── sample1_unittest.cc
│ │ │ ├── sample2.cc
│ │ │ ├── sample2.h
│ │ │ ├── sample2_unittest.cc
│ │ │ ├── sample3-inl.h
│ │ │ ├── sample3_unittest.cc
│ │ │ ├── sample4.cc
│ │ │ ├── sample4.h
│ │ │ ├── sample4_unittest.cc
│ │ │ ├── sample5_unittest.cc
│ │ │ ├── sample6_unittest.cc
│ │ │ ├── sample7_unittest.cc
│ │ │ ├── sample8_unittest.cc
│ │ │ └── sample9_unittest.cc
│ │ ├── src/
│ │ │ ├── gtest-all.cc
│ │ │ ├── gtest-death-test.cc
│ │ │ ├── gtest-filepath.cc
│ │ │ ├── gtest-internal-inl.h
│ │ │ ├── gtest-port.cc
│ │ │ ├── gtest-printers.cc
│ │ │ ├── gtest-test-part.cc
│ │ │ ├── gtest-typed-test.cc
│ │ │ ├── gtest.cc
│ │ │ └── gtest_main.cc
│ │ └── test/
│ │ ├── gtest-death-test_ex_test.cc
│ │ ├── gtest-death-test_test.cc
│ │ ├── gtest-filepath_test.cc
│ │ ├── gtest-linked_ptr_test.cc
│ │ ├── gtest-listener_test.cc
│ │ ├── gtest-message_test.cc
│ │ ├── gtest-options_test.cc
│ │ ├── gtest-param-test2_test.cc
│ │ ├── gtest-param-test_test.cc
│ │ ├── gtest-param-test_test.h
│ │ ├── gtest-port_test.cc
│ │ ├── gtest-printers_test.cc
│ │ ├── gtest-test-part_test.cc
│ │ ├── gtest-tuple_test.cc
│ │ ├── gtest-typed-test2_test.cc
│ │ ├── gtest-typed-test_test.cc
│ │ ├── gtest-typed-test_test.h
│ │ ├── gtest-unittest-api_test.cc
│ │ ├── gtest_all_test.cc
│ │ ├── gtest_break_on_failure_unittest.py
│ │ ├── gtest_break_on_failure_unittest_.cc
│ │ ├── gtest_catch_exceptions_test.py
│ │ ├── gtest_catch_exceptions_test_.cc
│ │ ├── gtest_color_test.py
│ │ ├── gtest_color_test_.cc
│ │ ├── gtest_env_var_test.py
│ │ ├── gtest_env_var_test_.cc
│ │ ├── gtest_environment_test.cc
│ │ ├── gtest_filter_unittest.py
│ │ ├── gtest_filter_unittest_.cc
│ │ ├── gtest_help_test.py
│ │ ├── gtest_help_test_.cc
│ │ ├── gtest_list_tests_unittest.py
│ │ ├── gtest_list_tests_unittest_.cc
│ │ ├── gtest_main_unittest.cc
│ │ ├── gtest_no_test_unittest.cc
│ │ ├── gtest_output_test.py
│ │ ├── gtest_output_test_.cc
│ │ ├── gtest_output_test_golden_lin.txt
│ │ ├── gtest_pred_impl_unittest.cc
│ │ ├── gtest_prod_test.cc
│ │ ├── gtest_repeat_test.cc
│ │ ├── gtest_shuffle_test.py
│ │ ├── gtest_shuffle_test_.cc
│ │ ├── gtest_sole_header_test.cc
│ │ ├── gtest_stress_test.cc
│ │ ├── gtest_test_utils.py
│ │ ├── gtest_throw_on_failure_ex_test.cc
│ │ ├── gtest_throw_on_failure_test.py
│ │ ├── gtest_throw_on_failure_test_.cc
│ │ ├── gtest_uninitialized_test.py
│ │ ├── gtest_uninitialized_test_.cc
│ │ ├── gtest_unittest.cc
│ │ ├── gtest_xml_outfile1_test_.cc
│ │ ├── gtest_xml_outfile2_test_.cc
│ │ ├── gtest_xml_outfiles_test.py
│ │ ├── gtest_xml_output_unittest.py
│ │ ├── gtest_xml_output_unittest_.cc
│ │ ├── gtest_xml_test_utils.py
│ │ ├── production.cc
│ │ └── production.h
│ └── patches.ndk/
│ ├── 0001-Allow-clone-usage-on-MIPS.patch
│ ├── 0002-Work-around-broken-abort-on-Android-MIPS.patch
│ └── 0003-Allow-clone-usage-on-X86.patch
├── tests/
│ ├── .gitignore
│ ├── README
│ ├── __init__.py
│ ├── awk/
│ │ ├── extract-launchable/
│ │ │ ├── multiple-categories.in
│ │ │ ├── multiple-categories.out
│ │ │ ├── multiple-launchables.in
│ │ │ ├── multiple-launchables.out
│ │ │ ├── no-launchable.in
│ │ │ ├── no-launchable.out
│ │ │ ├── one-launchable.in
│ │ │ └── one-launchable.out
│ │ ├── extract-pid/
│ │ │ ├── test-1.in
│ │ │ └── test-1.out
│ │ ├── gen-cygwin-deps-converter/
│ │ │ ├── test-1.in
│ │ │ ├── test-1.out
│ │ │ ├── test-2.in
│ │ │ └── test-2.out
│ │ └── gen-windows-host-path/
│ │ ├── test-1.in
│ │ └── test-1.out
│ ├── build/
│ │ ├── .gitignore
│ │ ├── absolute-src-file-paths/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── src/
│ │ │ ├── foo.c
│ │ │ └── main.c
│ │ ├── ansi/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test_ansi.c
│ │ │ └── test_ansi.cpp
│ │ ├── awk-trailing-r/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── awk-trailing-r.c
│ │ ├── b14811006-GOT_PREL-optimization/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── SkAlphaMulQ.cc
│ │ │ └── properties.json
│ │ ├── b14825026-aarch64-FP_LO_REGS/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── idct_dequant_full_2x_neon.c
│ │ │ └── test_config.py
│ │ ├── b8247455-hidden-cxa/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── idiv.cpp
│ │ │ └── throw.cpp
│ │ ├── b9193874-neon/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── b9193874-neon.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── build-assembly-file/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── assembly-mips.S
│ │ │ ├── assembly-x86.S
│ │ │ ├── assembly1.s
│ │ │ └── assembly2.S
│ │ ├── build-mode/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── c++-stl-source-extensions/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── main.C
│ │ │ │ ├── main.CPP
│ │ │ │ ├── main.c++
│ │ │ │ ├── main.cc
│ │ │ │ ├── main.cp
│ │ │ │ ├── main.cpp
│ │ │ │ └── main.cxx
│ │ │ └── test_config.py
│ │ ├── check-armeabi-v7a-prebuilts/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── clang-include-gnu-libc++/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── clang-include-gnu-libc++.cc
│ │ ├── copysign/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── copysign.cpp
│ │ │ └── test_config.py
│ │ ├── cortex-a53-835769/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── cortex-a53-835769-1.c
│ │ │ │ └── cortex-a53-835769-2.c
│ │ │ └── test_config.py
│ │ ├── cpp-extensions/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo1.cc
│ │ │ ├── foo2.cp
│ │ │ ├── foo3.cxx
│ │ │ ├── foo4.cpp
│ │ │ ├── foo5.C
│ │ │ ├── foo6.CPP
│ │ │ └── main.c++
│ │ ├── crystax-check-BROKEN_BUILD/
│ │ │ └── build.sh
│ │ ├── crystax-check-BROKEN_RUN/
│ │ │ └── build.sh
│ │ ├── crystax-check-BUILD_SHOULD_FAIL/
│ │ │ └── build.sh
│ │ ├── crystax-check-DISABLED/
│ │ │ └── build.sh
│ │ ├── crystax-check-__gnu_linux__/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-check-host-python-ssl-modules/
│ │ │ └── build.sh
│ │ ├── crystax-check-prebuilt-gdb/
│ │ │ └── build.sh
│ │ ├── crystax-issue1044-clang-x86_64-crash/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1170-alloca-redefined/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1234-fd_set-should-be-exposed-implicitly-by-stdlib_h/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-issue1263-___atomic_add_fetch/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1263-clang-64bit-atomics/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1340-PTRDIFF_MAX-is-not-defined/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1352-libobjc-soname/
│ │ │ └── build.sh
│ │ ├── crystax-issue1363-do-not-know-how-to-soften-operand/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-issue1370-unknown-dwarf-version/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── test.c
│ │ ├── crystax-issue906-long-double/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-issue922-struct_user-exposed-by-stdlib_h/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-__GCC_HAVE_SYNC_COMPARE_AND_SWAP/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-boost-dependencies/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ └── test.cpp
│ │ ├── crystax-test-c++-exceptions-and-rtti-enabled-by-default/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── test.cpp
│ │ ├── crystax-test-ext-hash/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-headers/
│ │ │ └── build.sh
│ │ ├── crystax-test-libcrystax-linking/
│ │ │ └── build.sh
│ │ ├── crystax-test-neon/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-patched-sysroot/
│ │ │ └── build.sh
│ │ ├── crystax-test-posix-interfaces/
│ │ │ ├── bin/
│ │ │ │ ├── gen-aio
│ │ │ │ ├── gen-all
│ │ │ │ ├── gen-cpio
│ │ │ │ ├── gen-errno
│ │ │ │ ├── gen-fcntl
│ │ │ │ ├── gen-fenv
│ │ │ │ ├── gen-float
│ │ │ │ ├── gen-fmtmsg
│ │ │ │ ├── gen-fnmatch
│ │ │ │ ├── gen-ftw
│ │ │ │ ├── gen-glob
│ │ │ │ ├── gen-inttypes
│ │ │ │ ├── gen-iso646
│ │ │ │ ├── gen-langinfo
│ │ │ │ ├── gen-limits
│ │ │ │ ├── gen-locale
│ │ │ │ ├── gen-math
│ │ │ │ ├── gen-netdb
│ │ │ │ ├── gen-netinet_in
│ │ │ │ ├── gen-poll
│ │ │ │ ├── gen-pthread
│ │ │ │ ├── gen-regex
│ │ │ │ ├── gen-sched
│ │ │ │ ├── gen-signal
│ │ │ │ ├── gen-spawn
│ │ │ │ ├── gen-stdbool
│ │ │ │ ├── gen-stdint
│ │ │ │ ├── gen-stdio
│ │ │ │ ├── gen-stdlib
│ │ │ │ ├── gen-sys_ipc
│ │ │ │ ├── gen-sys_mman
│ │ │ │ ├── gen-sys_resource
│ │ │ │ ├── gen-sys_sem
│ │ │ │ ├── gen-sys_shm
│ │ │ │ ├── gen-sys_socket
│ │ │ │ ├── gen-sys_stat
│ │ │ │ ├── gen-sys_statvfs
│ │ │ │ ├── gen-sys_time
│ │ │ │ ├── gen-sys_wait
│ │ │ │ ├── gen-syslog
│ │ │ │ ├── gen-tar
│ │ │ │ ├── gen-termios
│ │ │ │ ├── gen-tgmath
│ │ │ │ ├── gen-time
│ │ │ │ ├── gen-unistd
│ │ │ │ ├── gen-wchar
│ │ │ │ └── gen-wordexp
│ │ │ ├── build.sh
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ ├── aio.c
│ │ │ ├── arpa_inet.c
│ │ │ ├── checkm.c
│ │ │ ├── complex.c
│ │ │ ├── cpio.c
│ │ │ ├── ctype.c
│ │ │ ├── dirent.c
│ │ │ ├── dlfcn.c
│ │ │ ├── errno.c
│ │ │ ├── fcntl.c
│ │ │ ├── fenv.c
│ │ │ ├── float.c
│ │ │ ├── fmtmsg.c
│ │ │ ├── fnmatch.c
│ │ │ ├── ftw.c
│ │ │ ├── glob.c
│ │ │ ├── grp.c
│ │ │ ├── helper.h
│ │ │ ├── iconv.c
│ │ │ ├── inttypes.c
│ │ │ ├── iso646.c
│ │ │ ├── langinfo.c
│ │ │ ├── libgen.c
│ │ │ ├── limits.c
│ │ │ ├── locale.c
│ │ │ ├── main.c
│ │ │ ├── math.c
│ │ │ ├── monetary.c
│ │ │ ├── mqueue.c
│ │ │ ├── ndbm.c
│ │ │ ├── net_if.c
│ │ │ ├── netdb.c
│ │ │ ├── netinet_in.c
│ │ │ ├── netinet_tcp.c
│ │ │ ├── nl_types.c
│ │ │ ├── poll.c
│ │ │ ├── pthread.c
│ │ │ ├── pwd.c
│ │ │ ├── regex.c
│ │ │ ├── sched.c
│ │ │ ├── search.c
│ │ │ ├── semaphore.c
│ │ │ ├── setjmp.c
│ │ │ ├── signal.c
│ │ │ ├── spawn.c
│ │ │ ├── stdarg.c
│ │ │ ├── stdbool.c
│ │ │ ├── stddef.c
│ │ │ ├── stdint.c
│ │ │ ├── stdio.c
│ │ │ ├── stdlib.c
│ │ │ ├── string.c
│ │ │ ├── strings.c
│ │ │ ├── sys_ipc.c
│ │ │ ├── sys_mman.c
│ │ │ ├── sys_msg.c
│ │ │ ├── sys_resource.c
│ │ │ ├── sys_select.c
│ │ │ ├── sys_sem.c
│ │ │ ├── sys_shm.c
│ │ │ ├── sys_socket.c
│ │ │ ├── sys_stat.c
│ │ │ ├── sys_statvfs.c
│ │ │ ├── sys_time.c
│ │ │ ├── sys_times.c
│ │ │ ├── sys_types.c
│ │ │ ├── sys_uio.c
│ │ │ ├── sys_un.c
│ │ │ ├── sys_utsname.c
│ │ │ ├── sys_wait.c
│ │ │ ├── syslog.c
│ │ │ ├── tar.c
│ │ │ ├── termios.c
│ │ │ ├── tgmath.c
│ │ │ ├── time.c
│ │ │ ├── unistd.c
│ │ │ ├── utime.c
│ │ │ ├── wchar.c
│ │ │ ├── wctype.c
│ │ │ ├── wordexp.c
│ │ │ ├── xlocale.c
│ │ │ └── xlocale2.c
│ │ ├── crystax-test-prebuilt-macros/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-sync_file_range/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── deprecate-__set_errno/
│ │ │ └── build.sh
│ │ ├── fenv/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test_fenv.c
│ │ │ └── test_fenv.cpp
│ │ ├── flto/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── flto.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── gnustl-force-all/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── forced_all.cpp
│ │ ├── gnustl-force-exceptions/
│ │ │ └── build.sh
│ │ ├── gnustl-force-none/
│ │ │ └── build.sh
│ │ ├── gnustl-force-rtti/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── forced_rtti.cpp
│ │ ├── import-install/
│ │ │ ├── README
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ ├── path1/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── path1.c
│ │ │ │ └── path1.h
│ │ │ └── path2/
│ │ │ ├── Android.mk
│ │ │ ├── path2.c
│ │ │ └── path2.h
│ │ ├── import-static/
│ │ │ ├── README
│ │ │ ├── bar/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── bar.c
│ │ │ │ └── bar.h
│ │ │ ├── build.sh
│ │ │ ├── foo/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── foo.c
│ │ │ │ └── foo.h
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── main.c
│ │ ├── issue-gcc59052-partial-specialization-of-template/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue-gcc59052-partial-specialization-of-template.cc
│ │ ├── issue17144-byteswap/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue17144-byteswap.c
│ │ │ └── test_config.py
│ │ ├── issue20862-libpng-O0/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── png.h
│ │ │ ├── pngconf.h
│ │ │ ├── pngdebug.h
│ │ │ ├── pnginfo.h
│ │ │ ├── pnglibconf.h
│ │ │ ├── pngpriv.h
│ │ │ ├── pngrtran.c
│ │ │ └── pngstruct.h
│ │ ├── issue21132-__ARM_ARCH__/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue21132-__ARM_ARCH__.c
│ │ │ └── test_config.py
│ │ ├── issue22336-ICE-emit-rtl/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue22336-ICE-emit-rtl.cpp
│ │ │ └── test_config.py
│ │ ├── issue22345-ICE-postreload/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue22345-ICE-postreload.cpp
│ │ │ └── test_config.py
│ │ ├── issue34613-neon/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue34613-neon.cpp
│ │ │ └── test_config.py
│ │ ├── issue36131-flto-c++11/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue36131-flto-c++11.cxx
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── issue38441-Elf32_auxv_t/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue38441-Elf32_auxv_t.c
│ │ ├── issue39824-__BYTE_ORDER/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── issue39824-_BYTE_ORDER.c
│ │ │ └── issue39824-__BYTE_ORDER.c
│ │ ├── issue39983-PAGE_SIZE/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue39983-PAGE_SIZE.c
│ │ ├── issue40625-SL_IID_ANDROIDBUFFERQUEUESOURCE/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue40625-SL_IID_ANDROIDBUFFERQUEUESOURCE.c
│ │ ├── issue41297-atomic-64bit/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue41297-atomic-64bit.c
│ │ │ └── test_config.py
│ │ ├── issue41387-uniform-initialized-rvalue/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue41387-uniform-initialized-rvalue.cpp
│ │ ├── issue41770-_GLIBCXX_HAS_GTHREADS/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue41770-_GLIBCXX_HAS_GTHREADS.cpp
│ │ │ └── test_config.py
│ │ ├── issue42841-LOCAL_PATH/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue42841-LOCAL_PATH.c
│ │ ├── issue53163-OpenSLES_AndroidConfiguration/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue53163-OpenSLES_AndroidConfiguration.c
│ │ ├── issue53404-backward-compatibility/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue53404-backward-compatibility.cpp
│ │ ├── issue53711-un_h/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue53711-un_h.c
│ │ ├── issue54465-invalid-asm-operand-out-of-range/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue54465-invalid-asm-operand-out-of-range.cpp
│ │ ├── issue54623-dcraw_common-x86-segfault/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue54623-dcraw_common-x86-segfault.cpp
│ │ ├── issue56508-gcc4.7-ICE/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── extraMachine.c
│ │ ├── issue58135-_C_LABEL_STRING/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue58135-_C_LABEL_STRING.cpp
│ │ ├── issue64679-prctl/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue64679-prctl.cc
│ │ ├── issue65705-asm-pc/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue65705-asm-pc.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── issue66668-libc++-std-feof/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue66668-libc++-std-feof.cpp
│ │ ├── issue79114-__builtin___stpncpy_chk/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── __builtin___stpncpy_chk.c
│ │ ├── issue79115-confusing-ld.gold-warning/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue79115-confusing-ld.gold-warning.c
│ │ ├── issue81440-non-ascii-comment/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue81440-non-ascii-comment.cpp
│ │ ├── lambda-defarg3/
│ │ │ ├── COPYING
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── lambda-defarg3.C
│ │ │ └── test_config.py
│ │ ├── merge-string-literals/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── merge-string-literals-1.c
│ │ │ └── merge-string-literals-2.c
│ │ ├── mips-fp4/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── mips-fp4-test1-2.c
│ │ │ │ └── mips-fp4-test3-6.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── multi-abi/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── multi-module-path/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── test.c
│ │ │ ├── path1/
│ │ │ │ └── foo/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── foo.h
│ │ │ │ └── libfoo.c
│ │ │ └── path2/
│ │ │ └── bar/
│ │ │ ├── Android.mk
│ │ │ ├── bar.h
│ │ │ └── libbar.c
│ │ ├── multiple-static-const/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.cpp
│ │ │ ├── main.cpp
│ │ │ └── main.h
│ │ ├── ndk-build-unit-tests/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ └── Android.mk
│ │ ├── ndk-out/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── main.c
│ │ ├── no-installable-modules/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.c
│ │ ├── pch-cpp/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── foo.c
│ │ │ ├── foo.cpp
│ │ │ └── stdafx.h
│ │ ├── pch-tags/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.cpp
│ │ │ ├── foo.cpp
│ │ │ └── stdafx.h
│ │ ├── prebuilt-copy/
│ │ │ ├── README
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ └── prebuilts/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.c
│ │ │ └── foo.c
│ │ ├── project-properties/
│ │ │ ├── default.properties
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── project.properties
│ │ ├── pthread-rwlock-initializer/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_pthread_rwlock_initializer.c
│ │ ├── short-commands/
│ │ │ └── build.sh
│ │ ├── ssax-instructions/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.S
│ │ │ └── test_config.py
│ │ ├── standalone-toolchain/
│ │ │ ├── foo.cpp
│ │ │ ├── properties.json
│ │ │ ├── test.py
│ │ │ └── test_config.py
│ │ ├── stdint-c++/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── gen-sources.sh
│ │ │ ├── test_all_macros.cpp
│ │ │ ├── test_c.c
│ │ │ ├── test_constant_macros.cpp
│ │ │ ├── test_limit_macros.cpp
│ │ │ └── test_no_macros.cpp
│ │ ├── system-cpp-headers/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── target-c-includes/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── check.c
│ │ │ └── include/
│ │ │ └── math.h
│ │ ├── test-c-only-flags/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test-c-only-flags.cpp
│ │ ├── test-gnustl-chrono/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── hanoi.c
│ │ │ ├── hanoi.h
│ │ │ └── main.cpp
│ │ ├── test-inet-defs/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-in.c
│ │ │ └── test-in6.c
│ │ ├── thin-archives/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.c
│ │ │ ├── foo.c
│ │ │ └── main.c
│ │ ├── topological-sort/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.c
│ │ │ ├── bar.h
│ │ │ ├── foo.c
│ │ │ ├── foo.h
│ │ │ ├── foo2.c
│ │ │ └── main.c
│ │ ├── ucontext/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── ucontext.c
│ │ ├── warn-bad-modules/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.cpp
│ │ ├── warn-no-ldflags-in-static-libraries/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.c
│ │ ├── warn-no-ldlibs-in-static-libraries/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.c
│ │ ├── warn-no-modules/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ └── Android.mk
│ │ ├── warn-non-system-libs-in-linker-flags/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── foo.c
│ │ │ └── main.c
│ │ └── warn-thin-archive-is-for-static-libraries/
│ │ ├── build.sh
│ │ └── jni/
│ │ ├── Android.mk
│ │ └── foo.c
│ ├── device/
│ │ ├── asan-smoke/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── asan_oob_test.cc
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── b16355626-bad-atof-strtod/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── b16355626-bad-atof-strtod.cpp
│ │ ├── b16355858/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── sample.c
│ │ │ └── sample_lib.c
│ │ ├── b8708181-Vector4/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── Vector4.cpp
│ │ │ └── test_config.py
│ │ ├── bitfield/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── func.c
│ │ │ ├── header.h
│ │ │ └── main.c
│ │ ├── clone/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── clone.c
│ │ ├── crystax-issue1003-pw_gecos/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1046-dlopen-unknown-reloc-type-160/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── main.c
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1163-dladdr/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.c
│ │ │ ├── foo.h
│ │ │ └── main.c
│ │ ├── crystax-issue1188-wrong-static-library-link/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── lib-shared.cpp
│ │ │ ├── lib-shared.hpp
│ │ │ ├── lib-static.cpp
│ │ │ ├── lib-static.hpp
│ │ │ └── test.cpp
│ │ ├── crystax-issue1194-posix_memalign/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1252-swab/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1360-boost_locale_issetugid/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issetugidtest.cpp
│ │ ├── crystax-issue1369-lrintf/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-issue1398-esdb/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1399-gmtime-return-NULL-tm_zone/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1436-gethostname/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue350-copy-with-zone/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.m
│ │ │ └── properties.json
│ │ ├── crystax-issue355-clock_nanosleep/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ └── properties.json
│ │ ├── crystax-issue57-std_atomic/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-issue876-swapNN/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── assert.h
│ │ │ ├── function.c
│ │ │ ├── macro.c
│ │ │ └── main.c
│ │ ├── crystax-issue912-__tls_get_addr/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── test.c
│ │ │ │ └── tga.c
│ │ │ └── properties.json
│ │ ├── crystax-issue995-objective-c-literals/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.m
│ │ │ └── properties.json
│ │ ├── crystax-test-alignof/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-test-big-switch/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── gen
│ │ ├── crystax-test-bionic/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── crystax-test-boost-serialization/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── gps.cpp
│ │ │ ├── gps.hpp
│ │ │ └── test.cpp
│ │ ├── crystax-test-c++11/
│ │ │ ├── .syntastic/
│ │ │ │ └── cxx
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── common.h
│ │ │ ├── main.cpp
│ │ │ ├── test-chrono-duration.cpp
│ │ │ ├── test-language.cpp
│ │ │ ├── test-stol.cpp
│ │ │ ├── test-thread.cpp
│ │ │ ├── test-to-string.cpp
│ │ │ └── test-to-wstring.cpp
│ │ ├── crystax-test-c99-complex/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ └── properties.json
│ │ ├── crystax-test-c99-stdlib/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-cmake/
│ │ │ ├── CMakeLists.txt
│ │ │ └── test.c
│ │ ├── crystax-test-dynamic_cast/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-executables/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-fcntl/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── fcntl.c
│ │ ├── crystax-test-float-abi/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test-float.c
│ │ ├── crystax-test-getauxval/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-iostream/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-libcrystax/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── absolutize.cpp
│ │ │ ├── basename.cpp
│ │ │ ├── common.h
│ │ │ ├── dirname.cpp
│ │ │ ├── is_absolute.cpp
│ │ │ ├── is_normalized.cpp
│ │ │ ├── is_subpath.cpp
│ │ │ ├── list.cpp
│ │ │ ├── main.cpp
│ │ │ ├── normalize.cpp
│ │ │ ├── open-self.cpp
│ │ │ ├── path.cpp
│ │ │ └── relpath.cpp
│ │ ├── crystax-test-libjpeg/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-libjpeg-turbo/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-libkqueue/
│ │ │ ├── config.h
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── crystax-test-libpng/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-locales/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-setlocale.c
│ │ │ ├── test-strfmon.c
│ │ │ └── test-strftime.c
│ │ ├── crystax-test-msun/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-cexp.c
│ │ │ ├── test-conj.c
│ │ │ ├── test-csqrt.c
│ │ │ ├── test-ctrig.c
│ │ │ ├── test-exponential.c
│ │ │ ├── test-fenv.c
│ │ │ ├── test-fma.c
│ │ │ ├── test-fmaxmin.c
│ │ │ ├── test-ilogb.c
│ │ │ ├── test-invctrig.c
│ │ │ ├── test-invtrig.c
│ │ │ ├── test-logarithm.c
│ │ │ ├── test-lrint.c
│ │ │ ├── test-lround.c
│ │ │ ├── test-nan.c
│ │ │ ├── test-nearbyint.c
│ │ │ ├── test-next.c
│ │ │ ├── test-rem.c
│ │ │ ├── test-trig.c
│ │ │ └── test-utils.h
│ │ ├── crystax-test-objc-blocks/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.m
│ │ │ └── properties.json
│ │ ├── crystax-test-objc-cocotron/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── test-assert.m
│ │ │ │ ├── test-base.m
│ │ │ │ ├── test-exception.m
│ │ │ │ ├── test-nslog.m
│ │ │ │ └── test-string.m
│ │ │ └── properties.json
│ │ ├── crystax-test-objc-runtime/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── objc.m
│ │ │ │ ├── objcxx.mm
│ │ │ │ └── test.c
│ │ │ └── properties.json
│ │ ├── crystax-test-openpts/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── crystax-test-pthread_workqueue/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── crystax-test-rand_r/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-regex/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-setjmp/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-sincos/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-sincos-c.c
│ │ │ ├── test-sincos-cpp.cpp
│ │ │ └── test-sincos-main.c
│ │ ├── crystax-test-sqlite3/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-std-atomic-crashes/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.cc
│ │ │ └── properties.json
│ │ ├── crystax-test-stdatomic.h/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-stdio/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-fmemopen.c
│ │ │ ├── test-fopen.c
│ │ │ ├── test-getdelim.c
│ │ │ ├── test-getline.c
│ │ │ ├── test-open_memstream.c
│ │ │ ├── test-open_wmemstream.c
│ │ │ ├── test-popen.c
│ │ │ ├── test-print-positional.c
│ │ │ ├── test-printbasic.c
│ │ │ ├── test-printf-data.inc
│ │ │ ├── test-printf.c
│ │ │ ├── test-printfloat.c
│ │ │ └── test-scanfloat.c
│ │ ├── crystax-test-stream-float-output/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test-stream-float-output.cpp
│ │ ├── crystax-test-strtod/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-wchar/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-btowc.c
│ │ │ ├── test-iswctype.c
│ │ │ ├── test-mblen.c
│ │ │ ├── test-mbrlen.c
│ │ │ ├── test-mbrtowc.c
│ │ │ ├── test-mbsnrtowcs.c
│ │ │ ├── test-mbsrtowcs.c
│ │ │ ├── test-mbstowcs.c
│ │ │ ├── test-mbtowc.c
│ │ │ ├── test-ms-wprintf.c
│ │ │ ├── test-towctrans.c
│ │ │ ├── test-wcrtomb.c
│ │ │ ├── test-wcscasecmp.c
│ │ │ ├── test-wcslen-cpp.cpp
│ │ │ ├── test-wcslen.c
│ │ │ ├── test-wcsnlen.c
│ │ │ ├── test-wcsnrtombs.c
│ │ │ ├── test-wcsrtombs.c
│ │ │ ├── test-wcstombs.c
│ │ │ ├── test-wctomb.c
│ │ │ ├── test-wprintf.c
│ │ │ ├── test-wscanf.c
│ │ │ ├── test-wstring.cpp
│ │ │ └── wprintf.inc
│ │ ├── crystax-test-wchar-minmax/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── emm/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── emm.c
│ │ │ └── test_config.py
│ │ ├── exceptions-crash/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.cpp
│ │ │ └── main.cpp
│ │ ├── fenv/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_fenv.c
│ │ │ └── test_config.py
│ │ ├── gnustl-shared-1/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.cpp
│ │ │ └── main.cpp
│ │ ├── issue19851-sigsetjmp/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue19851-sigsetjmp.c
│ │ │ └── test_config.py
│ │ ├── issue20176-__gnu_Unwind_Find_exidx/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue20176-__gnu_Unwind_Find_exidx.cpp
│ │ │ └── test_config.py
│ │ ├── issue22165-typeinfo/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── main.cpp
│ │ │ ├── myexception.h
│ │ │ ├── throwable.cpp
│ │ │ └── throwable.h
│ │ ├── issue28598-linker-global-ref/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── liba.cpp
│ │ │ ├── liba.h
│ │ │ └── main.cpp
│ │ ├── issue35933-lambda/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue35933-lambda.cpp
│ │ ├── issue39680-chrono-resolution/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue39680-chrono-resolution.cpp
│ │ ├── issue42891-boost-1_52/
│ │ │ ├── COPYING
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── boost/
│ │ │ │ │ └── boost/
│ │ │ │ │ ├── algorithm/
│ │ │ │ │ │ └── string/
│ │ │ │ │ │ ├── compare.hpp
│ │ │ │ │ │ ├── concept.hpp
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── constants.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── find_format.hpp
│ │ │ │ │ │ │ ├── find_format_all.hpp
│ │ │ │ │ │ │ ├── find_format_store.hpp
│ │ │ │ │ │ │ ├── finder.hpp
│ │ │ │ │ │ │ ├── formatter.hpp
│ │ │ │ │ │ │ ├── replace_storage.hpp
│ │ │ │ │ │ │ ├── sequence.hpp
│ │ │ │ │ │ │ └── util.hpp
│ │ │ │ │ │ ├── find_format.hpp
│ │ │ │ │ │ ├── finder.hpp
│ │ │ │ │ │ ├── formatter.hpp
│ │ │ │ │ │ ├── replace.hpp
│ │ │ │ │ │ ├── sequence_traits.hpp
│ │ │ │ │ │ └── yes_no_type.hpp
│ │ │ │ │ ├── aligned_storage.hpp
│ │ │ │ │ ├── array.hpp
│ │ │ │ │ ├── assert.hpp
│ │ │ │ │ ├── bind/
│ │ │ │ │ │ ├── arg.hpp
│ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ ├── bind_cc.hpp
│ │ │ │ │ │ ├── bind_mf2_cc.hpp
│ │ │ │ │ │ ├── bind_mf_cc.hpp
│ │ │ │ │ │ ├── bind_template.hpp
│ │ │ │ │ │ ├── mem_fn.hpp
│ │ │ │ │ │ ├── mem_fn_cc.hpp
│ │ │ │ │ │ ├── mem_fn_template.hpp
│ │ │ │ │ │ ├── placeholders.hpp
│ │ │ │ │ │ └── storage.hpp
│ │ │ │ │ ├── bind.hpp
│ │ │ │ │ ├── call_traits.hpp
│ │ │ │ │ ├── checked_delete.hpp
│ │ │ │ │ ├── concept/
│ │ │ │ │ │ ├── assert.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── backward_compatibility.hpp
│ │ │ │ │ │ │ ├── concept_def.hpp
│ │ │ │ │ │ │ ├── concept_undef.hpp
│ │ │ │ │ │ │ ├── general.hpp
│ │ │ │ │ │ │ └── has_constraints.hpp
│ │ │ │ │ │ └── usage.hpp
│ │ │ │ │ ├── concept_check.hpp
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── compiler/
│ │ │ │ │ │ │ ├── clang.hpp
│ │ │ │ │ │ │ └── gcc.hpp
│ │ │ │ │ │ ├── no_tr1/
│ │ │ │ │ │ │ ├── cmath.hpp
│ │ │ │ │ │ │ ├── complex.hpp
│ │ │ │ │ │ │ ├── memory.hpp
│ │ │ │ │ │ │ └── utility.hpp
│ │ │ │ │ │ ├── platform/
│ │ │ │ │ │ │ └── linux.hpp
│ │ │ │ │ │ ├── posix_features.hpp
│ │ │ │ │ │ ├── select_compiler_config.hpp
│ │ │ │ │ │ ├── select_platform_config.hpp
│ │ │ │ │ │ ├── select_stdlib_config.hpp
│ │ │ │ │ │ ├── stdlib/
│ │ │ │ │ │ │ └── libstdcpp3.hpp
│ │ │ │ │ │ ├── suffix.hpp
│ │ │ │ │ │ └── user.hpp
│ │ │ │ │ ├── config.hpp
│ │ │ │ │ ├── container/
│ │ │ │ │ │ └── container_fwd.hpp
│ │ │ │ │ ├── cstdint.hpp
│ │ │ │ │ ├── cstdlib.hpp
│ │ │ │ │ ├── current_function.hpp
│ │ │ │ │ ├── detail/
│ │ │ │ │ │ ├── binary_search.hpp
│ │ │ │ │ │ ├── call_traits.hpp
│ │ │ │ │ │ ├── endian.hpp
│ │ │ │ │ │ ├── fenv.hpp
│ │ │ │ │ │ ├── indirect_traits.hpp
│ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ ├── lcast_precision.hpp
│ │ │ │ │ │ ├── reference_content.hpp
│ │ │ │ │ │ ├── sp_typeinfo.hpp
│ │ │ │ │ │ └── workaround.hpp
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── current_exception_cast.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── attribute_noreturn.hpp
│ │ │ │ │ │ │ ├── error_info_impl.hpp
│ │ │ │ │ │ │ └── type_info.hpp
│ │ │ │ │ │ ├── exception.hpp
│ │ │ │ │ │ └── get_error_info.hpp
│ │ │ │ │ ├── functional/
│ │ │ │ │ │ ├── hash/
│ │ │ │ │ │ │ └── hash_fwd.hpp
│ │ │ │ │ │ └── hash_fwd.hpp
│ │ │ │ │ ├── get_pointer.hpp
│ │ │ │ │ ├── integer_traits.hpp
│ │ │ │ │ ├── io/
│ │ │ │ │ │ └── ios_state.hpp
│ │ │ │ │ ├── io_fwd.hpp
│ │ │ │ │ ├── is_placeholder.hpp
│ │ │ │ │ ├── iterator/
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── config_def.hpp
│ │ │ │ │ │ │ ├── config_undef.hpp
│ │ │ │ │ │ │ ├── enable_if.hpp
│ │ │ │ │ │ │ └── facade_iterator_category.hpp
│ │ │ │ │ │ ├── interoperable.hpp
│ │ │ │ │ │ ├── iterator_adaptor.hpp
│ │ │ │ │ │ ├── iterator_categories.hpp
│ │ │ │ │ │ ├── iterator_concepts.hpp
│ │ │ │ │ │ ├── iterator_facade.hpp
│ │ │ │ │ │ ├── iterator_traits.hpp
│ │ │ │ │ │ └── reverse_iterator.hpp
│ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ ├── lexical_cast.hpp
│ │ │ │ │ ├── limits.hpp
│ │ │ │ │ ├── math/
│ │ │ │ │ │ ├── policies/
│ │ │ │ │ │ │ └── policy.hpp
│ │ │ │ │ │ ├── special_functions/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── fp_traits.hpp
│ │ │ │ │ │ │ │ └── round_fwd.hpp
│ │ │ │ │ │ │ ├── fpclassify.hpp
│ │ │ │ │ │ │ ├── math_fwd.hpp
│ │ │ │ │ │ │ └── sign.hpp
│ │ │ │ │ │ └── tools/
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── promotion.hpp
│ │ │ │ │ │ ├── real_cast.hpp
│ │ │ │ │ │ └── user.hpp
│ │ │ │ │ ├── mem_fn.hpp
│ │ │ │ │ ├── memory_order.hpp
│ │ │ │ │ ├── mpl/
│ │ │ │ │ │ ├── O1_size.hpp
│ │ │ │ │ │ ├── O1_size_fwd.hpp
│ │ │ │ │ │ ├── advance.hpp
│ │ │ │ │ │ ├── advance_fwd.hpp
│ │ │ │ │ │ ├── always.hpp
│ │ │ │ │ │ ├── and.hpp
│ │ │ │ │ │ ├── apply.hpp
│ │ │ │ │ │ ├── apply_fwd.hpp
│ │ │ │ │ │ ├── apply_wrap.hpp
│ │ │ │ │ │ ├── arg.hpp
│ │ │ │ │ │ ├── arg_fwd.hpp
│ │ │ │ │ │ ├── assert.hpp
│ │ │ │ │ │ ├── at.hpp
│ │ │ │ │ │ ├── at_fwd.hpp
│ │ │ │ │ │ ├── aux_/
│ │ │ │ │ │ │ ├── O1_size_impl.hpp
│ │ │ │ │ │ │ ├── adl_barrier.hpp
│ │ │ │ │ │ │ ├── advance_backward.hpp
│ │ │ │ │ │ │ ├── advance_forward.hpp
│ │ │ │ │ │ │ ├── arg_typedef.hpp
│ │ │ │ │ │ │ ├── arithmetic_op.hpp
│ │ │ │ │ │ │ ├── arity.hpp
│ │ │ │ │ │ │ ├── arity_spec.hpp
│ │ │ │ │ │ │ ├── at_impl.hpp
│ │ │ │ │ │ │ ├── begin_end_impl.hpp
│ │ │ │ │ │ │ ├── clear_impl.hpp
│ │ │ │ │ │ │ ├── common_name_wknd.hpp
│ │ │ │ │ │ │ ├── comparison_op.hpp
│ │ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ │ ├── adl.hpp
│ │ │ │ │ │ │ │ ├── arrays.hpp
│ │ │ │ │ │ │ │ ├── bcc.hpp
│ │ │ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ │ │ ├── compiler.hpp
│ │ │ │ │ │ │ │ ├── ctps.hpp
│ │ │ │ │ │ │ │ ├── dtp.hpp
│ │ │ │ │ │ │ │ ├── eti.hpp
│ │ │ │ │ │ │ │ ├── forwarding.hpp
│ │ │ │ │ │ │ │ ├── gcc.hpp
│ │ │ │ │ │ │ │ ├── has_apply.hpp
│ │ │ │ │ │ │ │ ├── has_xxx.hpp
│ │ │ │ │ │ │ │ ├── integral.hpp
│ │ │ │ │ │ │ │ ├── intel.hpp
│ │ │ │ │ │ │ │ ├── lambda.hpp
│ │ │ │ │ │ │ │ ├── msvc.hpp
│ │ │ │ │ │ │ │ ├── msvc_typename.hpp
│ │ │ │ │ │ │ │ ├── nttp.hpp
│ │ │ │ │ │ │ │ ├── overload_resolution.hpp
│ │ │ │ │ │ │ │ ├── pp_counter.hpp
│ │ │ │ │ │ │ │ ├── preprocessor.hpp
│ │ │ │ │ │ │ │ ├── static_constant.hpp
│ │ │ │ │ │ │ │ ├── ttp.hpp
│ │ │ │ │ │ │ │ ├── typeof.hpp
│ │ │ │ │ │ │ │ ├── use_preprocessed.hpp
│ │ │ │ │ │ │ │ └── workaround.hpp
│ │ │ │ │ │ │ ├── contains_impl.hpp
│ │ │ │ │ │ │ ├── find_if_pred.hpp
│ │ │ │ │ │ │ ├── fold_impl.hpp
│ │ │ │ │ │ │ ├── full_lambda.hpp
│ │ │ │ │ │ │ ├── has_apply.hpp
│ │ │ │ │ │ │ ├── has_begin.hpp
│ │ │ │ │ │ │ ├── has_size.hpp
│ │ │ │ │ │ │ ├── has_tag.hpp
│ │ │ │ │ │ │ ├── has_type.hpp
│ │ │ │ │ │ │ ├── include_preprocessed.hpp
│ │ │ │ │ │ │ ├── inserter_algorithm.hpp
│ │ │ │ │ │ │ ├── integral_wrapper.hpp
│ │ │ │ │ │ │ ├── is_msvc_eti_arg.hpp
│ │ │ │ │ │ │ ├── iter_apply.hpp
│ │ │ │ │ │ │ ├── iter_fold_if_impl.hpp
│ │ │ │ │ │ │ ├── iter_fold_impl.hpp
│ │ │ │ │ │ │ ├── lambda_arity_param.hpp
│ │ │ │ │ │ │ ├── lambda_spec.hpp
│ │ │ │ │ │ │ ├── lambda_support.hpp
│ │ │ │ │ │ │ ├── largest_int.hpp
│ │ │ │ │ │ │ ├── msvc_eti_base.hpp
│ │ │ │ │ │ │ ├── msvc_never_true.hpp
│ │ │ │ │ │ │ ├── msvc_type.hpp
│ │ │ │ │ │ │ ├── na.hpp
│ │ │ │ │ │ │ ├── na_assert.hpp
│ │ │ │ │ │ │ ├── na_fwd.hpp
│ │ │ │ │ │ │ ├── na_spec.hpp
│ │ │ │ │ │ │ ├── nested_type_wknd.hpp
│ │ │ │ │ │ │ ├── nttp_decl.hpp
│ │ │ │ │ │ │ ├── numeric_cast_utils.hpp
│ │ │ │ │ │ │ ├── numeric_op.hpp
│ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ └── gcc/
│ │ │ │ │ │ │ │ ├── advance_backward.hpp
│ │ │ │ │ │ │ │ ├── advance_forward.hpp
│ │ │ │ │ │ │ │ ├── and.hpp
│ │ │ │ │ │ │ │ ├── apply.hpp
│ │ │ │ │ │ │ │ ├── apply_fwd.hpp
│ │ │ │ │ │ │ │ ├── apply_wrap.hpp
│ │ │ │ │ │ │ │ ├── arg.hpp
│ │ │ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ │ │ ├── bind_fwd.hpp
│ │ │ │ │ │ │ │ ├── equal_to.hpp
│ │ │ │ │ │ │ │ ├── fold_impl.hpp
│ │ │ │ │ │ │ │ ├── full_lambda.hpp
│ │ │ │ │ │ │ │ ├── greater.hpp
│ │ │ │ │ │ │ │ ├── greater_equal.hpp
│ │ │ │ │ │ │ │ ├── iter_fold_if_impl.hpp
│ │ │ │ │ │ │ │ ├── iter_fold_impl.hpp
│ │ │ │ │ │ │ │ ├── less.hpp
│ │ │ │ │ │ │ │ ├── less_equal.hpp
│ │ │ │ │ │ │ │ ├── list.hpp
│ │ │ │ │ │ │ │ ├── minus.hpp
│ │ │ │ │ │ │ │ ├── not_equal_to.hpp
│ │ │ │ │ │ │ │ ├── or.hpp
│ │ │ │ │ │ │ │ ├── placeholders.hpp
│ │ │ │ │ │ │ │ ├── plus.hpp
│ │ │ │ │ │ │ │ ├── quote.hpp
│ │ │ │ │ │ │ │ ├── reverse_fold_impl.hpp
│ │ │ │ │ │ │ │ ├── template_arity.hpp
│ │ │ │ │ │ │ │ ├── times.hpp
│ │ │ │ │ │ │ │ └── vector.hpp
│ │ │ │ │ │ │ ├── preprocessor/
│ │ │ │ │ │ │ │ ├── def_params_tail.hpp
│ │ │ │ │ │ │ │ ├── default_params.hpp
│ │ │ │ │ │ │ │ ├── enum.hpp
│ │ │ │ │ │ │ │ └── params.hpp
│ │ │ │ │ │ │ ├── push_back_impl.hpp
│ │ │ │ │ │ │ ├── push_front_impl.hpp
│ │ │ │ │ │ │ ├── reverse_fold_impl.hpp
│ │ │ │ │ │ │ ├── size_impl.hpp
│ │ │ │ │ │ │ ├── static_cast.hpp
│ │ │ │ │ │ │ ├── template_arity.hpp
│ │ │ │ │ │ │ ├── template_arity_fwd.hpp
│ │ │ │ │ │ │ ├── traits_lambda_spec.hpp
│ │ │ │ │ │ │ ├── type_wrapper.hpp
│ │ │ │ │ │ │ ├── unwrap.hpp
│ │ │ │ │ │ │ ├── value_wknd.hpp
│ │ │ │ │ │ │ └── yes_no.hpp
│ │ │ │ │ │ ├── back_fwd.hpp
│ │ │ │ │ │ ├── back_inserter.hpp
│ │ │ │ │ │ ├── begin_end.hpp
│ │ │ │ │ │ ├── begin_end_fwd.hpp
│ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ ├── bind_fwd.hpp
│ │ │ │ │ │ ├── bool.hpp
│ │ │ │ │ │ ├── bool_fwd.hpp
│ │ │ │ │ │ ├── clear.hpp
│ │ │ │ │ │ ├── clear_fwd.hpp
│ │ │ │ │ │ ├── comparison.hpp
│ │ │ │ │ │ ├── contains.hpp
│ │ │ │ │ │ ├── contains_fwd.hpp
│ │ │ │ │ │ ├── deref.hpp
│ │ │ │ │ │ ├── distance.hpp
│ │ │ │ │ │ ├── distance_fwd.hpp
│ │ │ │ │ │ ├── empty_fwd.hpp
│ │ │ │ │ │ ├── equal_to.hpp
│ │ │ │ │ │ ├── eval_if.hpp
│ │ │ │ │ │ ├── find.hpp
│ │ │ │ │ │ ├── find_if.hpp
│ │ │ │ │ │ ├── fold.hpp
│ │ │ │ │ │ ├── for_each.hpp
│ │ │ │ │ │ ├── front_fwd.hpp
│ │ │ │ │ │ ├── front_inserter.hpp
│ │ │ │ │ │ ├── greater.hpp
│ │ │ │ │ │ ├── greater_equal.hpp
│ │ │ │ │ │ ├── has_xxx.hpp
│ │ │ │ │ │ ├── identity.hpp
│ │ │ │ │ │ ├── if.hpp
│ │ │ │ │ │ ├── inserter.hpp
│ │ │ │ │ │ ├── int.hpp
│ │ │ │ │ │ ├── int_fwd.hpp
│ │ │ │ │ │ ├── integral_c.hpp
│ │ │ │ │ │ ├── integral_c_fwd.hpp
│ │ │ │ │ │ ├── integral_c_tag.hpp
│ │ │ │ │ │ ├── is_sequence.hpp
│ │ │ │ │ │ ├── iter_fold.hpp
│ │ │ │ │ │ ├── iter_fold_if.hpp
│ │ │ │ │ │ ├── iterator_range.hpp
│ │ │ │ │ │ ├── iterator_tags.hpp
│ │ │ │ │ │ ├── lambda.hpp
│ │ │ │ │ │ ├── lambda_fwd.hpp
│ │ │ │ │ │ ├── less.hpp
│ │ │ │ │ │ ├── less_equal.hpp
│ │ │ │ │ │ ├── limits/
│ │ │ │ │ │ │ ├── arity.hpp
│ │ │ │ │ │ │ ├── list.hpp
│ │ │ │ │ │ │ └── vector.hpp
│ │ │ │ │ │ ├── list/
│ │ │ │ │ │ │ ├── aux_/
│ │ │ │ │ │ │ │ ├── O1_size.hpp
│ │ │ │ │ │ │ │ ├── begin_end.hpp
│ │ │ │ │ │ │ │ ├── clear.hpp
│ │ │ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ │ │ ├── front.hpp
│ │ │ │ │ │ │ │ ├── include_preprocessed.hpp
│ │ │ │ │ │ │ │ ├── item.hpp
│ │ │ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ │ │ ├── pop_front.hpp
│ │ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ │ └── plain/
│ │ │ │ │ │ │ │ │ ├── list10.hpp
│ │ │ │ │ │ │ │ │ └── list20.hpp
│ │ │ │ │ │ │ │ ├── push_back.hpp
│ │ │ │ │ │ │ │ ├── push_front.hpp
│ │ │ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ │ │ └── tag.hpp
│ │ │ │ │ │ │ ├── list0.hpp
│ │ │ │ │ │ │ ├── list10.hpp
│ │ │ │ │ │ │ └── list20.hpp
│ │ │ │ │ │ ├── list.hpp
│ │ │ │ │ │ ├── logical.hpp
│ │ │ │ │ │ ├── long.hpp
│ │ │ │ │ │ ├── long_fwd.hpp
│ │ │ │ │ │ ├── minus.hpp
│ │ │ │ │ │ ├── multiplies.hpp
│ │ │ │ │ │ ├── negate.hpp
│ │ │ │ │ │ ├── next.hpp
│ │ │ │ │ │ ├── next_prior.hpp
│ │ │ │ │ │ ├── not.hpp
│ │ │ │ │ │ ├── not_equal_to.hpp
│ │ │ │ │ │ ├── numeric_cast.hpp
│ │ │ │ │ │ ├── or.hpp
│ │ │ │ │ │ ├── pair.hpp
│ │ │ │ │ │ ├── placeholders.hpp
│ │ │ │ │ │ ├── plus.hpp
│ │ │ │ │ │ ├── pop_back_fwd.hpp
│ │ │ │ │ │ ├── pop_front_fwd.hpp
│ │ │ │ │ │ ├── prior.hpp
│ │ │ │ │ │ ├── protect.hpp
│ │ │ │ │ │ ├── push_back.hpp
│ │ │ │ │ │ ├── push_back_fwd.hpp
│ │ │ │ │ │ ├── push_front.hpp
│ │ │ │ │ │ ├── push_front_fwd.hpp
│ │ │ │ │ │ ├── quote.hpp
│ │ │ │ │ │ ├── remove_if.hpp
│ │ │ │ │ │ ├── reverse_fold.hpp
│ │ │ │ │ │ ├── same_as.hpp
│ │ │ │ │ │ ├── sequence_tag.hpp
│ │ │ │ │ │ ├── sequence_tag_fwd.hpp
│ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ ├── size_fwd.hpp
│ │ │ │ │ │ ├── size_t.hpp
│ │ │ │ │ │ ├── size_t_fwd.hpp
│ │ │ │ │ │ ├── tag.hpp
│ │ │ │ │ │ ├── times.hpp
│ │ │ │ │ │ ├── vector/
│ │ │ │ │ │ │ ├── aux_/
│ │ │ │ │ │ │ │ ├── O1_size.hpp
│ │ │ │ │ │ │ │ ├── at.hpp
│ │ │ │ │ │ │ │ ├── back.hpp
│ │ │ │ │ │ │ │ ├── begin_end.hpp
│ │ │ │ │ │ │ │ ├── clear.hpp
│ │ │ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ │ │ ├── front.hpp
│ │ │ │ │ │ │ │ ├── include_preprocessed.hpp
│ │ │ │ │ │ │ │ ├── item.hpp
│ │ │ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ │ │ ├── pop_back.hpp
│ │ │ │ │ │ │ │ ├── pop_front.hpp
│ │ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ │ └── typeof_based/
│ │ │ │ │ │ │ │ │ ├── vector10.hpp
│ │ │ │ │ │ │ │ │ └── vector20.hpp
│ │ │ │ │ │ │ │ ├── push_back.hpp
│ │ │ │ │ │ │ │ ├── push_front.hpp
│ │ │ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ │ │ ├── tag.hpp
│ │ │ │ │ │ │ │ └── vector0.hpp
│ │ │ │ │ │ │ ├── vector0.hpp
│ │ │ │ │ │ │ ├── vector10.hpp
│ │ │ │ │ │ │ └── vector20.hpp
│ │ │ │ │ │ ├── vector.hpp
│ │ │ │ │ │ ├── void.hpp
│ │ │ │ │ │ └── void_fwd.hpp
│ │ │ │ │ ├── next_prior.hpp
│ │ │ │ │ ├── noncopyable.hpp
│ │ │ │ │ ├── none.hpp
│ │ │ │ │ ├── none_t.hpp
│ │ │ │ │ ├── numeric/
│ │ │ │ │ │ └── conversion/
│ │ │ │ │ │ ├── bounds.hpp
│ │ │ │ │ │ ├── cast.hpp
│ │ │ │ │ │ ├── conversion_traits.hpp
│ │ │ │ │ │ ├── converter.hpp
│ │ │ │ │ │ ├── converter_policies.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── bounds.hpp
│ │ │ │ │ │ │ ├── conversion_traits.hpp
│ │ │ │ │ │ │ ├── converter.hpp
│ │ │ │ │ │ │ ├── int_float_mixture.hpp
│ │ │ │ │ │ │ ├── is_subranged.hpp
│ │ │ │ │ │ │ ├── meta.hpp
│ │ │ │ │ │ │ ├── numeric_cast_traits.hpp
│ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ ├── numeric_cast_traits_common.hpp
│ │ │ │ │ │ │ │ └── numeric_cast_traits_long_long.hpp
│ │ │ │ │ │ │ ├── sign_mixture.hpp
│ │ │ │ │ │ │ └── udt_builtin_mixture.hpp
│ │ │ │ │ │ ├── int_float_mixture_enum.hpp
│ │ │ │ │ │ ├── numeric_cast_traits.hpp
│ │ │ │ │ │ ├── sign_mixture_enum.hpp
│ │ │ │ │ │ └── udt_builtin_mixture_enum.hpp
│ │ │ │ │ ├── optional/
│ │ │ │ │ │ ├── optional.hpp
│ │ │ │ │ │ └── optional_fwd.hpp
│ │ │ │ │ ├── optional.hpp
│ │ │ │ │ ├── preprocessor/
│ │ │ │ │ │ ├── arithmetic/
│ │ │ │ │ │ │ ├── add.hpp
│ │ │ │ │ │ │ ├── dec.hpp
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ └── div_base.hpp
│ │ │ │ │ │ │ ├── inc.hpp
│ │ │ │ │ │ │ ├── mod.hpp
│ │ │ │ │ │ │ └── sub.hpp
│ │ │ │ │ │ ├── array/
│ │ │ │ │ │ │ ├── data.hpp
│ │ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ │ └── size.hpp
│ │ │ │ │ │ ├── cat.hpp
│ │ │ │ │ │ ├── comma_if.hpp
│ │ │ │ │ │ ├── comparison/
│ │ │ │ │ │ │ └── less_equal.hpp
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ └── config.hpp
│ │ │ │ │ │ ├── control/
│ │ │ │ │ │ │ ├── deduce_d.hpp
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ └── while.hpp
│ │ │ │ │ │ │ ├── expr_iif.hpp
│ │ │ │ │ │ │ ├── if.hpp
│ │ │ │ │ │ │ ├── iif.hpp
│ │ │ │ │ │ │ └── while.hpp
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── error.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── auto_rec.hpp
│ │ │ │ │ │ │ ├── check.hpp
│ │ │ │ │ │ │ └── is_binary.hpp
│ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ ├── facilities/
│ │ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ │ ├── identity.hpp
│ │ │ │ │ │ │ └── overload.hpp
│ │ │ │ │ │ ├── identity.hpp
│ │ │ │ │ │ ├── inc.hpp
│ │ │ │ │ │ ├── iteration/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── bounds/
│ │ │ │ │ │ │ │ │ ├── lower1.hpp
│ │ │ │ │ │ │ │ │ └── upper1.hpp
│ │ │ │ │ │ │ │ └── iter/
│ │ │ │ │ │ │ │ └── forward1.hpp
│ │ │ │ │ │ │ └── iterate.hpp
│ │ │ │ │ │ ├── list/
│ │ │ │ │ │ │ ├── adt.hpp
│ │ │ │ │ │ │ ├── append.hpp
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── fold_left.hpp
│ │ │ │ │ │ │ │ └── fold_right.hpp
│ │ │ │ │ │ │ ├── fold_left.hpp
│ │ │ │ │ │ │ ├── fold_right.hpp
│ │ │ │ │ │ │ ├── for_each_i.hpp
│ │ │ │ │ │ │ ├── reverse.hpp
│ │ │ │ │ │ │ └── transform.hpp
│ │ │ │ │ │ ├── logical/
│ │ │ │ │ │ │ ├── and.hpp
│ │ │ │ │ │ │ ├── bitand.hpp
│ │ │ │ │ │ │ ├── bool.hpp
│ │ │ │ │ │ │ ├── compl.hpp
│ │ │ │ │ │ │ └── not.hpp
│ │ │ │ │ │ ├── punctuation/
│ │ │ │ │ │ │ ├── comma.hpp
│ │ │ │ │ │ │ ├── comma_if.hpp
│ │ │ │ │ │ │ └── paren.hpp
│ │ │ │ │ │ ├── repeat.hpp
│ │ │ │ │ │ ├── repetition/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ └── for.hpp
│ │ │ │ │ │ │ ├── enum.hpp
│ │ │ │ │ │ │ ├── enum_binary_params.hpp
│ │ │ │ │ │ │ ├── enum_params.hpp
│ │ │ │ │ │ │ ├── enum_trailing_params.hpp
│ │ │ │ │ │ │ ├── for.hpp
│ │ │ │ │ │ │ ├── repeat.hpp
│ │ │ │ │ │ │ └── repeat_from_to.hpp
│ │ │ │ │ │ ├── seq/
│ │ │ │ │ │ │ ├── cat.hpp
│ │ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ │ ├── enum.hpp
│ │ │ │ │ │ │ ├── fold_left.hpp
│ │ │ │ │ │ │ ├── for_each.hpp
│ │ │ │ │ │ │ ├── for_each_i.hpp
│ │ │ │ │ │ │ ├── seq.hpp
│ │ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ │ └── transform.hpp
│ │ │ │ │ │ ├── slot/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── def.hpp
│ │ │ │ │ │ │ │ └── shared.hpp
│ │ │ │ │ │ │ └── slot.hpp
│ │ │ │ │ │ ├── stringize.hpp
│ │ │ │ │ │ ├── tuple/
│ │ │ │ │ │ │ ├── eat.hpp
│ │ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ │ ├── rem.hpp
│ │ │ │ │ │ │ └── to_list.hpp
│ │ │ │ │ │ └── variadic/
│ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ └── size.hpp
│ │ │ │ │ ├── progress.hpp
│ │ │ │ │ ├── range/
│ │ │ │ │ │ ├── algorithm/
│ │ │ │ │ │ │ └── equal.hpp
│ │ │ │ │ │ ├── as_literal.hpp
│ │ │ │ │ │ ├── begin.hpp
│ │ │ │ │ │ ├── concepts.hpp
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── const_iterator.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── common.hpp
│ │ │ │ │ │ │ ├── extract_optional_type.hpp
│ │ │ │ │ │ │ ├── implementation_help.hpp
│ │ │ │ │ │ │ ├── misc_concept.hpp
│ │ │ │ │ │ │ ├── safe_bool.hpp
│ │ │ │ │ │ │ ├── sfinae.hpp
│ │ │ │ │ │ │ └── str_types.hpp
│ │ │ │ │ │ ├── difference_type.hpp
│ │ │ │ │ │ ├── distance.hpp
│ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ ├── end.hpp
│ │ │ │ │ │ ├── functions.hpp
│ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ ├── iterator_range.hpp
│ │ │ │ │ │ ├── iterator_range_core.hpp
│ │ │ │ │ │ ├── iterator_range_io.hpp
│ │ │ │ │ │ ├── mutable_iterator.hpp
│ │ │ │ │ │ ├── rbegin.hpp
│ │ │ │ │ │ ├── rend.hpp
│ │ │ │ │ │ ├── reverse_iterator.hpp
│ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ ├── size_type.hpp
│ │ │ │ │ │ └── value_type.hpp
│ │ │ │ │ ├── ref.hpp
│ │ │ │ │ ├── scoped_array.hpp
│ │ │ │ │ ├── scoped_ptr.hpp
│ │ │ │ │ ├── shared_array.hpp
│ │ │ │ │ ├── shared_ptr.hpp
│ │ │ │ │ ├── smart_ptr/
│ │ │ │ │ │ ├── bad_weak_ptr.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── operator_bool.hpp
│ │ │ │ │ │ │ ├── shared_count.hpp
│ │ │ │ │ │ │ ├── sp_convertible.hpp
│ │ │ │ │ │ │ ├── sp_counted_base.hpp
│ │ │ │ │ │ │ ├── sp_counted_base_gcc_mips.hpp
│ │ │ │ │ │ │ ├── sp_counted_base_gcc_x86.hpp
│ │ │ │ │ │ │ ├── sp_counted_base_spin.hpp
│ │ │ │ │ │ │ ├── sp_counted_impl.hpp
│ │ │ │ │ │ │ ├── sp_has_sync.hpp
│ │ │ │ │ │ │ ├── spinlock.hpp
│ │ │ │ │ │ │ ├── spinlock_pool.hpp
│ │ │ │ │ │ │ ├── spinlock_pt.hpp
│ │ │ │ │ │ │ ├── spinlock_sync.hpp
│ │ │ │ │ │ │ └── yield_k.hpp
│ │ │ │ │ │ ├── scoped_array.hpp
│ │ │ │ │ │ ├── scoped_ptr.hpp
│ │ │ │ │ │ ├── shared_array.hpp
│ │ │ │ │ │ └── shared_ptr.hpp
│ │ │ │ │ ├── static_assert.hpp
│ │ │ │ │ ├── swap.hpp
│ │ │ │ │ ├── test/
│ │ │ │ │ │ ├── debug.hpp
│ │ │ │ │ │ ├── debug_config.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ │ ├── enable_warnings.hpp
│ │ │ │ │ │ │ ├── fwd_decl.hpp
│ │ │ │ │ │ │ ├── global_typedef.hpp
│ │ │ │ │ │ │ ├── log_level.hpp
│ │ │ │ │ │ │ ├── suppress_warnings.hpp
│ │ │ │ │ │ │ ├── unit_test_parameters.hpp
│ │ │ │ │ │ │ └── workaround.hpp
│ │ │ │ │ │ ├── execution_monitor.hpp
│ │ │ │ │ │ ├── floating_point_comparison.hpp
│ │ │ │ │ │ ├── framework.hpp
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── compiler_log_formatter.ipp
│ │ │ │ │ │ │ ├── debug.ipp
│ │ │ │ │ │ │ ├── exception_safety.ipp
│ │ │ │ │ │ │ ├── execution_monitor.ipp
│ │ │ │ │ │ │ ├── framework.ipp
│ │ │ │ │ │ │ ├── interaction_based.ipp
│ │ │ │ │ │ │ ├── logged_expectations.ipp
│ │ │ │ │ │ │ ├── plain_report_formatter.ipp
│ │ │ │ │ │ │ ├── progress_monitor.ipp
│ │ │ │ │ │ │ ├── results_collector.ipp
│ │ │ │ │ │ │ ├── results_reporter.ipp
│ │ │ │ │ │ │ ├── test_tools.ipp
│ │ │ │ │ │ │ ├── unit_test_log.ipp
│ │ │ │ │ │ │ ├── unit_test_main.ipp
│ │ │ │ │ │ │ ├── unit_test_monitor.ipp
│ │ │ │ │ │ │ ├── unit_test_parameters.ipp
│ │ │ │ │ │ │ ├── unit_test_suite.ipp
│ │ │ │ │ │ │ ├── xml_log_formatter.ipp
│ │ │ │ │ │ │ └── xml_report_formatter.ipp
│ │ │ │ │ │ ├── included/
│ │ │ │ │ │ │ └── unit_test.hpp
│ │ │ │ │ │ ├── interaction_based.hpp
│ │ │ │ │ │ ├── mock_object.hpp
│ │ │ │ │ │ ├── output/
│ │ │ │ │ │ │ ├── compiler_log_formatter.hpp
│ │ │ │ │ │ │ ├── plain_report_formatter.hpp
│ │ │ │ │ │ │ ├── xml_log_formatter.hpp
│ │ │ │ │ │ │ └── xml_report_formatter.hpp
│ │ │ │ │ │ ├── output_test_stream.hpp
│ │ │ │ │ │ ├── predicate_result.hpp
│ │ │ │ │ │ ├── progress_monitor.hpp
│ │ │ │ │ │ ├── results_collector.hpp
│ │ │ │ │ │ ├── results_reporter.hpp
│ │ │ │ │ │ ├── test_observer.hpp
│ │ │ │ │ │ ├── test_tools.hpp
│ │ │ │ │ │ ├── unit_test.hpp
│ │ │ │ │ │ ├── unit_test_log.hpp
│ │ │ │ │ │ ├── unit_test_log_formatter.hpp
│ │ │ │ │ │ ├── unit_test_monitor.hpp
│ │ │ │ │ │ ├── unit_test_suite.hpp
│ │ │ │ │ │ ├── unit_test_suite_impl.hpp
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── algorithm.hpp
│ │ │ │ │ │ ├── assign_op.hpp
│ │ │ │ │ │ ├── basic_cstring/
│ │ │ │ │ │ │ ├── basic_cstring.hpp
│ │ │ │ │ │ │ ├── basic_cstring_fwd.hpp
│ │ │ │ │ │ │ ├── bcs_char_traits.hpp
│ │ │ │ │ │ │ ├── compare.hpp
│ │ │ │ │ │ │ └── io.hpp
│ │ │ │ │ │ ├── callback.hpp
│ │ │ │ │ │ ├── class_properties.hpp
│ │ │ │ │ │ ├── custom_manip.hpp
│ │ │ │ │ │ ├── fixed_mapping.hpp
│ │ │ │ │ │ ├── foreach.hpp
│ │ │ │ │ │ ├── iterator/
│ │ │ │ │ │ │ ├── input_iterator_facade.hpp
│ │ │ │ │ │ │ └── token_iterator.hpp
│ │ │ │ │ │ ├── lazy_ostream.hpp
│ │ │ │ │ │ ├── named_params.hpp
│ │ │ │ │ │ ├── rtti.hpp
│ │ │ │ │ │ ├── runtime/
│ │ │ │ │ │ │ ├── argument.hpp
│ │ │ │ │ │ │ ├── cla/
│ │ │ │ │ │ │ │ ├── argument_factory.hpp
│ │ │ │ │ │ │ │ ├── argv_traverser.hpp
│ │ │ │ │ │ │ │ ├── argv_traverser.ipp
│ │ │ │ │ │ │ │ ├── basic_parameter.hpp
│ │ │ │ │ │ │ │ ├── char_parameter.hpp
│ │ │ │ │ │ │ │ ├── char_parameter.ipp
│ │ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ │ └── argument_value_usage.hpp
│ │ │ │ │ │ │ │ ├── dual_name_parameter.hpp
│ │ │ │ │ │ │ │ ├── dual_name_parameter.ipp
│ │ │ │ │ │ │ │ ├── fwd.hpp
│ │ │ │ │ │ │ │ ├── id_policy.hpp
│ │ │ │ │ │ │ │ ├── id_policy.ipp
│ │ │ │ │ │ │ │ ├── iface/
│ │ │ │ │ │ │ │ │ ├── argument_factory.hpp
│ │ │ │ │ │ │ │ │ └── id_policy.hpp
│ │ │ │ │ │ │ │ ├── modifier.hpp
│ │ │ │ │ │ │ │ ├── named_parameter.hpp
│ │ │ │ │ │ │ │ ├── named_parameter.ipp
│ │ │ │ │ │ │ │ ├── parameter.hpp
│ │ │ │ │ │ │ │ ├── parser.hpp
│ │ │ │ │ │ │ │ ├── parser.ipp
│ │ │ │ │ │ │ │ ├── typed_parameter.hpp
│ │ │ │ │ │ │ │ ├── validation.hpp
│ │ │ │ │ │ │ │ ├── validation.ipp
│ │ │ │ │ │ │ │ ├── value_generator.hpp
│ │ │ │ │ │ │ │ └── value_handler.hpp
│ │ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── environment.hpp
│ │ │ │ │ │ │ │ ├── environment.ipp
│ │ │ │ │ │ │ │ ├── fwd.hpp
│ │ │ │ │ │ │ │ ├── modifier.hpp
│ │ │ │ │ │ │ │ └── variable.hpp
│ │ │ │ │ │ │ ├── fwd.hpp
│ │ │ │ │ │ │ ├── interpret_argument_value.hpp
│ │ │ │ │ │ │ ├── parameter.hpp
│ │ │ │ │ │ │ ├── trace.hpp
│ │ │ │ │ │ │ └── validation.hpp
│ │ │ │ │ │ ├── trivial_singleton.hpp
│ │ │ │ │ │ ├── wrap_stringstream.hpp
│ │ │ │ │ │ └── xml_printer.hpp
│ │ │ │ │ ├── throw_exception.hpp
│ │ │ │ │ ├── timer.hpp
│ │ │ │ │ ├── type.hpp
│ │ │ │ │ ├── type_traits/
│ │ │ │ │ │ ├── add_const.hpp
│ │ │ │ │ │ ├── add_cv.hpp
│ │ │ │ │ │ ├── add_pointer.hpp
│ │ │ │ │ │ ├── add_reference.hpp
│ │ │ │ │ │ ├── add_rvalue_reference.hpp
│ │ │ │ │ │ ├── add_volatile.hpp
│ │ │ │ │ │ ├── alignment_of.hpp
│ │ │ │ │ │ ├── broken_compiler_spec.hpp
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── conversion_traits.hpp
│ │ │ │ │ │ ├── cv_traits.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── bool_trait_def.hpp
│ │ │ │ │ │ │ ├── bool_trait_undef.hpp
│ │ │ │ │ │ │ ├── cv_traits_impl.hpp
│ │ │ │ │ │ │ ├── false_result.hpp
│ │ │ │ │ │ │ ├── ice_and.hpp
│ │ │ │ │ │ │ ├── ice_eq.hpp
│ │ │ │ │ │ │ ├── ice_not.hpp
│ │ │ │ │ │ │ ├── ice_or.hpp
│ │ │ │ │ │ │ ├── is_function_ptr_helper.hpp
│ │ │ │ │ │ │ ├── is_mem_fun_pointer_impl.hpp
│ │ │ │ │ │ │ ├── size_t_trait_def.hpp
│ │ │ │ │ │ │ ├── size_t_trait_undef.hpp
│ │ │ │ │ │ │ ├── template_arity_spec.hpp
│ │ │ │ │ │ │ ├── type_trait_def.hpp
│ │ │ │ │ │ │ ├── type_trait_undef.hpp
│ │ │ │ │ │ │ └── yes_no_type.hpp
│ │ │ │ │ │ ├── function_traits.hpp
│ │ │ │ │ │ ├── has_nothrow_constructor.hpp
│ │ │ │ │ │ ├── has_nothrow_copy.hpp
│ │ │ │ │ │ ├── has_trivial_constructor.hpp
│ │ │ │ │ │ ├── has_trivial_copy.hpp
│ │ │ │ │ │ ├── ice.hpp
│ │ │ │ │ │ ├── integral_constant.hpp
│ │ │ │ │ │ ├── intrinsics.hpp
│ │ │ │ │ │ ├── is_abstract.hpp
│ │ │ │ │ │ ├── is_arithmetic.hpp
│ │ │ │ │ │ ├── is_array.hpp
│ │ │ │ │ │ ├── is_class.hpp
│ │ │ │ │ │ ├── is_const.hpp
│ │ │ │ │ │ ├── is_convertible.hpp
│ │ │ │ │ │ ├── is_enum.hpp
│ │ │ │ │ │ ├── is_float.hpp
│ │ │ │ │ │ ├── is_floating_point.hpp
│ │ │ │ │ │ ├── is_function.hpp
│ │ │ │ │ │ ├── is_integral.hpp
│ │ │ │ │ │ ├── is_lvalue_reference.hpp
│ │ │ │ │ │ ├── is_member_function_pointer.hpp
│ │ │ │ │ │ ├── is_member_pointer.hpp
│ │ │ │ │ │ ├── is_pod.hpp
│ │ │ │ │ │ ├── is_pointer.hpp
│ │ │ │ │ │ ├── is_reference.hpp
│ │ │ │ │ │ ├── is_rvalue_reference.hpp
│ │ │ │ │ │ ├── is_same.hpp
│ │ │ │ │ │ ├── is_scalar.hpp
│ │ │ │ │ │ ├── is_signed.hpp
│ │ │ │ │ │ ├── is_unsigned.hpp
│ │ │ │ │ │ ├── is_void.hpp
│ │ │ │ │ │ ├── is_volatile.hpp
│ │ │ │ │ │ ├── make_unsigned.hpp
│ │ │ │ │ │ ├── remove_const.hpp
│ │ │ │ │ │ ├── remove_cv.hpp
│ │ │ │ │ │ ├── remove_pointer.hpp
│ │ │ │ │ │ ├── remove_reference.hpp
│ │ │ │ │ │ ├── remove_volatile.hpp
│ │ │ │ │ │ └── type_with_alignment.hpp
│ │ │ │ │ ├── units/
│ │ │ │ │ │ └── detail/
│ │ │ │ │ │ └── utility.hpp
│ │ │ │ │ ├── utility/
│ │ │ │ │ │ ├── addressof.hpp
│ │ │ │ │ │ ├── base_from_member.hpp
│ │ │ │ │ │ ├── binary.hpp
│ │ │ │ │ │ ├── compare_pointees.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── in_place_factory_prefix.hpp
│ │ │ │ │ │ │ └── in_place_factory_suffix.hpp
│ │ │ │ │ │ ├── enable_if.hpp
│ │ │ │ │ │ ├── identity_type.hpp
│ │ │ │ │ │ ├── in_place_factory.hpp
│ │ │ │ │ │ ├── swap.hpp
│ │ │ │ │ │ └── value_init.hpp
│ │ │ │ │ ├── utility.hpp
│ │ │ │ │ ├── version.hpp
│ │ │ │ │ └── visit_each.hpp
│ │ │ │ └── main.cpp
│ │ │ └── test_config.py
│ │ ├── issue46718-iostream-crash-gnustl/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue46718-iostream-crash.cpp
│ │ ├── issue61659-neon-assignment/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue61659-neon-assignment.c
│ │ │ └── test_config.py
│ │ ├── issue62910-gcc4.8.2-libstdc++-nth-element-segfault/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue62910-gcc4.8.2-libstdc++-nth-element-segfault.cpp
│ │ ├── libcxx-relocs/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── bar.cpp
│ │ │ │ └── foo.cpp
│ │ │ └── properties.json
│ │ ├── libcxx-unwind/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── foo.cpp
│ │ │ └── test_config.py
│ │ ├── math/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── math.c
│ │ │ │ └── math.cpp
│ │ │ └── test_config.py
│ │ ├── multi-static-instances/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── stat/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── stat.c
│ │ ├── static-executable/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.cxx
│ │ │ └── test_config.py
│ │ ├── test-basic-exceptions/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_basic_exceptions.cpp
│ │ ├── test-basic-rtti/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_basic_rtti.cpp
│ │ ├── test-compiler-bug-1/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── test-cpufeatures/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test_android_setCpuArm_1.c
│ │ │ ├── test_android_setCpu_1.c
│ │ │ ├── test_android_setCpu_2.c
│ │ │ ├── test_arm_idiv.c
│ │ │ └── test_cpufeatures.c
│ │ ├── test-cxx-init-array/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── global_ctor.cpp
│ │ │ ├── global_ctor.h
│ │ │ └── test.cpp
│ │ ├── test-gnustl-1/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── hello.cpp
│ │ ├── test-gnustl-2/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── hello.cpp
│ │ ├── test-gnustl-copy_vector_into_a_set/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── copy_vector_into_a_set.cpp
│ │ ├── test-gnustl-full/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ ├── properties.json
│ │ │ ├── test_config.py
│ │ │ └── unit/
│ │ │ ├── _template.cpp
│ │ │ ├── accum_test.cpp
│ │ │ ├── adj_test.cpp
│ │ │ ├── advance_test.cpp
│ │ │ ├── alg_test.cpp
│ │ │ ├── algorithm_header_test.cpp
│ │ │ ├── allocator_test.cpp
│ │ │ ├── assert_header_test.c
│ │ │ ├── bcompos_test.cpp
│ │ │ ├── bind_test.cpp
│ │ │ ├── binsert_test.cpp
│ │ │ ├── bitset_header_test.cpp
│ │ │ ├── bitset_test.cpp
│ │ │ ├── bnegate_test.cpp
│ │ │ ├── boost_check.cpp
│ │ │ ├── bound_test.cpp
│ │ │ ├── bsearch_test.cpp
│ │ │ ├── bvector_test.cpp
│ │ │ ├── c_limits_header_test.c
│ │ │ ├── c_locale_header_test.c
│ │ │ ├── cassert_header_test.cpp
│ │ │ ├── cctype_header_test.cpp
│ │ │ ├── cerrno_header_test.cpp
│ │ │ ├── cfloat_header_test.cpp
│ │ │ ├── ciso646_header_test.cpp
│ │ │ ├── climits_header_test.cpp
│ │ │ ├── clocale_header_test.cpp
│ │ │ ├── cmath_header_test.cpp
│ │ │ ├── cmath_test.cpp
│ │ │ ├── codecvt_test.cpp
│ │ │ ├── collate_facets_test.cpp
│ │ │ ├── complete_digits.h
│ │ │ ├── complex_header_test.cpp
│ │ │ ├── config_test.cpp
│ │ │ ├── copy_test.cpp
│ │ │ ├── count_test.cpp
│ │ │ ├── cppunit/
│ │ │ │ ├── cppunit_mini.h
│ │ │ │ ├── cppunit_proxy.h
│ │ │ │ ├── cppunit_timer.h
│ │ │ │ ├── file_reporter.h
│ │ │ │ └── test_main.cpp
│ │ │ ├── csetjmp_header_test.cpp
│ │ │ ├── csignal_header_test.cpp
│ │ │ ├── cstdarg_header_test.cpp
│ │ │ ├── cstddef_header_test.cpp
│ │ │ ├── cstdio_header_test.cpp
│ │ │ ├── cstdlib_header_test.cpp
│ │ │ ├── cstring_header_test.cpp
│ │ │ ├── cstring_test.cpp
│ │ │ ├── ctime_header_test.cpp
│ │ │ ├── ctype_facets_test.cpp
│ │ │ ├── ctype_header_test.c
│ │ │ ├── cwchar_header_test.cpp
│ │ │ ├── cwctype_header_test.cpp
│ │ │ ├── deque_header_test.cpp
│ │ │ ├── deque_test.cpp
│ │ │ ├── divides_test.cpp
│ │ │ ├── epilog_test.cpp
│ │ │ ├── equal_test.cpp
│ │ │ ├── errno_header_test.c
│ │ │ ├── exception_header_test.cpp
│ │ │ ├── exception_test.cpp
│ │ │ ├── fadapter.h
│ │ │ ├── fib.h
│ │ │ ├── fill_test.cpp
│ │ │ ├── find_test.cpp
│ │ │ ├── finsert_test.cpp
│ │ │ ├── float_header_test.c
│ │ │ ├── foreach_test.cpp
│ │ │ ├── fstream_header_test.cpp
│ │ │ ├── fstream_test.cpp
│ │ │ ├── full_streambuf.h
│ │ │ ├── func_test.cpp
│ │ │ ├── functional_header_test.cpp
│ │ │ ├── generator_test.cpp
│ │ │ ├── greater_test.cpp
│ │ │ ├── hash_test.cpp
│ │ │ ├── heap_test.cpp
│ │ │ ├── includes_test.cpp
│ │ │ ├── innerprod_test.cpp
│ │ │ ├── inplace_test.cpp
│ │ │ ├── insert_test.cpp
│ │ │ ├── ioiter_test.cpp
│ │ │ ├── iomanip_header_test.cpp
│ │ │ ├── ios_header_test.cpp
│ │ │ ├── iosfwd_header_test.cpp
│ │ │ ├── iostream_header_test.cpp
│ │ │ ├── iostream_test.cpp
│ │ │ ├── iota.h
│ │ │ ├── iota_test.cpp
│ │ │ ├── iso646_header_test.c
│ │ │ ├── istmit_test.cpp
│ │ │ ├── istream_header_test.cpp
│ │ │ ├── iter_test.cpp
│ │ │ ├── iterator_header_test.cpp
│ │ │ ├── less_test.cpp
│ │ │ ├── lexcmp_test.cpp
│ │ │ ├── limits_header_test.cpp
│ │ │ ├── limits_test.cpp
│ │ │ ├── list_header_test.cpp
│ │ │ ├── list_test.cpp
│ │ │ ├── locale_header_test.cpp
│ │ │ ├── locale_test.cpp
│ │ │ ├── locale_test.h
│ │ │ ├── logic_test.cpp
│ │ │ ├── macro_checks.cpp
│ │ │ ├── map_header_test.cpp
│ │ │ ├── map_test.cpp
│ │ │ ├── math_aux.h
│ │ │ ├── math_header_test.c
│ │ │ ├── max_test.cpp
│ │ │ ├── memory_header_test.cpp
│ │ │ ├── memory_test.cpp
│ │ │ ├── merge_test.cpp
│ │ │ ├── messages_facets_test.cpp
│ │ │ ├── mfunptr_test.cpp
│ │ │ ├── min_test.cpp
│ │ │ ├── mismatch_test.cpp
│ │ │ ├── modulus_test.cpp
│ │ │ ├── money_facets_test.cpp
│ │ │ ├── multiset_test.cpp
│ │ │ ├── mvctor_declaration_test.cpp
│ │ │ ├── mvctor_test.cpp
│ │ │ ├── mvctor_test.h
│ │ │ ├── mvctor_traits_test.cpp
│ │ │ ├── neq_test.cpp
│ │ │ ├── new_header_test.cpp
│ │ │ ├── nthelm_test.cpp
│ │ │ ├── num_facets_test.cpp
│ │ │ ├── num_put_get_test.cpp
│ │ │ ├── numeric_header_test.cpp
│ │ │ ├── ostmit_test.cpp
│ │ │ ├── ostream_header_test.cpp
│ │ │ ├── pair_test.cpp
│ │ │ ├── partial_test.cpp
│ │ │ ├── partition_test.cpp
│ │ │ ├── perm_test.cpp
│ │ │ ├── plusminus_test.cpp
│ │ │ ├── ptr2_test.cpp
│ │ │ ├── ptrspec_test.cpp
│ │ │ ├── queue_header_test.cpp
│ │ │ ├── queue_test.cpp
│ │ │ ├── rawriter_test.cpp
│ │ │ ├── reference_wrapper_test.cpp
│ │ │ ├── resolve_name.cpp
│ │ │ ├── reviter_test.cpp
│ │ │ ├── rm_cp_test.cpp
│ │ │ ├── rndshf_test.cpp
│ │ │ ├── rope_test.cpp
│ │ │ ├── rotate_test.cpp
│ │ │ ├── search_test.cpp
│ │ │ ├── set_header_test.cpp
│ │ │ ├── set_test.cpp
│ │ │ ├── setdiff_test.cpp
│ │ │ ├── setinter_test.cpp
│ │ │ ├── setjmp_header_test.c
│ │ │ ├── setjmp_header_test2.cpp
│ │ │ ├── setunion_test.cpp
│ │ │ ├── shared_ptr_test.cpp
│ │ │ ├── signal_header_test.c
│ │ │ ├── slist_test.cpp
│ │ │ ├── sort_test.cpp
│ │ │ ├── sstream_header_test.cpp
│ │ │ ├── sstream_test.cpp
│ │ │ ├── stack_allocator.h
│ │ │ ├── stack_header_test.cpp
│ │ │ ├── stack_test.cpp
│ │ │ ├── stdarg_header_test.c
│ │ │ ├── stddef_header_test.c
│ │ │ ├── stdexcept_header_test.cpp
│ │ │ ├── stdio_header_test.c
│ │ │ ├── stdlib_header_test.c
│ │ │ ├── stldbg_include.cpp
│ │ │ ├── streambuf_header_test.cpp
│ │ │ ├── string_header_test.c
│ │ │ ├── string_header_test.cpp
│ │ │ ├── string_test.cpp
│ │ │ ├── strstream_buffer_read_test.cpp
│ │ │ ├── strstream_header_test.cpp
│ │ │ ├── strstream_test.cpp
│ │ │ ├── swap_test.cpp
│ │ │ ├── test_errno.cpp
│ │ │ ├── time_facets_test.cpp
│ │ │ ├── time_header_test.c
│ │ │ ├── times_test.cpp
│ │ │ ├── transform_test.cpp
│ │ │ ├── type_traits_test.cpp
│ │ │ ├── typeinfo_header_test.cpp
│ │ │ ├── unary.h
│ │ │ ├── unary_test.cpp
│ │ │ ├── uninitialized_test.cpp
│ │ │ ├── unique_test.cpp
│ │ │ ├── unordered_test.cpp
│ │ │ ├── utility_header_test.cpp
│ │ │ ├── valarray_header_test.cpp
│ │ │ ├── valarray_test.cpp
│ │ │ ├── vector_header_test.cpp
│ │ │ ├── vector_test.cpp
│ │ │ ├── wchar_header_test.c
│ │ │ └── wctype_header_test.c
│ │ ├── test-gnustl_shared-exception/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── test0_foo.cpp
│ │ │ │ ├── test0_main.cpp
│ │ │ │ ├── test1_foo.cpp
│ │ │ │ ├── test1_main.cpp
│ │ │ │ ├── test2_foo.cpp
│ │ │ │ ├── test2_main.cpp
│ │ │ │ ├── test3_bar.cpp
│ │ │ │ ├── test3_foo.cpp
│ │ │ │ ├── test3_main.cpp
│ │ │ │ ├── test4_bar.cpp
│ │ │ │ ├── test4_foo.cpp
│ │ │ │ └── test4_main.cpp
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-gnustl_static-exception/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test0_foo.cpp
│ │ │ ├── test0_main.cpp
│ │ │ ├── test1_foo.cpp
│ │ │ ├── test1_main.cpp
│ │ │ ├── test2_foo.cpp
│ │ │ ├── test2_main.cpp
│ │ │ ├── test3_bar.cpp
│ │ │ ├── test3_foo.cpp
│ │ │ ├── test3_main.cpp
│ │ │ ├── test4_bar.cpp
│ │ │ ├── test4_foo.cpp
│ │ │ └── test4_main.cpp
│ │ ├── test-googletest-full/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── test-googletest-gnustl/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── test-libc++/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_1.cc
│ │ │ └── test_config.py
│ │ ├── test-libc++-shared/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_1.cc
│ │ ├── test-libc++-shared-full/
│ │ │ ├── DATA
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-libc++-static/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_1.cc
│ │ │ └── test_config.py
│ │ ├── test-libc++-static-full/
│ │ │ ├── DATA
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-openmp/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── fib.c
│ │ │ │ ├── openmp.c
│ │ │ │ └── openmp2.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-shaderc-gnustl/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── shaderc.cc
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-shaderc-libc++/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── shaderc.cc
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-vulkan/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── instance.cpp
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-wait/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_wait.c
│ │ │ └── test_config.py
│ │ ├── test-yasm/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── print_hello.asm
│ │ │ │ └── test-yasm.c
│ │ │ └── test_config.py
│ │ └── whole-static-libs/
│ │ └── jni/
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ ├── foo.c
│ │ ├── foo2.c
│ │ └── main.c
│ ├── filters.py
│ ├── lib/
│ │ ├── awk.rb
│ │ ├── log.rb
│ │ ├── mro.rb
│ │ ├── project.rb
│ │ ├── samples.rb
│ │ ├── standalone.rb
│ │ └── tests.rb
│ ├── ndk.py
│ ├── onhost-functions.mk
│ ├── onhost.mk
│ ├── prepare-buildbot-emulators.py
│ ├── printers.py
│ ├── run-all.py
│ ├── run-boost-tests
│ ├── run-ndk-tests
│ ├── runners.py
│ ├── standalone/
│ │ ├── basic-c-compile/
│ │ │ └── main.c
│ │ ├── basic-cxx-compile/
│ │ │ └── main.cpp
│ │ ├── basic-objc-compile/
│ │ │ └── main.m
│ │ ├── basic-objcxx-compile/
│ │ │ └── main.mm
│ │ ├── builtin-macros/
│ │ │ └── run.sh
│ │ ├── init-fini-arrays/
│ │ │ ├── README
│ │ │ ├── foo.cpp
│ │ │ └── run.sh
│ │ ├── libcrystax-c-linked/
│ │ │ └── main.c
│ │ ├── libcrystax-cxx-linked/
│ │ │ └── main.cpp
│ │ ├── run-all.sh
│ │ ├── run-standalone-tests.rb
│ │ └── run.sh
│ ├── test_filters.py
│ ├── tests.py
│ ├── util.py
│ └── validate.py
└── tools/
├── adbrunner
└── deploy-posix-environment
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*~
*.bak
*.pyc
*.swp
.DS_Store
.crew
.tramp_history
Thumbs.db
local.properties
build.xml
platforms/
packages/
postpone/
sources/crystax/tests/
sources/crystax/vendor/
toolchains/
/ndk-stack*
/ndk-depends*
/host-tools/
prebuilt/android-arm/
prebuilt/android-arm64/
prebuilt/android-mips/
prebuilt/android-mips64/
prebuilt/android-x86/
prebuilt/android-x86_64/
prebuilt/linux-x86/
prebuilt/linux-x86_64/
prebuilt/darwin-x86/
prebuilt/darwin-x86_64/
prebuilt/windows/
prebuilt/windows-x86_64/
prebuilt/common/scan-build/
prebuilt/common/scan-view/
tests/abcc/prebuilts/
tests/device/crystax-test-big-switch/jni/main.c
tests/device/crystax-test-big-switch/jni/switch.c
================================================
FILE: Android.mk
================================================
# Please try to keep this file empty by only including what is necessary to
# build the Android platform. This is not the normal usage of the NDK.
include ndk/sources/android/cpufeatures/Android.mk
================================================
FILE: BACKERS.md
================================================
# Bountysource Backers
Thank you to everyone who backed our [Bountysource fundraiser](https://www.bountysource.com/teams/crystaxndk/fundraiser)!
### Your name in BACKERS.md.
- pj
- sword1024
### Your name and URL in BACKERS.md.
- 1bsyl (https://github.com/1bsyl)
- Alex Besogonov (https://github.com/Cyberax)
- Antony Polukhin (https://github.com/apolukhin)
### Anonymous Supporters
There were also other people who didn't claim any level of reward but contributed to the fundraiser. Thank you all for the support!
================================================
FILE: CHANGELOG.md
================================================
Changelog
=========
We've moved our bug tracker to GitHub: https://github.com/android-ndk/ndk/issues
Clang
-----
* **PSA: Everyone should be switching to Clang.**
* Clang has been updated to 3.8svn (r243773, build 2481030).
* Note that this is now a nearly pure upstream clang.
* Also note that Clang packaged in the Windows 64 NDK is actually 32-bit.
* Support for emulated TLS.
* `__thread` is now supported by the compiler by emulating ELF TLS with
pthread thread-specific data.
* C++11 `thread_local` will work in some cases, but will not work for data
with non-trivial destructors except when running on Marshmallow
(android-23) or newer because those cases require support from libc.
* Does not yet work with Aarch64 when TLS variables are accessed from a
shared library.
GCC
---
* **GCC in the NDK is now deprecated.**
* Time to start using Clang if you haven’t already. If you have problems
with Clang, please file bugs!
* The NDK will not be upgrading to 5.x, nor will we be accepting
non-critical backports.
* Maintenance for miscompiles and internal compiler errors in 4.9 will be
handled on a case by case basis.
* GCC 4.8 has been removed. All targets now use GCC 4.9.
* Synchronized with `google/gcc-4_9` to r224707 (from r214835).
NDK
---
* The samples are no longer included in the NDK. They are instead available on
[GitHub].
* The documentation is no longer included in the NDK. It is instead available
on the [Android Developer website].
* Make ARM standalone toolchains default to arm7.
* The old behavior can be restored by passing
`-target armv5te-linux-androideabi`.
* Use `-isystem` for platform includes.
* Warnings caused by bionic will no longer break app builds.
* Fixed segfault when throwing exceptions via gabi++ (see
http://b.android.com/179410).
* Change libc++’s inline namespace to `std::__ndk1` to prevent ODR issues with
platform libc++.
* Support for mips64r2 has been partially dropped. The rest will be dropped in
the future.
* All libc++ libraries are now built with libc++abi.
* Bump default `APP_PLATFORM` to Gingerbread.
* Expect support for Froyo and older to be dropped in a future release.
* Updated gabi++ `_Unwind_Exception` struct for 64 bits.
* cpufeatures: Detect SSE4.1 and SSE4.2 as well.
* cpufeatures: Detect cpu features on x86\_64 as well.
* Update libc++abi to upstream r231075.
* Added native tracing API to android-23.
* Added native multinetwork API to android-23.
* `byteswap.h`, `endian.h`, `sys/procfs.h`, `sys/ucontext.h`, `sys/user.h`, and
`uchar.h` have all been updated from ToT Bionic.
* `sys/cdefs.h` has been synchronized across all API levels.
* Support for `_WCHAR_IS_8BIT` has been removed.
* Fixed `fegetenv` and `fesetenv` for arm
* Fix end pointer size/alignment of `crtend_*` for mips64 and x86\_64
* Removed sed.
* Removed mclinker.
* Removed Perl.
* Removed symbols which are not exported by the current platform libc/m/dl from
all versions of NDK libc/m/dl
* libc/m/dl provide versioned symbols starting with v21
* Added Vulkan headers and library to API level 24.
Binutils
--------
* Unified binutils source between Android and ChromiumOS.
* For full details see https://android-review.googlesource.com/#/c/182865/.
* Gold for aarch64 should now be much more reliable. Use `-fuse-ld=gold` at
link time to use gold instead of bfd. The default will likely switch in the
next release.
* Good linking time improvement for huge binaries for Gold ARM backend (up to
50% linking time reduction for debuggable Chrome Browser).
* New option: `--pic-veneer`.
* The 32-bit Windows package no longer contains ld.gold. It is available in
the 64-bit package.
* Current gold no longer builds when targeting 32-bit Windows (causes
internal compiler failures in mingw).
GDB
---
* gdb has been updated to version 7.10.
* ndk-gdb has been removed in favor of ndk-gdb.py.
* ndk-gdb.py has been significantly rewritten.
* Performance should be somewhat better.
* Error messages have been significantly improved.
* Relative project paths should always work now.
* Ctrl-C no longer kills the backgrounded gdbserver.
* Improve Windows support.
Yasm
----
* Yasm has been updated to version 1.3.0.
Known Issues
------------
* This is not intended to be a comprehensive list of all outstanding bugs.
* x86 ASAN does not currently work. See discussion on
https://android-review.googlesource.com/#/c/186276/
* The combination of Clang, x86, `stlport_static`, and optimization levels
higher than `-O0` causes test failures with `dynamic_cast`. See
https://android-review.googlesource.com/#/c/185920
* Exception handling will often fail when using `c++_shared` on ARM32. The root
cause is incompatibility between the LLVM unwinder used by libc++abi for
ARM32 and libgcc. This is not a regression from r10e.
[GitHub]: https://github.com/googlesamples/android-ndk
[Android Developer website]: http://developer.android.com/ndk/index.html
================================================
FILE: CleanSpec.mk
================================================
# Copyright (C) 2007 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# If you don't need to do a full clean build but would like to touch
# a file or delete some intermediate files, add a clean step to the end
# of the list. These steps will only be run once, if they haven't been
# run before.
#
# E.g.:
# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
#
# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
# files that are missing or have been moved.
#
# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
# Use $(OUT_DIR) to refer to the "out" directory.
#
# If you need to re-do something that's already mentioned, just copy
# the command and add it to the bottom of the list. E.g., if a change
# that you made last week required touching a file and a change you
# made today requires touching the same file, just copy the old
# touch step and add it to the end of the list.
#
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
# For example:
#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
================================================
FILE: OWNERS
================================================
danalbert
enh
jmgao
# For questions rather than code review, send email to:
#
# android-ndk@google.com (Googlers only)
# android-ndk@googlegroups.com (public)
#
# Ask on Stack Overflow: http://stackoverflow.com/questions/tagged/android-ndk.
================================================
FILE: README.md
================================================
Android Native Development Kit (NDK)
====================================
The latest version of this document is available at
https://android.googlesource.com/platform/ndk/+/master/README.md.
**Note:** This document is for developers _of_ the NDK, not developers
that use the NDK.
The NDK allows Android application developers to include
native code in their Android application packages, compiled as JNI shared
libraries.
Other Resources
---------------
This doc gives a high level overview of the NDK's build, packaging, and test
process. For other use cases, or more in depth documentation, refer to the
following sources:
* User documentation is available on the [Android Developer website].
* Adding a new NDK API or platform version? Check [Generating Sysroots].
* Working on Clang or GCC? See [Toolchains.md].
* Discussions related to the Android NDK happen on the [android-ndk Google
Group].
* File bugs against the NDK at https://github.com/android-ndk/ndk/issues.
[Android Developer website]: https://developer.android.com/ndk/index.html
[android-ndk Google Group]: http://groups.google.com/group/android-ndk
[Generating Sysroots]: docs/GeneratingSysroots.md
[Toolchains.md]: docs/Toolchains.md
Building the NDK
================
Both Linux and Windows host binaries are built on Linux machines. Windows host
binaries are built via MinGW cross compiler. Systems without a working MinGW
compiler can use `build/tools/build-mingw64-toolchain.sh` to generate their own
and be added to the `PATH` for build scripts to discover.
Building binaries for Mac OS X requires at least 10.8.
Target headers and binaries are built on Linux.
Components
----------
The NDK consists of three parts: host binaries, target prebuilts, and others
(build system, docs, samples, tests).
### Host Binaries
* `toolchains/` contains GCC and Clang toolchains.
* `$TOOLCHAIN/config.mk` contains ARCH and ABIS this toolchain can handle.
* `$TOOLCHAIN/setup.mk` contains toolchain-specific default CFLAGS/LDFLAGS
when this toolchain is used.
* `prebuilt/$HOST_TAG` contains build dependencies and additional tools.
* make, awk, python, yasm, and for Windows: cmp.exe and echo.exe
* `ndk-depends`, `ndk-stack` and `ndk-gdb` can also be found here.
### Target Headers and Binaries
* `platforms/android-$VERSION/arch-$ARCH_NAME/` contains headers and libraries
for each API level.
* The build system sets `--sysroot` to one of these directories based on
user-specified `APP_ABI` and `APP_PLATFORM`.
* `sources/cxx-stl/$STL` contains the headers and libraries for the various C++
STLs.
* `prebuilt/android-$ARCH/gdbserver` contains gdbserver.
### Others
* `build/` contains the ndk-build system and scripts to rebuild NDK.
* `sources/android` and `sources/third_party` contain modules that can be used
in apps (cpufeatures, native\_app\_glue, etc) via `$(call import-module,
$MODULE)`
* `tests/`
Prerequisites
-------------
* [AOSP NDK Repository](http://source.android.com/source/downloading.html)
* Check out the branch `master-ndk`
```bash
repo init -u https://android.googlesource.com/platform/manifest \
-b master-ndk
# Googlers, use
repo init -u \
persistent-https://android.git.corp.google.com/platform/manifest \
-b master-ndk
```
* Additional Linux Dependencies (available from apt):
* bison
* flex
* libtool
* mingw-w64
* pbzip2 (optional, improves packaging times)
* texinfo
* python3 (used for Vulkan validation layer generation)
* python-lxml (used for Vulkan validation layer generation)
* Mac OS X also requires Xcode.
Host/Target prebuilts
---------------------
### For Linux or Darwin:
```bash
$ python checkbuild.py
```
### For Windows, from Linux:
```bash
$ python checkbuild.py --system windows # Or windows64.
```
`checkbuild.py` also accepts a variety of other options to speed up local
builds, namely `--arch` and `--module`.
Packaging
---------
By default, `checkbuild.py` will also package the NDK and run basic tests. To
skip the packaging step, use the `--no-package` flag. Note that running the
tests does require the packaging step.
If you need to re-run just the packaging step without going through a build,
packaging is handled by `build/tools/package.py`.
Testing
-------
Testing is discussed in [Testing.md](docs/Testing.md).
================================================
FILE: build/NOTICE
================================================
Copyright (C) 2016 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: build/awk/check-awk.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This script is used to check that a given awk executable
# implements the match() and substr() functions appropriately.
#
# These were introduced in nawk/gawk, but the original awk
# does not have them.
#
BEGIN {
RSTART=0
RLENGTH=0
s1="A real world example"
if (! match(s1,"world")) {
print "Fail match"
} else if (RSTART != 8) {
print "Fail RSTART ="RSTART
} else if (RLENGTH != 5) {
print "Fail RLENGTH ="RLENGTH
} else {
s2=substr(s1,RSTART,RLENGTH)
if (s2 != "world") {
print "Fail substr="s2
} else {
print "Pass"
}
}
}
================================================
FILE: build/awk/extract-debuggable.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# A nawk/gawk script used to extract the debuggable flag from an
# application's manifest (i.e. AndroidManifest.xml). Usage:
#
# awk -f <this-script> AndroidManifest.xml
#
BEGIN {
DEBUGGABLE = "";
while ( xml_event() ) {
# simply extract the 'android:debuggable' attribute value from
# the first <manifest><application> element we find.
if ( XML_TYPE == "BEGIN" && XML_TAG == "APPLICATION" &&
XML_RPATH == "APPLICATION/MANIFEST/" ) {
DEBUGGABLE = XML_ATTR["android:debuggable"];
break;
}
}
# ensure the value is either "true" or "false"
if ( DEBUGGABLE != "true" )
DEBUGGABLE = "false";
print DEBUGGABLE;
}
#
# the following is copied directly from xml.awk - see this file for
# usage and implementation details.
#
function xml_event () {
RS=">";
XML_TAG=XML_TYPE="";
split("", XML_ATTR);
while ( 1 ) {
if (_xml_closing) { # delayed direct tag closure
XML_TAG = _xml_closing;
XML_TYPE = "END";
_xml_closing = "";
_xml_exit(XML_TAG);
return 1;
}
if (getline <= 0) return 0; # read new input line
_xml_p = index($0, "<"); # get start marker
if (_xml_p == 0) return 0; # end of file (or malformed input)
$0 = substr($0, _xml_p) # remove anything before '<'
# ignore CData / Comments / Processing instructions / Declarations
if (_xml_in_section("<!\\[[Cc][Dd][Aa][Tt][Aa]\\[", "]]") ||
_xml_in_section("<!--", "--") ||
_xml_in_section("<\\?", "\\?") ||
_xml_in_section("<!", "")) {
continue;
}
if (substr($0, 1, 2) == "</") { # is it a closing tag ?
XML_TYPE = "END";
$0 = substr($0, 3);
} else { # nope, it's an opening one
XML_TYPE = "BEGIN";
$0 = substr($0, 2);
}
XML_TAG = $0
sub("[ \r\n\t/].*$", "", XML_TAG); # extract tag name
XML_TAG = toupper(XML_TAG); # uppercase it
if ( XML_TAG !~ /^[A-Z][-+_.:0-9A-Z]*$/ ) # validate it
_xml_panic("Invalid tag name: " XML_TAG);
if (XML_TYPE == "BEGIN") { # update reverse path
_xml_enter(XML_TAG);
} else {
_xml_exit(XML_TAG);
}
sub("[^ \r\n\t]*[ \r\n\t]*", "", $0); # get rid of tag and spaces
while ($0) { # process attributes
if ($0 == "/") { # deal with direct closing tag, e.g. </foo>
_xml_closing = XML_TAG; # record delayed tag closure.
break
}
_xml_attrib = $0;
sub(/=.*$/,"",_xml_attrib); # extract attribute name
sub(/^[^=]*/,"",$0); # remove it from record
_xml_attrib = tolower(_xml_attrib);
if ( _xml_attrib !~ /^[a-z][-+_0-9a-z:]*$/ ) # validate it
_xml_panic("Invalid attribute name: " _xml_attrib);
if (substr($0,1,2) == "=\"") { # value is ="something"
_xml_value = substr($0,3);
sub(/".*$/,"",_xml_value);
sub(/^="[^"]*"/,"",$0);
} else if (substr($0,1,2) == "='") { # value is ='something'
_xml_value = substr($0,3);
sub(/'.*$/,"",_xml_value);
sub(/^='[^']*'/,"",$0);
} else {
_xml_panic("Invalid attribute value syntax for " _xml_attrib ": " $0);
}
XML_ATTR[_xml_attrib] = _xml_value; # store attribute name/value
sub(/^[ \t\r\n]*/,"",$0); # get rid of remaining leading spaces
}
return 1; # now return, XML_TYPE/TAG/ATTR/RPATH are set
}
}
function _xml_panic (msg) {
print msg > "/dev/stderr"
exit(1)
}
function _xml_in_section (sec_begin, sec_end) {
if (!match( $0, "^" sec_begin )) return 0;
while (!match($0, sec_end "$")) {
if (getline <= 0) _xml_panic("Unexpected EOF: " ERRNO);
}
return 1;
}
function _xml_enter (tag) {
XML_RPATH = tag "/" XML_RPATH;
}
function _xml_exit (tag) {
_xml_p = index(XML_RPATH, "/");
_xml_expected = substr(XML_RPATH, 1, _xml_p-1);
if (_xml_expected != XML_TAG)
_xml_panic("Unexpected close tag: " XML_TAG ", expecting " _xml_expected);
XML_RPATH = substr(XML_RPATH, _xml_p+1);
}
================================================
FILE: build/awk/extract-launchable.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# A nawk/gawk script used to extract the list of launchable activities
# from an application's manifest (i.e. AndroidManifest.xml). Usage:
#
# awk -f <this-script> AndroidManifest.xml
#
#
# Explanation:
#
# A given application can have several activities, and each activity
# can have several intent filters. We want to only list, in the final
# output, the activities which have a intent-filter that contains the
# following elements:
#
# <action android:name="android.intent.action.MAIN" />
# <category android:name="android.intent.category.LAUNCHER" />
#
# To do this, we need hooks called when entering and exiting <activity>
# and <intent-filter> elements.
#
BEGIN {
while ( xml_event() ) {
# concat xml event type and tag for simpler comparisons
event = XML_TYPE "-" XML_TAG;
# When entering a new <activity>, extract its name and set
# the 'launchable' flag to false.
if ( event == "BEGIN-ACTIVITY" &&
XML_RPATH == "ACTIVITY/APPLICATION/MANIFEST/" ) {
name = XML_ATTR["android:name"];
launchable = 0;
}
# When exiting an <activity>, check that it has a name and
# is launchable. If so, print its name to the output
else if ( event == "END-ACTIVITY" &&
XML_RPATH == "APPLICATION/MANIFEST/" ) {
if ( name && launchable ) {
# If the name doesn't contain any dot, we consider
# that it is just missing the initial one.
if (index(name, ".") == 0) {
name = "." name
}
print name;
}
}
# When entering an <intent-filter> inside an <activity>, clear
# the 'action' and 'category' variables. They are updated when
# we enter the corresponding elements within the intent-filter.
else if ( event == "BEGIN-INTENT-FILTER" &&
XML_RPATH == "INTENT-FILTER/ACTIVITY/APPLICATION/MANIFEST/" ) {
action_main = 0;
category_launcher = 0;
}
# When exiting an <intent-filter>, set the 'launchable' flag to true
# for the current activity if both 'action' and 'category' have the
# correct name.
else if ( event == "END-INTENT-FILTER" &&
XML_RPATH == "ACTIVITY/APPLICATION/MANIFEST/" ) {
if ( category_launcher ) {
launchable = 1;
}
}
# When entering an <action> element inside an <intent-filter>, record
# its name.
else if ( event == "BEGIN-ACTION" &&
XML_RPATH == "ACTION/INTENT-FILTER/ACTIVITY/APPLICATION/MANIFEST/" ) {
action_main = 0;
if ( XML_ATTR["android:name"] == "android.intent.action.MAIN" ) {
action_main = 1;
}
}
# When entering a <category> element inside an <intent-filter>, record
# its name.
else if ( event == "BEGIN-CATEGORY" &&
XML_RPATH == "CATEGORY/INTENT-FILTER/ACTIVITY/APPLICATION/MANIFEST/" ) {
if ( action_main && XML_ATTR["android:name"] == "android.intent.category.LAUNCHER" ) {
category_launcher = 1;
}
}
}
}
#
# the following is copied directly from xml.awk - see this file for
# usage and implementation details.
#
function xml_event () {
RS=">";
XML_TAG=XML_TYPE="";
split("", XML_ATTR);
while ( 1 ) {
if (_xml_closing) { # delayed direct tag closure
XML_TAG = _xml_closing;
XML_TYPE = "END";
_xml_closing = "";
_xml_exit(XML_TAG);
return 1;
}
if (getline <= 0) return 0; # read new input line
_xml_p = index($0, "<"); # get start marker
if (_xml_p == 0) return 0; # end of file (or malformed input)
$0 = substr($0, _xml_p) # remove anything before '<'
# ignore CData / Comments / Processing instructions / Declarations
if (_xml_in_section("<!\\[[Cc][Dd][Aa][Tt][Aa]\\[", "]]") ||
_xml_in_section("<!--", "--") ||
_xml_in_section("<\\?", "\\?") ||
_xml_in_section("<!", "")) {
continue;
}
if (substr($0, 1, 2) == "</") { # is it a closing tag ?
XML_TYPE = "END";
$0 = substr($0, 3);
} else { # nope, it's an opening one
XML_TYPE = "BEGIN";
$0 = substr($0, 2);
}
XML_TAG = $0
sub("[ \r\n\t/].*$", "", XML_TAG); # extract tag name
XML_TAG = toupper(XML_TAG); # uppercase it
if ( XML_TAG !~ /^[A-Z][-+_.:0-9A-Z]*$/ ) # validate it
_xml_panic("Invalid tag name: " XML_TAG);
if (XML_TYPE == "BEGIN") { # update reverse path
_xml_enter(XML_TAG);
} else {
_xml_exit(XML_TAG);
}
sub("[^ \r\n\t]*[ \r\n\t]*", "", $0); # get rid of tag and spaces
while ($0) { # process attributes
if ($0 == "/") { # deal with direct closing tag, e.g. </foo>
_xml_closing = XML_TAG; # record delayed tag closure.
break
}
_xml_attrib = $0;
sub(/=.*$/,"",_xml_attrib); # extract attribute name
sub(/^[^=]*/,"",$0); # remove it from record
_xml_attrib = tolower(_xml_attrib);
if ( _xml_attrib !~ /^[a-z][-+_0-9a-z:]*$/ ) # validate it
_xml_panic("Invalid attribute name: " _xml_attrib);
if (substr($0,1,2) == "=\"") { # value is ="something"
_xml_value = substr($0,3);
sub(/".*$/,"",_xml_value);
sub(/^="[^"]*"/,"",$0);
} else if (substr($0,1,2) == "='") { # value is ='something'
_xml_value = substr($0,3);
sub(/'.*$/,"",_xml_value);
sub(/^='[^']*'/,"",$0);
} else {
_xml_panic("Invalid attribute value syntax for " _xml_attrib ": " $0);
}
XML_ATTR[_xml_attrib] = _xml_value; # store attribute name/value
sub(/^[ \t\r\n]*/,"",$0); # get rid of remaining leading spaces
}
return 1; # now return, XML_TYPE/TAG/ATTR/RPATH are set
}
}
function _xml_panic (msg) {
print msg > "/dev/stderr"
exit(1)
}
function _xml_in_section (sec_begin, sec_end) {
if (!match( $0, "^" sec_begin )) return 0;
while (!match($0, sec_end "$")) {
if (getline <= 0) _xml_panic("Unexpected EOF: " ERRNO);
}
return 1;
}
function _xml_enter (tag) {
XML_RPATH = tag "/" XML_RPATH;
}
function _xml_exit (tag) {
_xml_p = index(XML_RPATH, "/");
_xml_expected = substr(XML_RPATH, 1, _xml_p-1);
if (_xml_expected != XML_TAG)
_xml_panic("Unexpected close tag: " XML_TAG ", expecting " _xml_expected);
XML_RPATH = substr(XML_RPATH, _xml_p+1);
}
================================================
FILE: build/awk/extract-minsdkversion.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# A nawk/gawk script used to extract the value of min. SDK version from an
# application's manifest (i.e. AndroidManifest.xml). Usage:
#
# awk -f <this-script> AndroidManifest.xml
#
BEGIN {
MIN_SDK_VERSION = "";
while ( xml_event() ) {
# simply extract the 'android:minSdkVersion' attribute value from
# the first <manifest><uses-sdk> element we find.
if ( XML_TYPE == "BEGIN" && XML_TAG == "USES-SDK" &&
XML_RPATH == "USES-SDK/MANIFEST/" ) {
MIN_SDK_VERSION = XML_ATTR["android:minsdkversion"];
break;
}
}
print MIN_SDK_VERSION;
}
#
# the following is copied directly from xml.awk - see this file for
# usage and implementation details.
#
function xml_event () {
RS=">";
XML_TAG=XML_TYPE="";
split("", XML_ATTR);
while ( 1 ) {
if (_xml_closing) { # delayed direct tag closure
XML_TAG = _xml_closing;
XML_TYPE = "END";
_xml_closing = "";
_xml_exit(XML_TAG);
return 1;
}
if (getline <= 0) return 0; # read new input line
_xml_p = index($0, "<"); # get start marker
if (_xml_p == 0) return 0; # end of file (or malformed input)
$0 = substr($0, _xml_p) # remove anything before '<'
# ignore CData / Comments / Processing instructions / Declarations
if (_xml_in_section("<!\\[[Cc][Dd][Aa][Tt][Aa]\\[", "]]") ||
_xml_in_section("<!--", "--") ||
_xml_in_section("<\\?", "\\?") ||
_xml_in_section("<!", "")) {
continue;
}
if (substr($0, 1, 2) == "</") { # is it a closing tag ?
XML_TYPE = "END";
$0 = substr($0, 3);
} else { # nope, it's an opening one
XML_TYPE = "BEGIN";
$0 = substr($0, 2);
}
XML_TAG = $0
sub("[ \r\n\t/].*$", "", XML_TAG); # extract tag name
XML_TAG = toupper(XML_TAG); # uppercase it
if ( XML_TAG !~ /^[A-Z][-+_.:0-9A-Z]*$/ ) # validate it
_xml_panic("Invalid tag name: " XML_TAG);
if (XML_TYPE == "BEGIN") { # update reverse path
_xml_enter(XML_TAG);
} else {
_xml_exit(XML_TAG);
}
sub("[^ \r\n\t]*[ \r\n\t]*", "", $0); # get rid of tag and spaces
while ($0) { # process attributes
if ($0 == "/") { # deal with direct closing tag, e.g. </foo>
_xml_closing = XML_TAG; # record delayed tag closure.
break
}
_xml_attrib = $0;
sub(/=.*$/,"",_xml_attrib); # extract attribute name
sub(/^[^=]*/,"",$0); # remove it from record
_xml_attrib = tolower(_xml_attrib);
if ( _xml_attrib !~ /^[a-z][-+_0-9a-z:]*$/ ) # validate it
_xml_panic("Invalid attribute name: " _xml_attrib);
if (substr($0,1,2) == "=\"") { # value is ="something"
_xml_value = substr($0,3);
sub(/".*$/,"",_xml_value);
sub(/^="[^"]*"/,"",$0);
} else if (substr($0,1,2) == "='") { # value is ='something'
_xml_value = substr($0,3);
sub(/'.*$/,"",_xml_value);
sub(/^='[^']*'/,"",$0);
} else {
_xml_panic("Invalid attribute value syntax for " _xml_attrib ": " $0);
}
XML_ATTR[_xml_attrib] = _xml_value; # store attribute name/value
sub(/^[ \t\r\n]*/,"",$0); # get rid of remaining leading spaces
}
return 1; # now return, XML_TYPE/TAG/ATTR/RPATH are set
}
}
function _xml_panic (msg) {
print msg > "/dev/stderr"
exit(1)
}
function _xml_in_section (sec_begin, sec_end) {
if (!match( $0, "^" sec_begin )) return 0;
while (!match($0, sec_end "$")) {
if (getline <= 0) _xml_panic("Unexpected EOF: " ERRNO);
}
return 1;
}
function _xml_enter (tag) {
XML_RPATH = tag "/" XML_RPATH;
}
function _xml_exit (tag) {
_xml_p = index(XML_RPATH, "/");
_xml_expected = substr(XML_RPATH, 1, _xml_p-1);
if (_xml_expected != XML_TAG)
_xml_panic("Unexpected close tag: " XML_TAG ", expecting " _xml_expected);
XML_RPATH = substr(XML_RPATH, _xml_p+1);
}
================================================
FILE: build/awk/extract-package-name.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# A nawk/gawk script used to extract the package name from an application's
# manifest (i.e. AndroidManifest.xml). Usage is:
#
# awk -f <this-script> AndroidManifest.xml
#
# The name itself is the value of the 'package' attribute in the
# 'manifest' element.
#
BEGIN {
PACKAGE="";
while (xml_event()) {
# Simply extract the value of the 'name' attribute from
# the top-level <manifest> element.
if ( XML_TYPE == "BEGIN" && XML_RPATH == "MANIFEST/" ) {
PACKAGE = XML_ATTR["package"];
break;
}
}
if (!PACKAGE)
PACKAGE = "<none>";
print PACKAGE;
}
#
# the following is copied directly from xml.awk - see this file for
# usage and implementation details.
#
function xml_event () {
RS=">";
XML_TAG=XML_TYPE="";
split("", XML_ATTR);
while ( 1 ) {
if (_xml_closing) { # delayed direct tag closure
XML_TAG = _xml_closing;
XML_TYPE = "END";
_xml_closing = "";
_xml_exit(XML_TAG);
return 1;
}
if (getline <= 0) return 0; # read new input line
_xml_p = index($0, "<"); # get start marker
if (_xml_p == 0) return 0; # end of file (or malformed input)
$0 = substr($0, _xml_p) # remove anything before '<'
# ignore CData / Comments / Processing instructions / Declarations
if (_xml_in_section("<!\\[[Cc][Dd][Aa][Tt][Aa]\\[", "]]") ||
_xml_in_section("<!--", "--") ||
_xml_in_section("<\\?", "\\?") ||
_xml_in_section("<!", "")) {
continue;
}
if (substr($0, 1, 2) == "</") { # is it a closing tag ?
XML_TYPE = "END";
$0 = substr($0, 3);
} else { # nope, it's an opening one
XML_TYPE = "BEGIN";
$0 = substr($0, 2);
}
XML_TAG = $0
sub("[ \r\n\t/].*$", "", XML_TAG); # extract tag name
XML_TAG = toupper(XML_TAG); # uppercase it
if ( XML_TAG !~ /^[A-Z][-+_.:0-9A-Z]*$/ ) # validate it
_xml_panic("Invalid tag name: " XML_TAG);
if (XML_TYPE == "BEGIN") { # update reverse path
_xml_enter(XML_TAG);
} else {
_xml_exit(XML_TAG);
}
sub("[^ \r\n\t]*[ \r\n\t]*", "", $0); # get rid of tag and spaces
while ($0) { # process attributes
if ($0 == "/") { # deal with direct closing tag, e.g. </foo>
_xml_closing = XML_TAG; # record delayed tag closure.
break
}
_xml_attrib = $0;
sub(/=.*$/,"",_xml_attrib); # extract attribute name
sub(/^[^=]*/,"",$0); # remove it from record
_xml_attrib = tolower(_xml_attrib);
if ( _xml_attrib !~ /^[a-z][-+_0-9a-z:]*$/ ) # validate it
_xml_panic("Invalid attribute name: " _xml_attrib);
if (substr($0,1,2) == "=\"") { # value is ="something"
_xml_value = substr($0,3);
sub(/".*$/,"",_xml_value);
sub(/^="[^"]*"/,"",$0);
} else if (substr($0,1,2) == "='") { # value is ='something'
_xml_value = substr($0,3);
sub(/'.*$/,"",_xml_value);
sub(/^='[^']*'/,"",$0);
} else {
_xml_panic("Invalid attribute value syntax for " _xml_attrib ": " $0);
}
XML_ATTR[_xml_attrib] = _xml_value; # store attribute name/value
sub(/^[ \t\r\n]*/,"",$0); # get rid of remaining leading spaces
}
return 1; # now return, XML_TYPE/TAG/ATTR/RPATH are set
}
}
function _xml_panic (msg) {
print msg > "/dev/stderr"
exit(1)
}
function _xml_in_section (sec_begin, sec_end) {
if (!match( $0, "^" sec_begin )) return 0;
while (!match($0, sec_end "$")) {
if (getline <= 0) _xml_panic("Unexpected EOF: " ERRNO);
}
return 1;
}
function _xml_enter (tag) {
XML_RPATH = tag "/" XML_RPATH;
}
function _xml_exit (tag) {
_xml_p = index(XML_RPATH, "/");
_xml_expected = substr(XML_RPATH, 1, _xml_p-1);
if (_xml_expected != XML_TAG)
_xml_panic("Unexpected close tag: " XML_TAG ", expecting " _xml_expected);
XML_RPATH = substr(XML_RPATH, _xml_p+1);
}
================================================
FILE: build/awk/extract-pid.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Extract the pid of a given package name. This assumes that the
# input is the product of 'adb shell ps' with all \r\n line endings
# converted to \n, and that the PACKAGE variable has been initialized
# to the package's name. In other words, this should be used as:
#
# adb shell ps | awk -f <this-script> -v PACKAGE=<name>
#
# The printed value will be 0 if the package is not found.
#
BEGIN {
FS=" "
# A default package name, used _only_ for unit-testing
# com.google.android.apps.maps is interesting because
# in our unit test input files, 'ps' lists several sub-processes
# that implement services (e.g. com.google.android.apps.maps:<something>)
# and we explicitely don't want to match them.
#
if (PACKAGE == "") {
PACKAGE="com.google.android.apps.maps"
}
PID=0
# The default column where we expect the PID to appear, this
# matches the default Android toolbox 'ps', but some devices seem
# to have a different version installed (e.g. Busybox) that place
# it somewhere else. We will probe the output to detect this, but
# this is a good fallback value.
PID_COLUMN=2
}
{
# First, remove any trailing \r from the input line. This is important
# because the output of "adb shell <cmd>" seems to use \r\n line ending.
gsub("\r","",$NF)
if (NR == 1) {
# The first line of the 'ps' output should list the columns, so we're going
# to parse it to try to update PID_COLUMN
for (n = 1; n <= NF; n++) {
if ($n == "PID") {
PID_COLUMN=n;
}
}
} else {
# Not the first line, compare the package name, which shall always
# be the last field.
if ($NF == PACKAGE) {
PID=$PID_COLUMN
}
}
}
END {
print PID
}
================================================
FILE: build/awk/extract-platform.awk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# A nawk/gawk script used to extract the application's platform name from
# its project.properties file. It is called from build/core/add-application.mk
#
# we look for a line that looks like one of:
# target=android-<api>
# target=<vendor>:<name>:<api>
#
# <api> is a number, but can also be "Donut" for the first form,
# as a special case.
#
BEGIN {
android_regex="android-[0-9A-Za-z_-]+"
vendor_regex=":[0-9]+\\s*$"
API=unknown
}
/^target\s*=\s*.*/ {
if (match($0,android_regex)) {
API=substr($0,RSTART,RLENGTH)
}
else if (match($0,vendor_regex)) {
API="android-" substr($0,RSTART+1,RLENGTH)
}
}
END {
printf("%s", API)
}
================================================
FILE: build/awk/gen-cygwin-deps-converter.awk
================================================
# Copyright (C) 2011 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This script is used to generate a shell script that will be
# run by the NDK build system to process dependency files generated by
# GCC on Windows, and convert them to a format that is suitable for
# Cygwin's GNU Make.
#
# The main issue to solve here is that the dependency files generated
# by GCC use native windows path names, as in:
#
# C:/Foo/foo.o: \
# C:/Foo/src/foo.h \
# C:/Foo/src/foo.c \
# D:/Bar/bar/bar.h
#
# And the file needs to be processed to convert each such path into
# a Cygwin-specific one, as in:
#
# /cygdrive/c/Foo/foo.o: \
# /cygdrive/c/Foo/src/foo.h \
# /cygdrive/c/Foo/src/foo.c \
# /cygdrive/d/Bar/bar/bar.h
#
# Previously, this conversion was done with an awk script that assumed
# that the cygwin drive prefix was always 'cygdrive'. This didn't work
# well when this was not the case, or when using drive-less mounts
# (e.g. when /home/mnt would map to //server/subdir)
#
# To solve the issue correctly, we need to parse the output of the
# Cygwin mount table (i.e. the output of the 'mount' command), and
# build a sed script that will properly replace host paths into the
# corresponding cygwin equivalent.
#
# NOTE: The sed script will be run during command execution, not during the
# parse phase.
#
# This awk script expects its input to be the output of the Cygwin "mount" command
# as in:
#
# C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
# C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
# C:/cygwin on / type ntfs (binary,auto)
# C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
# D: on /cygdrive/d type udf (binary,posix=0,user,noumount,auto)
# //server/subdir on /home/mnt.2$ type ....
#
# It first builds a sed script that convert all windows path in the
# an input file into the cygwin equivalent. For example, this would look
# like the following (but all on a single line):
#
# s!^//server/subdir!/home/mnt\.2\$!ig;
# s! //server/subdir! /home/mnt\.2\$!ig;
# s!^C:/cygwin/bin!/usr/bin!ig;
# s! C:/cygwin/bin! /usr/bin!ig;
# s!^C:/cygwin/lib!/usr/lib!ig;
# s! C:/cygwin/lib! /usr/lib!ig;
# s!^C:/cygwin/!/!ig;
# s! C:/cygwin/! /!ig;
# s!^C:!/cygdrive/c!ig;
# s! C:! /cygdrive/c!ig;
# s!^D:!/cygdrive/d!ig;
# s! D:! /cygdrive/d!ig;
#
# Note that we properly escape regex meta characters like . or $
# to avoid confusing sed. Also deal with the cases where the path
# is the first in the line, or prefixed with a space in the deps file.
#
# After this, the sed invokation is hard-coded into a generated shell
# script that can be invoked directly at build time.
#
BEGIN {
# setup our count
count = 0
}
$2 == "on" {
# record a new (host-path,cygwin-path) pair
count ++
# Convert backwards slashes into forward ones in the host path.
# This is to support MSys' mount command, which outputs Windows-style
# separators, unlike Cygwin's version of the same tool.
gsub("\\\\","/",$1)
host[count] = $1
cygwin[count] = $3
}
END {
# We have recorded all (host,cygwin) path pairs,
# now try to sort them so that the ones with the longest host path
# appear first
for (ii = 2; ii <= count; ii++) {
for (jj = ii-1; jj > 0; jj--) {
if (length(host[jj]) > length(host[jj+1])) {
break;
}
if (length(host[jj]) == length(host[jj+1]) &&
host[jj] > host[jj+1]) {
break
}
tmp = cygwin[jj]
cygwin[jj] = cygwin[jj+1]
cygwin[jj+1] = tmp
tmp = host[jj]
host[jj] = host[jj+1]
host[jj+1] = tmp
}
}
# build/core/init.mk defines VERBOSE to 1 when it needs to dump the
# list of substitutions in a human-friendly format, generally when
# NDK_LOG is defined in the environment
#
# Otherwise, just generate the corresponding sed script
#
if (VERBOSE == 1) {
for (nn = 1; nn <= count; nn++) {
printf( "$(info %s => %s)", cygwin[nn], host[nn]);
}
} else {
RESULT = ""
for (nn = 1; nn <= count; nn++) {
add_drive_rule(host[nn], cygwin[nn])
}
# Note: the role of the generated shell script is to first check
# that $1.org exists. If this is not the case, this simply
# means that GCC didn't generate a depedency file (e.g. when
# compiling an assembler file).
#
# If the file exists, it is processed with our sed script,
# the output is written to $1, and we remove the original $1.org
#
print "#!/bin/sh"
print "# AUTO-GENERATED FILE, DO NOT EDIT!"
print "if [ -f $1.org ]; then"
print " sed -e '" RESULT "' $1.org > $1 && rm -f $1.org"
print "fi"
}
}
# We need to quote some characters so that 'sed' doesn't
# believe they are regex operators. For example, if a path
# contains a dot (.), we need to escape it into "\."
#
function sed_quote_path (str)
{
# Windows path names cannot contain any of: <>:"|?*
# see msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
#
# Anything else is valid. The regex meta characters are: ^.[]$()|*+?{}\
#
# This means we need to escape these when they appear in path names: ^.[]$()+{}\
#
gsub("\\^","\\^",str)
gsub("\\.","\\.",str)
gsub("\\[","\\[",str)
gsub("\\]","\\]",str)
gsub("\\$","\\$",str)
gsub("\\(","\\(",str)
gsub("\\)","\\)",str)
gsub("\\+","\\+",str)
gsub("\\{","\\{",str)
gsub("\\}","\\}",str)
return str
}
function add_drive_rule (hostpath,cygpath)
{
hostpath = sed_quote_path(hostpath)
cygpath = sed_quote_path(cygpath)
# The root directory is a special case, because we need
# to add a slash at the end of the corresponding host path
# otherwise c:/cygwin/foo will be translated into //foo
# instead of /foo.
#
if (cygpath == "/") {
hostpath = hostpath "/"
}
# when the hostpath starts the line
RESULT = RESULT "s!^" hostpath "!" cygpath "!ig;"
# when the hostpath does not start the line (it will always be after a space)
RESULT = RESULT "s! " hostpath "! " cygpath "!ig;"
}
================================================
FILE: build/awk/gen-windows-host-path.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This script is used to generate a Makefile fragment that will be evaluated
# at runtime by the NDK build system during its initialization pass.
#
# The purpose of this generated fragment is to define a function, named
# 'cygwin-to-host-path' that will transform a Cygwin-specific path into the
# corresponding Windows specific one, i.e. calling
#
# $(call cygwin-to-host-path,/cygdrive/c/Stuff/) --> c:/Stuff
#
# A naive implementation of this function would be the following:
#
# cygwin-to-host-path = $(shell cygpath -m $1)
#
# Unfortunately, calling 'cygpath -m' from GNU Make is horridly slow and people
# have complained that this was adding several minutes to their builds, even in
# the case where there is nothing to do.
#
# The script expects its input to be the output of the Cygwin "mount" command
# as in:
#
# C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
# C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
# C:/cygwin on / type ntfs (binary,auto)
# C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
# D: on /cygdrive/d type udf (binary,posix=0,user,noumount,auto)
#
# The script's output will be passed to the GNU Make 'eval' function
# and will look like:
#
# $(patsubst /%,C:/cygwin/,
# $(patsubst /usr/bin/%,C:/cygwin/bin/,
# $(patsubst /usr/lib/%,C:/cygwin/lib/,
# $(patsubst /cygdrive/C/%,C:/,
# $(patsubst /cygdrive/D/%,D:/,
# $(patsubst /cygdrive/c/%,C:/,
# $(patsubst /cygdrive/d/%,D:/,$1)))))
#
BEGIN {
# setup our count
count = 0
}
$2 == "on" {
# record a new (host-path,cygwin-path) pair
count ++
host[count] = $1
cygwin[count] = $3
}
END {
# Drive letters are special cases because we must match both
# the upper and lower case versions to the same drive, i.e.
# if "mount" lists that /cygdrive/c maps to C:, we need to
# map both /cygdrive/c and /cygdrive/C to C: in our final rules.
#
count1 = count
for (nn = 1; nn <= count1; nn++) {
if (!match(host[nn],"^[A-Za-z]:$")) {
# not a driver letter mapping, skip this pair
continue
}
letter = substr(host[nn],1,1)
lo = tolower(letter)
up = toupper(letter)
# If the cygwin path ends in /<lo>, then substitute it with /<up>
# to create a new pair.
if (match(cygwin[nn],"/"lo"$")) {
count++
host[count] = host[nn]
cygwin[count] = substr(cygwin[nn],1,length(cygwin[nn])-1) up
continue
}
# If the cygwin path ends in /<up>, then substitute it with /<lo>
# to create a new pair.
if (match(cygwin[nn],"/"up"$")) {
count++
host[count] = host[nn]
cygwin[count] = substr(cygwin[nn],1,length(cygwin[nn])-1) lo
continue
}
}
# We have recorded all (host,cygwin) path pairs,
# now try to sort them so that the ones with the longest cygwin path
# appear first
for (ii = 2; ii <= count; ii++) {
for (jj = ii-1; jj > 0; jj--) {
if (length(cygwin[jj]) > length(cygwin[jj+1])) {
break;
}
if (length(cygwin[jj]) == length(cygwin[jj+1]) &&
cygwin[jj] > cygwin[jj+1]) {
break
}
tmp = cygwin[jj]
cygwin[jj] = cygwin[jj+1]
cygwin[jj+1] = tmp
tmp = host[jj]
host[jj] = host[jj+1]
host[jj+1] = tmp
}
}
# build/core/init.mk defines VERBOSE to 1 when it needs to dump the
# list of substitutions in a human-friendly format, generally when
# NDK_LOG is defined in the environment
#
# Otherwise, just generate the corresponding Make function definition
#
if (VERBOSE == 1) {
for (nn = 1; nn <= count; nn++) {
printf( "$(info %s => %s)", cygwin[nn], host[nn]);
}
} else {
RESULT = "$1"
for (nn = 1; nn <= count; nn++) {
add_drive_rule(host[nn], cygwin[nn])
}
print RESULT
}
}
function add_drive_rule (hostpath,cygpath)
{
if (cygpath == "/") {
# Special case for /
RESULT = "$(patsubst /%," hostpath "/%,\n" RESULT ")"
return
}
# default rule otherwise
RESULT = "$(patsubst " cygpath "/%," hostpath "/%,\n" RESULT ")"
}
================================================
FILE: build/awk/xml.awk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Tiny XML parser implementation in awk.
#
# This file is not meant to be used directly, instead copy the
# functions it defines here into your own script then specialize
# it appropriately.
#
# See further below for usage instructions and implementation details.
#
# ---------------------------- cut here ---------------------------
function xml_event () {
RS=">";
XML_TAG=XML_TYPE="";
split("", XML_ATTR);
while ( 1 ) {
if (_xml_closing) { # delayed direct tag closure
XML_TAG = _xml_closing;
XML_TYPE = "END";
_xml_closing = "";
_xml_exit(XML_TAG);
return 1;
}
if (getline <= 0) return 0; # read new input line
_xml_p = index($0, "<"); # get start marker
if (_xml_p == 0) return 0; # end of file (or malformed input)
$0 = substr($0, _xml_p) # remove anything before '<'
# ignore CData / Comments / Processing instructions / Declarations
if (_xml_in_section("<!\\[[Cc][Dd][Aa][Tt][Aa]\\[", "]]") ||
_xml_in_section("<!--", "--") ||
_xml_in_section("<\\?", "\\?") ||
_xml_in_section("<!", "")) {
continue;
}
if (substr($0, 1, 2) == "</") { # is it a closing tag ?
XML_TYPE = "END";
$0 = substr($0, 3);
} else { # nope, it's an opening one
XML_TYPE = "BEGIN";
$0 = substr($0, 2);
}
XML_TAG = $0
sub("[ \r\n\t/].*$", "", XML_TAG); # extract tag name
XML_TAG = toupper(XML_TAG); # uppercase it
if ( XML_TAG !~ /^[A-Z][-+_.:0-9A-Z]*$/ ) # validate it
_xml_panic("Invalid tag name: " XML_TAG);
if (XML_TYPE == "BEGIN") { # update reverse path
_xml_enter(XML_TAG);
} else {
_xml_exit(XML_TAG);
}
sub("[^ \r\n\t]*[ \r\n\t]*", "", $0); # get rid of tag and spaces
while ($0) { # process attributes
if ($0 == "/") { # deal with direct closing tag, e.g. </foo>
_xml_closing = XML_TAG; # record delayed tag closure.
break
}
_xml_attrib = $0;
sub(/=.*$/,"",_xml_attrib); # extract attribute name
sub(/^[^=]*/,"",$0); # remove it from record
_xml_attrib = tolower(_xml_attrib);
if ( _xml_attrib !~ /^[a-z][-+_0-9a-z:]*$/ ) # validate it
_xml_panic("Invalid attribute name: " _xml_attrib);
if (substr($0,1,2) == "=\"") { # value is ="something"
_xml_value = substr($0,3);
sub(/".*$/,"",_xml_value);
sub(/^="[^"]*"/,"",$0);
} else if (substr($0,1,2) == "='") { # value is ='something'
_xml_value = substr($0,3);
sub(/'.*$/,"",_xml_value);
sub(/^='[^']*'/,"",$0);
} else {
_xml_panic("Invalid attribute value syntax for " _xml_attrib ": " $0);
}
XML_ATTR[_xml_attrib] = _xml_value; # store attribute name/value
sub(/^[ \t\r\n]*/,"",$0); # get rid of remaining leading spaces
}
return 1; # now return, XML_TYPE/TAG/ATTR/RPATH are set
}
}
function _xml_panic (msg) {
print msg > "/dev/stderr"
exit(1)
}
function _xml_in_section (sec_begin, sec_end) {
if (!match( $0, "^" sec_begin )) return 0;
while (!match($0, sec_end "$")) {
if (getline <= 0) _xml_panic("Unexpected EOF: " ERRNO);
}
return 1;
}
function _xml_enter (tag) {
XML_RPATH = tag "/" XML_RPATH;
}
function _xml_exit (tag) {
_xml_p = index(XML_RPATH, "/");
_xml_expected = substr(XML_RPATH, 1, _xml_p-1);
if (_xml_expected != XML_TAG)
_xml_panic("Unexpected close tag: " XML_TAG ", expecting " _xml_expected);
XML_RPATH = substr(XML_RPATH, _xml_p+1);
}
# ---------------------------- cut here ---------------------------
# USAGE:
#
# The functions provided here are used to extract the tags and attributes of a
# given XML file. They do not support extraction of data, CDATA, comments,
# processing instructions and declarations at all.
#
# You should use this from the BEGIN {} action of your awk script (it will
# not work from an END {} action).
#
# Call xml_event() in a while loop. This functions returns 1 for each XML
# 'event' encountered, or 0 when the end of input is reached. Note that in
# case of malformed output, an error will be printed and the script will
# force an exit(1)
#
# After each succesful xml_event() call, the following variables will be set:
#
# XML_TYPE: type of event: "BEGIN" -> mean an opening tag, "END" a
# closing one.
#
# XML_TAG: name of the tag, always in UPPERCASE!
#
# XML_ATTR: a map of attributes for the type. Only set for "BEGIN" types.
# all attribute names are in lowercase.
#
# beware: values are *not* unescaped !
#
# XML_RPATH: the _reversed_ element path, using "/" as a separator.
# if you are within the <manifest><application> tag, then
# it will be set to "APPLICATION/MANIFEST/"
# (note the trailing slash).
#
# This is a simple example that dumps the output of the parsing.
#
BEGIN {
while ( xml_event() ) {
printf "XML_TYPE=%s XML_TAG=%s XML_RPATH=%s", XML_TYPE, XML_TAG, XML_RPATH;
if (XML_TYPE == "BEGIN") {
for (attr in XML_ATTR) {
printf " %s='%s'", attr, XML_ATTR[attr];
}
}
printf "\n";
}
}
# IMPLEMENTATION DETAILS:
#
# 1. '>' as the record separator:
#
# RS is set to '>' to use this character as the record separator, instead of
# the default '\n'. This means that something like the following:
#
# <foo><bar attrib="value">stuff</bar></foo>
#
# will be translated into the following successive 'records':
#
# <foo
# <bar attrib="value"
# stuff</bar
# </foo
#
# Note that the '>' is never part of the records and thus will not be matched.
# If the record does not contain a single '<', the input is either
# malformed XML, or we reached the end of file with data after the last
# '>'.
#
# Newlines in the original input are kept in the records as-is.
#
# 2. Getting rid of unwanted stuff:
#
# We don't need any of the data within elements, so we get rid of them by
# simply ignoring anything before the '<' in the current record. This is
# done with code like this:
#
# p = index($0, "<"); # get index of '<'
# if (p == 0) -> return 0; # malformed input or end of file
# $0 = substr($0, p+1); # remove anything before the '<' in record
#
# We also want to ignore certain sections like CDATA, comments, declarations,
# etc.. These begin with a certain pattern and end with another one, e.g.
# "<!--" and "-->" for comments. This is handled by the _xml_in_section()
# function that accepts two patterns as input:
#
# sec_begin: is the pattern for the start of the record.
# sec_end: is the pattern for the end of the record (minus trailing '>').
#
# The function deals with the fact that these section can embed a valid '>'
# and will then span multiple records, i.e. something like:
#
# <!-- A comment with an embedded > right here ! -->
#
# will be decomposed into two records:
#
# "<!-- A comment with an embedded "
# " right here ! --"
#
# The function deals with this case, and exits when such a section is not
# properly terminated in the input.
#
# _xml_in_section() returns 1 if an ignorable section was found, or 0 otherwise.
#
# 3. Extracting the tag name:
#
# </foo> is a closing tag, and <foo> an opening tag, this is handled
# by the following code:
#
# if (substr($0, 1, 2) == "</") {
# XML_TYPE = "END";
# $0 = substr($0, 3);
# } else {
# XML_TYPE = "BEGIN";
# $0 = substr($0, 2);
# }
#
# which defines XML_TYPE, and removes the leading "</" or "<" from the record.
# The tag is later extracted and converted to uppercase with:
#
# XML_TAG = $0 # copy record
# sub("[ \r\n\t/].*$", "", XML_TAG); # remove anything after tag name
# XML_TAG = toupper(XML_TAG); # conver to uppercase
# # validate tag
# if ( XML_TAG !~ /^[A-Z][-+_.:0-9A-Z]*$/ ) -> panic
#
# Then the record is purged from the tag name and the spaces after it:
#
# # get rid of tag and spaces after it in $0
# sub("[^ \r\n\t]*[ \r\n\t]*", "", $0);
#
# 4. Maintaining XML_RPATH:
#
# The _xml_enter() and _xml_exit() functions are called to maintain the
# XML_RPATH variable when entering and exiting specific tags. _xml_exit()
# will also validate the input, checking proper tag enclosure (or exit(1)
# in case of error).
#
# if (XML_TYPE == "BEGIN") {
# _xml_enter(XML_TAG);
# } else {
# _xml_exit(XML_TAG);
# }
#
# 5. Extracting attributes:
#
# A loop is implemented to parse attributes, the idea is to get the attribute
# name, which is always followed by a '=' character:
#
# _xml_attrib = $0; # copy record.
# sub(/=.*$/,"",_xml_attrib); # get rid of '=' and anything after.
# sub(/^[^=]*/,"",$0); # remove attribute name from $0
# _xml_attrib = tolower(_xml_attrib);
# if ( _xml_attrib !~ /^[a-z][-+_0-9a-z:]*$/ )
# _xml_panic("Invalid attribute name: " _xml_attrib);
#
# Now get the value, which is enclosed by either (") or (')
#
# if (substr($0,1,2) == "=\"") { # if $0 begins with ="
# _xml_value = substr($0,3); # extract value
# sub(/".*$/,"",_xml_value);
# sub(/^="[^"]*"/,"",$0); # remove it from $0
# } else if (substr($0,1,2) == "='") { # if $0 begins with ='
# _xml_value = substr($0,3); # extract value
# sub(/'.*$/,"",_xml_value);
# sub(/^='[^']*'/,"",$0); # remove it from $0
# } else {
# -> panic (malformed input)
# }
#
# After that, we simply store the value into the XML_ATTR associative
# array, and cleanup $0 from leading spaces:
#
# XML_ATTR[_xml_attrib] = _xml_value;
# sub(/^[ \t\r\n]*/,"",$0);
#
#
# 6. Handling direct tag closure:
#
# When a tag is closed directly (as in <foo/>), A single '/' will be
# parsed in the attribute parsing loop. We need to record this for the
# next call to xml_event(), since the current one should return a"BEGIN"
# for the "FOO" tag instead.
#
# We do this by setting the special _xml_closing variable, as in:
#
# if ($0 == "/") {
# # record a delayed tag closure for the next call
# _xml_closing = XML_TAG;
# break
# }
#
# This variable is checked at the start of xml_event() like this:
#
# # delayed tag closure - see below
# if (_xml_closing) {
# XML_TAG = _xml_closing;
# XML_TYPE = "END";
# _xml_closing = "";
# _xml_exit(XML_TAG);
# return 1;
# }
#
# Note the call to _xml_exit() to update XML_RPATH here.
#
================================================
FILE: build/core/add-application.mk
================================================
# Copyright (C) 2009, 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# this script is used to record an application definition in the
# NDK build system, before performing any build whatsoever.
#
# It is included repeatedly from build/core/main.mk and expects a
# variable named '_application_mk' which points to a given Application.mk
# file that will be included here. The latter must define a few variables
# to describe the application to the build system, and the rest of the
# code here will perform book-keeping and basic checks
#
$(call assert-defined, _application_mk _app)
$(call ndk_log,Parsing $(_application_mk))
$(call clear-vars, $(NDK_APP_VARS))
# Check that NDK_DEBUG is properly defined. If it is
# the only valid states are: undefined, 0, 1, false and true
#
# We set APP_DEBUG to <undefined>, 'true' or 'false'.
#
APP_DEBUG := $(strip $(NDK_DEBUG))
ifeq ($(APP_DEBUG),0)
APP_DEBUG:= false
endif
ifeq ($(APP_DEBUG),1)
APP_DEBUG := true
endif
ifdef APP_DEBUG
ifneq (,$(filter-out true false,$(APP_DEBUG)))
$(call __ndk_warning,NDK_DEBUG is defined to the unsupported value '$(NDK_DEBUG)', will be ignored!)
endif
endif
include $(_application_mk)
$(call check-required-vars,$(NDK_APP_VARS_REQUIRED),$(_application_mk))
_map := NDK_APP.$(_app)
# strip the 'lib' prefix in front of APP_MODULES modules
APP_MODULES := $(call strip-lib-prefix,$(APP_MODULES))
APP_PROJECT_PATH := $(strip $(APP_PROJECT_PATH))
ifndef APP_PROJECT_PATH
APP_PROJECT_PATH := $(NDK_PROJECT_PATH)
endif
ifeq (null,$(APP_PROJECT_PATH))
ifndef APP_PLATFORM
APP_PLATFORM := android-9
$(call ndk_log, Defaulted to APP_PLATFORM=$(APP_PLATFORM))
endif
else
# check whether APP_PLATFORM is defined. If not, look for project.properties in
# the $(APP_PROJECT_PATH) and extract the value with awk's help. If nothing is here,
# revert to the default value (i.e. "android-3").
#
APP_PLATFORM := $(strip $(APP_PLATFORM))
ifndef APP_PLATFORM
_local_props := $(strip $(wildcard $(APP_PROJECT_PATH)/project.properties))
ifndef _local_props
# NOTE: project.properties was called default.properties before
_local_props := $(strip $(wildcard $(APP_PROJECT_PATH)/default.properties))
endif
ifdef _local_props
APP_PLATFORM := $(strip $(shell $(HOST_AWK) -f $(BUILD_AWK)/extract-platform.awk $(call host-path,$(_local_props))))
$(call ndk_log, Found APP_PLATFORM=$(APP_PLATFORM) in $(_local_props))
else
APP_PLATFORM := android-9
$(call ndk_log, Defaulted to APP_PLATFORM=$(APP_PLATFORM))
endif
endif
ifeq ($(APP_PLATFORM),android-L)
$(call __ndk_warning,WARNING: android-L is renamed as android-21)
override APP_PLATFORM := android-21
endif
endif # APP_PROJECT_PATH == null
# SPECIAL CASES:
# 1) android-6 and android-7 are the same thing as android-5
# 2) android-10 and android-11 are the same thing as android-9
# 3) android-20 is the same thing as android-19
# ADDITIONAL CASES for remote server where total number of files is limited
# 5) android-13 is the same thing as android-12
# 6) android-15 is the same thing as android-14
# 7) android-17 is the same thing as android-16
APP_PLATFORM_LEVEL := $(strip $(subst android-,,$(APP_PLATFORM)))
ifneq (,$(filter 6 7,$(APP_PLATFORM_LEVEL)))
override APP_PLATFORM := android-5
endif
ifneq (,$(filter 10 11,$(APP_PLATFORM_LEVEL)))
override APP_PLATFORM := android-9
endif
ifneq (,$(filter 20,$(APP_PLATFORM_LEVEL)))
override APP_PLATFORM := android-19
endif
ifneq ($(strip $(subst android-,,$(APP_PLATFORM))),$(APP_PLATFORM_LEVEL))
$(call ndk_log, Adjusting APP_PLATFORM android-$(APP_PLATFORM_LEVEL) to $(APP_PLATFORM))
endif
# If APP_PIE isn't defined, set it to true for android-$(NDK_FIRST_PIE_PLATFORM_LEVEL) and above
#
APP_PIE := $(strip $(APP_PIE))
$(call ndk_log, APP_PIE is $(APP_PIE))
ifndef APP_PIE
ifneq (,$(call gte,$(APP_PLATFORM_LEVEL),$(NDK_FIRST_PIE_PLATFORM_LEVEL)))
APP_PIE := true
$(call ndk_log, Enabling -fPIE)
else
APP_PIE := false
endif
endif
# Check that the value of APP_PLATFORM corresponds to a known platform
# If not, we're going to use the max supported platform value.
#
_bad_platform := $(strip $(filter-out $(NDK_ALL_PLATFORMS),$(APP_PLATFORM)))
ifdef _bad_platform
$(call ndk_log,Application $(_app) targets unknown platform '$(_bad_platform)')
override APP_PLATFORM := android-$(NDK_MAX_PLATFORM_LEVEL)
$(call ndk_log,Switching to $(APP_PLATFORM))
endif
ifneq (null,$(APP_PROJECT_PATH))
# Check platform level (after adjustment) against android:minSdkVersion in AndroidManifest.xml
#
APP_MANIFEST := $(strip $(wildcard $(APP_PROJECT_PATH)/AndroidManifest.xml))
APP_PLATFORM_LEVEL := $(strip $(subst android-,,$(APP_PLATFORM)))
ifdef APP_MANIFEST
APP_MIN_PLATFORM_LEVEL := $(strip $(shell $(HOST_AWK) -f $(BUILD_AWK)/extract-minsdkversion.awk $(call host-path,$(APP_MANIFEST))))
ifdef APP_MIN_PLATFORM_LEVEL
ifneq (,$(call gt,$(APP_PLATFORM_LEVEL),$(APP_MIN_PLATFORM_LEVEL)))
$(call __ndk_info,WARNING: APP_PLATFORM $(APP_PLATFORM) is larger than android:minSdkVersion $(APP_MIN_PLATFORM_LEVEL) in $(APP_MANIFEST))
endif
endif
endif
endif # APP_PROJECT_PATH == null
# Check that the value of APP_ABI corresponds to known ABIs
# 'all' is a special case that means 'all supported ABIs'
#
# It will be handled in setup-app.mk. We can't hope to change
# the value of APP_ABI is the user enforces it on the command-line
# with a call like: ndk-build APP_ABI=all
#
# Because GNU Make makes the APP_ABI variable read-only (any assignments
# to it will be ignored)
#
APP_ABI := $(subst $(comma),$(space),$(strip $(APP_ABI)))
ifndef APP_ABI
APP_ABI := $(NDK_DEFAULT_ABIS)
endif
ifneq ($(APP_ABI),all)
_bad_abis := $(strip $(filter-out $(NDK_ALL_ABIS),$(APP_ABIS)))
ifdef _bad_abis
$(call __ndk_info,Application $(_app) targets unknown ABI '$(_bad_abis)')
$(call __ndk_info,Please fix the APP_ABI definition in $(_application_mk))
$(call __ndk_info,to use a set of the following values: $(NDK_ALL_ABIS))
$(call __ndk_error,Aborting)
endif
endif
# If APP_BUILD_SCRIPT is defined, check that the file exists.
# If undefined, look in $(APP_PROJECT_PATH)/jni/Android.mk
#
APP_BUILD_SCRIPT := $(strip $(APP_BUILD_SCRIPT))
ifdef APP_BUILD_SCRIPT
_build_script := $(strip $(wildcard $(APP_BUILD_SCRIPT)))
ifndef _build_script
$(call __ndk_info,Your APP_BUILD_SCRIPT points to an unknown file: $(APP_BUILD_SCRIPT))
$(call __ndk_error,Aborting...)
endif
APP_BUILD_SCRIPT := $(_build_script)
$(call ndk_log, Using build script $(APP_BUILD_SCRIPT))
else
ifeq (null,$(APP_PROJECT_PATH))
$(call __ndk_info,NDK_PROJECT_PATH==null. Please explicitly set APP_BUILD_SCRIPT.)
$(call __ndk_error,Aborting.)
endif
_build_script := $(strip $(wildcard $(APP_PROJECT_PATH)/jni/Android.mk))
ifndef _build_script
$(call __ndk_info,There is no Android.mk under $(APP_PROJECT_PATH)/jni)
$(call __ndk_info,If this is intentional, please define APP_BUILD_SCRIPT to point)
$(call __ndk_info,to a valid NDK build script.)
$(call __ndk_error,Aborting...)
endif
APP_BUILD_SCRIPT := $(_build_script)
$(call ndk_log, Defaulted to APP_BUILD_SCRIPT=$(APP_BUILD_SCRIPT))
endif
# Determine whether the application should be debuggable.
# - If APP_DEBUG is set to 'true', then it always should.
# - If APP_DEBUG is set to 'false', then it never should
# - Otherwise, extract the android:debuggable attribute from the manifest.
#
ifdef APP_DEBUG
APP_DEBUGGABLE := $(APP_DEBUG)
ifeq ($(NDK_LOG),1)
ifeq ($(APP_DEBUG),true)
$(call ndk_log,Application '$(_app)' forced debuggable through NDK_DEBUG)
else
$(call ndk_log,Application '$(_app)' forced *not* debuggable through NDK_DEBUG)
endif
endif
else
# NOTE: To make unit-testing simpler, handle the case where there is no manifest.
APP_DEBUGGABLE := false
ifdef APP_MANIFEST
APP_DEBUGGABLE := $(shell $(HOST_AWK) -f $(BUILD_AWK)/extract-debuggable.awk $(call host-path,$(APP_MANIFEST)))
endif
ifeq ($(NDK_LOG),1)
ifeq ($(APP_DEBUGGABLE),true)
$(call ndk_log,Application '$(_app)' *is* debuggable)
else
$(call ndk_log,Application '$(_app)' is not debuggable)
endif
endif
endif
# LOCAL_BUILD_MODE will be either release or debug
#
# If APP_OPTIM is defined in the Application.mk, just use this.
#
# Otherwise, set to 'debug' if android:debuggable is set to TRUE,
# and to 'release' if not.
#
ifneq ($(APP_OPTIM),)
# check that APP_OPTIM, if defined, is either 'release' or 'debug'
$(if $(filter-out release debug,$(APP_OPTIM)),\
$(call __ndk_info, The APP_OPTIM defined in $(_application_mk) must only be 'release' or 'debug')\
$(call __ndk_error,Aborting)\
)
$(call ndk_log,Selecting optimization mode through Application.mk: $(APP_OPTIM))
else
ifeq ($(APP_DEBUGGABLE),true)
$(call ndk_log,Selecting debug optimization mode (app is debuggable))
APP_OPTIM := debug
else
$(call ndk_log,Selecting release optimization mode (app is not debuggable))
APP_OPTIM := release
endif
endif
APP_CFLAGS := $(strip $(APP_CFLAGS))
APP_CONLYFLAGS := $(strip $(APP_CONLYFLAGS))
APP_CPPFLAGS := $(strip $(APP_CPPFLAGS))
APP_CXXFLAGS := $(strip $(APP_CXXFLAGS))
APP_RENDERSCRIPT_FLAGS := $(strip $(APP_RENDERSCRIPT_FLAGS))
APP_ASMFLAGS := $(strip $(APP_ASMFLAGS))
APP_LDFLAGS := $(strip $(APP_LDFLAGS))
ifndef APP_LIBCRYSTAX
APP_LIBCRYSTAX := shared
else
APP_LIBCRYSTAX := $(strip $(APP_LIBCRYSTAX))
$(if $(filter-out shared static,$(APP_LIBCRYSTAX)),\
$(call __ndk_info,Invalid APP_LIBCRYSTAX value: $(APP_LIBCRYSTAX))\
$(call __ndk_info,Please use one of the following instead: 'static' or 'shared')\
$(call __ndk_error,Aborting))
endif
$(call ndk_log,Using APP_LIBCRYSTAX: $(APP_LIBCRYSTAX))
ifndef APP_OBJC
APP_OBJC := $(DEFAULT_LIBOBJC)
else
APP_OBJC := $(strip $(APP_OBJC))
$(call ndk-objc-check,$(APP_OBJC))
endif
$(call ndk_log,Using APP_OBJC: $(APP_OBJC))
# Check that APP_STL is defined. If not, use the default value
# otherwise, check that the name is correct.
ifndef APP_STL
APP_STL := $(DEFAULT_LIBSTDCXX)_shared
else
APP_STL := $(strip $(APP_STL))
$(call ndk-stl-check,$(APP_STL))
endif
$(call ndk_log,Using APP_STL: $(APP_STL))
$(if $(call get,$(_map),defined),\
$(call __ndk_info,Weird, the application $(_app) is already defined by $(call get,$(_map),defined))\
$(call __ndk_error,Aborting)\
)
$(call set,$(_map),defined,$(_application_mk))
# Record all app-specific variable definitions
$(foreach __name,$(NDK_APP_VARS),\
$(call set,$(_map),$(__name),$($(__name)))\
)
# Record the Application.mk for debugging
$(call set,$(_map),Application.mk,$(_application_mk))
NDK_ALL_APPS += $(_app)
================================================
FILE: build/core/add-platform.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
$(call assert-defined,_platform NDK_PLATFORMS_ROOT)
# For each platform, determine the corresponding supported ABIs
# And record them in NDK_PLATFORM_$(platform)_ABIS
#
_abis := $(strip $(notdir $(wildcard $(NDK_PLATFORMS_ROOT)/$(_platform)/arch-*)))
_abis := $(_abis:arch-%=%)
$(call ndk_log,PLATFORM $(_platform) supports: $(_abis))
NDK_PLATFORM_$(_platform)_ABIS := $(_abis)
# Record the sysroots for each supported ABI
#
$(foreach _abi,$(_abis),\
$(eval NDK_PLATFORM_$(_platform)_$(_abi)_SYSROOT := $(NDK_PLATFORMS_ROOT)/$(_platform)/arch-$(_abi))\
$(call ndk_log, ABI $(_abi) sysroot is: $(NDK_PLATFORM_$(_platform)_$(_abi)_SYSROOT))\
)
================================================
FILE: build/core/add-toolchain.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# this script is included repeatedly by main.mk to add a new toolchain
# definition to the NDK build system.
#
# '_config_mk' must be defined as the path of a toolchain
# configuration file (config.mk) that will be included here.
#
$(call assert-defined, _config_mk)
# The list of variables that must or may be defined
# by the toolchain configuration file
#
NDK_TOOLCHAIN_VARS_REQUIRED := TOOLCHAIN_ABIS TOOLCHAIN_ARCH
NDK_TOOLCHAIN_VARS_OPTIONAL :=
# Clear variables that are supposed to be defined by the config file
$(call clear-vars,$(NDK_TOOLCHAIN_VARS_REQUIRED))
$(call clear-vars,$(NDK_TOOLCHAIN_VARS_OPTIONAL))
# Include the config file
include $(_config_mk)
# Plug in the undefined
ifeq ($(TOOLCHAIN_ABIS)$(TOOLCHAIN_ARCH),)
ifeq (1,$(words $(filter-out $(NDK_KNOWN_ARCHS),$(NDK_FOUND_ARCHS))))
TOOLCHAIN_ARCH := $(filter-out $(NDK_KNOWN_ARCHS),$(NDK_FOUND_ARCHS))
TOOLCHAIN_ABIS := $(TOOLCHAIN_ARCH) $(NDK_KNOWN_ABIS:%=$(TOOLCHAIN_ARCH)%) $(NDK_KNOWN_ABIS:%=$(TOOLCHAIN_ARCH)bc%)
endif
endif
ifeq ($(TOOLCHAIN_ABIS)$(TOOLCHAIN_ARCH),)
# Ignore if both TOOLCHAIN_ABIS and TOOLCHAIN_ARCH are not defined
else
# Check that the proper variables were defined
$(call check-required-vars,$(NDK_TOOLCHAIN_VARS_REQUIRED),$(_config_mk))
# Check that the file didn't do something stupid
$(call assert-defined, _config_mk)
# Now record the toolchain-specific information
_dir := $(patsubst %/,%,$(dir $(_config_mk)))
_name := $(notdir $(_dir))
_arch := $(TOOLCHAIN_ARCH)
_abis := $(TOOLCHAIN_ABIS)
_toolchain := NDK_TOOLCHAIN.$(_name)
# check that the toolchain name is unique
$(if $(strip $($(_toolchain).defined)),\
$(call __ndk_error,Toolchain $(_name) defined in $(_parent) is\
already defined in $(NDK_TOOLCHAIN.$(_name).defined)))
$(_toolchain).defined := $(_toolchain_config)
$(_toolchain).arch := $(_arch)
$(_toolchain).abis := $(_abis)
$(_toolchain).setup := $(wildcard $(_dir)/setup.mk)
$(if $(strip $($(_toolchain).setup)),,\
$(call __ndk_error, Toolchain $(_name) lacks a setup.mk in $(_dir)))
NDK_ALL_TOOLCHAINS += $(_name)
NDK_ALL_ARCHS += $(_arch)
NDK_ALL_ABIS += $(_abis)
# NDK_ABI.<abi>.toolchains records the list of toolchains that support
# a given ABI
#
$(foreach _abi,$(_abis),\
$(eval NDK_ABI.$(_abi).toolchains += $(_name)) \
$(eval NDK_ABI.$(_abi).arch := $(sort $(NDK_ABI.$(_abi).arch) $(_arch)))\
)
NDK_ARCH.$(_arch).toolchains += $(_name)
NDK_ARCH.$(_arch).abis := $(sort $(NDK_ARCH.$(_arch).abis) $(_abis))
endif
# done
================================================
FILE: build/core/build-all.mk
================================================
# Copyright (C) 2009-2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# This script is used to build all wanted NDK binaries. It is included
# by several scripts.
#
# ensure that the following variables are properly defined
$(call assert-defined,NDK_APPS NDK_APP_OUT)
# ====================================================================
#
# Prepare the build for parsing Android.mk files
#
# ====================================================================
# These phony targets are used to control various stages of the build
.PHONY: all \
host_libraries host_executables \
installed_modules \
executables libraries static_libraries shared_libraries \
clean clean-objs-dir \
clean-executables clean-libraries \
clean-installed-modules \
clean-installed-binaries
# These macros are used in Android.mk to include the corresponding
# build script that will parse the LOCAL_XXX variable definitions.
#
CLEAR_VARS := $(BUILD_SYSTEM)/clear-vars.mk
BUILD_HOST_EXECUTABLE := $(BUILD_SYSTEM)/build-host-executable.mk
BUILD_HOST_STATIC_LIBRARY := $(BUILD_SYSTEM)/build-host-static-library.mk
BUILD_STATIC_LIBRARY := $(BUILD_SYSTEM)/build-static-library.mk
BUILD_SHARED_LIBRARY := $(BUILD_SYSTEM)/build-shared-library.mk
BUILD_EXECUTABLE := $(BUILD_SYSTEM)/build-executable.mk
PREBUILT_SHARED_LIBRARY := $(BUILD_SYSTEM)/prebuilt-shared-library.mk
PREBUILT_STATIC_LIBRARY := $(BUILD_SYSTEM)/prebuilt-static-library.mk
ANDROID_MK_INCLUDED := \
$(CLEAR_VARS) \
$(BUILD_HOST_EXECUTABLE) \
$(BUILD_HOST_STATIC_LIBRARY) \
$(BUILD_STATIC_LIBRARY) \
$(BUILD_SHARED_LIBRARY) \
$(BUILD_EXECUTABLE) \
$(PREBUILT_SHARED_LIBRARY) \
# this is the list of directories containing dependency information
# generated during the build. It will be updated by build scripts
# when module definitions are parsed.
#
ALL_DEPENDENCY_DIRS :=
# this is the list of all generated files that we would need to clean
ALL_HOST_EXECUTABLES :=
ALL_HOST_STATIC_LIBRARIES :=
ALL_STATIC_LIBRARIES :=
ALL_SHARED_LIBRARIES :=
ALL_EXECUTABLES :=
WANTED_INSTALLED_MODULES :=
# the first rule
all: installed_modules host_libraries host_executables
$(foreach _app,$(NDK_APPS),\
$(eval include $(BUILD_SYSTEM)/setup-app.mk)\
)
ifeq (,$(strip $(WANTED_INSTALLED_MODULES)))
ifneq (,$(strip $(NDK_APP_MODULES)))
$(call __ndk_warning,WARNING: No modules to build, your APP_MODULES definition is probably incorrect!)
else
$(call __ndk_warning,WARNING: There are no modules to build in this project!)
endif
endif
# On Cygwin, we generate a temporary shell script that is capable of
# process GCC-generated dependency files to convert all path references
# in them from the Windows to the corresponding Cygwin convention.
# (e.g. C:/Foo/foo -> /cygdrive/c/Foo/foo)
#
# This shell script is generated by passing the output of the cygwin
# 'mount' command to a special Awk script.
#
ifeq ($(HOST_OS),cygwin)
GEN_CYGWIN_DEPS_CONVERTER := mount | tr '\\' '/' | awk -f $(BUILD_AWK)/gen-cygwin-deps-converter.awk
ifeq ($(NDK_LOG),1)
$(call __ndk_info,Cygwin dependency file conversion script:)
$(info ----- start of script ----)
$(info $(shell $(GEN_CYGWIN_DEPS_CONVERTER)))
$(info ------ end of script -----)
endif
$(NDK_DEPENDENCIES_CONVERTER):
$(call host-echo-build-step,$(NDK_APP_ABI),Cygwin) Generating dependency file converter script
$(hide) mkdir -p $(dir $@)
$(hide) $(GEN_CYGWIN_DEPS_CONVERTER) > $@ && chmod +x $@
clean-dependency-converter:
$(hide) $(call host-rm,$(NDK_DEPENDENCIES_CONVERTER))
endif
# ====================================================================
#
# Now finish the build preparation with a few rules that depend on
# what has been effectively parsed and recorded previously
#
# ====================================================================
clean: clean-intermediates clean-installed-binaries
distclean: clean
installed_modules: clean-installed-binaries libraries $(WANTED_INSTALLED_MODULES)
host_libraries: $(HOST_STATIC_LIBRARIES)
host_executables: $(HOST_EXECUTABLES)
static_libraries: $(STATIC_LIBRARIES)
shared_libraries: $(SHARED_LIBRARIES)
executables: $(EXECUTABLES)
libraries: static_libraries shared_libraries
clean-host-intermediates:
$(hide) $(call host-rm,$(HOST_EXECUTABLES) $(HOST_STATIC_LIBRARIES))
clean-intermediates: clean-host-intermediates
$(hide) $(call host-rm,$(EXECUTABLES) $(STATIC_LIBRARIES) $(SHARED_LIBRARIES))
ifeq ($(HOST_OS),cygwin)
clean: clean-dependency-converter
endif
# include dependency information
ALL_DEPENDENCY_DIRS := $(patsubst %/,%,$(sort $(ALL_DEPENDENCY_DIRS)))
-include $(wildcard $(ALL_DEPENDENCY_DIRS:%=%/*.d))
================================================
FILE: build/core/build-binary.mk
================================================
# Copyright (C) 2008, 2014, 2015, 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Check that LOCAL_MODULE is defined, then restore its LOCAL_XXXX values
$(call assert-defined,LOCAL_MODULE)
$(call module-restore-locals,$(LOCAL_MODULE))
# For now, only support target (device-specific modules).
# We may want to introduce support for host modules in the future
# but that is too experimental for now.
#
my := TARGET_
# LOCAL_MAKEFILE must also exist and name the Android.mk that
# included the module build script.
#
$(call assert-defined,LOCAL_MAKEFILE LOCAL_BUILD_SCRIPT LOCAL_BUILT_MODULE)
# A list of LOCAL_XXX variables that are ignored for static libraries.
# Print a warning if they are present inside a module definition to let
# the user know this won't do what he/she expects.
not_in_static_libs := \
LOCAL_LDFLAGS \
LOCAL_LDLIBS \
LOCAL_ALLOW_UNDEFINED_SYMBOLS
ifeq ($(call module-get-class,$(LOCAL_MODULE)),STATIC_LIBRARY)
$(foreach _notvar,$(not_in_static_libs),\
$(if $(strip $($(_notvar))),\
$(call __ndk_info,WARNING:$(LOCAL_MAKEFILE):$(LOCAL_MODULE): $(_notvar) is always ignored for static libraries)\
)\
)
endif
# Some developers like to add library names (e.g. -lfoo) to LOCAL_LDLIBS
# and LOCAL_LDFLAGS directly. This is very fragile and can lead to broken
# builds and other nasty surprises, because it doesn't tell ndk-build
# that the corresponding module depends on these files. Emit a warning
# when we detect this case.
libs_in_ldflags := $(filter -l% %.so %.a,$(LOCAL_LDLIBS) $(LOCAL_LDFLAGS))
# Remove the system libraries we know about from the warning, it's ok
# (and actually expected) to link them with -l<name>.
system_libs := \
android \
c \
dl \
jnigraphics \
log \
m \
m_hard \
stdc++ \
z \
EGL \
GLESv1_CM \
GLESv2 \
GLESv3 \
vulkan \
OpenSLES \
OpenMAXAL \
mediandk \
atomic
libs_in_ldflags := $(filter-out $(addprefix -l,$(system_libs)), $(libs_in_ldflags))
ifneq (,$(strip $(libs_in_ldflags)))
$(call __ndk_info,WARNING:$(LOCAL_MAKEFILE):$(LOCAL_MODULE): non-system libraries in linker flags: $(libs_in_ldflags))
$(call __ndk_info, This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES)
$(call __ndk_info, or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the)
$(call __ndk_info, current module)
endif
include $(BUILD_SYSTEM)/import-locals.mk
# Check for LOCAL_THIN_ARCHIVE / APP_THIN_ARCHIVE and print a warning if
# it is defined for non-static library modules.
thin_archive := $(strip $(LOCAL_THIN_ARCHIVE))
ifdef thin_archive
ifneq (STATIC_LIBRARY,$(call module-get-class,$(LOCAL_MODULE)))
$(call __ndk_info,WARNING:$(LOCAL_MAKEFILE):$(LOCAL_MODULE): LOCAL_THIN_ARCHIVE is for building static libraries)
endif
endif
ifndef thin_archive
thin_archive := $(strip $(NDK_APP_THIN_ARCHIVE))
endif
# Print a warning if the value is not 'true', 'false' or empty.
ifneq (,$(filter-out true false,$(thin_archive)))
$(call __ndk_info,WARNING:$(LOCAL_MAKEFILE):$(LOCAL_MODULE): Invalid LOCAL_THIN_ARCHIVE value '$(thin_archive)' ignored!)
thin_archive :=
endif
#
# Ensure that 'make <module>' and 'make clean-<module>' work
#
.PHONY: $(LOCAL_MODULE)
$(LOCAL_MODULE): $(LOCAL_BUILT_MODULE)
cleantarget := clean-$(LOCAL_MODULE)-$(TARGET_ARCH_ABI)
.PHONY: $(cleantarget)
clean: $(cleantarget)
$(cleantarget): PRIVATE_ABI := $(TARGET_ARCH_ABI)
$(cleantarget): PRIVATE_MODULE := $(LOCAL_MODULE)
ifneq ($(LOCAL_BUILT_MODULE_NOT_COPIED),true)
$(cleantarget): PRIVATE_CLEAN_FILES := $(LOCAL_BUILT_MODULE) \
$($(my)OBJS)
else
$(cleantarget): PRIVATE_CLEAN_FILES := $($(my)OBJS)
endif
$(cleantarget)::
$(call host-echo-build-step,$(PRIVATE_ABI),Clean) "$(PRIVATE_MODULE) [$(PRIVATE_ABI)]"
$(hide) $(call host-rmdir,$(PRIVATE_CLEAN_FILES))
ifeq ($(NDK_APP_DEBUGGABLE),true)
$(NDK_APP_GDBSETUP): PRIVATE_SRC_DIRS += $(LOCAL_C_INCLUDES) $(LOCAL_PATH)
endif
# list of generated object files
LOCAL_OBJECTS :=
# list of generated object files from RS files, subset of LOCAL_OBJECTS
LOCAL_RS_OBJECTS :=
# always define ANDROID when building binaries
#
LOCAL_CFLAGS := -DANDROID $(LOCAL_CFLAGS)
#
# Add the default system shared libraries to the build
#
ifeq ($(LOCAL_SYSTEM_SHARED_LIBRARIES),none)
LOCAL_SHARED_LIBRARIES += $(TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES)
else
LOCAL_SHARED_LIBRARIES += $(LOCAL_SYSTEM_SHARED_LIBRARIES)
endif
#
# Check LOCAL_CPP_EXTENSION
#
bad_cpp_extensions := $(strip $(filter-out .%,$(LOCAL_CPP_EXTENSION)))
ifdef bad_cpp_extensions
$(call __ndk_info,WARNING: Invalid LOCAL_CPP_EXTENSION values: $(bad_cpp_extensions))
LOCAL_CPP_EXTENSION := $(filter $(bad_cpp_extensions),$(LOCAL_CPP_EXTENSIONS))
endif
LOCAL_CPP_EXTENSION := $(strip $(LOCAL_CPP_EXTENSION))
ifeq ($(LOCAL_CPP_EXTENSION),)
# Match the default GCC C++ extensions.
LOCAL_CPP_EXTENSION := $(default-c++-extensions)
endif
LOCAL_RS_EXTENSION := $(default-rs-extensions)
LOCAL_LDFLAGS += -Wl,--build-id
#
# Check LOCAL_OBJC_EXTENSION, use '.m' by default
#
bad_objc_extensions := $(strip $(filter-out .%,$(LOCAL_OBJC_EXTENSION)))
ifdef bad_objc_extensions
$(call __ndk_info,WARNING: Invalid LOCAL_OBJC_EXTENSION values: $(bad_objc_extensions))
LOCAL_OBJC_EXTENSION := $(filter $(bad_objc_extensions),$(LOCAL_OBJC_EXTENSION))
endif
LOCAL_OBJC_EXTENSION := $(strip $(LOCAL_OBJC_EXTENSION))
ifeq ($(LOCAL_OBJC_EXTENSION),)
LOCAL_OBJC_EXTENSION := .m
endif
#
# Check LOCAL_OBJCPP_EXTENSION, use '.mm' by default
#
bad_objcpp_extensions := $(strip $(filter-out .%,$(LOCAL_OBJCPP_EXTENSION)))
ifdef bad_objcpp_extensions
$(call __ndk_info,WARNING: Invalid LOCAL_OBJCPP_EXTENSION values: $(bad_objcpp_extensions))
LOCAL_OBJCPP_EXTENSION := $(filter $(bad_objcpp_extensions),$(LOCAL_OBJCPP_EXTENSION))
endif
LOCAL_OBJCPP_EXTENSION := $(strip $(LOCAL_OBJCPP_EXTENSION))
ifeq ($(LOCAL_OBJCPP_EXTENSION),)
LOCAL_OBJCPP_EXTENSION := .mm
endif
#
# If LOCAL_ALLOW_UNDEFINED_SYMBOLS is not true, the linker will allow the generation
# of a binary that uses undefined symbols.
#
ifneq ($(LOCAL_ALLOW_UNDEFINED_SYMBOLS),true)
LOCAL_LDFLAGS += $($(my)NO_UNDEFINED_LDFLAGS)
endif
# Toolchain by default disallows generated code running from the heap and stack.
# If LOCAL_DISABLE_NO_EXECUTE is true, we allow that
#
ifeq ($(LOCAL_DISABLE_NO_EXECUTE),true)
LOCAL_CFLAGS += $($(my)DISABLE_NO_EXECUTE_CFLAGS)
LOCAL_LDFLAGS += $($(my)DISABLE_NO_EXECUTE_LDFLAGS)
else
LOCAL_CFLAGS += $($(my)NO_EXECUTE_CFLAGS)
LOCAL_LDFLAGS += $($(my)NO_EXECUTE_LDFLAGS)
endif
# Toolchain by default provides relro and GOT protections.
# If LOCAL_DISABLE_RELRO is true, we disable the protections.
#
ifeq ($(LOCAL_DISABLE_RELRO),true)
LOCAL_LDFLAGS += $($(my)DISABLE_RELRO_LDFLAGS)
else
LOCAL_LDFLAGS += $($(my)RELRO_LDFLAGS)
endif
# We enable shared text relocation warnings by default. These are not allowed in
# current versions of Android (android-21 for LP64 ABIs, android-23 for LP32
# ABIs).
LOCAL_LDFLAGS += -Wl,--warn-shared-textrel
# We enable fatal linker warnings by default.
# If LOCAL_DISABLE_FATAL_LINKER_WARNINGS is true, we don't enable this check.
ifneq ($(LOCAL_DISABLE_FATAL_LINKER_WARNINGS),true)
LOCAL_LDFLAGS += -Wl,--fatal-warnings
endif
# By default, we protect against format string vulnerabilities
# If LOCAL_DISABLE_FORMAT_STRING_CHECKS is true, we disable the protections.
ifeq ($(LOCAL_DISABLE_FORMAT_STRING_CHECKS),true)
LOCAL_CFLAGS += $($(my)DISABLE_FORMAT_STRING_CFLAGS)
else
LOCAL_CFLAGS += $($(my)FORMAT_STRING_CFLAGS)
endif
# enable PIE for executable beyond certain API level, unless "-static"
ifneq (,$(filter true,$(NDK_APP_PIE) $(TARGET_PIE)))
ifeq ($(call module-get-class,$(LOCAL_MODULE)),EXECUTABLE)
ifeq (,$(filter -static,$(TARGET_LDFLAGS) $(LOCAL_LDFLAGS) $(NDK_APP_LDFLAGS)))
LOCAL_CFLAGS += -fPIE
LOCAL_LDFLAGS += -fPIE -pie
endif
endif
endif
#
# The original Android build system allows you to use the .arm prefix
# to a source file name to indicate that it should be defined in either
# 'thumb' or 'arm' mode, depending on the value of LOCAL_ARM_MODE
#
# First, check LOCAL_ARM_MODE, it should be empty, 'thumb' or 'arm'
# We make the default 'thumb'
#
LOCAL_ARM_MODE := $(strip $(LOCAL_ARM_MODE))
ifdef LOCAL_ARM_MODE
ifneq ($(words $(LOCAL_ARM_MODE)),1)
$(call __ndk_info, LOCAL_ARM_MODE in $(LOCAL_MAKEFILE) must be one word, not '$(LOCAL_ARM_MODE)')
$(call __ndk_error, Aborting)
endif
# check that LOCAL_ARM_MODE is defined to either 'arm' or 'thumb'
$(if $(filter-out thumb arm, $(LOCAL_ARM_MODE)),\
$(call __ndk_info, LOCAL_ARM_MODE must be defined to either 'arm' or 'thumb' in $(LOCAL_MAKEFILE) not '$(LOCAL_ARM_MODE)')\
$(call __ndk_error, Aborting)\
)
my_link_arm_mode := $(LOCAL_ARM_MODE)
else
my_link_arm_mode := thumb
endif
# As a special case, the original Android build system
# allows one to specify that certain source files can be
# forced to build in ARM mode by using a '.arm' suffix
# after the extension, e.g.
#
# LOCAL_SRC_FILES := foo.c.arm
#
# to build source file $(LOCAL_PATH)/foo.c as ARM
#
$(call clear-all-src-tags)
# As a special extension, the NDK also supports the .neon extension suffix
# to indicate that a single file can be compiled with ARM NEON support
# We must support both foo.c.neon and foo.c.arm.neon here
#
# Also, if LOCAL_ARM_NEON is set to 'true', force Neon mode for all source
# files
#
neon_sources := $(filter %.neon,$(LOCAL_SRC_FILES))
neon_sources := $(neon_sources:%.neon=%)
LOCAL_ARM_NEON := $(strip $(LOCAL_ARM_NEON))
ifdef LOCAL_ARM_NEON
$(if $(filter-out true false,$(LOCAL_ARM_NEON)),\
$(call __ndk_info,LOCAL_ARM_NEON must be defined either to 'true' or 'false' in $(LOCAL_MAKEFILE), not '$(LOCAL_ARM_NEON)')\
$(call __ndk_error,Aborting) \
)
endif
ifeq ($(LOCAL_ARM_NEON),true)
neon_sources += $(LOCAL_SRC_FILES:%.neon=%)
# tag the precompiled header with 'neon' tag if it exists
ifneq (,$(LOCAL_PCH))
$(call tag-src-files,$(LOCAL_PCH),neon)
endif
endif
neon_sources := $(strip $(neon_sources))
ifdef neon_sources
ifeq ($(filter $(TARGET_ARCH_ABI), armeabi-v7a armeabi-v7a-hard arm64-v8a x86 x86_64),)
$(call __ndk_info,NEON support is only possible for armeabi-v7a ABI, its variant armeabi-v7a-hard, and arm64-v8a, x86 and x86_64 ABIs)
$(call __ndk_info,Please add checks against TARGET_ARCH_ABI in $(LOCAL_MAKEFILE))
$(call __ndk_error,Aborting)
endif
$(call tag-src-files,$(neon_sources:%.arm=%),neon)
endif
LOCAL_SRC_FILES := $(LOCAL_SRC_FILES:%.neon=%)
# strip the .arm suffix from LOCAL_SRC_FILES
# and tag the relevant sources with the 'arm' tag
#
arm_sources := $(filter %.arm,$(LOCAL_SRC_FILES))
arm_sources := $(arm_sources:%.arm=%)
thumb_sources := $(filter-out %.arm,$(LOCAL_SRC_FILES))
LOCAL_SRC_FILES := $(LOCAL_SRC_FILES:%.arm=%)
ifeq ($(LOCAL_ARM_MODE),arm)
arm_sources := $(LOCAL_SRC_FILES)
# tag the precompiled header with 'arm' tag if it exists
ifneq (,$(LOCAL_PCH))
$(call tag-src-files,$(LOCAL_PCH),arm)
endif
endif
ifeq ($(LOCAL_ARM_MODE),thumb)
arm_sources := $(empty)
endif
$(call tag-src-files,$(arm_sources),arm)
# tag debug if APP_OPTIM is 'debug'
#
ifeq ($(APP_OPTIM),debug)
$(call tag-src-files,$(LOCAL_SRC_FILES),debug)
ifneq (,$(LOCAL_PCH))
$(call tag-src-files,$(LOCAL_PCH),debug)
endif
endif
# add PCH to LOCAL_SRC_FILES so that TARGET-process-src-files-tags could process it
ifneq (,$(LOCAL_PCH))
LOCAL_SRC_FILES += $(LOCAL_PCH)
endif
# Process all source file tags to determine toolchain-specific
# target compiler flags, and text.
#
$(call TARGET-process-src-files-tags)
# now remove PCH from LOCAL_SRC_FILES to prevent getting NDK warning about
# unsupported source file extensions
ifneq (,$(LOCAL_PCH))
LOCAL_SRC_FILES := $(filter-out $(LOCAL_PCH),$(LOCAL_SRC_FILES))
endif
# only call dump-src-file-tags during debugging
#$(dump-src-file-tags)
LOCAL_DEPENDENCY_DIRS :=
# all_source_patterns contains the list of filename patterns that correspond
# to source files recognized by our build system
ifneq ($(filter x86 x86_64, $(TARGET_ARCH_ABI)),)
all_source_extensions := .c .s .S .asm $(LOCAL_CPP_EXTENSION) $(LOCAL_RS_EXTENSION) $(LOCAL_OBJC_EXTENSION) $(LOCAL_OBJCPP_EXTENSION)
else
all_source_extensions := .c .s .S $(LOCAL_CPP_EXTENSION) $(LOCAL_RS_EXTENSION) $(LOCAL_OBJC_EXTENSION) $(LOCAL_OBJCPP_EXTENSION)
endif
all_source_patterns := $(foreach _ext,$(all_source_extensions),%$(_ext))
all_cpp_patterns := $(foreach _ext,$(LOCAL_CPP_EXTENSION),%$(_ext))
all_rs_patterns := $(foreach _ext,$(LOCAL_RS_EXTENSION),%$(_ext))
all_objc_patterns := $(foreach _ext,$(LOCAL_OBJC_EXTENSION),%$(_ext))
all_objcpp_patterns := $(foreach _ext,$(LOCAL_OBJCPP_EXTENSION),%$(_ext))
unknown_sources := $(strip $(filter-out $(all_source_patterns),$(LOCAL_SRC_FILES)))
ifdef unknown_sources
$(call __ndk_info,WARNING: Unsupported source file extensions in $(LOCAL_MAKEFILE) for module $(LOCAL_MODULE))
$(call __ndk_info, $(unknown_sources))
endif
# LOCAL_OBJECTS will list all object files corresponding to the sources
# listed in LOCAL_SRC_FILES, in the *same* order.
#
LOCAL_OBJECTS := $(LOCAL_SRC_FILES)
$(foreach _ext,$(all_source_extensions),\
$(eval LOCAL_OBJECTS := $$(LOCAL_OBJECTS:%$(_ext)=%$$(TARGET_OBJ_EXTENSION)))\
)
LOCAL_OBJECTS := $(filter %$(TARGET_OBJ_EXTENSION),$(LOCAL_OBJECTS))
LOCAL_OBJECTS := $(subst ../,__/,$(LOCAL_OBJECTS))
LOCAL_OBJECTS := $(subst :,_,$(LOCAL_OBJECTS))
LOCAL_OBJECTS := $(foreach _obj,$(LOCAL_OBJECTS),$(LOCAL_OBJS_DIR)/$(_obj))
LOCAL_RS_OBJECTS := $(filter $(all_rs_patterns),$(LOCAL_SRC_FILES))
$(foreach _ext,$(LOCAL_RS_EXTENSION),\
$(eval LOCAL_RS_OBJECTS := $$(LOCAL_RS_OBJECTS:%$(_ext)=%$$(TARGET_OBJ_EXTENSION)))\
)
LOCAL_RS_OBJECTS := $(filter %$(TARGET_OBJ_EXTENSION),$(LOCAL_RS_OBJECTS))
LOCAL_RS_OBJECTS := $(subst ../,__/,$(LOCAL_RS_OBJECTS))
LOCAL_RS_OBJECTS := $(subst :,_,$(LOCAL_RS_OBJECTS))
LOCAL_RS_OBJECTS := $(foreach _obj,$(LOCAL_RS_OBJECTS),$(LOCAL_OBJS_DIR)/$(_obj))
ifneq (,$(call module-has-objc-sources,$(LOCAL_MODULE)))
objc_cflags :=
objc_ldflags :=
#objc_cflags += objc-exception
ifneq (,$(filter clang%,$(NDK_TOOLCHAIN_VERSION)))
objc_cflags += objc-arc
objc_ldflags += objc-arc
endif
$(foreach __f,$(objc_cflags),\
$(eval LOCAL_OBJCFLAGS += $(if $(filter -f$(__f) -fno-$(__f),$(foreach __t,TARGET LOCAL NDK_APP,$(foreach __l,C OBJC,$($(__t)_$(__l)FLAGS)))),,-f$(__f)))\
)
$(foreach __f,$(objc_ldflags),\
$(eval LOCAL_LDFLAGS += $(if $(filter -f$(__f) -fno-$(__f),$(foreach __t,TARGET LOCAL NDK_APP,$($(__t)_LDFLAGS))),,-f$(__f)))\
)
endif
# If the module has any kind of C++ features, enable them in LOCAL_CPPFLAGS
#
ifneq (,$(call module-has-c++-features,$(LOCAL_MODULE),rtti))
LOCAL_CPPFLAGS += -frtti
endif
ifneq (,$(call module-has-c++-features,$(LOCAL_MODULE),exceptions))
LOCAL_CPPFLAGS += -fexceptions
endif
ifeq ($(filter -std=%,$(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS)),)
ifneq ($(TARGET_CXX_STANDARD),)
LOCAL_CPPFLAGS += -std=$(TARGET_CXX_STANDARD)
endif
endif
# If we're using the 'system' STL and use rtti or exceptions, then
# automatically link against the GNU libsupc++ for now.
#
ifneq (,$(call module-has-c++-features,$(LOCAL_MODULE),rtti exceptions))
ifeq (system,$(NDK_APP_STL))
LOCAL_LDLIBS := $(LOCAL_LDLIBS) $(call host-path,$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAIN_VERSION)/libs/$(TARGET_ARCH_ABI)/libsupc++$(TARGET_LIB_EXTENSION))
endif
endif
# Set include patch for renderscript
ifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),)
LOCAL_RENDERSCRIPT_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE)
else
LOCAL_RENDERSCRIPT_INCLUDES := \
$(RENDERSCRIPT_TOOLCHAIN_HEADER) \
$(LOCAL_RENDERSCRIPT_INCLUDES)
endif
RS_COMPAT :=
ifneq ($(call module-is-shared-library,$(LOCAL_MODULE)),)
RS_COMPAT := true
endif
# Build PCH
get-pch-name = $(strip \
$(subst ../,__/,\
$(eval __pch := $1)\
$(eval __pch := $(__pch:%.h=%.precompiled.h))\
$(__pch)\
))
ifneq (,$(LOCAL_PCH))
# Build PCH into obj directory
LOCAL_BUILT_PCH := $(call get-pch-name,$(LOCAL_PCH))
# Clang whines about a "c-header" (.h rather than .hpp) being used in C++
# mode (note that we use compile-cpp-source to build the header).
LOCAL_SRC_FILES_TARGET_CFLAGS.$(LOCAL_PCH) += -x c++-header
# Build PCH
$(call compile-cpp-source,$(LOCAL_PCH),$(LOCAL_BUILT_PCH).gch)
# Filter obj files that are dependent on the PCH (only those without tags)
ifeq (true,$(LOCAL_ARM_NEON))
TAGS_TO_FILTER=arm
else
TAGS_TO_FILTER=arm neon
endif
allowed_src := $(foreach src,$(filter $(all_cpp_patterns),$(LOCAL_SRC_FILES)),\
$(if $(filter $(TAGS_TO_FILTER),$(LOCAL_SRC_FILES_TAGS.$(src))),,$(src))\
)
# All files without tags depend on PCH
$(foreach src,$(allowed_src),\
$(eval $(LOCAL_OBJS_DIR)/$(call get-object-name,$(src)) : $(LOCAL_OBJS_DIR)/$(LOCAL_BUILT_PCH).gch)\
)
# Make sure those files are built with PCH
$(call add-src-files-target-cflags,$(allowed_src),-Winvalid-pch -include $(LOCAL_OBJS_DIR)/$(LOCAL_BUILT_PCH))
# Insert PCH dir at beginning of include search path
LOCAL_C_INCLUDES := \
$(LOCAL_OBJS_DIR) \
$(LOCAL_C_INCLUDES)
endif
# Build the sources to object files
#
$(foreach src,$(filter %.c,$(LOCAL_SRC_FILES)), $(call compile-c-source,$(src),$(call get-object-name,$(src))))
$(foreach src,$(filter %.S %.s,$(LOCAL_SRC_FILES)), $(call compile-s-source,$(src),$(call get-object-name,$(src))))
$(foreach src,$(filter $(all_objc_patterns),$(LOCAL_SRC_FILES)),\
$(call compile-objc-source,$(src),$(call get-object-name,$(src)))\
)
$(foreach src,$(filter $(all_objcpp_patterns),$(LOCAL_SRC_FILES)),\
$(call compile-objc++-source,$(src),$(call get-object-name,$(src)))\
)
$(foreach src,$(filter $(all_cpp_patterns),$(LOCAL_SRC_FILES)),\
$(call compile-cpp-source,$(src),$(call get-object-name,$(src)))\
)
$(foreach src,$(filter $(all_rs_patterns),$(LOCAL_SRC_FILES)),\
$(call compile-rs-source,$(src),$(call get-rs-scriptc-name,$(src)),$(call get-rs-bc-name,$(src)),$(call get-rs-so-name,$(src)),$(call get-object-name,$(src)),$(RS_COMPAT))\
)
ifneq ($(filter x86 x86_64, $(TARGET_ARCH_ABI)),)
$(foreach src,$(filter %.asm,$(LOCAL_SRC_FILES)), $(call compile-asm-source,$(src),$(call get-object-name,$(src))))
endif
#
# The compile-xxx-source calls updated LOCAL_OBJECTS and LOCAL_DEPENDENCY_DIRS
#
ALL_DEPENDENCY_DIRS += $(sort $(LOCAL_DEPENDENCY_DIRS))
CLEAN_OBJS_DIRS += $(LOCAL_OBJS_DIR)
#
# Handle the static and shared libraries this module depends on
#
# If LOCAL_LDLIBS contains anything like -l<library> then
# prepend a -L$(SYSROOT_LINK)/usr/lib to it to ensure that the linker
# looks in the right location
#
ifneq ($(filter -l%,$(LOCAL_LDLIBS)),)
LOCAL_LDLIBS := -L$(call host-path,$(SYSROOT_LINK)/usr/lib) $(LOCAL_LDLIBS)
ifneq ($(filter x86_64 mips64,$(TARGET_ARCH_ABI)),)
LOCAL_LDLIBS := -L$(call host-path,$(SYSROOT_LINK)/usr/lib64) $(LOCAL_LDLIBS)
endif
endif
my_ldflags := $(TARGET_LDFLAGS) $(LOCAL_LDFLAGS) $(NDK_APP_LDFLAGS)
ifneq ($(filter armeabi%,$(TARGET_ARCH_ABI)),)
my_ldflags += $(TARGET_$(my_link_arm_mode)_LDFLAGS)
endif
# When LOCAL_SHORT_COMMANDS is defined to 'true' we are going to write the
# list of all object files and/or static/shared libraries that appear on the
# command line to a file, then use the @<listfile> syntax to invoke it.
#
# This allows us to link or archive a huge number of stuff even on Windows
# with its puny 8192 max character limit on its command-line.
#
LOCAL_SHORT_COMMANDS := $(strip $(LOCAL_SHORT_COMMANDS))
ifndef LOCAL_SHORT_COMMANDS
LOCAL_SHORT_COMMANDS := $(strip $(NDK_APP_SHORT_COMMANDS))
endif
define libcrystax-link-type
$(strip \
$(call assert-defined,LOCAL_LDFLAGS NDK_APP_LIBCRYSTAX)\
$(if \
$(or \
$(filter -static,$(LOCAL_LDFLAGS)),\
$(filter static,$(NDK_APP_LIBCRYSTAX))\
),\
static,\
dynamic\
)\
)
endef
# $1: Target ABI
define libcrystax-libpath
$(strip \
$(eval __libcrystax_libpath := $(crystax-dir)/libs/$(1)$(if $(filter armeabi%,$(1)),/thumb))\
$(if $(wildcard $(__libcrystax_libpath)),\
$(__libcrystax_libpath),\
$(call __ndk_info,Could not find libcrystax libraries: $(call pretty-dir,$(__libcrystax_libpath)) (broken NDK?))\
$(call __ndk_error,Aborting)\
)\
)
endef
# - Ensure -lcrystax is _always_ before -lc
# - Properly detect how to link libcrystax - statically or dynamically
# - Specify path to empty libcrystax.a stub to make linker happy when it
# use -lcrystax (according to built-in linker spec)
# - Specify proper path to libcrystax binary
# - Force __crystax_on_load/__crystax_on_unload to be undefined in case of static
# libcrystax linking. This way we ensure they will not be thrown away by linker.
# - Enable 'muldefs' option when statically linking.
# This way app will use functions from libcrystax and link successfully
# even if there are symbols with the same name in subsequent static libraries (libc etc)
# - Force -Wl,--eh-frame-hdr for static executables if not yet specified
# Parameters:
# $1: List of linker '-lxxx' options to adjust
define interpose-libcrystax
$(strip \
$(call assert-defined,TARGET_ARCH_ABI LOCAL_LDFLAGS)\
$(filter-out -lc -lm,$(1)) \
$(if $(filter static,$(libcrystax-link-type)),\
-u __crystax_on_load \
-u __crystax_on_unload \
) \
$(if $(filter -static,$(LOCAL_LDFLAGS)),\
$(eval __libcrystax_muldefs := -Wl,-z,muldefs) \
$(__libcrystax_muldefs) \
) \
$(if $(filter -static,$(LOCAL_LDFLAGS)),\
$(eval __libcrystax_static_eh_frame_hdr := -Wl,--eh-frame-hdr) \
$(if $(filter $(__libcrystax_static_eh_frame_hdr),$(LOCAL_LDFLAGS)),,$(__libcrystax_static_eh_frame_hdr)) \
) \
-L$(crystax-dir)/empty \
$(call libcrystax-libpath,$(TARGET_ARCH_ABI))/libcrystax.$(if $(filter static,$(libcrystax-link-type)),a,so) \
-lc \
)
endef
$(call generate-file-dir,$(LOCAL_BUILT_MODULE))
$(LOCAL_BUILT_MODULE): PRIVATE_OBJECTS := $(LOCAL_OBJECTS)
$(LOCAL_BUILT_MODULE): PRIVATE_LIBGCC := $(TARGET_LIBGCC)
$(LOCAL_BUILT_MODULE): PRIVATE_LD := $(TARGET_LD)
$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(my_ldflags)
$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS := $(call interpose-libcrystax,$(LOCAL_LDLIBS) $(TARGET_LDLIBS))
$(LOCAL_BUILT_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE))
$(LOCAL_BUILT_MODULE): PRIVATE_CXX := $(TARGET_CXX)
$(LOCAL_BUILT_MODULE): PRIVATE_CC := $(TARGET_CC)
$(LOCAL_BUILT_MODULE): PRIVATE_SYSROOT_LINK := $(SYSROOT_LINK)
ifeq ($(call module-get-class,$(LOCAL_MODULE)),STATIC_LIBRARY)
#
# This is a static library module, things are very easy. We only need
# to build the object files and archive them with 'ar'. Note that module
# dependencies can be ignored here, i.e. if the module depends on other
# static or shared libraries, there is no need to actually build them
# before, so don't add Make dependencies to them.
#
# In other words, consider the following graph:
#
# libfoo.so -> libA.a ->libB.a
#
# then libA.a and libB.a can be built in parallel, only linking libfoo.so
# depends on their completion.
#
ar_objects := $(call host-path,$(LOCAL_OBJECTS))
ifeq ($(LOCAL_SHORT_COMMANDS),true)
$(call ndk_log,Building static library module '$(LOCAL_MODULE)' with linker list file)
ar_list_file := $(LOCAL_OBJS_DIR)/archiver.list
$(call generate-list-file,$(ar_objects),$(ar_list_file))
ar_objects := @$(call host-path,$(ar_list_file))
$(LOCAL_BUILT_MODULE): $(ar_list_file)
endif
# Compute 'ar' flags. Thin archives simply require 'T' here.
ar_flags := $(TARGET_ARFLAGS)
ifeq (true,$(thin_archive))
$(call ndk_log,$(TARGET_ARCH_ABI):Building static library '$(LOCAL_MODULE)' as thin archive)
ar_flags := $(ar_flags)T
endif
$(LOCAL_BUILT_MODULE): PRIVATE_ABI := $(TARGET_ARCH_ABI)
$(LOCAL_BUILT_MODULE): PRIVATE_AR := $(TARGET_AR) $(ar_flags)
$(LOCAL_BUILT_MODULE): PRIVATE_AR_OBJECTS := $(ar_objects)
$(LOCAL_BUILT_MODULE): PRIVATE_BUILD_STATIC_LIB := $(cmd-build-static-library)
$(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS)
$(call host-echo-build-step,$(PRIVATE_ABI),StaticLibrary) "$(PRIVATE_NAME)"
$(hide) $(call host-rm,$@)
$(hide) $(PRIVATE_BUILD_STATIC_LIB)
ALL_STATIC_LIBRARIES += $(LOCAL_BUILT_MODULE)
endif
ifneq (,$(filter SHARED_LIBRARY EXECUTABLE,$(call module-get-class,$(LOCAL_MODULE))))
#
# This is a shared library or an executable, so computing dependencies properly is
# crucial. The general rule to apply is the following:
#
# - collect the list of all static libraries that need to be part
# of the link, and in the right order. To do so, get the transitive
# closure of LOCAL_STATIC_LIBRARIES and LOCAL_WHOLE_STATIC_LIBRARIES
# and ensure they are ordered topologically.
#
# - collect the list of all shared libraries that need to be part of
# the link. This is the transitive closure of the list of
# LOCAL_SHARED_LIBRARIES for the module and all its dependent static
# libraries identified in the step above. Of course, need to be
# ordered topologically too.
#
# - add Make dependencies to ensure that all these libs are built
# before the module itself too.
#
# A few quick examples:
#
# main.exe -> libA.a -> libB.a -> libfoo.so -> libC.a
#
# static_libs(main.exe) = libA.a libB.a (i.e. no libC.a)
# shared_libs(main.exe) = libfoo.so
# static_libs(libfoo.so) = libC.a
#
# main.exe -> libA.a ---> libB.a
# | ^
# v |
# libC.a ------
#
# static_libs(main.exe) = libA.a libC.a libB.a
# (i.e. libB.a must appear after all libraries that depend on it).
#
all_libs := $(call module-get-link-libs,$(LOCAL_MODULE))
shared_libs := $(call module-filter-shared-libraries,$(all_libs))
static_libs := $(call module-filter-static-libraries,$(all_libs))
whole_static_libs := $(call module-extract-whole-static-libs,$(LOCAL_MODULE),$(static_libs))
static_libs := $(filter-out $(whole_static_libs),$(static_libs))
$(call -ndk-mod-debug,module $(LOCAL_MODULE) [$(LOCAL_BUILT_MODULE)])
$(call -ndk-mod-debug,. all_libs='$(all_libs)')
$(call -ndk-mod-debug,. shared_libs='$(shared_libs)')
$(call -ndk-mod-debug,. static_libs='$(static_libs)')
$(call -ndk-mod-debug,. whole_static_libs='$(whole_static_libs)')
shared_libs := $(call map,module-get-built,$(shared_libs))\
$(TARGET_PREBUILT_SHARED_LIBRARIES)
static_libs := $(call map,module-get-built,$(static_libs))
whole_static_libs := $(call map,module-get-built,$(whole_static_libs))
$(call -ndk-mod-debug,. built_shared_libs='$(shared_libs)')
$(call -ndk-mod-debug,. built_static_libs='$(static_libs)')
$(call -ndk-mod-debug,. built_whole_static_libs='$(whole_static_libs)')
# The list of object/static/shared libraries passed to the linker when
# building shared libraries and executables. order is important.
#
# Cannot use immediate evaluation because PRIVATE_LIBGCC may not be defined at this point.
linker_objects_and_libraries = $(strip $(call TARGET-get-linker-objects-and-libraries,\
$(LOCAL_OBJECTS), \
$(static_libs), \
$(whole_static_libs), \
$(shared_libs)))
ifeq ($(LOCAL_SHORT_COMMANDS),true)
$(call ndk_log,Building ELF binary module '$(LOCAL_MODULE)' with linker list file)
linker_options := $(linker_objects_and_libraries)
linker_list_file := $(LOCAL_OBJS_DIR)/linker.list
linker_objects_and_libraries := @$(call host-path,$(linker_list_file))
$(call generate-list-file,$(linker_options),$(linker_list_file))
$(LOCAL_BUILT_MODULE): $(linker_list_file)
endif
$(LOCAL_BUILT_MODULE): $(shared_libs) $(static_libs) $(whole_static_libs)
$(LOCAL_BUILT_MODULE): PRIVATE_ABI := $(TARGET_ARCH_ABI)
$(LOCAL_BUILT_MODULE): PRIVATE_LINKER_OBJECTS_AND_LIBRARIES := $(linker_objects_and_libraries)
$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libs)
$(LOCAL_BUILT_MODULE): PRIVATE_WHOLE_STATIC_LIBRARIES := $(whole_static_libs)
$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBRARIES := $(shared_libs)
endif
#
# If this is a shared library module
#
ifeq ($(call module-get-class,$(LOCAL_MODULE)),SHARED_LIBRARY)
$(LOCAL_BUILT_MODULE): PRIVATE_BUILD_SHARED_LIB := $(cmd-build-shared-library)
$(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS)
$(call host-echo-build-step,$(PRIVATE_ABI),SharedLibrary) "$(PRIVATE_NAME)"
$(hide) $(PRIVATE_BUILD_SHARED_LIB)
ALL_SHARED_LIBRARIES += $(LOCAL_BUILT_MODULE)
endif
#
# If this is an executable module
#
ifeq ($(call module-get-class,$(LOCAL_MODULE)),EXECUTABLE)
$(LOCAL_BUILT_MODULE): PRIVATE_ABI := $(TARGET_ARCH_ABI)
$(LOCAL_BUILT_MODULE): PRIVATE_BUILD_EXECUTABLE := $(cmd-build-executable)
$(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS)
$(call host-echo-build-step,$(PRIVATE_ABI),Executable) "$(PRIVATE_NAME)"
$(hide) $(PRIVATE_BUILD_EXECUTABLE)
ALL_EXECUTABLES += $(LOCAL_BUILT_MODULE)
endif
#
# If this is a copyable prebuilt module
#
ifeq ($(call module-is-copyable,$(LOCAL_MODULE)),$(true))
$(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS)
$(call host-echo-build-step,$(PRIVATE_ABI),Prebuilt) "$(PRIVATE_NAME) <= $(call pretty-dir,$(dir $<))"
$(hide) $(call host-cp,$<,$@)
endif
#
# If this is an installable module
#
ifeq ($(call module-is-installable,$(LOCAL_MODULE)),$(true))
$(LOCAL_INSTALLED): PRIVATE_ABI := $(TARGET_ARCH_ABI)
$(LOCAL_INSTALLED): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE))
$(LOCAL_INSTALLED): PRIVATE_SRC := $(LOCAL_BUILT_MODULE)
$(LOCAL_INSTALLED): PRIVATE_DST_DIR := $(NDK_APP_DST_DIR)
$(LOCAL_INSTALLED): PRIVATE_DST := $(LOCAL_INSTALLED)
$(LOCAL_INSTALLED): PRIVATE_STRIP := $(TARGET_STRIP)
$(LOCAL_INSTALLED): PRIVATE_STRIP_CMD := $(call cmd-strip, $(PRIVATE_DST))
$(LOCAL_INSTALLED): PRIVATE_OBJCOPY := $(TARGET_OBJCOPY)
$(LOCAL_INSTALLED): PRIVATE_OBJCOPY_CMD := $(call cmd-add-gnu-debuglink, $(PRIVATE_DST), $(PRIVATE_SRC))
LIBCRYSTAX_INSTALLED := $(subst //,/,$(call parent-dir,$(LOCAL_INSTALLED))/libcrystax.so)
$(LOCAL_INSTALLED): $(LOCAL_BUILT_MODULE) clean-installed-binaries $(if $(filter dynamic,$(libcrystax-link-type)),$(LIBCRYSTAX_INSTALLED))
$(call host-echo-build-step,$(PRIVATE_ABI),Install) "$(PRIVATE_NAME) => $(call pretty-dir,$(PRIVATE_DST))"
$(hide) $(call host-install,$(PRIVATE_SRC),$(PRIVATE_DST))
$(hide) $(PRIVATE_STRIP_CMD)
#$(hide) $(PRIVATE_OBJCOPY_CMD)
$(call generate-file-dir,$(LOCAL_INSTALLED))
ifeq (,$(GLOBAL_LIBCRYSTAX_INSTALL_RULE_DEFINED.$(TARGET_ARCH_ABI)))
$(LIBCRYSTAX_INSTALLED): PRIVATE_LIBCRYSTAX_ABI := $(TARGET_ARCH_ABI)
$(LIBCRYSTAX_INSTALLED): $(LOCAL_BUILT_MODULE) clean-installed-binaries
$(call host-echo-build-step,$(PRIVATE_LIBCRYSTAX_ABI),Install) "$(notdir $@) => $(call pretty-dir,$@)"
$(hide) $(call host-install,$(call libcrystax-libpath,$(PRIVATE_LIBCRYSTAX_ABI))/libcrystax.so,$@)
$(hide) $(call cmd-strip,$@)
$(call generate-file-dir,$(LIBCRYSTAX_INSTALLED))
GLOBAL_LIBCRYSTAX_INSTALL_RULE_DEFINED.$(TARGET_ARCH_ABI) := true
endif
endif
================================================
FILE: build/core/build-executable.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# this file is included from Android.mk files to build a target-specific
# executable program
#
LOCAL_BUILD_SCRIPT := BUILD_EXECUTABLE
LOCAL_MAKEFILE := $(local-makefile)
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
$(call check-LOCAL_MODULE_FILENAME)
# we are building target objects
my := TARGET_
$(call handle-module-filename,,)
$(call handle-module-built)
LOCAL_MODULE_CLASS := EXECUTABLE
include $(BUILD_SYSTEM)/build-module.mk
================================================
FILE: build/core/build-local.mk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This file is designed to be called from the 'ndk-build' script
# or similar wrapper tool.
#
# Detect the NDK installation path by processing this Makefile's location.
# This assumes we are located under $NDK_ROOT/build/core/main.mk
#
# Don't output to stdout if we're being invoked to dump a variable
DUMP_VAR := $(patsubst DUMP_%,%,$(filter DUMP_%,$(MAKECMDGOALS)))
ifneq (,$(DUMP_VAR))
NDK_NO_INFO := 1
NDK_NO_WARNINGS := 1
endif
NDK_ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
NDK_ROOT := $(subst \,/,$(NDK_ROOT))
NDK_ROOT := $(strip $(NDK_ROOT:%build/core/=%))
NDK_ROOT := $(NDK_ROOT:%/=%)
ifeq ($(NDK_ROOT),)
# for the case when we're invoked from the NDK install path
NDK_ROOT := .
endif
ifeq ($(NDK_LOG),1)
$(info Android NDK: NDK installation path auto-detected: '$(NDK_ROOT)')
endif
ifneq ($(words $(NDK_ROOT)),1)
$(info Android NDK: Your NDK installation path contains spaces.)
$(info Android NDK: Please re-install to a different location to fix the issue !)
$(error Aborting.)
endif
include $(NDK_ROOT)/build/core/init.mk
# ====================================================================
#
# If NDK_PROJECT_PATH is not defined, find the application's project
# path by looking at the manifest file in the current directory or
# any of its parents. If none is found, try again with 'jni/Android.mk'
#
# Note that we first look at the current directory to avoid using
# absolute NDK_PROJECT_PATH values. This reduces the length of all
# source, object and binary paths that are passed to build commands.
#
# It turns out that some people use ndk-build to generate static
# libraries without a full Android project tree.
#
# If NDK_PROJECT_PATH=null, ndk-build make no attempt to look for it, but does
# need the following variables depending on NDK_PROJECT_PATH to be explicitly
# specified (from the default, if any):
#
# NDK_OUT
# NDK_LIBS_OUT
# APP_BUILD_SCRIPT
# NDK_DEBUG (optional, default to 0)
# Other APP_* used to be in Application.mk
#
# This behavior may be useful in an integrated build system.
#
# ====================================================================
find-project-dir = $(strip $(call find-project-dir-inner,$(abspath $1),$2))
find-project-dir-inner = \
$(eval __found_project_path := )\
$(eval __find_project_path := $1)\
$(eval __find_project_file := $2)\
$(call find-project-dir-inner-2)\
$(__found_project_path)
find-project-dir-inner-2 = \
$(call ndk_log,Looking for $(__find_project_file) in $(__find_project_path))\
$(eval __find_project_manifest := $(strip $(wildcard $(__find_project_path)/$(__find_project_file))))\
$(if $(__find_project_manifest),\
$(call ndk_log, Found it !)\
$(eval __found_project_path := $(__find_project_path))\
,\
$(eval __find_project_parent := $(call parent-dir,$(__find_project_path)))\
$(if $(__find_project_parent),\
$(eval __find_project_path := $(__find_project_parent))\
$(call find-project-dir-inner-2)\
)\
)
NDK_PROJECT_PATH := $(strip $(NDK_PROJECT_PATH))
APP_PROJECT_PATH := $(strip $(APP_PROJECT_PATH))
ifneq (,$(APP_PROJECT_PATH))
ifeq (,$(NDK_PROJECT_PATH))
# If NDK_PROJECT_PATH isn't set and APP_PROJECT_PATH is present, use APP_PROJECT_PATH
$(call ndk_log,Use APP_PROJECT_PATH for NDK_PROJECT_PATH: $(APP_PROJECT_PATH))
NDK_PROJECT_PATH := $(APP_PROJECT_PATH)
else
# If both NDK_PROJECT_PATH and APP_PROJECT_PATH are present, check consistency
ifneq ($(NDK_PROJECT_PATH),$(APP_PROJECT_PATH))
$(call __ndk_info,WARNING: NDK_PROJECT_PATH and APP_PROJECT_PATH are both set but not equal literally)
$(call __ndk_info, NDK_PROJECT_PATH = $(NDK_PROJECT_PATH))
$(call __ndk_info, APP_PROJECT_PATH = $(APP_PROJECT_PATH))
endif
endif
endif
ifeq (null,$(NDK_PROJECT_PATH))
$(call ndk_log,Make no attempt to look for NDK_PROJECT_PATH.)
else
# To keep paths as short as possible during the build, we first look if the
# current directory is the top of our project path. If this is the case, we
# will define NDK_PROJECT_PATH to simply '.'
#
# Otherwise, we will use find-project-dir which will first get the absolute
# path of the current directory the climb back the hierarchy until we find
# something. The result will always be a much longer definition for
# NDK_PROJECT_PATH
#
ifndef NDK_PROJECT_PATH
ifneq (,$(strip $(wildcard AndroidManifest.xml)))
NDK_PROJECT_PATH := .
else
ifneq (,$(strip $(wildcard jni/Android.mk)))
NDK_PROJECT_PATH := .
endif
endif
endif
ifndef NDK_PROJECT_PATH
NDK_PROJECT_PATH := $(call find-project-dir,.,jni/Android.mk)
endif
ifndef NDK_PROJECT_PATH
NDK_PROJECT_PATH := $(call find-project-dir,.,AndroidManifest.xml)
endif
ifndef NDK_PROJECT_PATH
$(call __ndk_info,Could not find application project directory !)
$(call __ndk_info,Please define the NDK_PROJECT_PATH variable to point to it.)
$(call __ndk_error,Aborting)
endif
# Check that there are no spaces in the project path, or bad things will happen
ifneq ($(words $(NDK_PROJECT_PATH)),1)
$(call __ndk_info,Your Android application project path contains spaces: '$(NDK_PROJECT_PATH)')
$(call __ndk_info,The Android NDK build cannot work here. Please move your project to a different location.)
$(call __ndk_error,Aborting.)
endif
$(call ndk_log,Found project path: $(NDK_PROJECT_PATH))
NDK_APPLICATION_MK := $(strip $(wildcard $(NDK_PROJECT_PATH)/jni/Application.mk))
endif # NDK_PROJECT_PATH == null
ifndef NDK_APPLICATION_MK
NDK_APPLICATION_MK := $(NDK_ROOT)/build/core/default-application.mk
endif
# Place all generated intermediate files here
NDK_APP_OUT := $(strip $(NDK_OUT))
ifndef NDK_APP_OUT
ifeq (null,$(NDK_PROJECT_PATH))
$(call __ndk_info,NDK_PROJECT_PATH==null. Please explicitly set NDK_OUT to directory for all generated intermediate files.)
$(call __ndk_error,Aborting.)
endif
NDK_APP_OUT := $(NDK_PROJECT_PATH)/obj
endif
$(call ndk_log,Ouput path for intermediate files: $(NDK_APP_OUT))
# Place all generated library files here. This is rarely changed since aapt expects the default libs/
NDK_APP_LIBS_OUT := $(strip $(NDK_LIBS_OUT))
ifndef NDK_APP_LIBS_OUT
ifeq (null,$(NDK_PROJECT_PATH))
$(call __ndk_info,NDK_PROJECT_PATH==null. Please explicitly set NDK_LIBS_OUT to directory for generated library files.)
$(call __ndk_error,Aborting.)
endif
NDK_APP_LIBS_OUT := $(NDK_PROJECT_PATH)/libs
endif
$(call ndk_log,Ouput path for generated library files: $(NDK_APP_LIBS_OUT))
# Fake an application named 'local'
_app := local
_application_mk := $(NDK_APPLICATION_MK)
NDK_APPS := $(_app)
include $(BUILD_SYSTEM)/add-application.mk
# For cygwin, put generated dependency conversion script here
# Do not define this variable for other host platforms
#
ifeq ($(HOST_OS),cygwin)
NDK_DEPENDENCIES_CONVERTER := $(NDK_APP_OUT)/convert-dependencies.sh
endif
# If a goal is DUMP_xxx then we dump a variable xxx instead
# of building anything
#
MAKECMDGOALS := $(filter-out DUMP_$(DUMP_VAR),$(MAKECMDGOALS))
include $(BUILD_SYSTEM)/setup-imports.mk
ifneq (,$(DUMP_VAR))
# We only support a single DUMP_XXX goal at a time for now.
ifneq ($(words $(DUMP_VAR)),1)
$(call __ndk_error,!!TOO-MANY-DUMP-VARIABLES!!)
endif
$(foreach _app,$(NDK_APPS),\
$(eval include $(BUILD_SYSTEM)/setup-app.mk)\
)
DUMP_$(DUMP_VAR):
@echo $($(DUMP_VAR))
else
# Build it
include $(BUILD_SYSTEM)/build-all.mk
endif
================================================
FILE: build/core/build-module.mk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
# This file is used to record the LOCAL_XXX definitions of a given
# module. It is included by BUILD_STATIC_LIBRARY, BUILD_SHARED_LIBRARY
# and others.
#
LOCAL_MODULE_CLASS := $(strip $(LOCAL_MODULE_CLASS))
ifndef LOCAL_MODULE_CLASS
$(call __ndk_info,$(LOCAL_MAKEFILE):$(LOCAL_MODULE): LOCAL_MODULE_CLASS definition is missing !)
$(call __ndk_error,Aborting)
endif
$(if $(call module-class-check,$(LOCAL_MODULE_CLASS)),,\
$(call __ndk_info,$(LOCAL_MAKEFILE):$(LOCAL_MODULE): Unknown LOCAL_MODULE_CLASS value: $(LOCAL_MODULE_CLASS))\
$(call __ndk_error,Aborting)\
)
$(call module-add,$(LOCAL_MODULE))
================================================
FILE: build/core/build-shared-library.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# this file is included from Android.mk files to build a target-specific
# shared library
#
LOCAL_BUILD_SCRIPT := BUILD_SHARED_LIBRARY
LOCAL_MAKEFILE := $(local-makefile)
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
$(call check-LOCAL_MODULE_FILENAME)
# we are building target objects
my := TARGET_
$(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION))
$(call handle-module-built)
LOCAL_MODULE_CLASS := SHARED_LIBRARY
include $(BUILD_SYSTEM)/build-module.mk
================================================
FILE: build/core/build-static-library.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# this file is included from Android.mk files to build a target-specific
# static library
#
LOCAL_BUILD_SCRIPT := BUILD_STATIC_LIBRARY
LOCAL_MAKEFILE := $(local-makefile)
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
# we are building target objects
my := TARGET_
$(call handle-module-filename,lib,$(TARGET_LIB_EXTENSION))
$(call handle-module-built)
LOCAL_MODULE_CLASS := STATIC_LIBRARY
include $(BUILD_SYSTEM)/build-module.mk
================================================
FILE: build/core/check-cygwin-make.mk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Check that we have a Cygwin-compatible make.
#
# For some reason, a lot of application developers on Windows
# have another GNU Make installed in their path, that fails
# miserably with our build scripts. If we can detect this use
# case, early, we will be able to dump a human-readable error
# message with some help to fix the issue.
#
.PHONY: all
all:
# Get the cygwin-specific path to the make executable
# (e.g. /cygdrive/c/cygwin/usr/bin/make), then strip the
# .exe suffix, if any.
#
CYGWIN_MAKE := $(shell cygpath --unix --absolute $(firstword $(MAKE)))
CYGWIN_MAKE := $(CYGWIN_MAKE:%.exe=%)
# Now try to find it on the file system, a non-cygwin compatible
# GNU Make, even if launched from a Cygwin shell, will not
#
SELF_MAKE := $(strip $(wildcard $(CYGWIN_MAKE).exe))
ifeq ($(SELF_MAKE),)
$(error Android NDK: $(firstword $(MAKE)) is not cygwin-compatible)
endif
# that's all
================================================
FILE: build/core/clear-vars.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# this file is included repeatedly from Android.mk files in order to clean
# the module-specific variables from the environment,
$(call clear-src-tags)
# Note: As a special exception, we don't want to clear LOCAL_PATH
$(call clear-vars, $(filter-out LOCAL_PATH,$(modules-LOCALS:%=LOCAL_%)))
# strip LOCAL_PATH
LOCAL_PATH := $(strip $(LOCAL_PATH))
================================================
FILE: build/core/default-application.mk
================================================
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This is the default Application.mk that is being used for applications
# that don't provide $PROJECT_PATH/jni/Application.mk
#
APP_PROJECT_PATH := $(NDK_PROJECT_PATH)
# We expect the build script to be located here
ifndef APP_BUILD_SCRIPT
ifeq (null,$(NDK_PROJECT_PATH))
$(call __ndk_info,NDK_PROJECT_PATH==null. Please explicitly set APP_BUILD_SCRIPT.)
$(call __ndk_error,Aborting.)
endif
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/jni/Android.mk
endif
================================================
FILE: build/core/default-build-commands.mk
================================================
# The following definitions are the defaults used by all toolchains.
# This is included in setup-toolchain.mk just before the inclusion
# of the toolchain's specific setup.mk file which can then override
# these definitions.
#
# These flags are used to ensure that a binary doesn't reference undefined
# flags.
TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
# Return the list of object, static libraries and shared libraries as they
# must appear on the final static linker command (order is important).
#
# This can be over-ridden by a specific toolchain. Note that by default
# we always put libgcc _after_ all static libraries and _before_ shared
# libraries. This ensures that any libgcc function used by the final
# executable will be copied into it. Otherwise, it could contain
# symbol references to the same symbols as exported by shared libraries
# and this causes binary compatibility problems when they come from
# system libraries (e.g. libc.so and others).
#
# IMPORTANT: The result must use the host path convention.
#
# $1: object files
# $2: static libraries
# $3: whole static libraries
# $4: shared libraries
#
TARGET-get-linker-objects-and-libraries = \
$(call host-path, $1) \
$(call link-whole-archives,$3) \
$(call host-path, $2) $(PRIVATE_LIBGCC) $(call host-path, $4) \
# These flags are used to enforce the NX (no execute) security feature in the
# generated machine code. This adds a special section to the generated shared
# libraries that instruct the Linux kernel to disable code execution from
# the stack and the heap.
TARGET_NO_EXECUTE_CFLAGS := -Wa,--noexecstack
TARGET_NO_EXECUTE_LDFLAGS := -Wl,-z,noexecstack
# These flags disable the above security feature
TARGET_DISABLE_NO_EXECUTE_CFLAGS := -Wa,--execstack
TARGET_DISABLE_NO_EXECUTE_LDFLAGS := -Wl,-z,execstack
# These flags are used to mark certain regions of the resulting
# executable or shared library as being read-only after the dynamic
# linker has run. This makes GOT overwrite security attacks harder to
# exploit.
TARGET_RELRO_LDFLAGS := -Wl,-z,relro -Wl,-z,now
# These flags disable the above security feature
TARGET_DISABLE_RELRO_LDFLAGS := -Wl,-z,norelro -Wl,-z,lazy
# This flag are used to provide compiler protection against format
# string vulnerabilities.
TARGET_FORMAT_STRING_CFLAGS := -Wformat -Werror=format-security
# This flag disables the above security checks
TARGET_DISABLE_FORMAT_STRING_CFLAGS := -Wno-error=format-security
# NOTE: Ensure that TARGET_LIBGCC is placed after all private objects
# and static libraries, but before any other library in the link
# command line when generating shared libraries and executables.
#
# This ensures that all libgcc.a functions required by the target
# will be included into it, instead of relying on what's available
# on other libraries like libc.so, which may change between system
# releases due to toolchain or library changes.
#
define cmd-build-shared-library
$(PRIVATE_CXX) \
-Wl,-soname,$(notdir $(LOCAL_BUILT_MODULE)) \
-shared \
--sysroot=$(call host-path,$(PRIVATE_SYSROOT_LINK)) \
$(PRIVATE_LINKER_OBJECTS_AND_LIBRARIES) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_LDLIBS) \
-o $(call host-path,$(LOCAL_BUILT_MODULE))
endef
# zuav: with /usr/lib mips64 fails to link when objs and libs are built with default options
ifneq ($(filter mips64,$(TARGET_ARCH_ABI)),)
USR_LIB_SUFFIX := /usr/lib64
else
USR_LIB_SUFFIX := /usr/lib
endif
# The following -rpath-link= are needed for ld.bfd (default for MIPS) when
# linking executables to supress warning about missing symbol from libraries not
# directly needed. ld.gold (default for ARM and X86) doesn't emulate this buggy
# behavior, and ignores -rpath-link completely.
define cmd-build-executable
$(PRIVATE_CXX) \
-Wl,--gc-sections \
-Wl,-z,nocopyreloc \
--sysroot=$(call host-path,$(PRIVATE_SYSROOT_LINK)) \
-Wl,-rpath-link=$(call host-path,$(PRIVATE_SYSROOT_LINK)$(USR_LIB_SUFFIX)) \
-Wl,-rpath-link=$(call host-path,$(TARGET_OUT)) \
$(PRIVATE_LINKER_OBJECTS_AND_LIBRARIES) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_LDLIBS) \
-o $(call host-path,$(LOCAL_BUILT_MODULE))
endef
define cmd-build-static-library
$(PRIVATE_AR) $(call host-path,$(LOCAL_BUILT_MODULE)) $(PRIVATE_AR_OBJECTS)
endef
# The strip command is only used for shared libraries and executables.
# It is thus safe to use --strip-unneeded, which is only dangerous
# when applied to static libraries or object files.
cmd-strip = $(PRIVATE_STRIP) --strip-unneeded $(call host-path,$1)
# The command objcopy --add-gnu-debuglink= will be needed for Valgrind
cmd-add-gnu-debuglink = $(PRIVATE_OBJCOPY) --add-gnu-debuglink=$(strip $(call host-path,$2)) $(call host-path,$1)
TARGET_LIBGCC = -lgcc
TARGET_LDLIBS := -lc -lm
#
# IMPORTANT: The following definitions must use lazy assignment because
# the value of TOOLCHAIN_PREFIX or TARGET_CFLAGS can be changed later by
# the toolchain's setup.mk script.
#
ifneq ($(findstring ccc-analyzer,$(CC)),)
TARGET_CC = $(CC)
else
TARGET_CC = $(TOOLCHAIN_PREFIX)gcc
endif
TARGET_CFLAGS =
TARGET_CONLYFLAGS =
ifneq ($(findstring c++-analyzer,$(CXX)),)
TARGET_CXX = $(CXX)
else
TARGET_CXX = $(TOOLCHAIN_PREFIX)g++
endif
TARGET_CXXFLAGS = $(TARGET_CFLAGS) -fno-exceptions -fno-rtti
TARGET_RS_CC = $(RENDERSCRIPT_TOOLCHAIN_PREFIX)llvm-rs-cc
TARGET_RS_BCC = $(RENDERSCRIPT_TOOLCHAIN_PREFIX)bcc_compat
TARGET_RS_FLAGS = -Wall -Werror
ifeq (,$(findstring 64,$(TARGET_ARCH_ABI)))
TARGET_RS_FLAGS += -m32
else
TARGET_RS_FLAGS += -m64
endif
TARGET_ASM = $(HOST_PREBUILT)/yasm
TARGET_ASMFLAGS =
TARGET_LD = $(TOOLCHAIN_PREFIX)ld
TARGET_LDFLAGS :=
# Use *-gcc-ar instead of *-ar for better LTO support, except for
# gcc4.6 which doesn't have gcc-ar
ifneq (clang,$(NDK_TOOLCHAIN_VERSION))
TARGET_AR = $(TOOLCHAIN_PREFIX)gcc-ar
else
TARGET_AR = $(TOOLCHAIN_PREFIX)ar
endif
TARGET_ARFLAGS := crsD
TARGET_STRIP = $(TOOLCHAIN_PREFIX)strip
TARGET_OBJCOPY = $(TOOLCHAIN_PREFIX)objcopy
TARGET_OBJ_EXTENSION := .o
TARGET_LIB_EXTENSION := .a
TARGET_SONAME_EXTENSION := .so
================================================
FILE: build/core/defaults.mk
================================================
DEFAULT_CXX_STANDARD := gnu++11
DEFAULT_LIBSTDCXX := gnustl
DEFAULT_LIBOBJC := cocotron
================================================
FILE: build/core/definitions-graph.mk
================================================
# Copyright (C) 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Definitions of various graph-related generic functions, used by
# ndk-build internally.
#
# Coding style note:
#
# All internal variables in this file begin with '_ndk_mod_'
# All internal functions in this file begin with '-ndk-mod-'
#
# Set this to true if you want to debug the functions here.
_ndk_mod_debug := $(if $(NDK_DEBUG_MODULES),true)
_ndk_topo_debug := $(if $(NDK_DEBUG_TOPO),true)
# Use $(call -ndk-mod-debug,<message>) to print a debug message only
# if _ndk_mod_debug is set to 'true'. Useful for debugging the functions
# available here.
#
ifeq (true,$(_ndk_mod_debug))
-ndk-mod-debug = $(info $1)
else
-ndk-mod-debug := $(empty)
endif
ifeq (true,$(_ndk_topo_debug))
-ndk-topo-debug = $(info $1)
else
-ndk-topo-debug = $(empty)
endif
#######################################################################
# Filter a list of module with a predicate function
# $1: list of module names.
# $2: predicate function, will be called with $(call $2,<name>), if the
# result is not empty, <name> will be added to the result.
# Out: subset of input list, where each item passes the predicate.
#######################################################################
-ndk-mod-filter = $(strip \
$(foreach _ndk_mod_filter_n,$1,\
$(if $(call $2,$(_ndk_mod_filter_n)),$(_ndk_mod_filter_n))\
))
-test-ndk-mod-filter = \
$(eval -local-func = $$(call seq,foo,$$1))\
$(call test-expect,,$(call -ndk-mod-filter,,-local-func))\
$(call test-expect,foo,$(call -ndk-mod-filter,foo,-local-func))\
$(call test-expect,foo,$(call -ndk-mod-filter,foo bar,-local-func))\
$(call test-expect,foo foo,$(call -ndk-mod-filter,aaa foo bar foo,-local-func))\
$(eval -local-func = $$(call sne,foo,$$1))\
$(call test-expect,,$(call -ndk-mod-filter,,-local-func))\
$(call test-expect,,$(call -ndk-mod-filter,foo,-local-func))\
$(call test-expect,bar,$(call -ndk-mod-filter,foo bar,-local-func))\
$(call test-expect,aaa bar,$(call -ndk-mod-filter,aaa foo bar,-local-func))
#######################################################################
# Filter out a list of modules with a predicate function
# $1: list of module names.
# $2: predicate function, will be called with $(call $2,<name>), if the
# result is not empty, <name> will be added to the result.
# Out: subset of input list, where each item doesn't pass the predicate.
#######################################################################
-ndk-mod-filter-out = $(strip \
$(foreach _ndk_mod_filter_n,$1,\
$(if $(call $2,$(_ndk_mod_filter_n)),,$(_ndk_mod_filter_n))\
))
-test-ndk-mod-filter-out = \
$(eval -local-func = $$(call seq,foo,$$1))\
$(call test-expect,,$(call -ndk-mod-filter-out,,-local-func))\
$(call test-expect,,$(call -ndk-mod-filter-out,foo,-local-func))\
$(call test-expect,bar,$(call -ndk-mod-filter-out,foo bar,-local-func))\
$(call test-expect,aaa bar,$(call -ndk-mod-filter-out,aaa foo bar foo,-local-func))\
$(eval -local-func = $$(call sne,foo,$$1))\
$(call test-expect,,$(call -ndk-mod-filter-out,,-local-func))\
$(call test-expect,foo,$(call -ndk-mod-filter-out,foo,-local-func))\
$(call test-expect,foo,$(call -ndk-mod-filter-out,foo bar,-local-func))\
$(call test-expect,foo foo,$(call -ndk-mod-filter-out,aaa foo bar foo,-local-func))
#######################################################################
# Find the first item in a list that checks a valid predicate.
# $1: list of names.
# $2: predicate function, will be called with $(call $2,<name>), if the
# result is not empty, <name> will be added to the result.
# Out: subset of input list.
#######################################################################
-ndk-mod-find-first = $(firstword $(call -ndk-mod-filter,$1,$2))
-test-ndk-mod-find-first.empty = \
$(eval -local-pred = $$(call seq,foo,$$1))\
$(call test-expect,,$(call -ndk-mod-find-first,,-local-pred))\
$(call test-expect,,$(call -ndk-mod-find-first,bar,-local-pred))
-test-ndk-mod-find-first.simple = \
$(eval -local-pred = $$(call seq,foo,$$1))\
$(call test-expect,foo,$(call -ndk-mod-find-first,foo,-local-pred))\
$(call test-expect,foo,$(call -ndk-mod-find-first,aaa foo bar,-local-pred))\
$(call test-expect,foo,$(call -ndk-mod-find-first,aaa foo foo bar,-local-pred))
########################################################################
# Many tree walking operations require setting a 'visited' flag on
# specific graph nodes. The following helper functions help implement
# this while hiding details to the callers.
#
# Technical note:
# _ndk_mod_tree_visited.<name> will be 'true' if the node was visited,
# or empty otherwise.
#
# _ndk_mod_tree_visitors lists all visited nodes, used to clean all
# _ndk_mod_tree_visited.<name> variables in -ndk-mod-tree-setup-visit.
#
#######################################################################
# Call this before tree traversal.
-ndk-mod-tree-setup-visit = \
$(foreach _ndk_mod_tree_visitor,$(_ndk_mod_tree_visitors),\
$(eval _ndk_mod_tree_visited.$$(_ndk_mod_tree_visitor) :=))\
$(eval _ndk_mod_tree_visitors :=)
# Returns non-empty if a node was visited.
-ndk-mod-tree-is-visited = \
$(_ndk_mod_tree_visited.$1)
# Set the visited state of a node to 'true'
-ndk-mod-tree-set-visited = \
$(eval _ndk_mod_tree_visited.$1 := true)\
$(eval _ndk_mod_tree_visitors += $1)
########################################################################
# Many graph walking operations require a work queue and computing
# dependencies / children nodes. Here are a few helper functions that
# can be used to make their code clearer. This uses a few global
# variables that should be defined as follows during the operation:
#
# _ndk_mod_module current graph node name.
# _ndk_mod_wq current node work queue.
# _ndk_mod_list current result (list of nodes).
# _ndk_mod_depends current graph node's children.
# you must call -ndk-mod-get-depends to set this.
#
#######################################################################
# Pop first item from work-queue into _ndk_mod_module.
-ndk-mod-pop-first = \
$(eval _ndk_mod_module := $$(call first,$$(_ndk_mod_wq)))\
$(eval _ndk_mod_wq := $$(call rest,$$(_ndk_mod_wq)))
-test-ndk-mod-pop-first = \
$(eval _ndk_mod_wq := A B C)\
$(call -ndk-mod-pop-first)\
$(call test-expect,A,$(_ndk_mod_module))\
$(call test-expect,B C,$(_ndk_mod_wq))\
# Push list of items at the back of the work-queue.
-ndk-mod-push-back = \
$(eval _ndk_mod_wq := $(strip $(_ndk_mod_wq) $1))
-test-ndk-mod-push-back = \
$(eval _ndk_mod_wq := A B C)\
$(call -ndk-mod-push-back, D E)\
$(call test-expect,A B C D E,$(_ndk_mod_wq))
# Set _ndk_mod_depends to the direct dependencies of _ndk_mod_module
-ndk-mod-get-depends = \
$(eval _ndk_mod_depends := $$(call $$(_ndk_mod_deps_func),$$(_ndk_mod_module)))
# Set _ndk_mod_depends to the direct dependencies of _ndk_mod_module that
# are not already in _ndk_mod_list.
-ndk-mod-get-new-depends = \
$(call -ndk-mod-get-depends)\
$(eval _ndk_mod_depends := $$(filter-out $$(_ndk_mod_list),$$(_ndk_mod_depends)))
##########################################################################
# Compute the transitive closure
# $1: list of modules.
# $2: dependency function, $(call $2,<module>) should return all the
# module that <module> depends on.
# Out: transitive closure of all modules from those in $1. Always includes
# the modules in $1. Order is random.
#
# Implementation note:
# we use the -ndk-mod-tree-xxx functions to flag 'visited' nodes
# in the graph. A node is visited once it has been put into the work
# queue. For each item in the work queue, get the dependencies and
# append all those that were not visited yet.
#######################################################################
-ndk-mod-get-closure = $(strip \
$(eval _ndk_mod_wq :=)\
$(eval _ndk_mod_list :=)\
$(eval _ndk_mod_deps_func := $2)\
$(call -ndk-mod-tree-setup-visit)\
$(foreach _ndk_mod_module,$1,\
$(call -ndk-mod-closure-visit,$(_ndk_mod_module))\
)\
$(call -ndk-mod-closure-recursive)\
$(eval _ndk_mod_deps :=)\
$(_ndk_mod_list)\
)
# Used internally to visit a new node during -ndk-mod-get-closure.
# This appends the node to the work queue, and set its 'visit' flag.
-ndk-mod-closure-visit = \
$(call -ndk-mod-push-back,$1)\
$(call -ndk-mod-tree-set-visited,$1)
-ndk-mod-closure-recursive = \
$(call -ndk-mod-pop-first)\
$(eval _ndk_mod_list += $$(_ndk_mod_module))\
$(call -ndk-mod-get-depends)\
$(foreach _ndk_mod_dep,$(_ndk_mod_depends),\
$(if $(call -ndk-mod-tree-is-visited,$(_ndk_mod_dep)),,\
$(call -ndk-mod-closure-visit,$(_ndk_mod_dep))\
)\
)\
$(if $(_ndk_mod_wq),$(call -ndk-mod-closure-recursive))
-test-ndk-mod-get-closure.empty = \
$(eval -local-deps = $$($$1_depends))\
$(call test-expect,,$(call -ndk-mod-get-closure,,-local-deps))
-test-ndk-mod-get-closure.single = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends :=)\
$(call test-expect,A,$(call -ndk-mod-get-closure,A,-local-deps))
-test-ndk-mod-get-closure.double = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends :=)\
$(call test-expect,A B,$(call -ndk-mod-get-closure,A,-local-deps))
-test-ndk-mod-get-closure.circular-deps = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends := C)\
$(eval C_depends := A)\
$(call test-expect,A B C,$(call -ndk-mod-get-closure,A,-local-deps))
-test-ndk-mod-get-closure.ABCDE = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends := D)\
$(eval C_depends := D E)\
$(eval D_depends :=)\
$(eval E_depends :=)\
$(call test-expect,A B C D E,$(call -ndk-mod-get-closure,A,-local-deps))
#########################################################################
# For topological sort, we need to count the number of incoming edges
# in each graph node. The following helper functions implement this and
# hide implementation details.
#
# Count the number of incoming edges for each node during topological
# sort with a string of xxxxs. I.e.:
# 0 edge -> ''
# 1 edge -> 'x'
# 2 edges -> 'xx'
# 3 edges -> 'xxx'
# etc.
#########################################################################
# zero the incoming edge counter for module $1
-ndk-mod-topo-zero-incoming = \
$(eval _ndk_mod_topo_incoming.$1 :=)
# increment the incoming edge counter for module $1
-ndk-mod-topo-increment-incoming = \
$(eval _ndk_mod_topo_incoming.$1 := $$(_ndk_mod_topo_incoming.$1)x)
# decrement the incoming edge counter for module $1
-ndk-mod-topo-decrement-incoming = \
$(eval _ndk_mod_topo_incoming.$1 := $$(_ndk_mod_topo_incoming.$1:%x=%))
# return non-empty if the module $1's incoming edge counter is > 0
-ndk-mod-topo-has-incoming = $(_ndk_mod_topo_incoming.$1)
# Find first node in a list that has zero incoming edges.
# $1: list of nodes
# Out: first node that has zero incoming edges, or empty.
-ndk-mod-topo-find-first-zero-incoming = $(firstword $(call -ndk-mod-filter-out,$1,-ndk-mod-topo-has-incoming))
# Only use for debugging:
-ndk-mod-topo-dump-count = \
$(foreach _ndk_mod_module,$1,\
$(info .. $(_ndk_mod_module) incoming='$(_ndk_mod_topo_incoming.$(_ndk_mod_module))'))
#########################################################################
# Return the topologically ordered closure of all nodes from a top-level
# one. This means that a node A, in the result, will always appear after
# node B if A depends on B. Assumes that the graph is a DAG (if there are
# circular dependencies, this property cannot be guaranteed, but at least
# the function should not loop infinitely).
#
# $1: top-level node name.
# $2: dependency function, i.e. $(call $2,<name>) returns the children
# nodes for <name>.
# Return: list of nodes, include $1, which will always be the first.
#########################################################################
-ndk-mod-get-topo-list = $(strip \
$(eval _ndk_mod_top_module := $1)\
$(eval _ndk_mod_deps_func := $2)\
$(eval _ndk_mod_nodes := $(call -ndk-mod-get-closure,$1,$2))\
$(call -ndk-mod-topo-count,$(_ndk_mod_nodes))\
$(eval _ndk_mod_list :=)\
$(eval _ndk_mod_wq := $(call -ndk-mod-topo-find-first-zero-incoming,$(_ndk_mod_nodes)))\
$(call -ndk-mod-topo-sort)\
$(_ndk_mod_list) $(_ndk_mod_nodes)\
)
# Given a closure list of nodes, count their incoming edges.
# $1: list of nodes, must be a graph closure.
-ndk-mod-topo-count = \
$(foreach _ndk_mod_module,$1,\
$(call -ndk-mod-topo-zero-incoming,$(_ndk_mod_module)))\
$(foreach _ndk_mod_module,$1,\
$(call -ndk-mod-get-depends)\
$(foreach _ndk_mod_dep,$(_ndk_mod_depends),\
$(call -ndk-mod-topo-increment-incoming,$(_ndk_mod_dep))\
)\
)
-ndk-mod-topo-sort = \
$(call -ndk-topo-debug,-ndk-mod-topo-sort: wq='$(_ndk_mod_wq)' list='$(_ndk_mod_list)')\
$(call -ndk-mod-pop-first)\
$(if $(_ndk_mod_module),\
$(eval _ndk_mod_list += $(_ndk_mod_module))\
$(eval _ndk_mod_nodes := $(filter-out $(_ndk_mod_module),$(_ndk_mod_nodes)))\
$(call -ndk-mod-topo-decrement-incoming,$(_ndk_mod_module))\
$(call -ndk-mod-get-depends)\
$(call -ndk-topo-debug,-ndk-mod-topo-sort: deps='$(_ndk_mod_depends)')\
$(foreach _ndk_mod_dep,$(_ndk_mod_depends),\
$(call -ndk-mod-topo-decrement-incoming,$(_ndk_mod_dep))\
$(if $(call -ndk-mod-topo-has-incoming,$(_ndk_mod_dep)),,\
$(call -ndk-mod-push-back,$(_ndk_mod_dep))\
)\
)\
$(call -ndk-mod-topo-sort)\
)
-test-ndk-mod-get-topo-list.empty = \
$(eval -local-deps = $$($$1_depends))\
$(call test-expect,,$(call -ndk-mod-get-topo-list,,-local-deps))
-test-ndk-mod-get-topo-list.single = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends :=)\
$(call test-expect,A,$(call -ndk-mod-get-topo-list,A,-local-deps))
-test-ndk-mod-get-topo-list.no-infinite-loop = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends := C)\
$(eval C_depends := A)\
$(call test-expect,A B C,$(call -ndk-mod-get-topo-list,A,-local-deps))
-test-ndk-mod-get-topo-list.ABC = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends :=)\
$(eval C_depends := B)\
$(call test-expect,A C B,$(call -ndk-mod-get-topo-list,A,-local-deps))
-test-ndk-mod-get-topo-list.ABCD = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends := D)\
$(eval C_depends := B)\
$(eval D_depends :=)\
$(call test-expect,A C B D,$(call -ndk-mod-get-topo-list,A,-local-deps))
-test-ndk-mod-get-topo-list.ABC.circular = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends := C)\
$(eval C_depends := B)\
$(call test-expect,A B C,$(call -ndk-mod-get-topo-list,A,-local-deps))
#########################################################################
# Return the topologically ordered closure of all dependencies from a
# top-level node.
#
# $1: top-level node name.
# $2: dependency function, i.e. $(call $2,<name>) returns the children
# nodes for <name>.
# Return: list of nodes, include $1, which will never be included.
#########################################################################
-ndk-mod-get-topological-depends = $(call rest,$(call -ndk-mod-get-topo-list,$1,$2))
-test-ndk-mod-get-topological-depends.simple = \
$(eval -local-get-deps = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends :=)\
$(eval topo_deps := $$(call -ndk-mod-get-topological-depends,A,-local-get-deps))\
$(call test-expect,B,$(topo_deps),topo dependencies)
-test-ndk-mod-get-topological-depends.ABC = \
$(eval -local-get-deps = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends :=)\
$(eval C_depends := B)\
$(eval bfs_deps := $$(call -ndk-mod-get-bfs-depends,A,-local-get-deps))\
$(eval topo_deps := $$(call -ndk-mod-get-topological-depends,A,-local-get-deps))\
$(call test-expect,B C,$(bfs_deps),dfs dependencies)\
$(call test-expect,C B,$(topo_deps),topo dependencies)
-test-ndk-mod-get-topological-depends.circular = \
$(eval -local-get-deps = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends := C)\
$(eval C_depends := B)\
$(eval bfs_deps := $$(call -ndk-mod-get-bfs-depends,A,-local-get-deps))\
$(eval topo_deps := $$(call -ndk-mod-get-topological-depends,A,-local-get-deps))\
$(call test-expect,B C,$(bfs_deps),dfs dependencies)\
$(call test-expect,B C,$(topo_deps),topo dependencies)
#########################################################################
# Return breadth-first walk of a graph, starting from an arbitrary
# node.
#
# This performs a breadth-first walk of the graph and will return a
# list of nodes. Note that $1 will always be the first in the list.
#
# $1: root node name.
# $2: dependency function, i.e. $(call $2,<name>) returns the nodes
# that <name> depends on.
# Result: list of dependent modules, $1 will be part of it.
#########################################################################
-ndk-mod-get-bfs-list = $(strip \
$(eval _ndk_mod_wq := $(call strip-lib-prefix,$1)) \
$(eval _ndk_mod_deps_func := $2)\
$(eval _ndk_mod_list :=)\
$(call -ndk-mod-tree-setup-visit)\
$(call -ndk-mod-tree-set-visited,$(_ndk_mod_wq))\
$(call -ndk-mod-bfs-recursive) \
$(_ndk_mod_list))
# Recursive function used to perform a depth-first scan.
# Must initialize _ndk_mod_list, _ndk_mod_field, _ndk_mod_wq
# before calling this.
-ndk-mod-bfs-recursive = \
$(call -ndk-mod-debug,-ndk-mod-bfs-recursive wq='$(_ndk_mod_wq)' list='$(_ndk_mod_list)' visited='$(_ndk_mod_tree_visitors)')\
$(call -ndk-mod-pop-first)\
$(eval _ndk_mod_list += $$(_ndk_mod_module))\
$(call -ndk-mod-get-depends)\
$(call -ndk-mod-debug,. node='$(_ndk_mod_module)' deps='$(_ndk_mod_depends)')\
$(foreach _ndk_mod_child,$(_ndk_mod_depends),\
$(if $(call -ndk-mod-tree-is-visited,$(_ndk_mod_child)),,\
$(call -ndk-mod-tree-set-visited,$(_ndk_mod_child))\
$(call -ndk-mod-push-back,$(_ndk_mod_child))\
)\
)\
$(if $(_ndk_mod_wq),$(call -ndk-mod-bfs-recursive))
-test-ndk-mod-get-bfs-list.empty = \
$(eval -local-deps = $$($$1_depends))\
$(call test-expect,,$(call -ndk-mod-get-bfs-list,,-local-deps))
-test-ndk-mod-get-bfs-list.A = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends :=)\
$(call test-expect,A,$(call -ndk-mod-get-bfs-list,A,-local-deps))
-test-ndk-mod-get-bfs-list.ABCDEF = \
$(eval -local-deps = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends := D E)\
$(eval C_depends := F E)\
$(eval D_depends :=)\
$(eval E_depends :=)\
$(eval F_depends :=)\
$(call test-expect,A B C D E F,$(call -ndk-mod-get-bfs-list,A,-local-deps))
#########################################################################
# Return breadth-first walk of a graph, starting from an arbitrary
# node.
#
# This performs a breadth-first walk of the graph and will return a
# list of nodes. Note that $1 will _not_ be part of the list.
#
# $1: root node name.
# $2: dependency function, i.e. $(call $2,<name>) returns the nodes
# that <name> depends on.
# Result: list of dependent modules, $1 will not be part of it.
#########################################################################
-ndk-mod-get-bfs-depends = $(call rest,$(call -ndk-mod-get-bfs-list,$1,$2))
-test-ndk-mod-get-bfs-depends.simple = \
$(eval -local-deps-func = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends :=)\
$(eval deps := $$(call -ndk-mod-get-bfs-depends,A,-local-deps-func))\
$(call test-expect,B,$(deps))
-test-ndk-mod-get-bfs-depends.ABC = \
$(eval -local-deps-func = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends :=)\
$(eval C_depends := B)\
$(eval deps := $$(call -ndk-mod-get-bfs-depends,A,-local-deps-func))\
$(call test-expect,B C,$(deps))\
-test-ndk-mod-get-bfs-depends.ABCDE = \
$(eval -local-deps-func = $$($$1_depends))\
$(eval A_depends := B C)\
$(eval B_depends := D)\
$(eval C_depends := D E F)\
$(eval D_depends :=)\
$(eval E_depends :=)\
$(eval F_depends :=)\
$(eval deps := $$(call -ndk-mod-get-bfs-depends,A,-local-deps-func))\
$(call test-expect,B C D E F,$(deps))\
-test-ndk-mod-get-bfs-depends.loop = \
$(eval -local-deps-func = $$($$1_depends))\
$(eval A_depends := B)\
$(eval B_depends := A)\
$(eval deps := $$(call -ndk-mod-get-bfs-depends,A,-local-deps-func))\
$(call test-expect,B,$(deps))
================================================
FILE: build/core/definitions-host.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# These definitions contain a few host-specific functions. I.e. they are
# typically used to generate shell commands during the build and their
# implementation will depend on the value of the HOST_OS variable.
#
# -----------------------------------------------------------------------------
# Function : host-path
# Arguments: 1: file path
# Returns : file path, as understood by the host file system
# Usage : $(call host-path,<path>)
# Rationale: This function is used to translate Cygwin paths into
# Cygwin-specific ones. On other platforms, it will just
# return its argument.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),cygwin)
host-path = $(if $(strip $1),$(call cygwin-to-host-path,$1))
else
host-path = $1
endif
# -----------------------------------------------------------------------------
# Function : host-rm
# Arguments: 1: list of files
# Usage : $(call host-rm,<files>)
# Rationale: This function expands to the host-specific shell command used
# to remove some files.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-rm = \
$(eval __host_rm_files := $(foreach __host_rm_file,$1,$(subst /,\,$(wildcard $(__host_rm_file)))))\
$(if $(__host_rm_files),del /f/q $(__host_rm_files) >NUL 2>NUL)
else
host-rm = rm -f $1
endif
# -----------------------------------------------------------------------------
# Function : host-rmdir
# Arguments: 1: list of files or directories
# Usage : $(call host-rm,<files>)
# Rationale: This function expands to the host-specific shell command used
# to remove some files _and_ directories.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-rmdir = \
$(eval __host_rmdir_files := $(foreach __host_rmdir_file,$1,$(subst /,\,$(wildcard $(__host_rmdir_file)))))\
$(if $(__host_rmdir_files),del /f/s/q $(__host_rmdir_files) >NUL 2>NUL)
else
host-rmdir = rm -rf $1
endif
# -----------------------------------------------------------------------------
# Function : host-mkdir
# Arguments: 1: directory path
# Usage : $(call host-mkdir,<path>
# Rationale: This function expands to the host-specific shell command used
# to create a path if it doesn't exist.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-mkdir = md $(subst /,\,"$1") >NUL 2>NUL || rem
else
host-mkdir = mkdir -p $1
endif
# -----------------------------------------------------------------------------
# Function : host-cp
# Arguments: 1: source file
# 2: target file
# Usage : $(call host-cp,<src-file>,<dst-file>)
# Rationale: This function expands to the host-specific shell command used
# to copy a single file
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-cp = copy /b/y $(subst /,\,"$1" "$2") > NUL
else
host-cp = cp -f $1 $2
endif
# -----------------------------------------------------------------------------
# Function : host-mv
# Arguments: 1: source file
# 2: target file
# Usage : $(call host-mv,<src-file>,<dst-file>)
# Rationale: This function expands to the host-specific shell command used
# to move a single file
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-mv = move /y $(subst /,\,"$1" "$2") > NUL
else
host-mv = mv -f $1 $2
endif
# -----------------------------------------------------------------------------
# Function : host-install
# Arguments: 1: source file
# 2: target file
# Usage : $(call host-install,<src-file>,<dst-file>)
# Rationale: This function expands to the host-specific shell command used
# to install a file or directory, while preserving its timestamps
# (if possible).
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-install = copy /b/y $(subst /,\,"$1" "$2") > NUL
else
host-install = install -p $1 $2
endif
# -----------------------------------------------------------------------------
# Function : host-echo-build-step
# Arguments: 1: ABI
# 2: Step description (e.g. 'Compile C++', or 'StaticLibrary')
# Usage : ---->|$(call host-echo-build-step,Compile) ....other text...
# Rationale: This function expands to the host-specific shell command used
# to print the prefix of a given build step / command.
# -----------------------------------------------------------------------------
host-echo-build-step = @ $(HOST_ECHO) [$1] $(call left-justify-quoted-15,$2):
# -----------------------------------------------------------------------------
# Function : host-c-includes
# Arguments: 1: list of file paths (e.g. "foo bar")
# Returns : list of include compiler options (e.g. "-Ifoo -Ibar")
# Usage : $(call host-c-includes,<paths>)
# Rationale: This function is used to translate Cygwin paths into
# Cygwin-specific ones. On other platforms, it will just
# return its argument.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),cygwin)
host-c-includes = $(patsubst %,-I%,$(call host-path,$1))
else
host-c-includes = $(1:%=-I%)
endif
# -----------------------------------------------------------------------------
# Function : host-copy-if-differ
# Arguments: 1: source file
# 2: destination file
# Usage : $(call host-copy-if-differ,<src-file>,<dst-file>)
# Rationale: This function copy source file to destination file if contents are
# different.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
host-copy-if-differ = $(HOST_CMP) -s $1 $2 > NUL || copy /b/y $(subst /,\,"$1" "$2") > NUL
else
host-copy-if-differ = $(HOST_CMP) -s $1 $2 > /dev/null 2>&1 || cp -f $1 $2
endif
# -----------------------------------------------------------------------------
# Function : host-path-is-absolute
# Arguments: 1: file path
# Usage : $(call host-path-is-absolute,<path>)
# Rationale: This function returns a non-empty result if the input path is
# absolute on the host filesystem.
# -----------------------------------------------------------------------------
# On Windows, we need to take care drive prefix in file paths, e.g.:
# /foo -> top-level 'foo' directory on current drive.
# //bar/foo -> top-level 'foo' on network share 'bar'
# c:/foo -> top-level 'foo' directory on C drive.
# c:foo -> 'foo' subdirectory on C drive's current directory.
#
# Treat all of them as absolute. Filtering the first two cases is easy
# by simply looking at the first character. The other ones are more
# complicated and the simplest way is still to try all alphabet letters
# directly. Anything else involves very complicated GNU Make parsing
# voodoo.
ndk-windows-drive-letters := a b c d e f g h i j k l m n o p q r s t u v w x y z \
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ndk-windows-drive-patterns := $(foreach _drive,$(ndk-windows-drive-letters),$(_drive):%)
windows-path-is-absolute = $(if $(filter /% $(ndk-windows-drive-patterns),$(subst \,/,$1)),true)
ifeq ($(HOST_OS),windows)
host-path-is-absolute = $(call windows-path-is-absolute,$1)
else
host-path-is-absolute = $(if $(filter /%,$1),true)
endif
-test-host-path-is-absolute.relative-paths = \
$(call test-expect,,$(call host-path-is-absolute,foo))\
$(call test-expect,,$(call host-path-is-absolute,foo/bar))\
$(call test-expect,,$(call host-path-is-absolute,.))\
$(call test-expect,,$(call host-path-is-absolute,..))
-test-host-path-is-absolute.absolute-paths = \
$(call test-expect,true,$(call host-path-is-absolute,/))\
$(call test-expect,true,$(call host-path-is-absolute,/foo))\
$(call test-expect,true,$(call host-path-is-absolute,/foo/bar))\
$(call test-expect,true,$(call host-path-is-absolute,//foo))\
$(call test-expect,true,$(call host-path-is-absolute,/.))
-test-host-path-is-asbolute.windows-relative-paths = \
$(call test-expect,$(call windows-path-is-absolute,foo))\
$(call test-expect,$(call windows-path-is-absolute,foo/bar))\
$(call test-expect,$(call windows-path-is-absolute,.))\
$(call test-expect,$(call windows-path-is-absolute,..))
-test-host-path-is-asbolute.windows-absolute-paths = \
$(call test-expect,true,$(call windows-path-is-absolute,c:/))\
$(call test-expect,true,$(call windows-path-is-absolute,x:))\
$(call test-expect,true,$(call windows-path-is-absolute,K:foo))\
$(call test-expect,true,$(call windows-path-is-absolute,C:\Foo\Bar))\
$(call test-expect,true,$(call windows-path-is-absolute,\Foo))
================================================
FILE: build/core/definitions-tests.mk
================================================
# Copyright (C) 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Definitions for the Android NDK build system's internal unit tests.
#
#
# A function which names begin with -test- (e.g. -test-foo) is assumed
# to be an internal unit test. It will be run automatically by ndk-build
# if NDK_UNIT_TESTS is defined in your environment.
#
# Each test should call one of the following functions that will
# register a failure:
#
# $(call test-expect,<expected-value>,<actual-value>)
#
# This will check that <actual-value> is equal to <expected-value>.
# If not, this will print an error message and increment the failure
# counter.
#
# $(call test-assert,<expected-value>,<actual-value>)
#
# This is similar to test-expect, though it will abort the program
# immediately after displaying an error message.
#
# Here's an example that checks that the 'filter' function works correctly:
#
# -test-filter = \
# $(call test-expect,foo,$(filter bar,foo bar))
#
#
-ndk-test-start = \
$(eval _test_name := $1)\
$(eval _test_list += $1)\
$(eval _test_failed :=)\
$(info [$1 RUN])
# End current unit test.
#
-ndk-test-end = \
$(if $(_test_failed),\
$(info [$(_test_name) FAIL])$(error Aborting)\
$(eval _test_failures += $$(_test_name))\
,\
$(info [$(_test_name) OK])\
)
# Define NDK_UNIT_TESTS to 2 to dump each test-expect/assert check.
#
ifeq (2,$(NDK_UNIT_TESTS))
-ndk-test-log = $(info . $(_test_name): $1)
else
-ndk-test-log = $(empty)
endif
test-expect = \
$(call -ndk-test-log,expect '$2' == '$1')\
$(if $(call sne,$1,$2),\
$(info ERROR <$(_test_name)>:$3)\
$(info . expected value:'$1')\
$(info . actual value: '$2')\
$(eval _test_failed := true)\
)
test-assert = \
$(call -ndk-test-log,assert '$2' == '$1')\
$(if $(call sne,$1,$2),\
$(info ASSERT <$(_test_name)>:$3)\
$(info . expected value:'$1')\
$(info . actual value: '$2')\
$(eval _test_failed := true)\
$(error Aborting.)\
)
# Run all the tests, i.e. all functions that are defined with a -test-
# prefix will be called now in succession.
ndk-run-all-tests = \
$(info ================= STARTING NDK-BUILD UNIT TESTS =================)\
$(eval _test_list :=)\
$(eval _test_failures :=)\
$(foreach _test,$(filter -test-%,$(.VARIABLES)),\
$(call -ndk-test-start,$(_test))\
$(call $(_test))\
$(call -ndk-test-end)\
)\
$(eval _test_count := $$(words $$(_test_list)))\
$(eval _test_fail_count := $$(words $$(_test_failures)))\
$(if $(_test_failures),\
$(info @@@@@@@@@@@ FAILED $(_test_fail_count) of $(_test_count) NDK-BUILD UNIT TESTS @@@@@@@)\
$(foreach _test_name,$(_test_failures),\
$(info . $(_test_name)))\
,\
$(info =================== PASSED $(_test_count) NDK-BUILD UNIT TESTS =================)\
)
================================================
FILE: build/core/definitions-utils.mk
================================================
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Common utility functions.
#
# NOTE: All the functions here should be purely functional, i.e. avoid
# using global variables or depend on the file system / environment
# variables. This makes testing easier.
# -----------------------------------------------------------------------------
# Macro : empty
# Returns : an empty macro
# Usage : $(empty)
# -----------------------------------------------------------------------------
empty :=
# -----------------------------------------------------------------------------
# Macro : space
# Returns : a single space
# Usage : $(space)
# -----------------------------------------------------------------------------
space := $(empty) $(empty)
space4 := $(space)$(space)$(space)$(space)
# -----------------------------------------------------------------------------
# Macro : comma
# Returns : a single comma
# Usage : $(comma)
# -----------------------------------------------------------------------------
comma := ,
# -----------------------------------------------------------------------------
# Macro : colon
# Returns : a single colon
# Usage : $(colon)
# -----------------------------------------------------------------------------
colon := :
# -----------------------------------------------------------------------------
# Function : remove-duplicates
# Arguments: a list
# Returns : the list with duplicate items removed, order is preserved.
# Usage : $(call remove-duplicates, <LIST>)
# Note : This is equivalent to the 'uniq' function provided by GMSL,
# however this implementation is non-recursive and *much*
# faster. It will also not explode the stack with a lot of
# items like 'uniq' does.
# -----------------------------------------------------------------------------
remove-duplicates = $(strip \
$(eval __uniq_ret :=) \
$(foreach __uniq_item,$1,\
$(if $(findstring $(__uniq_item),$(__uniq_ret)),,\
$(eval __uniq_ret += $(__uniq_item))\
)\
)\
$(__uniq_ret))
-test-remove-duplicates = \
$(call test-expect,,$(call remove-duplicates))\
$(call test-expect,foo bar,$(call remove-duplicates,foo bar))\
$(call test-expect,foo bar,$(call remove-duplicates,foo bar foo bar))\
$(call test-expect,foo bar,$(call remove-duplicates,foo foo bar bar bar))
# -----------------------------------------------------------------------------
# Function : clear-vars
# Arguments: 1: list of variable names
# 2: file where the variable should be defined
# Returns : None
# Usage : $(call clear-vars, VAR1 VAR2 VAR3...)
# Rationale: Clears/undefines all variables in argument list
# -----------------------------------------------------------------------------
clear-vars = $(foreach __varname,$1,$(eval $(__varname) := $(empty)))
# -----------------------------------------------------------------------------
# Function : filter-by
# Arguments: 1: list
# 2: predicate function, will be called as $(call $2,<name>)
# and it this returns a non-empty value, then <name>
# will be appended to the result.
# Returns : elements of $1 that satisfy the predicate function $2
# -----------------------------------------------------------------------------
filter-by = $(strip \
$(foreach __filter_by_n,$1,\
$(if $(call $2,$(__filter_by_n)),$(__filter_by_n))))
-test-filter-by = \
$(eval -local-func = $$(call seq,foo,$$1))\
$(call test-expect,,$(call filter-by,,-local-func))\
$(call test-expect,foo,$(call filter-by,foo,-local-func))\
$(call test-expect,foo,$(call filter-by,foo bar,-local-func))\
$(call test-expect,foo foo,$(call filter-by,aaa foo bar foo,-local-func))\
$(eval -local-func = $$(call sne,foo,$$1))\
$(call test-expect,,$(call filter-by,,-local-func))\
$(call test-expect,,$(call filter-by,foo,-local-func))\
$(call test-expect,bar,$(call filter-by,foo bar,-local-func))\
$(call test-expect,aaa bar,$(call filter-by,aaa foo bar,-local-func))
# -----------------------------------------------------------------------------
# Function : filter-out-by
# Arguments: 1: list
# 2: predicate function, will be called as $(call $2,<name>)
# and it this returns an empty value, then <name>
# will be appended to the result.
# Returns : elements of $1 that do not satisfy the predicate function $2
# -----------------------------------------------------------------------------
filter-out-by = $(strip \
$(foreach __filter_out_by_n,$1,\
$(if $(call $2,$(__filter_out_by_n)),,$(__filter_out_by_n))))
-test-filter-out-by = \
$(eval -local-func = $$(call seq,foo,$$1))\
$(call test-expect,,$(call filter-out-by,,-local-func))\
$(call test-expect,,$(call filter-out-by,foo,-local-func))\
$(call test-expect,bar,$(call filter-out-by,foo bar,-local-func))\
$(call test-expect,aaa bar,$(call filter-out-by,aaa foo bar foo,-local-func))\
$(eval -local-func = $$(call sne,foo,$$1))\
$(call test-expect,,$(call filter-out-by,,-local-func))\
$(call test-expect,foo,$(call filter-out-by,foo,-local-func))\
$(call test-expect,foo,$(call filter-out-by,foo bar,-local-func))\
$(call test-expect,foo foo,$(call filter-out-by,aaa foo bar foo,-local-func))
# -----------------------------------------------------------------------------
# Function : find-first
# Arguments: 1: list
# 2: predicate function, will be called as $(call $2,<name>).
# Returns : the first item of $1 that satisfies the predicate.
# -----------------------------------------------------------------------------
find-first = $(firstword $(call filter-by,$1,$2))
-test-find-first.empty = \
$(eval -local-pred = $$(call seq,foo,$$1))\
$(call test-expect,,$(call find-first,,-local-pred))\
$(call test-expect,,$(call find-first,bar,-local-pred))
-test-find-first.simple = \
$(eval -local-pred = $$(call seq,foo,$$1))\
$(call test-expect,foo,$(call find-first,foo,-local-pred))\
$(call test-expect,foo,$(call find-first,aaa foo bar,-local-pred))\
$(call test-expect,foo,$(call find-first,aaa foo foo bar,-local-pred))
# -----------------------------------------------------------------------------
# Function : parent-dir
# Arguments: 1: path
# Returns : Parent dir or path of $1, with final separator removed.
# -----------------------------------------------------------------------------
ifeq ($(HOST_OS),windows)
# On Windows, defining parent-dir is a bit more tricky because the
# GNU Make $(dir ...) function doesn't return an empty string when it
# reaches the top of the directory tree, and we want to enforce this to
# avoid infinite loops.
#
# $(dir C:) -> C: (empty expected)
# $(dir C:/) -> C:/ (empty expected)
# $(dir C:\) -> C:\ (empty expected)
# $(dir C:/foo) -> C:/ (correct)
# $(dir C:\foo) -> C:\ (correct)
#
parent-dir = $(patsubst %/,%,$(strip \
$(eval __dir_node := $(patsubst %/,%,$(subst \,/,$1)))\
$(eval __dir_parent := $(dir $(__dir_node)))\
$(filter-out $1,$(__dir_parent))\
))
else
parent-dir = $(patsubst %/,%,$(dir $(1:%/=%)))
endif
-test-parent-dir = \
$(call test-expect,,$(call parent-dir))\
$(call test-expect,.,$(call parent-dir,foo))\
$(call test-expect,foo,$(call parent-dir,foo/bar))\
$(call test-expect,foo,$(call parent-dir,foo/bar/))
# -----------------------------------------------------------------------------
# Strip any 'lib' prefix in front of a given string.
#
# Function : strip-lib-prefix
# Arguments: 1: module name
# Returns : module name, without any 'lib' prefix if any
# Usage : $(call strip-lib-prefix,$(LOCAL_MODULE))
# -----------------------------------------------------------------------------
strip-lib-prefix = $(1:lib%=%)
-test-strip-lib-prefix = \
$(call test-expect,,$(call strip-lib-prefix,))\
$(call test-expect,foo,$(call strip-lib-prefix,foo))\
$(call test-expect,foo,$(call strip-lib-prefix,libfoo))\
$(call test-expect,nolibfoo,$(call strip-lib-prefix,nolibfoo))\
$(call test-expect,foolib,$(call strip-lib-prefix,foolib))\
$(call test-expect,foo bar,$(call strip-lib-prefix,libfoo libbar))
# -----------------------------------------------------------------------------
# Left-justify input string with spaces to fill a width of 15.
# Function: left-justify-quoted-15
# Arguments: 1: Input text
# Returns: A quoted string that can be used in command scripts to print
# the left-justified input with host-echo.
#
# Usage: ---->@$(call host-echo, $(call left-justify-quoted-15,$(_TEXT)): Do stuff)
# Where ----> is a TAB character.
# -----------------------------------------------------------------------------
left-justify-quoted-15 = $(call -left-justify,$1,xxxxxxxxxxxxxxx)
-test-left-justify-quoted-15 = \
$(call test-expect," ",$(call left-justify-quoted-15,))\
$(call test-expect,"Foo Bar ",$(call left-justify-quoted-15,Foo Bar))\
$(call test-expect,"Very long string over 15 characters wide",$(strip \
$(call left-justify-quoted-15,Very long string over 15 characters wide)))
# Used internally to compute a quoted left-justified text string.
# $1: Input string.
# $2: A series of contiguous x's, its length determines the full width to justify to.
# Return: A quoted string with the input text left-justified appropriately.
-left-justify = $(strip \
$(eval __lj_temp := $(subst $(space),x,$1))\
$(foreach __lj_a,$(__gmsl_characters),$(eval __lj_temp := $$(subst $$(__lj_a),x,$(__lj_temp))))\
$(eval __lj_margin := $$(call -justification-margin,$(__lj_temp),$2)))"$1$(subst x,$(space),$(__lj_margin))"
-test-left-justify = \
$(call test-expect,"",$(call -left-justify,,))\
$(call test-expect,"foo",$(call -left-justify,foo,xxx))\
$(call test-expect,"foo ",$(call -left-justify,foo,xxxx))\
$(call test-expect,"foo ",$(call -left-justify,foo,xxxxxx))\
$(call test-expect,"foo ",$(call -left-justify,foo,xxxxxxxxxxxx))\
$(call test-expect,"very long string",$(call -left-justify,very long string,xxx))\
# Used internally to compute a justification margin.
# Expects $1 to be defined to a string of consecutive x's (e.g. 'xxxx')
# Expects $2 to be defined to a maximum string of x's (e.g. 'xxxxxxxxx')
# Returns a string of x's such as $1 + $(result) is equal to $2
# If $1 is larger than $2, return empty string..
-justification-margin = $(strip \
$(if $2,\
$(if $1,\
$(call -justification-margin-inner,$1,$2),\
$2\
),\
$1))
-justification-margin-inner = $(if $(findstring $2,$1),,x$(call -justification-margin-inner,x$1,$2))
-test-justification-margin = \
$(call test-expect,,$(call -justification-margin,,))\
$(call test-expect,,$(call -justification-margin,xxx,xxx))\
$(call test-expect,xxxxxx,$(call -justification-margin,,xxxxxx))\
$(call test-expect,xxxxx,$(call -justification-margin,x,xxxxxx))\
$(call test-expect,xxxx,$(call -justification-margin,xx,xxxxxx))\
$(call test-expect,xxx,$(call -justification-margin,xxx,xxxxxx))\
$(call test-expect,xx,$(call -justification-margin,xxxx,xxxxxx))\
$(call test-expect,x,$(call -justification-margin,xxxxx,xxxxxx))\
$(call test-expect,,$(call -justification-margin,xxxxxx,xxxxxx))\
$(call test-expect,,$(call -justification-margin,xxxxxxxxxxx,xxxxxx))\
================================================
FILE: build/core/definitions.mk
================================================
# Copyright (C) 2009, 2014, 2015, 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Common definitions for the Android NDK build system
#
# We use the GNU Make Standard Library
include $(NDK_ROOT)/build/gmsl/gmsl
include $(BUILD_SYSTEM)/definitions-tests.mk
include $(BUILD_SYSTEM)/definitions-utils.mk
include $(BUILD_SYSTEM)/definitions-host.mk
include $(BUILD_SYSTEM)/definitions-graph.mk
define crystax-dir
$(strip \
$(call assert-defined,NDK_ROOT)\
$(eval __crystax_dir := $(call host-path,$(NDK_ROOT)/sources/crystax))\
$(if $(strip $(wildcard $(__crystax_dir))),\
$(__crystax_dir),\
$(call __ndk_info,Could not find libcrystax directory: $(call pretty-dir,$(__crystax_dir)) (broken NDK?))\
$(call __ndk_error,Aborting)\
)
)
endef
# -----------------------------------------------------------------------------
# Macro : this-makefile
# Returns : the name of the current Makefile in the inclusion stack
# Usage : $(this-makefile)
# -----------------------------------------------------------------------------
this-makefile = $(lastword $(MAKEFILE_LIST))
# -----------------------------------------------------------------------------
# Macro : local-makefile
# Returns : the name of the last parsed Android.mk file
# Usage : $(local-makefile)
# -----------------------------------------------------------------------------
local-makefile = $(lastword $(filter %Android.mk,$(MAKEFILE_LIST)))
# -----------------------------------------------------------------------------
# Function : assert-defined
# Arguments: 1: list of variable names
# Returns : None
# Usage : $(call assert-defined, VAR1 VAR2 VAR3...)
# Rationale: Checks that all variables listed in $1 are defined, or abort the
# build
# -----------------------------------------------------------------------------
assert-defined = $(foreach __varname,$(strip $1),\
$(if $(strip $($(__varname))),,\
$(call __ndk_error, Assertion failure: $(__varname) is not defined)\
)\
)
# -----------------------------------------------------------------------------
# Function : check-required-vars
# Arguments: 1: list of variable names
# 2: file where the variable(s) should be defined
# Returns : None
# Usage : $(call check-required-vars, VAR1 VAR2 VAR3..., <file>)
# Rationale: Checks that all required vars listed in $1 were defined by $2
# or abort the build with an error
# -----------------------------------------------------------------------------
check-required-vars = $(foreach __varname,$1,\
$(if $(strip $($(__varname))),,\
$(call __ndk_info, Required variable $(__varname) is not defined by $2)\
$(call __ndk_error,Aborting)\
)\
)
# The list of default C++ extensions supported by GCC.
default-c++-extensions := .cc .cp .cxx .cpp .CPP .c++ .C
# The list of default RS extensions supported by llvm-rs-cc
default-rs-extensions := .rs .fs
# -----------------------------------------------------------------------------
# Function : generate-dir
# Arguments: 1: directory path
# Returns : Generate a rule, but not dependency, to create a directory with
# host-mkdir.
# Usage : $(call generate-dir,<path>)
# -----------------------------------------------------------------------------
define ev-generate-dir
__ndk_dir := $1
ifeq (,$$(__ndk_dir_flag__$$(__ndk_dir)))
# Note that the following doesn't work because path in windows may contain
# ':' if ndk-build is called inside jni/ directory when path is expanded
# to full-path, eg. C:/path/to/project/jni/
#
# __ndk_dir_flag__$1 := true
#
__ndk_dir_flag__$$(__ndk_dir) := true
$1:
$$(hide) $$(call host-mkdir,$$@)
endif
endef
generate-dir = $(eval $(call ev-generate-dir,$1))
# -----------------------------------------------------------------------------
# Function : generate-file-dir
# Arguments: 1: file path
# Returns : Generate a dependency and a rule to ensure that the parent
# directory of the input file path will be created before it.
# This is used to enforce a call to host-mkdir.
# Usage : $(call generate-file-dir,<file>)
# Rationale: Many object files will be stored in the same output directory.
# Introducing a dependency on the latter avoids calling mkdir -p
# for every one of them.
#
# -----------------------------------------------------------------------------
define ev-generate-file-dir
__ndk_file_dir := $(call parent-dir,$1)
$$(call generate-dir,$$(__ndk_file_dir))
$1:| $$(__ndk_file_dir)
endef
generate-file-dir = $(eval $(call ev-generate-file-dir,$1))
# -----------------------------------------------------------------------------
# Function : generate-list-file
# Arguments: 1: list of strings (possibly very long)
# 2: file name
# Returns : write the content of a possibly very long string list to a file.
# this shall be used in commands and will work around limitations
# of host command-line lengths.
# Usage : $(call host-echo-to-file,<string-list>,<file>)
# Rationale: When there is a very large number of objects and/or libraries at
# link time, the size of the command becomes too large for the
# host system's maximum. Various tools however support the
# @<listfile> syntax, where <listfile> is the path of a file
# which content will be parsed as if they were options.
#
# This function is used to generate such a list file from a long
# list of strings in input.
#
# -----------------------------------------------------------------------------
# Helper functions because the GNU Make $(word ...) function does
# not accept a 0 index, so we need to bump any of these to 1 when
# we find them.
#
index-is-zero = $(filter 0 00 000 0000 00000 000000 0000000,$1)
bump-0-to-1 = $(if $(call index-is-zero,$1),1,$1)
-test-bump-0-to-1 = \
$(call test-expect,$(call bump-0-to-1))\
$(call test-expect,1,$(call bump-0-to-1,0))\
$(call test-expect,1,$(call bump-0-to-1,1))\
$(call test-expect,2,$(call bump-0-to-1,2))\
$(call test-expect,1,$(call bump-0-to-1,00))\
$(call test-expect,1,$(call bump-0-to-1,000))\
$(call test-expect,1,$(call bump-0-to-1,0000))\
$(call test-expect,1,$(call bump-0-to-1,00000))\
$(call test-expect,1,$(call bump-0-to-1,000000))\
$(call test-expect,10,$(call bump-0-to-1,10))\
$(call test-expect,100,$(call bump-0-to-1,100))
# Same as $(wordlist ...) except the start index, if 0, is bumped to 1
index-word-list = $(wordlist $(call bump-0-to-1,$1),$2,$3)
-test-index-word-list = \
$(call test-expect,,$(call index-word-list,1,1))\
$(call test-expect,a b,$(call index-word-list,0,2,a b c d))\
$(call test-expect,b c,$(call index-word-list,2,3,a b c d))\
# NOTE: With GNU Make $1 and $(1) are equivalent, which means
# that $10 is equivalent to $(1)0, and *not* $(10).
# Used to generate a slice of up to 10 items starting from index $1,
# If $1 is 0, it will be bumped to 1 (and only 9 items will be printed)
# $1: start (tenth) index. Can be 0
# $2: word list
#
define list-file-start-gen-10
$$(hide) $$(HOST_ECHO_N) "$(call index-word-list,$10,$19,$2) " >> $$@
endef
# Used to generate a slice of always 10 items starting from index $1
# $1: start (tenth) index. CANNOT BE 0
# $2: word list
define list-file-always-gen-10
$$(hide) $$(HOST_ECHO_N) "$(wordlist $10,$19,$2) " >> $$@
endef
Showing preview only (213K chars total). Download the full file or copy to clipboard to get everything.
gitextract_s5vlq68o/
├── .gitignore
├── Android.mk
├── BACKERS.md
├── CHANGELOG.md
├── CleanSpec.mk
├── OWNERS
├── README.md
├── build/
│ ├── NOTICE
│ ├── awk/
│ │ ├── check-awk.awk
│ │ ├── extract-debuggable.awk
│ │ ├── extract-launchable.awk
│ │ ├── extract-minsdkversion.awk
│ │ ├── extract-package-name.awk
│ │ ├── extract-pid.awk
│ │ ├── extract-platform.awk
│ │ ├── gen-cygwin-deps-converter.awk
│ │ ├── gen-windows-host-path.awk
│ │ └── xml.awk
│ ├── core/
│ │ ├── add-application.mk
│ │ ├── add-platform.mk
│ │ ├── add-toolchain.mk
│ │ ├── build-all.mk
│ │ ├── build-binary.mk
│ │ ├── build-executable.mk
│ │ ├── build-local.mk
│ │ ├── build-module.mk
│ │ ├── build-shared-library.mk
│ │ ├── build-static-library.mk
│ │ ├── check-cygwin-make.mk
│ │ ├── clear-vars.mk
│ │ ├── default-application.mk
│ │ ├── default-build-commands.mk
│ │ ├── defaults.mk
│ │ ├── definitions-graph.mk
│ │ ├── definitions-host.mk
│ │ ├── definitions-tests.mk
│ │ ├── definitions-utils.mk
│ │ ├── definitions.mk
│ │ ├── import-locals.mk
│ │ ├── init.mk
│ │ ├── main.mk
│ │ ├── prebuilt-library.mk
│ │ ├── prebuilt-shared-library.mk
│ │ ├── prebuilt-static-library.mk
│ │ ├── setup-abi.mk
│ │ ├── setup-app.mk
│ │ ├── setup-imports.mk
│ │ └── setup-toolchain.mk
│ ├── gmsl/
│ │ ├── README
│ │ ├── __gmsl
│ │ ├── gmsl
│ │ ├── gmsl-tests
│ │ └── index.html
│ ├── instruments/
│ │ ├── README.md
│ │ ├── build-analyzer.sh
│ │ ├── build-boost.sh
│ │ ├── build-ccache.sh
│ │ ├── build-cocotron.sh
│ │ ├── build-compiler-rt.sh
│ │ ├── build-crystax.sh
│ │ ├── build-docs.sh
│ │ ├── build-gcc.sh
│ │ ├── build-gdb-stub.sh
│ │ ├── build-gdbserver.sh
│ │ ├── build-gnu-libstdc++.sh
│ │ ├── build-gnustep-libobjc2.sh
│ │ ├── build-host-awk.sh
│ │ ├── build-host-gdb.sh
│ │ ├── build-host-make.sh
│ │ ├── build-host-prebuilts.sh
│ │ ├── build-host-python.sh
│ │ ├── build-host-toolbox.sh
│ │ ├── build-host-yasm.sh
│ │ ├── build-icu.sh
│ │ ├── build-libjpeg-turbo.sh
│ │ ├── build-libjpeg.sh
│ │ ├── build-libpng.sh
│ │ ├── build-libtiff.sh
│ │ ├── build-llvm-libc++.sh
│ │ ├── build-llvm.py
│ │ ├── build-llvm.sh
│ │ ├── build-mingw64-toolchain.sh
│ │ ├── build-ndk-stack.sh
│ │ ├── build-ndk-sysroot.sh
│ │ ├── build-python/
│ │ │ ├── _sitebuiltins.py
│ │ │ ├── _sysconfigdata.py
│ │ │ ├── android.mk.2.7
│ │ │ ├── android.mk.3.5
│ │ │ ├── build_stdlib.py
│ │ │ ├── config.c.2.7
│ │ │ ├── config.c.3.5
│ │ │ ├── freeze_stdlib.py
│ │ │ ├── frozen.c.2.7
│ │ │ ├── frozen.c.3.x
│ │ │ ├── getpath.c.2.7
│ │ │ ├── getpath.c.3.x
│ │ │ ├── host/
│ │ │ │ ├── CMakeLists.txt.2.7
│ │ │ │ ├── CMakeLists.txt.3.5
│ │ │ │ ├── callproc.c.2.7.mingw.patch
│ │ │ │ ├── callproc.c.3.5.mingw.patch
│ │ │ │ ├── config.c.2.7
│ │ │ │ ├── config.c.3.5
│ │ │ │ ├── dynload_win.c.2.7.mingw.patch
│ │ │ │ ├── dynload_win.c.3.5.mingw.patch
│ │ │ │ ├── getpath.c.2.7
│ │ │ │ ├── getpath.c.3.x
│ │ │ │ ├── interpreter-posix.c.2.7
│ │ │ │ ├── interpreter-posix.c.3.x
│ │ │ │ ├── interpreter-winapi.c.2.7
│ │ │ │ ├── interpreter-winapi.c.3.x
│ │ │ │ ├── posixmodule.c.2.7.mingw.patch
│ │ │ │ ├── posixmodule.c.3.5.1.mingw.patch
│ │ │ │ ├── posixmodule.c.3.5.x.mingw.patch
│ │ │ │ ├── pyconfig.h.2.7.mingw.patch
│ │ │ │ └── pyconfig.h.3.5.mingw.patch
│ │ │ ├── interpreter-static.c.2.7
│ │ │ ├── interpreter-static.c.3.x
│ │ │ ├── pyconfig.h
│ │ │ ├── site.py
│ │ │ ├── stdlib.config
│ │ │ └── sysconfig.py
│ │ ├── build-renderscript.sh
│ │ ├── build-sqlite3.sh
│ │ ├── build-support.sh
│ │ ├── build-target-bash.sh
│ │ ├── build-target-cpulimit.sh
│ │ ├── build-target-ffmpeg.sh
│ │ ├── build-target-gnu-coreutils.sh
│ │ ├── build-target-gnu-grep.sh
│ │ ├── build-target-gnu-less.sh
│ │ ├── build-target-gnu-sed.sh
│ │ ├── build-target-gnu-tar.sh
│ │ ├── build-target-gnu-which.sh
│ │ ├── build-target-gnu-zip.sh
│ │ ├── build-target-htop.sh
│ │ ├── build-target-info-unzip.sh
│ │ ├── build-target-info-zip.sh
│ │ ├── build-target-ncurses.sh
│ │ ├── build-target-net-tools.sh
│ │ ├── build-target-openssh.sh
│ │ ├── build-target-openssl.sh
│ │ ├── build-target-prebuilts.sh
│ │ ├── build-target-procps-ng.sh
│ │ ├── build-target-python.sh
│ │ ├── build-target-vim.sh
│ │ ├── build-target-x264.sh
│ │ ├── build-vendor-host-python.sh
│ │ ├── builder-funcs.sh
│ │ ├── check-glibc.sh
│ │ ├── cleanup-apps.sh
│ │ ├── common-build-host-funcs.sh
│ │ ├── dev-defaults.sh
│ │ ├── dev-platform-compress.sh
│ │ ├── dev-platform-expand-all.sh
│ │ ├── dev-platform-expand.sh
│ │ ├── dev-platform-import.sh
│ │ ├── dev-system-import.sh
│ │ ├── find-case-duplicates.sh
│ │ ├── gen-platforms.sh
│ │ ├── gen-system-symbols.sh
│ │ ├── gen-toolchain-wrapper.sh
│ │ ├── make-release.sh
│ │ ├── ndk-ccache-g++.sh
│ │ ├── ndk-ccache-gcc.sh
│ │ ├── ndk-common.sh
│ │ ├── package-platforms.sh
│ │ ├── package-release.sh
│ │ ├── patch-sources.sh
│ │ ├── prebuilt-common.sh
│ │ ├── rebuild-all-prebuilt.sh
│ │ ├── regenerate-platforms
│ │ ├── toolchain-licenses/
│ │ │ ├── COPYING
│ │ │ ├── COPYING.LIB
│ │ │ ├── COPYING.RUNTIME
│ │ │ ├── COPYING3
│ │ │ └── COPYING3.LIB
│ │ ├── toolchain-patches-host/
│ │ │ └── mingw-w64/
│ │ │ └── mingw-w64-widl.patch
│ │ ├── unpack-build-cache
│ │ ├── unwanted-symbols/
│ │ │ ├── arm/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── arm64/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── mips/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── mips64/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ ├── x86/
│ │ │ │ ├── libc.so.functions.txt
│ │ │ │ ├── libc.so.variables.txt
│ │ │ │ ├── libgcc.a.functions.txt
│ │ │ │ └── libgcc.a.variables.txt
│ │ │ └── x86_64/
│ │ │ ├── libc.so.functions.txt
│ │ │ ├── libc.so.variables.txt
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ └── update-build-cache
│ ├── lib/
│ │ └── build_support.py
│ ├── ndk-build
│ ├── ndk-build.cmd
│ ├── scripts/
│ │ ├── build-crew-utils
│ │ ├── build-curl
│ │ ├── build-host-gcc
│ │ ├── build-libarchive
│ │ ├── build-ruby
│ │ ├── build-xz
│ │ ├── builder.rb
│ │ ├── cache.rb
│ │ ├── commander.rb
│ │ ├── common.rb
│ │ ├── exceptions.rb
│ │ ├── install-crew
│ │ ├── install-crew-utils
│ │ ├── logger.rb
│ │ ├── options.rb
│ │ ├── ruby
│ │ └── ruby.cmd
│ └── tools/
│ ├── README.md
│ ├── build-analyzer.sh
│ ├── build-boost.sh
│ ├── build-cocotron.sh
│ ├── build-compiler-rt.sh
│ ├── build-crystax.sh
│ ├── build-gcc.py
│ ├── build-gdb-stub.sh
│ ├── build-gdbserver.py
│ ├── build-gdbserver.sh
│ ├── build-gnustep-libobjc2.sh
│ ├── build-icu.sh
│ ├── build-libjpeg-turbo.sh
│ ├── build-libjpeg.sh
│ ├── build-libpng.sh
│ ├── build-libtiff.sh
│ ├── build-llvm-libc++.sh
│ ├── build-llvm.py
│ ├── build-llvm.sh
│ ├── build-platforms.py
│ ├── build-renderscript.sh
│ ├── build-shader-tools.py
│ ├── build-sqlite3.sh
│ ├── builder-funcs.sh
│ ├── common-build-host-funcs.sh
│ ├── dev-defaults.sh
│ ├── gen-platforms.sh
│ ├── gen-toolchain-wrapper.sh
│ ├── make-release.sh
│ ├── make-standalone-toolchain.sh
│ ├── ndk-ccache-g++.sh
│ ├── ndk-ccache-gcc.sh
│ ├── ndk-common.sh
│ ├── package-platforms.sh
│ ├── package.py
│ ├── prebuilt-common.sh
│ ├── regenerate-platforms
│ ├── toolchain-licenses/
│ │ ├── COPYING
│ │ ├── COPYING.LIB
│ │ ├── COPYING.RUNTIME
│ │ ├── COPYING3
│ │ └── COPYING3.LIB
│ ├── unpack-build-cache
│ ├── unwanted-symbols/
│ │ ├── arm/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── arm64/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── mips/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── mips64/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ ├── x86/
│ │ │ ├── libgcc.a.functions.txt
│ │ │ └── libgcc.a.variables.txt
│ │ └── x86_64/
│ │ ├── libgcc.a.functions.txt
│ │ └── libgcc.a.variables.txt
│ └── update-build-cache
├── checkbuild.py
├── cmake/
│ ├── modules/
│ │ ├── FindBZip2.cmake
│ │ ├── FindBoost.cmake
│ │ ├── FindJNI.cmake
│ │ ├── FindThreads.cmake
│ │ └── FindZLIB.cmake
│ └── toolchain.cmake
├── config.py
├── crew
├── crew.cmd
├── docs/
│ ├── GeneratingSysroots.md
│ ├── Testing.md
│ └── Toolchains.md
├── ndk-build
├── ndk-build.cmd
├── ndk-gdb
├── ndk-gdb.cmd
├── ndk-gdb.py
├── ndk-which
├── prebuilt/
│ └── common/
│ └── gdb/
│ └── common.setup
├── samples/
│ ├── .gitignore
│ ├── README.md
│ └── test-debug/
│ ├── .gitignore
│ ├── AndroidManifest.xml
│ ├── jni/
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ └── testdebug.c
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res/
│ │ └── values/
│ │ └── strings.xml
│ └── src/
│ └── com/
│ └── example/
│ └── testdebug/
│ └── TestDebug.java
├── sources/
│ ├── android/
│ │ ├── .gitignore
│ │ ├── compiler-rt/
│ │ │ └── Android.mk
│ │ ├── cpufeatures/
│ │ │ ├── Android.mk
│ │ │ ├── NOTICE
│ │ │ ├── cpu-features.c
│ │ │ └── cpu-features.h
│ │ ├── libthread_db/
│ │ │ ├── README
│ │ │ ├── gdb-7.7/
│ │ │ │ ├── libthread_db.c
│ │ │ │ └── thread_db.h
│ │ │ ├── libthread_db.c
│ │ │ └── thread_db.h
│ │ └── support/
│ │ └── NOTICE
│ ├── cpufeatures/
│ │ ├── Android.mk
│ │ └── README.TXT
│ ├── crystax/
│ │ ├── .gitignore
│ │ ├── .syntastic/
│ │ │ └── c
│ │ ├── GNUmakefile
│ │ ├── LICENSE
│ │ ├── bin/
│ │ │ ├── check-symbols
│ │ │ ├── config
│ │ │ ├── gen-arith
│ │ │ ├── gen-bionic-sources
│ │ │ ├── gen-bsd-sources
│ │ │ ├── gen-compiler-rt-headers
│ │ │ ├── gen-libkqueue-sources
│ │ │ ├── gen-libpwq-sources
│ │ │ ├── gen-locales
│ │ │ ├── gen-musl-sources
│ │ │ ├── gen-sources
│ │ │ ├── gen-system-core-headers
│ │ │ └── patch-sysroot
│ │ ├── crazy_linker/
│ │ │ ├── Android.mk
│ │ │ ├── DESIGN.TXT
│ │ │ ├── LICENSE
│ │ │ ├── README.TXT
│ │ │ ├── include/
│ │ │ │ └── crazy_linker.h
│ │ │ ├── minitest/
│ │ │ │ ├── minitest.cc
│ │ │ │ └── minitest.h
│ │ │ ├── src/
│ │ │ │ ├── crazy_linker_api.cpp
│ │ │ │ ├── crazy_linker_ashmem.cpp
│ │ │ │ ├── crazy_linker_ashmem.h
│ │ │ │ ├── crazy_linker_ashmem_unittest.cpp
│ │ │ │ ├── crazy_linker_debug.cpp
│ │ │ │ ├── crazy_linker_debug.h
│ │ │ │ ├── crazy_linker_elf_loader.cpp
│ │ │ │ ├── crazy_linker_elf_loader.h
│ │ │ │ ├── crazy_linker_elf_relocations.cpp
│ │ │ │ ├── crazy_linker_elf_relocations.h
│ │ │ │ ├── crazy_linker_elf_relro.cpp
│ │ │ │ ├── crazy_linker_elf_relro.h
│ │ │ │ ├── crazy_linker_elf_symbols.cpp
│ │ │ │ ├── crazy_linker_elf_symbols.h
│ │ │ │ ├── crazy_linker_elf_view.cpp
│ │ │ │ ├── crazy_linker_elf_view.h
│ │ │ │ ├── crazy_linker_error.cpp
│ │ │ │ ├── crazy_linker_error.h
│ │ │ │ ├── crazy_linker_error_unittest.cpp
│ │ │ │ ├── crazy_linker_globals.cpp
│ │ │ │ ├── crazy_linker_globals.h
│ │ │ │ ├── crazy_linker_globals_unittest.cpp
│ │ │ │ ├── crazy_linker_library_list.cpp
│ │ │ │ ├── crazy_linker_library_list.h
│ │ │ │ ├── crazy_linker_library_view.cpp
│ │ │ │ ├── crazy_linker_library_view.h
│ │ │ │ ├── crazy_linker_line_reader.cpp
│ │ │ │ ├── crazy_linker_line_reader.h
│ │ │ │ ├── crazy_linker_line_reader_unittest.cpp
│ │ │ │ ├── crazy_linker_memory_mapping.h
│ │ │ │ ├── crazy_linker_proc_maps.cpp
│ │ │ │ ├── crazy_linker_proc_maps.h
│ │ │ │ ├── crazy_linker_proc_maps_unittest.cpp
│ │ │ │ ├── crazy_linker_rdebug.cpp
│ │ │ │ ├── crazy_linker_rdebug.h
│ │ │ │ ├── crazy_linker_search_path_list.cpp
│ │ │ │ ├── crazy_linker_search_path_list.h
│ │ │ │ ├── crazy_linker_search_path_list_unittest.cpp
│ │ │ │ ├── crazy_linker_shared_library.cpp
│ │ │ │ ├── crazy_linker_shared_library.h
│ │ │ │ ├── crazy_linker_system.cpp
│ │ │ │ ├── crazy_linker_system.h
│ │ │ │ ├── crazy_linker_system_mock.cpp
│ │ │ │ ├── crazy_linker_system_mock.h
│ │ │ │ ├── crazy_linker_system_unittest.cpp
│ │ │ │ ├── crazy_linker_thread.cpp
│ │ │ │ ├── crazy_linker_thread.h
│ │ │ │ ├── crazy_linker_thread_unittest.cpp
│ │ │ │ ├── crazy_linker_util.cpp
│ │ │ │ ├── crazy_linker_util.h
│ │ │ │ ├── crazy_linker_util_unittest.cpp
│ │ │ │ ├── crazy_linker_wrappers.cpp
│ │ │ │ ├── crazy_linker_wrappers.h
│ │ │ │ ├── elf_traits.h
│ │ │ │ ├── linker_phdr.cpp
│ │ │ │ └── linker_phdr.h
│ │ │ └── tests/
│ │ │ ├── Android.mk
│ │ │ ├── bar.cpp
│ │ │ ├── bar_with_relro.cpp
│ │ │ ├── bench_load_library.cpp
│ │ │ ├── foo.cpp
│ │ │ ├── foo2.cpp
│ │ │ ├── foo_with_relro.cpp
│ │ │ ├── foo_with_static_constructor.cpp
│ │ │ ├── jni_lib.cpp
│ │ │ ├── test_constructors_destructors.cpp
│ │ │ ├── test_dl_wrappers.cpp
│ │ │ ├── test_jni_hooks.cpp
│ │ │ ├── test_load_library.cpp
│ │ │ ├── test_load_library_callbacks.cpp
│ │ │ ├── test_load_library_depends.cpp
│ │ │ ├── test_relocated_shared_relro.cpp
│ │ │ ├── test_search_path_list.cpp
│ │ │ ├── test_shared_relro.cpp
│ │ │ ├── test_two_shared_relros.cpp
│ │ │ ├── test_util.h
│ │ │ └── zoo.cpp
│ │ ├── empty/
│ │ │ └── libcrystax.a
│ │ ├── include/
│ │ │ ├── OpenGLES/
│ │ │ │ ├── ES1/
│ │ │ │ │ ├── gl.h
│ │ │ │ │ └── glext.h
│ │ │ │ ├── ES2/
│ │ │ │ │ ├── gl.h
│ │ │ │ │ └── glext.h
│ │ │ │ └── ES3/
│ │ │ │ ├── gl.h
│ │ │ │ └── glext.h
│ │ │ ├── alloca.h
│ │ │ ├── asm/
│ │ │ │ ├── bitsperlong.h
│ │ │ │ ├── posix_types.h
│ │ │ │ ├── siginfo.h
│ │ │ │ ├── signal.h
│ │ │ │ ├── unistd.h
│ │ │ │ ├── unistd_32.h
│ │ │ │ ├── unistd_64.h
│ │ │ │ └── unistd_x32.h
│ │ │ ├── crystax/
│ │ │ │ ├── arm/
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── arm64/
│ │ │ │ │ ├── _inttypes.h
│ │ │ │ │ ├── _limits.h
│ │ │ │ │ ├── _stdint.h
│ │ │ │ │ ├── endian.h
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── common.hpp
│ │ │ │ ├── ctassert.h
│ │ │ │ ├── details/
│ │ │ │ │ └── jni.inc
│ │ │ │ ├── freebsd.h
│ │ │ │ ├── id.h
│ │ │ │ ├── jutils/
│ │ │ │ │ ├── class.hpp
│ │ │ │ │ ├── exceptions.hpp
│ │ │ │ │ ├── field.hpp
│ │ │ │ │ ├── helper.hpp
│ │ │ │ │ ├── jcast.hpp
│ │ │ │ │ ├── jholder.hpp
│ │ │ │ │ ├── jni.hpp
│ │ │ │ │ └── method.hpp
│ │ │ │ ├── jutils.hpp
│ │ │ │ ├── list.hpp
│ │ │ │ ├── log.h
│ │ │ │ ├── memory.hpp
│ │ │ │ ├── mips/
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── mips64/
│ │ │ │ │ ├── _inttypes.h
│ │ │ │ │ ├── _limits.h
│ │ │ │ │ ├── _stdint.h
│ │ │ │ │ ├── endian.h
│ │ │ │ │ └── fenv.h
│ │ │ │ ├── path.hpp
│ │ │ │ ├── sys/
│ │ │ │ │ ├── ctype.h
│ │ │ │ │ ├── endian.h
│ │ │ │ │ ├── fenvsoft.h
│ │ │ │ │ ├── fpmath.h
│ │ │ │ │ ├── inttypes.h
│ │ │ │ │ ├── langinfo.h
│ │ │ │ │ ├── limits.h
│ │ │ │ │ ├── locale.h
│ │ │ │ │ ├── math.h
│ │ │ │ │ ├── monetary.h
│ │ │ │ │ ├── stdio.h
│ │ │ │ │ ├── stdlib.h
│ │ │ │ │ ├── string.h
│ │ │ │ │ ├── strings.h
│ │ │ │ │ ├── time.h
│ │ │ │ │ ├── tls.h
│ │ │ │ │ ├── wait.h
│ │ │ │ │ ├── wchar.h
│ │ │ │ │ └── wctype.h
│ │ │ │ ├── system.h
│ │ │ │ ├── x86/
│ │ │ │ │ └── fenv.h
│ │ │ │ └── x86_64/
│ │ │ │ └── fenv.h
│ │ │ ├── crystax.h
│ │ │ ├── dlfcn.h
│ │ │ ├── elf.h
│ │ │ ├── endian.h
│ │ │ ├── errno.h
│ │ │ ├── fcntl.h
│ │ │ ├── fenv.h
│ │ │ ├── getrrsetbyname.h
│ │ │ ├── grp.h
│ │ │ ├── ieeefp.h
│ │ │ ├── linux/
│ │ │ │ ├── elf.h
│ │ │ │ ├── in.h
│ │ │ │ ├── shm.h
│ │ │ │ └── sysctl.h
│ │ │ ├── machine/
│ │ │ │ ├── _align.h
│ │ │ │ ├── _types.h
│ │ │ │ ├── atomic.h
│ │ │ │ ├── fenv.h
│ │ │ │ ├── limits.h
│ │ │ │ └── wchar_limits.h
│ │ │ ├── malloc.h
│ │ │ ├── netinet/
│ │ │ │ └── tcp.h
│ │ │ ├── paths.h
│ │ │ ├── pthread_np.h
│ │ │ ├── semaphore.h
│ │ │ ├── stdint.h
│ │ │ ├── sys/
│ │ │ │ ├── _types.h
│ │ │ │ ├── cdefs.h
│ │ │ │ ├── fcntl.h
│ │ │ │ ├── mman.h
│ │ │ │ ├── param.h
│ │ │ │ ├── shm.h
│ │ │ │ ├── socket.h
│ │ │ │ ├── sysctl.h
│ │ │ │ ├── syslimits.h
│ │ │ │ ├── syslog.h
│ │ │ │ ├── timeb.h
│ │ │ │ ├── timespec.h
│ │ │ │ ├── types.h
│ │ │ │ └── wait.h
│ │ │ ├── syscall.h
│ │ │ ├── termios.h
│ │ │ ├── timeb.h
│ │ │ └── xlocale.h
│ │ ├── src/
│ │ │ ├── __get_thread.cpp
│ │ │ ├── __wait4.c
│ │ │ ├── bsd_signal.c
│ │ │ ├── bzip2/
│ │ │ │ └── error.c
│ │ │ ├── crystax/
│ │ │ │ ├── android.cpp
│ │ │ │ ├── android_jni.cpp
│ │ │ │ ├── crystax_posix_base.c
│ │ │ │ ├── fenvimpl.c
│ │ │ │ ├── isthreaded.c
│ │ │ │ ├── jutils/
│ │ │ │ │ ├── exceptions.cpp
│ │ │ │ │ ├── helper.cpp
│ │ │ │ │ ├── jcast.cpp
│ │ │ │ │ └── rethrow.cpp
│ │ │ │ ├── locale/
│ │ │ │ │ ├── locale.c
│ │ │ │ │ └── localeinit.c
│ │ │ │ ├── lock.cpp
│ │ │ │ ├── log.c
│ │ │ │ ├── logcat.c
│ │ │ │ ├── pthread_workqueue_impl.c
│ │ │ │ ├── rawargs.cpp
│ │ │ │ └── system.cpp
│ │ │ ├── domainname.c
│ │ │ ├── execve.c
│ │ │ ├── fcntl/
│ │ │ │ └── fcntl.c
│ │ │ ├── fdprintf.c
│ │ │ ├── ftime.c
│ │ │ ├── futex.c
│ │ │ ├── getdents.c
│ │ │ ├── getdtablesize.c
│ │ │ ├── getnetgrent.c
│ │ │ ├── getrlimit64.c
│ │ │ ├── grent.c
│ │ │ ├── include/
│ │ │ │ ├── crystax/
│ │ │ │ │ ├── arm/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── arm64/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── atomic.h
│ │ │ │ │ ├── fenvimpl.h
│ │ │ │ │ ├── internal.h
│ │ │ │ │ ├── localeimpl.h
│ │ │ │ │ ├── lock.hpp
│ │ │ │ │ ├── mips/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── mips64/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ ├── private.h
│ │ │ │ │ ├── pthread_workqueue_impl.h
│ │ │ │ │ ├── x86/
│ │ │ │ │ │ ├── arith.h
│ │ │ │ │ │ └── gd_qnan.h
│ │ │ │ │ └── x86_64/
│ │ │ │ │ ├── arith.h
│ │ │ │ │ └── gd_qnan.h
│ │ │ │ └── jemalloc_defs.h
│ │ │ ├── issetugid.c
│ │ │ ├── lchmod.c
│ │ │ ├── lseek64.cpp
│ │ │ ├── makedev.c
│ │ │ ├── math/
│ │ │ │ ├── complex.c
│ │ │ │ ├── fenvsoft.c
│ │ │ │ ├── math.c
│ │ │ │ └── sincos.c
│ │ │ ├── memswap.c
│ │ │ ├── msgcat.c
│ │ │ ├── openbsd/
│ │ │ │ └── getrrsetbyname.c
│ │ │ ├── posix_fadvise.c
│ │ │ ├── posix_fallocate.c
│ │ │ ├── pread.c
│ │ │ ├── progname.c
│ │ │ ├── pthread_attr_getstackaddr.c
│ │ │ ├── pthread_gettid.c
│ │ │ ├── pthread_main_np.cpp
│ │ │ ├── pwent.c
│ │ │ ├── pwrite.c
│ │ │ ├── shmat.c
│ │ │ ├── shmctl.c
│ │ │ ├── shmdt.c
│ │ │ ├── shmget.c
│ │ │ ├── stdlib/
│ │ │ │ ├── abort.c
│ │ │ │ └── rand.c
│ │ │ ├── string/
│ │ │ │ └── strerror.c
│ │ │ ├── strntoimax.c
│ │ │ ├── strverscmp.c
│ │ │ ├── swapxx.c
│ │ │ ├── sysctl.c
│ │ │ ├── sysv_signal.cpp
│ │ │ ├── tkill.c
│ │ │ ├── tls.c
│ │ │ ├── uname.c
│ │ │ ├── usershell.c
│ │ │ ├── vfdprintf.c
│ │ │ ├── wait3.c
│ │ │ ├── wcswcs.c
│ │ │ └── write.c
│ │ └── vfs/
│ │ ├── accept.cpp
│ │ ├── access.cpp
│ │ ├── android.cpp
│ │ ├── android_jni.cpp
│ │ ├── assets/
│ │ │ ├── adriver.cpp
│ │ │ └── driver.hpp
│ │ ├── bind.cpp
│ │ ├── chdir.cpp
│ │ ├── chown.cpp
│ │ ├── chroot.cpp
│ │ ├── close.cpp
│ │ ├── closedir.cpp
│ │ ├── connect.cpp
│ │ ├── dirfd.cpp
│ │ ├── dup.cpp
│ │ ├── dup2.cpp
│ │ ├── fchdir.cpp
│ │ ├── fchown.cpp
│ │ ├── fcntl.cpp
│ │ ├── fdatasync.cpp
│ │ ├── fdopendir.cpp
│ │ ├── fileio/
│ │ │ ├── api.hpp
│ │ │ ├── common.hpp
│ │ │ └── driver.hpp
│ │ ├── fileio.cpp
│ │ ├── flock.cpp
│ │ ├── fstat.cpp
│ │ ├── fsync.cpp
│ │ ├── ftruncate.cpp
│ │ ├── futils.cpp
│ │ ├── getcwd.cpp
│ │ ├── getdents.cpp
│ │ ├── getsockname.cpp
│ │ ├── getsockopt.cpp
│ │ ├── include/
│ │ │ └── crystax/
│ │ │ └── vfs.h
│ │ ├── ioctl.cpp
│ │ ├── lchown.cpp
│ │ ├── link.cpp
│ │ ├── listen.cpp
│ │ ├── lseek.cpp
│ │ ├── lseek64.cpp
│ │ ├── lstat.cpp
│ │ ├── mkdir.cpp
│ │ ├── mmap.cpp
│ │ ├── mount.cpp
│ │ ├── open.cpp
│ │ ├── opendir.cpp
│ │ ├── osfs/
│ │ │ ├── asyncsocketclosemonitor.cpp
│ │ │ ├── asyncsocketclosemonitor.h
│ │ │ ├── osfs.cpp
│ │ │ ├── osfs.hpp
│ │ │ ├── osfs_eclair.cpp
│ │ │ ├── osfs_froyo.cpp
│ │ │ ├── osfs_gingerbread.cpp
│ │ │ └── osfs_ics.cpp
│ │ ├── pipe.cpp
│ │ ├── pread.cpp
│ │ ├── pwrite.cpp
│ │ ├── read.cpp
│ │ ├── readdir.cpp
│ │ ├── readdir_r.cpp
│ │ ├── readlink.cpp
│ │ ├── readv.cpp
│ │ ├── recv.cpp
│ │ ├── recvfrom.cpp
│ │ ├── recvmsg.cpp
│ │ ├── remove.cpp
│ │ ├── rename.cpp
│ │ ├── rewinddir.cpp
│ │ ├── rmdir.cpp
│ │ ├── scandir.cpp
│ │ ├── seekdir.cpp
│ │ ├── select.cpp
│ │ ├── send.cpp
│ │ ├── sendmsg.cpp
│ │ ├── sendto.cpp
│ │ ├── setsockopt.cpp
│ │ ├── shutdown.cpp
│ │ ├── socket.cpp
│ │ ├── stat.cpp
│ │ ├── symlink.cpp
│ │ ├── system/
│ │ │ ├── driver.hpp
│ │ │ └── sdriver.cpp
│ │ ├── telldir.cpp
│ │ ├── unlink.cpp
│ │ ├── write.cpp
│ │ └── writev.cpp
│ ├── cxx-stl/
│ │ ├── gabi++/
│ │ │ └── NOTICE
│ │ ├── gnu-libstdc++/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ ├── README
│ │ │ ├── build-gnu-libstdc++.sh
│ │ │ └── build.py
│ │ ├── llvm-libc++/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ ├── README.NDK
│ │ │ ├── build.py
│ │ │ ├── export_symbols.txt
│ │ │ └── test/
│ │ │ ├── Android.mk
│ │ │ └── test_1.cc
│ │ ├── llvm-libc++abi/
│ │ │ ├── libcxxabi/
│ │ │ │ ├── CREDITS.TXT
│ │ │ │ ├── LICENSE.TXT
│ │ │ │ ├── include/
│ │ │ │ │ ├── __cxxabi_config.h
│ │ │ │ │ ├── cxxabi.h
│ │ │ │ │ ├── libunwind.h
│ │ │ │ │ ├── mach-o/
│ │ │ │ │ │ └── compact_unwind_encoding.h
│ │ │ │ │ └── unwind.h
│ │ │ │ ├── lib/
│ │ │ │ │ └── buildit
│ │ │ │ ├── src/
│ │ │ │ │ ├── Unwind/
│ │ │ │ │ │ ├── AddressSpace.hpp
│ │ │ │ │ │ ├── CompactUnwinder.hpp
│ │ │ │ │ │ ├── DwarfInstructions.hpp
│ │ │ │ │ │ ├── DwarfParser.hpp
│ │ │ │ │ │ ├── EHHeaderParser.hpp
│ │ │ │ │ │ ├── Registers.hpp
│ │ │ │ │ │ ├── Unwind-EHABI.cpp
│ │ │ │ │ │ ├── Unwind-EHABI.h
│ │ │ │ │ │ ├── Unwind-sjlj.c
│ │ │ │ │ │ ├── UnwindCursor.hpp
│ │ │ │ │ │ ├── UnwindLevel1-gcc-ext.c
│ │ │ │ │ │ ├── UnwindLevel1.c
│ │ │ │ │ │ ├── UnwindRegistersRestore.S
│ │ │ │ │ │ ├── UnwindRegistersSave.S
│ │ │ │ │ │ ├── Unwind_AppleExtras.cpp
│ │ │ │ │ │ ├── assembly.h
│ │ │ │ │ │ ├── config.h
│ │ │ │ │ │ ├── dwarf2.h
│ │ │ │ │ │ ├── libunwind.cpp
│ │ │ │ │ │ ├── libunwind_ext.h
│ │ │ │ │ │ └── unwind_ext.h
│ │ │ │ │ ├── abort_message.cpp
│ │ │ │ │ ├── abort_message.h
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── cxa_aux_runtime.cpp
│ │ │ │ │ ├── cxa_default_handlers.cpp
│ │ │ │ │ ├── cxa_demangle.cpp
│ │ │ │ │ ├── cxa_exception.cpp
│ │ │ │ │ ├── cxa_exception.hpp
│ │ │ │ │ ├── cxa_exception_storage.cpp
│ │ │ │ │ ├── cxa_guard.cpp
│ │ │ │ │ ├── cxa_handlers.cpp
│ │ │ │ │ ├── cxa_handlers.hpp
│ │ │ │ │ ├── cxa_new_delete.cpp
│ │ │ │ │ ├── cxa_personality.cpp
│ │ │ │ │ ├── cxa_thread_atexit.cpp
│ │ │ │ │ ├── cxa_unexpected.cpp
│ │ │ │ │ ├── cxa_vector.cpp
│ │ │ │ │ ├── cxa_virtual.cpp
│ │ │ │ │ ├── exception.cpp
│ │ │ │ │ ├── fallback_malloc.ipp
│ │ │ │ │ ├── private_typeinfo.cpp
│ │ │ │ │ ├── private_typeinfo.h
│ │ │ │ │ ├── stdexcept.cpp
│ │ │ │ │ └── typeinfo.cpp
│ │ │ │ └── test/
│ │ │ │ ├── backtrace_test.pass.cpp
│ │ │ │ ├── catch_array_01.pass.cpp
│ │ │ │ ├── catch_array_02.pass.cpp
│ │ │ │ ├── catch_class_01.pass.cpp
│ │ │ │ ├── catch_class_02.pass.cpp
│ │ │ │ ├── catch_class_03.pass.cpp
│ │ │ │ ├── catch_class_04.pass.cpp
│ │ │ │ ├── catch_const_pointer_nullptr.pass.cpp
│ │ │ │ ├── catch_function_01.pass.cpp
│ │ │ │ ├── catch_function_02.pass.cpp
│ │ │ │ ├── catch_in_noexcept.pass.cpp
│ │ │ │ ├── catch_member_data_pointer_01.pass.cpp
│ │ │ │ ├── catch_member_function_pointer_01.pass.cpp
│ │ │ │ ├── catch_member_pointer_nullptr.pass.cpp
│ │ │ │ ├── catch_pointer_nullptr.pass.cpp
│ │ │ │ ├── catch_pointer_reference.pass.cpp
│ │ │ │ ├── catch_ptr.pass.cpp
│ │ │ │ ├── catch_ptr_02.pass.cpp
│ │ │ │ ├── cxa_thread_atexit_test.pass.cpp
│ │ │ │ ├── dynamic_cast14.pass.cpp
│ │ │ │ ├── dynamic_cast3.pass.cpp
│ │ │ │ ├── dynamic_cast5.pass.cpp
│ │ │ │ ├── dynamic_cast_stress.pass.cpp
│ │ │ │ ├── inherited_exception.pass.cpp
│ │ │ │ ├── libcxxabi/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── test/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── config.py
│ │ │ │ ├── lit.cfg
│ │ │ │ ├── lit.site.cfg.in
│ │ │ │ ├── support/
│ │ │ │ │ └── timer.hpp
│ │ │ │ ├── test_aux_runtime.pass.cpp
│ │ │ │ ├── test_aux_runtime_op_array_new.pass.cpp
│ │ │ │ ├── test_demangle.pass.cpp
│ │ │ │ ├── test_exception_storage.pass.cpp
│ │ │ │ ├── test_fallback_malloc.pass.cpp
│ │ │ │ ├── test_guard.pass.cpp
│ │ │ │ ├── test_vector1.pass.cpp
│ │ │ │ ├── test_vector2.pass.cpp
│ │ │ │ ├── test_vector3.pass.cpp
│ │ │ │ ├── testit
│ │ │ │ ├── testit_android
│ │ │ │ ├── unwind_01.pass.cpp
│ │ │ │ ├── unwind_02.pass.cpp
│ │ │ │ ├── unwind_03.pass.cpp
│ │ │ │ ├── unwind_04.pass.cpp
│ │ │ │ ├── unwind_05.pass.cpp
│ │ │ │ └── unwind_06.pass.cpp
│ │ │ └── sources.mk
│ │ └── system/
│ │ ├── Android.mk
│ │ ├── MODULE_LICENSE_BSD
│ │ ├── NOTICE
│ │ ├── include/
│ │ │ ├── cassert
│ │ │ ├── cctype
│ │ │ ├── cerrno
│ │ │ ├── cfloat
│ │ │ ├── climits
│ │ │ ├── cmath
│ │ │ ├── csetjmp
│ │ │ ├── csignal
│ │ │ ├── cstddef
│ │ │ ├── cstdint
│ │ │ ├── cstdio
│ │ │ ├── cstdlib
│ │ │ ├── cstring
│ │ │ ├── ctime
│ │ │ ├── cwchar
│ │ │ ├── cwctype_is_not_supported
│ │ │ ├── new
│ │ │ ├── stl_pair.h
│ │ │ ├── typeinfo
│ │ │ └── utility
│ │ └── setup.mk
│ ├── host-tools/
│ │ ├── gdb-pretty-printers/
│ │ │ └── stlport/
│ │ │ └── gppfs-0.2/
│ │ │ ├── COPYING
│ │ │ ├── ChangeLog
│ │ │ ├── README
│ │ │ ├── stlport/
│ │ │ │ ├── __init__.py
│ │ │ │ └── printers.py
│ │ │ └── test/
│ │ │ ├── .gdbinit
│ │ │ ├── Makefile
│ │ │ ├── script
│ │ │ └── test.cpp
│ │ ├── gdb-stub/
│ │ │ └── gdb-stub.c
│ │ ├── make-3.81/
│ │ │ ├── ABOUT-NLS
│ │ │ ├── AUTHORS
│ │ │ ├── COPYING
│ │ │ ├── ChangeLog
│ │ │ ├── INSTALL
│ │ │ ├── Makefile.DOS
│ │ │ ├── Makefile.am
│ │ │ ├── Makefile.ami
│ │ │ ├── Makefile.in
│ │ │ ├── NEWS
│ │ │ ├── NMakefile
│ │ │ ├── README
│ │ │ ├── README.Amiga
│ │ │ ├── README.DOS
│ │ │ ├── README.OS2
│ │ │ ├── README.W32
│ │ │ ├── README.customs
│ │ │ ├── SCOPTIONS
│ │ │ ├── SMakefile
│ │ │ ├── acinclude.m4
│ │ │ ├── aclocal.m4
│ │ │ ├── alloca.c
│ │ │ ├── amiga.c
│ │ │ ├── amiga.h
│ │ │ ├── ansi2knr.1
│ │ │ ├── ansi2knr.c
│ │ │ ├── ar.c
│ │ │ ├── arscan.c
│ │ │ ├── autom4te.cache/
│ │ │ │ ├── output.0
│ │ │ │ ├── requests
│ │ │ │ └── traces.0
│ │ │ ├── build-make.sh
│ │ │ ├── build.py
│ │ │ ├── build.sh.in
│ │ │ ├── build_w32.bat
│ │ │ ├── commands.c
│ │ │ ├── commands.h
│ │ │ ├── config/
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── Makefile.am
│ │ │ │ ├── Makefile.in
│ │ │ │ ├── codeset.m4
│ │ │ │ ├── compile
│ │ │ │ ├── config.guess
│ │ │ │ ├── config.rpath
│ │ │ │ ├── config.sub
│ │ │ │ ├── depcomp
│ │ │ │ ├── dospaths.m4
│ │ │ │ ├── gettext.m4
│ │ │ │ ├── glibc21.m4
│ │ │ │ ├── iconv.m4
│ │ │ │ ├── install-sh
│ │ │ │ ├── intdiv0.m4
│ │ │ │ ├── intmax.m4
│ │ │ │ ├── inttypes-pri.m4
│ │ │ │ ├── inttypes.m4
│ │ │ │ ├── inttypes_h.m4
│ │ │ │ ├── isc-posix.m4
│ │ │ │ ├── lcmessage.m4
│ │ │ │ ├── lib-ld.m4
│ │ │ │ ├── lib-link.m4
│ │ │ │ ├── lib-prefix.m4
│ │ │ │ ├── longdouble.m4
│ │ │ │ ├── longlong.m4
│ │ │ │ ├── mdate-sh
│ │ │ │ ├── missing
│ │ │ │ ├── mkinstalldirs
│ │ │ │ ├── nls.m4
│ │ │ │ ├── po.m4
│ │ │ │ ├── printf-posix.m4
│ │ │ │ ├── progtest.m4
│ │ │ │ ├── signed.m4
│ │ │ │ ├── size_max.m4
│ │ │ │ ├── stdint_h.m4
│ │ │ │ ├── texinfo.tex
│ │ │ │ ├── uintmax_t.m4
│ │ │ │ ├── ulonglong.m4
│ │ │ │ ├── wchar_t.m4
│ │ │ │ ├── wint_t.m4
│ │ │ │ └── xsize.m4
│ │ │ ├── config.ami
│ │ │ ├── config.h-vms
│ │ │ ├── config.h.W32
│ │ │ ├── config.h.in
│ │ │ ├── config.log
│ │ │ ├── configh.dos
│ │ │ ├── configure
│ │ │ ├── configure.bat
│ │ │ ├── configure.in
│ │ │ ├── debug.h
│ │ │ ├── default.c
│ │ │ ├── dep.h
│ │ │ ├── dir.c
│ │ │ ├── doc/
│ │ │ │ ├── Makefile.am
│ │ │ │ ├── Makefile.in
│ │ │ │ ├── fdl.texi
│ │ │ │ ├── make-stds.texi
│ │ │ │ ├── make.info
│ │ │ │ ├── make.info-1
│ │ │ │ ├── make.info-2
│ │ │ │ ├── make.texi
│ │ │ │ ├── stamp-vti
│ │ │ │ └── version.texi
│ │ │ ├── dosbuild.bat
│ │ │ ├── expand.c
│ │ │ ├── file.c
│ │ │ ├── filedef.h
│ │ │ ├── function.c
│ │ │ ├── getloadavg.c
│ │ │ ├── getopt.c
│ │ │ ├── getopt.h
│ │ │ ├── getopt1.c
│ │ │ ├── gettext.h
│ │ │ ├── glob/
│ │ │ │ ├── COPYING.LIB
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── Makefile.am
│ │ │ │ ├── Makefile.ami
│ │ │ │ ├── Makefile.in
│ │ │ │ ├── SCOPTIONS
│ │ │ │ ├── SMakefile
│ │ │ │ ├── configure.bat
│ │ │ │ ├── fnmatch.c
│ │ │ │ ├── fnmatch.h
│ │ │ │ ├── glob.c
│ │ │ │ └── glob.h
│ │ │ ├── hash.c
│ │ │ ├── hash.h
│ │ │ ├── implicit.c
│ │ │ ├── job.c
│ │ │ ├── job.h
│ │ │ ├── main.c
│ │ │ ├── make.1
│ │ │ ├── make.h
│ │ │ ├── make.lnk
│ │ │ ├── make_msvc_net2003.sln
│ │ │ ├── make_msvc_net2003.vcproj
│ │ │ ├── makefile.com
│ │ │ ├── makefile.vms
│ │ │ ├── misc.c
│ │ │ ├── po/
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── LINGUAS
│ │ │ │ ├── Makefile.in.in
│ │ │ │ ├── Makevars
│ │ │ │ ├── POTFILES.in
│ │ │ │ ├── Rules-quot
│ │ │ │ ├── be.gmo
│ │ │ │ ├── be.po
│ │ │ │ ├── boldquot.sed
│ │ │ │ ├── da.gmo
│ │ │ │ ├── da.po
│ │ │ │ ├── de.gmo
│ │ │ │ ├── de.po
│ │ │ │ ├── en@boldquot.header
│ │ │ │ ├── en@quot.header
│ │ │ │ ├── es.gmo
│ │ │ │ ├── es.po
│ │ │ │ ├── fi.gmo
│ │ │ │ ├── fi.po
│ │ │ │ ├── fr.gmo
│ │ │ │ ├── fr.po
│ │ │ │ ├── ga.gmo
│ │ │ │ ├── ga.po
│ │ │ │ ├── gl.gmo
│ │ │ │ ├── gl.po
│ │ │ │ ├── he.gmo
│ │ │ │ ├── he.po
│ │ │ │ ├── hr.gmo
│ │ │ │ ├── hr.po
│ │ │ │ ├── id.gmo
│ │ │ │ ├── id.po
│ │ │ │ ├── insert-header.sin
│ │ │ │ ├── ja.gmo
│ │ │ │ ├── ja.po
│ │ │ │ ├── ko.gmo
│ │ │ │ ├── ko.po
│ │ │ │ ├── make.pot
│ │ │ │ ├── nl.gmo
│ │ │ │ ├── nl.po
│ │ │ │ ├── pl.gmo
│ │ │ │ ├── pl.po
│ │ │ │ ├── pt_BR.gmo
│ │ │ │ ├── pt_BR.po
│ │ │ │ ├── quot.sed
│ │ │ │ ├── remove-potcdate.sin
│ │ │ │ ├── ru.gmo
│ │ │ │ ├── ru.po
│ │ │ │ ├── rw.gmo
│ │ │ │ ├── rw.po
│ │ │ │ ├── stamp-po
│ │ │ │ ├── sv.gmo
│ │ │ │ ├── sv.po
│ │ │ │ ├── tr.gmo
│ │ │ │ ├── tr.po
│ │ │ │ ├── uk.gmo
│ │ │ │ ├── uk.po
│ │ │ │ ├── vi.gmo
│ │ │ │ ├── vi.po
│ │ │ │ ├── zh_CN.gmo
│ │ │ │ └── zh_CN.po
│ │ │ ├── read.c
│ │ │ ├── readme.vms
│ │ │ ├── remake.c
│ │ │ ├── remote-cstms.c
│ │ │ ├── remote-stub.c
│ │ │ ├── rule.c
│ │ │ ├── rule.h
│ │ │ ├── signame.c
│ │ │ ├── strcache.c
│ │ │ ├── subproc.bat
│ │ │ ├── tests/
│ │ │ │ ├── COPYING
│ │ │ │ ├── ChangeLog
│ │ │ │ ├── NEWS
│ │ │ │ ├── README
│ │ │ │ ├── mkshadow
│ │ │ │ ├── run_make_tests
│ │ │ │ ├── run_make_tests.pl
│ │ │ │ ├── scripts/
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── comments
│ │ │ │ │ │ ├── conditionals
│ │ │ │ │ │ ├── default_names
│ │ │ │ │ │ ├── double_colon
│ │ │ │ │ │ ├── echoing
│ │ │ │ │ │ ├── errors
│ │ │ │ │ │ ├── escape
│ │ │ │ │ │ ├── export
│ │ │ │ │ │ ├── include
│ │ │ │ │ │ ├── mult_rules
│ │ │ │ │ │ ├── mult_targets
│ │ │ │ │ │ ├── order_only
│ │ │ │ │ │ ├── override
│ │ │ │ │ │ ├── parallelism
│ │ │ │ │ │ ├── patspecific_vars
│ │ │ │ │ │ ├── patternrules
│ │ │ │ │ │ ├── quoting
│ │ │ │ │ │ ├── recursion
│ │ │ │ │ │ ├── reinvoke
│ │ │ │ │ │ ├── se_explicit
│ │ │ │ │ │ ├── se_implicit
│ │ │ │ │ │ ├── se_statpat
│ │ │ │ │ │ ├── statipattrules
│ │ │ │ │ │ ├── targetvars
│ │ │ │ │ │ ├── varnesting
│ │ │ │ │ │ ├── vpath
│ │ │ │ │ │ ├── vpath2
│ │ │ │ │ │ ├── vpathgpath
│ │ │ │ │ │ └── vpathplus
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── abspath
│ │ │ │ │ │ ├── addprefix
│ │ │ │ │ │ ├── addsuffix
│ │ │ │ │ │ ├── andor
│ │ │ │ │ │ ├── basename
│ │ │ │ │ │ ├── call
│ │ │ │ │ │ ├── dir
│ │ │ │ │ │ ├── error
│ │ │ │ │ │ ├── eval
│ │ │ │ │ │ ├── filter-out
│ │ │ │ │ │ ├── findstring
│ │ │ │ │ │ ├── flavor
│ │ │ │ │ │ ├── foreach
│ │ │ │ │ │ ├── if
│ │ │ │ │ │ ├── join
│ │ │ │ │ │ ├── notdir
│ │ │ │ │ │ ├── origin
│ │ │ │ │ │ ├── realpath
│ │ │ │ │ │ ├── shell
│ │ │ │ │ │ ├── sort
│ │ │ │ │ │ ├── strip
│ │ │ │ │ │ ├── substitution
│ │ │ │ │ │ ├── suffix
│ │ │ │ │ │ ├── value
│ │ │ │ │ │ ├── warning
│ │ │ │ │ │ ├── wildcard
│ │ │ │ │ │ └── word
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ ├── close_stdout
│ │ │ │ │ │ ├── general1
│ │ │ │ │ │ ├── general2
│ │ │ │ │ │ ├── general3
│ │ │ │ │ │ └── general4
│ │ │ │ │ ├── options/
│ │ │ │ │ │ ├── dash-B
│ │ │ │ │ │ ├── dash-C
│ │ │ │ │ │ ├── dash-I
│ │ │ │ │ │ ├── dash-W
│ │ │ │ │ │ ├── dash-e
│ │ │ │ │ │ ├── dash-f
│ │ │ │ │ │ ├── dash-k
│ │ │ │ │ │ ├── dash-l
│ │ │ │ │ │ ├── dash-n
│ │ │ │ │ │ ├── dash-q
│ │ │ │ │ │ ├── dash-t
│ │ │ │ │ │ ├── general
│ │ │ │ │ │ ├── symlinks
│ │ │ │ │ │ └── warn-undefined-variables
│ │ │ │ │ ├── targets/
│ │ │ │ │ │ ├── DEFAULT
│ │ │ │ │ │ ├── FORCE
│ │ │ │ │ │ ├── INTERMEDIATE
│ │ │ │ │ │ ├── PHONY
│ │ │ │ │ │ ├── SECONDARY
│ │ │ │ │ │ ├── SILENT
│ │ │ │ │ │ └── clean
│ │ │ │ │ ├── test_template
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── CURDIR
│ │ │ │ │ ├── DEFAULT_GOAL
│ │ │ │ │ ├── INCLUDE_DIRS
│ │ │ │ │ ├── MAKE
│ │ │ │ │ ├── MAKECMDGOALS
│ │ │ │ │ ├── MAKEFILES
│ │ │ │ │ ├── MAKELEVEL
│ │ │ │ │ ├── MAKE_RESTARTS
│ │ │ │ │ ├── MFILE_LIST
│ │ │ │ │ ├── SHELL
│ │ │ │ │ ├── automatic
│ │ │ │ │ ├── flavors
│ │ │ │ │ ├── negative
│ │ │ │ │ └── special
│ │ │ │ └── test_driver.pl
│ │ │ ├── variable.c
│ │ │ ├── variable.h
│ │ │ ├── version.c
│ │ │ ├── vmsdir.h
│ │ │ ├── vmsfunctions.c
│ │ │ ├── vmsify.c
│ │ │ ├── vmsjobs.c
│ │ │ ├── vpath.c
│ │ │ └── w32/
│ │ │ ├── .deps/
│ │ │ │ ├── libw32_a-misc.Po
│ │ │ │ ├── libw32_a-pathstuff.Po
│ │ │ │ ├── libw32_a-sub_proc.Po
│ │ │ │ └── libw32_a-w32err.Po
│ │ │ ├── Makefile
│ │ │ ├── Makefile.am
│ │ │ ├── Makefile.in
│ │ │ ├── compat/
│ │ │ │ └── dirent.c
│ │ │ ├── include/
│ │ │ │ ├── dirent.h
│ │ │ │ ├── pathstuff.h
│ │ │ │ ├── sub_proc.h
│ │ │ │ └── w32err.h
│ │ │ ├── pathstuff.c
│ │ │ └── subproc/
│ │ │ ├── NMakefile
│ │ │ ├── build.bat
│ │ │ ├── misc.c
│ │ │ ├── proc.h
│ │ │ ├── sub_proc.c
│ │ │ └── w32err.c
│ │ ├── nawk-20071023/
│ │ │ ├── FIXES
│ │ │ ├── GNUmakefile
│ │ │ ├── NOTICE
│ │ │ ├── README
│ │ │ ├── awk.h
│ │ │ ├── awkgram.y
│ │ │ ├── b.c
│ │ │ ├── build-awk.sh
│ │ │ ├── build.py
│ │ │ ├── lex.c
│ │ │ ├── lib.c
│ │ │ ├── main.c
│ │ │ ├── maketab.c
│ │ │ ├── parse.c
│ │ │ ├── proto.h
│ │ │ ├── run.c
│ │ │ └── tran.c
│ │ ├── ndk-depends/
│ │ │ ├── GNUmakefile
│ │ │ ├── NOTICE
│ │ │ ├── build-ndk-depends.sh
│ │ │ ├── build.py
│ │ │ └── ndk-depends.cc
│ │ ├── ndk-stack/
│ │ │ ├── GNUmakefile
│ │ │ ├── NOTICE
│ │ │ ├── binutils/
│ │ │ │ ├── COPYING3
│ │ │ │ └── addr2line.c
│ │ │ ├── build-ndk-stack.sh
│ │ │ ├── build.py
│ │ │ ├── ndk-stack-parser.c
│ │ │ ├── ndk-stack-parser.h
│ │ │ ├── ndk-stack.c
│ │ │ └── regex/
│ │ │ ├── cclass.h
│ │ │ ├── cname.h
│ │ │ ├── engine.c
│ │ │ ├── regcomp.c
│ │ │ ├── regerror.c
│ │ │ ├── regex.h
│ │ │ ├── regex2.h
│ │ │ ├── regexec.c
│ │ │ ├── regfree.c
│ │ │ ├── targetver.h
│ │ │ └── utils.h
│ │ └── toolbox/
│ │ ├── NOTICE
│ │ ├── build-toolbox.sh
│ │ ├── build.py
│ │ ├── cmp_win.c
│ │ └── echo_win.c
│ ├── objc/
│ │ ├── cocotron/
│ │ │ └── 0.1.0/
│ │ │ ├── .gitignore
│ │ │ └── Android.mk
│ │ ├── gnustep-libobjc2/
│ │ │ ├── .gitignore
│ │ │ └── Android.mk
│ │ └── none/
│ │ └── Android.mk
│ ├── python/
│ │ ├── 2.7/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ └── frozen/
│ │ │ ├── _ctypes/
│ │ │ │ └── Android.mk
│ │ │ ├── _multiprocessing/
│ │ │ │ └── Android.mk
│ │ │ ├── _socket/
│ │ │ │ └── Android.mk
│ │ │ ├── _sqlite3/
│ │ │ │ └── Android.mk
│ │ │ ├── _ssl/
│ │ │ │ └── Android.mk
│ │ │ ├── pyexpat/
│ │ │ │ └── Android.mk
│ │ │ ├── select/
│ │ │ │ └── Android.mk
│ │ │ ├── stdlib/
│ │ │ │ └── Android.mk
│ │ │ └── unicodedata/
│ │ │ └── Android.mk
│ │ └── 3.5/
│ │ ├── .gitignore
│ │ ├── Android.mk
│ │ └── frozen/
│ │ ├── _ctypes/
│ │ │ └── Android.mk
│ │ ├── _multiprocessing/
│ │ │ └── Android.mk
│ │ ├── _socket/
│ │ │ └── Android.mk
│ │ ├── _sqlite3/
│ │ │ └── Android.mk
│ │ ├── _ssl/
│ │ │ └── Android.mk
│ │ ├── pyexpat/
│ │ │ └── Android.mk
│ │ ├── select/
│ │ │ └── Android.mk
│ │ ├── stdlib/
│ │ │ └── Android.mk
│ │ └── unicodedata/
│ │ └── Android.mk
│ └── third_party/
│ └── googletest/
│ ├── Android.mk
│ ├── README.NDK
│ ├── googletest/
│ │ ├── CHANGES
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── include/
│ │ │ └── gtest/
│ │ │ ├── gtest-death-test.h
│ │ │ ├── gtest-message.h
│ │ │ ├── gtest-param-test.h
│ │ │ ├── gtest-param-test.h.pump
│ │ │ ├── gtest-printers.h
│ │ │ ├── gtest-spi.h
│ │ │ ├── gtest-test-part.h
│ │ │ ├── gtest-typed-test.h
│ │ │ ├── gtest.h
│ │ │ ├── gtest_pred_impl.h
│ │ │ ├── gtest_prod.h
│ │ │ └── internal/
│ │ │ ├── gtest-death-test-internal.h
│ │ │ ├── gtest-filepath.h
│ │ │ ├── gtest-internal.h
│ │ │ ├── gtest-linked_ptr.h
│ │ │ ├── gtest-param-util-generated.h
│ │ │ ├── gtest-param-util-generated.h.pump
│ │ │ ├── gtest-param-util.h
│ │ │ ├── gtest-port.h
│ │ │ ├── gtest-string.h
│ │ │ ├── gtest-tuple.h
│ │ │ ├── gtest-tuple.h.pump
│ │ │ ├── gtest-type-util.h
│ │ │ └── gtest-type-util.h.pump
│ │ ├── samples/
│ │ │ ├── prime_tables.h
│ │ │ ├── sample1.cc
│ │ │ ├── sample1.h
│ │ │ ├── sample10_unittest.cc
│ │ │ ├── sample1_unittest.cc
│ │ │ ├── sample2.cc
│ │ │ ├── sample2.h
│ │ │ ├── sample2_unittest.cc
│ │ │ ├── sample3-inl.h
│ │ │ ├── sample3_unittest.cc
│ │ │ ├── sample4.cc
│ │ │ ├── sample4.h
│ │ │ ├── sample4_unittest.cc
│ │ │ ├── sample5_unittest.cc
│ │ │ ├── sample6_unittest.cc
│ │ │ ├── sample7_unittest.cc
│ │ │ ├── sample8_unittest.cc
│ │ │ └── sample9_unittest.cc
│ │ ├── src/
│ │ │ ├── gtest-all.cc
│ │ │ ├── gtest-death-test.cc
│ │ │ ├── gtest-filepath.cc
│ │ │ ├── gtest-internal-inl.h
│ │ │ ├── gtest-port.cc
│ │ │ ├── gtest-printers.cc
│ │ │ ├── gtest-test-part.cc
│ │ │ ├── gtest-typed-test.cc
│ │ │ ├── gtest.cc
│ │ │ └── gtest_main.cc
│ │ └── test/
│ │ ├── gtest-death-test_ex_test.cc
│ │ ├── gtest-death-test_test.cc
│ │ ├── gtest-filepath_test.cc
│ │ ├── gtest-linked_ptr_test.cc
│ │ ├── gtest-listener_test.cc
│ │ ├── gtest-message_test.cc
│ │ ├── gtest-options_test.cc
│ │ ├── gtest-param-test2_test.cc
│ │ ├── gtest-param-test_test.cc
│ │ ├── gtest-param-test_test.h
│ │ ├── gtest-port_test.cc
│ │ ├── gtest-printers_test.cc
│ │ ├── gtest-test-part_test.cc
│ │ ├── gtest-tuple_test.cc
│ │ ├── gtest-typed-test2_test.cc
│ │ ├── gtest-typed-test_test.cc
│ │ ├── gtest-typed-test_test.h
│ │ ├── gtest-unittest-api_test.cc
│ │ ├── gtest_all_test.cc
│ │ ├── gtest_break_on_failure_unittest.py
│ │ ├── gtest_break_on_failure_unittest_.cc
│ │ ├── gtest_catch_exceptions_test.py
│ │ ├── gtest_catch_exceptions_test_.cc
│ │ ├── gtest_color_test.py
│ │ ├── gtest_color_test_.cc
│ │ ├── gtest_env_var_test.py
│ │ ├── gtest_env_var_test_.cc
│ │ ├── gtest_environment_test.cc
│ │ ├── gtest_filter_unittest.py
│ │ ├── gtest_filter_unittest_.cc
│ │ ├── gtest_help_test.py
│ │ ├── gtest_help_test_.cc
│ │ ├── gtest_list_tests_unittest.py
│ │ ├── gtest_list_tests_unittest_.cc
│ │ ├── gtest_main_unittest.cc
│ │ ├── gtest_no_test_unittest.cc
│ │ ├── gtest_output_test.py
│ │ ├── gtest_output_test_.cc
│ │ ├── gtest_output_test_golden_lin.txt
│ │ ├── gtest_pred_impl_unittest.cc
│ │ ├── gtest_prod_test.cc
│ │ ├── gtest_repeat_test.cc
│ │ ├── gtest_shuffle_test.py
│ │ ├── gtest_shuffle_test_.cc
│ │ ├── gtest_sole_header_test.cc
│ │ ├── gtest_stress_test.cc
│ │ ├── gtest_test_utils.py
│ │ ├── gtest_throw_on_failure_ex_test.cc
│ │ ├── gtest_throw_on_failure_test.py
│ │ ├── gtest_throw_on_failure_test_.cc
│ │ ├── gtest_uninitialized_test.py
│ │ ├── gtest_uninitialized_test_.cc
│ │ ├── gtest_unittest.cc
│ │ ├── gtest_xml_outfile1_test_.cc
│ │ ├── gtest_xml_outfile2_test_.cc
│ │ ├── gtest_xml_outfiles_test.py
│ │ ├── gtest_xml_output_unittest.py
│ │ ├── gtest_xml_output_unittest_.cc
│ │ ├── gtest_xml_test_utils.py
│ │ ├── production.cc
│ │ └── production.h
│ └── patches.ndk/
│ ├── 0001-Allow-clone-usage-on-MIPS.patch
│ ├── 0002-Work-around-broken-abort-on-Android-MIPS.patch
│ └── 0003-Allow-clone-usage-on-X86.patch
├── tests/
│ ├── .gitignore
│ ├── README
│ ├── __init__.py
│ ├── awk/
│ │ ├── extract-launchable/
│ │ │ ├── multiple-categories.in
│ │ │ ├── multiple-categories.out
│ │ │ ├── multiple-launchables.in
│ │ │ ├── multiple-launchables.out
│ │ │ ├── no-launchable.in
│ │ │ ├── no-launchable.out
│ │ │ ├── one-launchable.in
│ │ │ └── one-launchable.out
│ │ ├── extract-pid/
│ │ │ ├── test-1.in
│ │ │ └── test-1.out
│ │ ├── gen-cygwin-deps-converter/
│ │ │ ├── test-1.in
│ │ │ ├── test-1.out
│ │ │ ├── test-2.in
│ │ │ └── test-2.out
│ │ └── gen-windows-host-path/
│ │ ├── test-1.in
│ │ └── test-1.out
│ ├── build/
│ │ ├── .gitignore
│ │ ├── absolute-src-file-paths/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── src/
│ │ │ ├── foo.c
│ │ │ └── main.c
│ │ ├── ansi/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test_ansi.c
│ │ │ └── test_ansi.cpp
│ │ ├── awk-trailing-r/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── awk-trailing-r.c
│ │ ├── b14811006-GOT_PREL-optimization/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── SkAlphaMulQ.cc
│ │ │ └── properties.json
│ │ ├── b14825026-aarch64-FP_LO_REGS/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── idct_dequant_full_2x_neon.c
│ │ │ └── test_config.py
│ │ ├── b8247455-hidden-cxa/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── idiv.cpp
│ │ │ └── throw.cpp
│ │ ├── b9193874-neon/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── b9193874-neon.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── build-assembly-file/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── assembly-mips.S
│ │ │ ├── assembly-x86.S
│ │ │ ├── assembly1.s
│ │ │ └── assembly2.S
│ │ ├── build-mode/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── c++-stl-source-extensions/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── main.C
│ │ │ │ ├── main.CPP
│ │ │ │ ├── main.c++
│ │ │ │ ├── main.cc
│ │ │ │ ├── main.cp
│ │ │ │ ├── main.cpp
│ │ │ │ └── main.cxx
│ │ │ └── test_config.py
│ │ ├── check-armeabi-v7a-prebuilts/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── clang-include-gnu-libc++/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── clang-include-gnu-libc++.cc
│ │ ├── copysign/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── copysign.cpp
│ │ │ └── test_config.py
│ │ ├── cortex-a53-835769/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── cortex-a53-835769-1.c
│ │ │ │ └── cortex-a53-835769-2.c
│ │ │ └── test_config.py
│ │ ├── cpp-extensions/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo1.cc
│ │ │ ├── foo2.cp
│ │ │ ├── foo3.cxx
│ │ │ ├── foo4.cpp
│ │ │ ├── foo5.C
│ │ │ ├── foo6.CPP
│ │ │ └── main.c++
│ │ ├── crystax-check-BROKEN_BUILD/
│ │ │ └── build.sh
│ │ ├── crystax-check-BROKEN_RUN/
│ │ │ └── build.sh
│ │ ├── crystax-check-BUILD_SHOULD_FAIL/
│ │ │ └── build.sh
│ │ ├── crystax-check-DISABLED/
│ │ │ └── build.sh
│ │ ├── crystax-check-__gnu_linux__/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-check-host-python-ssl-modules/
│ │ │ └── build.sh
│ │ ├── crystax-check-prebuilt-gdb/
│ │ │ └── build.sh
│ │ ├── crystax-issue1044-clang-x86_64-crash/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1170-alloca-redefined/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1234-fd_set-should-be-exposed-implicitly-by-stdlib_h/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-issue1263-___atomic_add_fetch/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1263-clang-64bit-atomics/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1340-PTRDIFF_MAX-is-not-defined/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1352-libobjc-soname/
│ │ │ └── build.sh
│ │ ├── crystax-issue1363-do-not-know-how-to-soften-operand/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-issue1370-unknown-dwarf-version/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── test.c
│ │ ├── crystax-issue906-long-double/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-issue922-struct_user-exposed-by-stdlib_h/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-__GCC_HAVE_SYNC_COMPARE_AND_SWAP/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-boost-dependencies/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ └── test.cpp
│ │ ├── crystax-test-c++-exceptions-and-rtti-enabled-by-default/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── test.cpp
│ │ ├── crystax-test-ext-hash/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-headers/
│ │ │ └── build.sh
│ │ ├── crystax-test-libcrystax-linking/
│ │ │ └── build.sh
│ │ ├── crystax-test-neon/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-patched-sysroot/
│ │ │ └── build.sh
│ │ ├── crystax-test-posix-interfaces/
│ │ │ ├── bin/
│ │ │ │ ├── gen-aio
│ │ │ │ ├── gen-all
│ │ │ │ ├── gen-cpio
│ │ │ │ ├── gen-errno
│ │ │ │ ├── gen-fcntl
│ │ │ │ ├── gen-fenv
│ │ │ │ ├── gen-float
│ │ │ │ ├── gen-fmtmsg
│ │ │ │ ├── gen-fnmatch
│ │ │ │ ├── gen-ftw
│ │ │ │ ├── gen-glob
│ │ │ │ ├── gen-inttypes
│ │ │ │ ├── gen-iso646
│ │ │ │ ├── gen-langinfo
│ │ │ │ ├── gen-limits
│ │ │ │ ├── gen-locale
│ │ │ │ ├── gen-math
│ │ │ │ ├── gen-netdb
│ │ │ │ ├── gen-netinet_in
│ │ │ │ ├── gen-poll
│ │ │ │ ├── gen-pthread
│ │ │ │ ├── gen-regex
│ │ │ │ ├── gen-sched
│ │ │ │ ├── gen-signal
│ │ │ │ ├── gen-spawn
│ │ │ │ ├── gen-stdbool
│ │ │ │ ├── gen-stdint
│ │ │ │ ├── gen-stdio
│ │ │ │ ├── gen-stdlib
│ │ │ │ ├── gen-sys_ipc
│ │ │ │ ├── gen-sys_mman
│ │ │ │ ├── gen-sys_resource
│ │ │ │ ├── gen-sys_sem
│ │ │ │ ├── gen-sys_shm
│ │ │ │ ├── gen-sys_socket
│ │ │ │ ├── gen-sys_stat
│ │ │ │ ├── gen-sys_statvfs
│ │ │ │ ├── gen-sys_time
│ │ │ │ ├── gen-sys_wait
│ │ │ │ ├── gen-syslog
│ │ │ │ ├── gen-tar
│ │ │ │ ├── gen-termios
│ │ │ │ ├── gen-tgmath
│ │ │ │ ├── gen-time
│ │ │ │ ├── gen-unistd
│ │ │ │ ├── gen-wchar
│ │ │ │ └── gen-wordexp
│ │ │ ├── build.sh
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── .gitignore
│ │ │ ├── Android.mk
│ │ │ ├── aio.c
│ │ │ ├── arpa_inet.c
│ │ │ ├── checkm.c
│ │ │ ├── complex.c
│ │ │ ├── cpio.c
│ │ │ ├── ctype.c
│ │ │ ├── dirent.c
│ │ │ ├── dlfcn.c
│ │ │ ├── errno.c
│ │ │ ├── fcntl.c
│ │ │ ├── fenv.c
│ │ │ ├── float.c
│ │ │ ├── fmtmsg.c
│ │ │ ├── fnmatch.c
│ │ │ ├── ftw.c
│ │ │ ├── glob.c
│ │ │ ├── grp.c
│ │ │ ├── helper.h
│ │ │ ├── iconv.c
│ │ │ ├── inttypes.c
│ │ │ ├── iso646.c
│ │ │ ├── langinfo.c
│ │ │ ├── libgen.c
│ │ │ ├── limits.c
│ │ │ ├── locale.c
│ │ │ ├── main.c
│ │ │ ├── math.c
│ │ │ ├── monetary.c
│ │ │ ├── mqueue.c
│ │ │ ├── ndbm.c
│ │ │ ├── net_if.c
│ │ │ ├── netdb.c
│ │ │ ├── netinet_in.c
│ │ │ ├── netinet_tcp.c
│ │ │ ├── nl_types.c
│ │ │ ├── poll.c
│ │ │ ├── pthread.c
│ │ │ ├── pwd.c
│ │ │ ├── regex.c
│ │ │ ├── sched.c
│ │ │ ├── search.c
│ │ │ ├── semaphore.c
│ │ │ ├── setjmp.c
│ │ │ ├── signal.c
│ │ │ ├── spawn.c
│ │ │ ├── stdarg.c
│ │ │ ├── stdbool.c
│ │ │ ├── stddef.c
│ │ │ ├── stdint.c
│ │ │ ├── stdio.c
│ │ │ ├── stdlib.c
│ │ │ ├── string.c
│ │ │ ├── strings.c
│ │ │ ├── sys_ipc.c
│ │ │ ├── sys_mman.c
│ │ │ ├── sys_msg.c
│ │ │ ├── sys_resource.c
│ │ │ ├── sys_select.c
│ │ │ ├── sys_sem.c
│ │ │ ├── sys_shm.c
│ │ │ ├── sys_socket.c
│ │ │ ├── sys_stat.c
│ │ │ ├── sys_statvfs.c
│ │ │ ├── sys_time.c
│ │ │ ├── sys_times.c
│ │ │ ├── sys_types.c
│ │ │ ├── sys_uio.c
│ │ │ ├── sys_un.c
│ │ │ ├── sys_utsname.c
│ │ │ ├── sys_wait.c
│ │ │ ├── syslog.c
│ │ │ ├── tar.c
│ │ │ ├── termios.c
│ │ │ ├── tgmath.c
│ │ │ ├── time.c
│ │ │ ├── unistd.c
│ │ │ ├── utime.c
│ │ │ ├── wchar.c
│ │ │ ├── wctype.c
│ │ │ ├── wordexp.c
│ │ │ ├── xlocale.c
│ │ │ └── xlocale2.c
│ │ ├── crystax-test-prebuilt-macros/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-sync_file_range/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── deprecate-__set_errno/
│ │ │ └── build.sh
│ │ ├── fenv/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test_fenv.c
│ │ │ └── test_fenv.cpp
│ │ ├── flto/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── flto.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── gnustl-force-all/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── forced_all.cpp
│ │ ├── gnustl-force-exceptions/
│ │ │ └── build.sh
│ │ ├── gnustl-force-none/
│ │ │ └── build.sh
│ │ ├── gnustl-force-rtti/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── forced_rtti.cpp
│ │ ├── import-install/
│ │ │ ├── README
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ ├── path1/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── path1.c
│ │ │ │ └── path1.h
│ │ │ └── path2/
│ │ │ ├── Android.mk
│ │ │ ├── path2.c
│ │ │ └── path2.h
│ │ ├── import-static/
│ │ │ ├── README
│ │ │ ├── bar/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── bar.c
│ │ │ │ └── bar.h
│ │ │ ├── build.sh
│ │ │ ├── foo/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── foo.c
│ │ │ │ └── foo.h
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── main.c
│ │ ├── issue-gcc59052-partial-specialization-of-template/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue-gcc59052-partial-specialization-of-template.cc
│ │ ├── issue17144-byteswap/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue17144-byteswap.c
│ │ │ └── test_config.py
│ │ ├── issue20862-libpng-O0/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── png.h
│ │ │ ├── pngconf.h
│ │ │ ├── pngdebug.h
│ │ │ ├── pnginfo.h
│ │ │ ├── pnglibconf.h
│ │ │ ├── pngpriv.h
│ │ │ ├── pngrtran.c
│ │ │ └── pngstruct.h
│ │ ├── issue21132-__ARM_ARCH__/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue21132-__ARM_ARCH__.c
│ │ │ └── test_config.py
│ │ ├── issue22336-ICE-emit-rtl/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue22336-ICE-emit-rtl.cpp
│ │ │ └── test_config.py
│ │ ├── issue22345-ICE-postreload/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue22345-ICE-postreload.cpp
│ │ │ └── test_config.py
│ │ ├── issue34613-neon/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue34613-neon.cpp
│ │ │ └── test_config.py
│ │ ├── issue36131-flto-c++11/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue36131-flto-c++11.cxx
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── issue38441-Elf32_auxv_t/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue38441-Elf32_auxv_t.c
│ │ ├── issue39824-__BYTE_ORDER/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── issue39824-_BYTE_ORDER.c
│ │ │ └── issue39824-__BYTE_ORDER.c
│ │ ├── issue39983-PAGE_SIZE/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue39983-PAGE_SIZE.c
│ │ ├── issue40625-SL_IID_ANDROIDBUFFERQUEUESOURCE/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue40625-SL_IID_ANDROIDBUFFERQUEUESOURCE.c
│ │ ├── issue41297-atomic-64bit/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue41297-atomic-64bit.c
│ │ │ └── test_config.py
│ │ ├── issue41387-uniform-initialized-rvalue/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue41387-uniform-initialized-rvalue.cpp
│ │ ├── issue41770-_GLIBCXX_HAS_GTHREADS/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue41770-_GLIBCXX_HAS_GTHREADS.cpp
│ │ │ └── test_config.py
│ │ ├── issue42841-LOCAL_PATH/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue42841-LOCAL_PATH.c
│ │ ├── issue53163-OpenSLES_AndroidConfiguration/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue53163-OpenSLES_AndroidConfiguration.c
│ │ ├── issue53404-backward-compatibility/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue53404-backward-compatibility.cpp
│ │ ├── issue53711-un_h/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue53711-un_h.c
│ │ ├── issue54465-invalid-asm-operand-out-of-range/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue54465-invalid-asm-operand-out-of-range.cpp
│ │ ├── issue54623-dcraw_common-x86-segfault/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue54623-dcraw_common-x86-segfault.cpp
│ │ ├── issue56508-gcc4.7-ICE/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── extraMachine.c
│ │ ├── issue58135-_C_LABEL_STRING/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue58135-_C_LABEL_STRING.cpp
│ │ ├── issue64679-prctl/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue64679-prctl.cc
│ │ ├── issue65705-asm-pc/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue65705-asm-pc.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── issue66668-libc++-std-feof/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue66668-libc++-std-feof.cpp
│ │ ├── issue79114-__builtin___stpncpy_chk/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── __builtin___stpncpy_chk.c
│ │ ├── issue79115-confusing-ld.gold-warning/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue79115-confusing-ld.gold-warning.c
│ │ ├── issue81440-non-ascii-comment/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue81440-non-ascii-comment.cpp
│ │ ├── lambda-defarg3/
│ │ │ ├── COPYING
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── lambda-defarg3.C
│ │ │ └── test_config.py
│ │ ├── merge-string-literals/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── merge-string-literals-1.c
│ │ │ └── merge-string-literals-2.c
│ │ ├── mips-fp4/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── mips-fp4-test1-2.c
│ │ │ │ └── mips-fp4-test3-6.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── multi-abi/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── multi-module-path/
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── test.c
│ │ │ ├── path1/
│ │ │ │ └── foo/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── foo.h
│ │ │ │ └── libfoo.c
│ │ │ └── path2/
│ │ │ └── bar/
│ │ │ ├── Android.mk
│ │ │ ├── bar.h
│ │ │ └── libbar.c
│ │ ├── multiple-static-const/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.cpp
│ │ │ ├── main.cpp
│ │ │ └── main.h
│ │ ├── ndk-build-unit-tests/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ └── Android.mk
│ │ ├── ndk-out/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── main.c
│ │ ├── no-installable-modules/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.c
│ │ ├── pch-cpp/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── foo.c
│ │ │ ├── foo.cpp
│ │ │ └── stdafx.h
│ │ ├── pch-tags/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.cpp
│ │ │ ├── foo.cpp
│ │ │ └── stdafx.h
│ │ ├── prebuilt-copy/
│ │ │ ├── README
│ │ │ ├── build.sh
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ └── prebuilts/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.c
│ │ │ └── foo.c
│ │ ├── project-properties/
│ │ │ ├── default.properties
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── project.properties
│ │ ├── pthread-rwlock-initializer/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_pthread_rwlock_initializer.c
│ │ ├── short-commands/
│ │ │ └── build.sh
│ │ ├── ssax-instructions/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.S
│ │ │ └── test_config.py
│ │ ├── standalone-toolchain/
│ │ │ ├── foo.cpp
│ │ │ ├── properties.json
│ │ │ ├── test.py
│ │ │ └── test_config.py
│ │ ├── stdint-c++/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── gen-sources.sh
│ │ │ ├── test_all_macros.cpp
│ │ │ ├── test_c.c
│ │ │ ├── test_constant_macros.cpp
│ │ │ ├── test_limit_macros.cpp
│ │ │ └── test_no_macros.cpp
│ │ ├── system-cpp-headers/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── target-c-includes/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── check.c
│ │ │ └── include/
│ │ │ └── math.h
│ │ ├── test-c-only-flags/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test-c-only-flags.cpp
│ │ ├── test-gnustl-chrono/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── hanoi.c
│ │ │ ├── hanoi.h
│ │ │ └── main.cpp
│ │ ├── test-inet-defs/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-in.c
│ │ │ └── test-in6.c
│ │ ├── thin-archives/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.c
│ │ │ ├── foo.c
│ │ │ └── main.c
│ │ ├── topological-sort/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── bar.c
│ │ │ ├── bar.h
│ │ │ ├── foo.c
│ │ │ ├── foo.h
│ │ │ ├── foo2.c
│ │ │ └── main.c
│ │ ├── ucontext/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── ucontext.c
│ │ ├── warn-bad-modules/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.cpp
│ │ ├── warn-no-ldflags-in-static-libraries/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.c
│ │ ├── warn-no-ldlibs-in-static-libraries/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── foo.c
│ │ ├── warn-no-modules/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ └── Android.mk
│ │ ├── warn-non-system-libs-in-linker-flags/
│ │ │ ├── build.sh
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── foo.c
│ │ │ └── main.c
│ │ └── warn-thin-archive-is-for-static-libraries/
│ │ ├── build.sh
│ │ └── jni/
│ │ ├── Android.mk
│ │ └── foo.c
│ ├── device/
│ │ ├── asan-smoke/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── asan_oob_test.cc
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── b16355626-bad-atof-strtod/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── b16355626-bad-atof-strtod.cpp
│ │ ├── b16355858/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── sample.c
│ │ │ └── sample_lib.c
│ │ ├── b8708181-Vector4/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── Vector4.cpp
│ │ │ └── test_config.py
│ │ ├── bitfield/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── func.c
│ │ │ ├── header.h
│ │ │ └── main.c
│ │ ├── clone/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── clone.c
│ │ ├── crystax-issue1003-pw_gecos/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1046-dlopen-unknown-reloc-type-160/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── main.c
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1163-dladdr/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.c
│ │ │ ├── foo.h
│ │ │ └── main.c
│ │ ├── crystax-issue1188-wrong-static-library-link/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── lib-shared.cpp
│ │ │ ├── lib-shared.hpp
│ │ │ ├── lib-static.cpp
│ │ │ ├── lib-static.hpp
│ │ │ └── test.cpp
│ │ ├── crystax-issue1194-posix_memalign/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1252-swab/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1360-boost_locale_issetugid/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issetugidtest.cpp
│ │ ├── crystax-issue1369-lrintf/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-issue1398-esdb/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.cpp
│ │ │ └── properties.json
│ │ ├── crystax-issue1399-gmtime-return-NULL-tm_zone/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue1436-gethostname/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-issue350-copy-with-zone/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.m
│ │ │ └── properties.json
│ │ ├── crystax-issue355-clock_nanosleep/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ └── properties.json
│ │ ├── crystax-issue57-std_atomic/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-issue876-swapNN/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── assert.h
│ │ │ ├── function.c
│ │ │ ├── macro.c
│ │ │ └── main.c
│ │ ├── crystax-issue912-__tls_get_addr/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── test.c
│ │ │ │ └── tga.c
│ │ │ └── properties.json
│ │ ├── crystax-issue995-objective-c-literals/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.m
│ │ │ └── properties.json
│ │ ├── crystax-test-alignof/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.cpp
│ │ ├── crystax-test-big-switch/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── gen
│ │ ├── crystax-test-bionic/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── crystax-test-boost-serialization/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── gps.cpp
│ │ │ ├── gps.hpp
│ │ │ └── test.cpp
│ │ ├── crystax-test-c++11/
│ │ │ ├── .syntastic/
│ │ │ │ └── cxx
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── common.h
│ │ │ ├── main.cpp
│ │ │ ├── test-chrono-duration.cpp
│ │ │ ├── test-language.cpp
│ │ │ ├── test-stol.cpp
│ │ │ ├── test-thread.cpp
│ │ │ ├── test-to-string.cpp
│ │ │ └── test-to-wstring.cpp
│ │ ├── crystax-test-c99-complex/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.c
│ │ │ └── properties.json
│ │ ├── crystax-test-c99-stdlib/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-cmake/
│ │ │ ├── CMakeLists.txt
│ │ │ └── test.c
│ │ ├── crystax-test-dynamic_cast/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-executables/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-fcntl/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── fcntl.c
│ │ ├── crystax-test-float-abi/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test-float.c
│ │ ├── crystax-test-getauxval/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-iostream/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-libcrystax/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── absolutize.cpp
│ │ │ ├── basename.cpp
│ │ │ ├── common.h
│ │ │ ├── dirname.cpp
│ │ │ ├── is_absolute.cpp
│ │ │ ├── is_normalized.cpp
│ │ │ ├── is_subpath.cpp
│ │ │ ├── list.cpp
│ │ │ ├── main.cpp
│ │ │ ├── normalize.cpp
│ │ │ ├── open-self.cpp
│ │ │ ├── path.cpp
│ │ │ └── relpath.cpp
│ │ ├── crystax-test-libjpeg/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-libjpeg-turbo/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-libkqueue/
│ │ │ ├── config.h
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── crystax-test-libpng/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-locales/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-setlocale.c
│ │ │ ├── test-strfmon.c
│ │ │ └── test-strftime.c
│ │ ├── crystax-test-msun/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-cexp.c
│ │ │ ├── test-conj.c
│ │ │ ├── test-csqrt.c
│ │ │ ├── test-ctrig.c
│ │ │ ├── test-exponential.c
│ │ │ ├── test-fenv.c
│ │ │ ├── test-fma.c
│ │ │ ├── test-fmaxmin.c
│ │ │ ├── test-ilogb.c
│ │ │ ├── test-invctrig.c
│ │ │ ├── test-invtrig.c
│ │ │ ├── test-logarithm.c
│ │ │ ├── test-lrint.c
│ │ │ ├── test-lround.c
│ │ │ ├── test-nan.c
│ │ │ ├── test-nearbyint.c
│ │ │ ├── test-next.c
│ │ │ ├── test-rem.c
│ │ │ ├── test-trig.c
│ │ │ └── test-utils.h
│ │ ├── crystax-test-objc-blocks/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test.m
│ │ │ └── properties.json
│ │ ├── crystax-test-objc-cocotron/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── test-assert.m
│ │ │ │ ├── test-base.m
│ │ │ │ ├── test-exception.m
│ │ │ │ ├── test-nslog.m
│ │ │ │ └── test-string.m
│ │ │ └── properties.json
│ │ ├── crystax-test-objc-runtime/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── objc.m
│ │ │ │ ├── objcxx.mm
│ │ │ │ └── test.c
│ │ │ └── properties.json
│ │ ├── crystax-test-openpts/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── crystax-test-pthread_workqueue/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── crystax-test-rand_r/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-regex/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── crystax-test-setjmp/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-sincos/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-sincos-c.c
│ │ │ ├── test-sincos-cpp.cpp
│ │ │ └── test-sincos-main.c
│ │ ├── crystax-test-sqlite3/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test.c
│ │ ├── crystax-test-std-atomic-crashes/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.cc
│ │ │ └── properties.json
│ │ ├── crystax-test-stdatomic.h/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-stdio/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-fmemopen.c
│ │ │ ├── test-fopen.c
│ │ │ ├── test-getdelim.c
│ │ │ ├── test-getline.c
│ │ │ ├── test-open_memstream.c
│ │ │ ├── test-open_wmemstream.c
│ │ │ ├── test-popen.c
│ │ │ ├── test-print-positional.c
│ │ │ ├── test-printbasic.c
│ │ │ ├── test-printf-data.inc
│ │ │ ├── test-printf.c
│ │ │ ├── test-printfloat.c
│ │ │ └── test-scanfloat.c
│ │ ├── crystax-test-stream-float-output/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test-stream-float-output.cpp
│ │ ├── crystax-test-strtod/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── crystax-test-wchar/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test-btowc.c
│ │ │ ├── test-iswctype.c
│ │ │ ├── test-mblen.c
│ │ │ ├── test-mbrlen.c
│ │ │ ├── test-mbrtowc.c
│ │ │ ├── test-mbsnrtowcs.c
│ │ │ ├── test-mbsrtowcs.c
│ │ │ ├── test-mbstowcs.c
│ │ │ ├── test-mbtowc.c
│ │ │ ├── test-ms-wprintf.c
│ │ │ ├── test-towctrans.c
│ │ │ ├── test-wcrtomb.c
│ │ │ ├── test-wcscasecmp.c
│ │ │ ├── test-wcslen-cpp.cpp
│ │ │ ├── test-wcslen.c
│ │ │ ├── test-wcsnlen.c
│ │ │ ├── test-wcsnrtombs.c
│ │ │ ├── test-wcsrtombs.c
│ │ │ ├── test-wcstombs.c
│ │ │ ├── test-wctomb.c
│ │ │ ├── test-wprintf.c
│ │ │ ├── test-wscanf.c
│ │ │ ├── test-wstring.cpp
│ │ │ └── wprintf.inc
│ │ ├── crystax-test-wchar-minmax/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ └── GNUmakefile
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── emm/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── emm.c
│ │ │ └── test_config.py
│ │ ├── exceptions-crash/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.cpp
│ │ │ └── main.cpp
│ │ ├── fenv/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_fenv.c
│ │ │ └── test_config.py
│ │ ├── gnustl-shared-1/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── foo.cpp
│ │ │ └── main.cpp
│ │ ├── issue19851-sigsetjmp/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue19851-sigsetjmp.c
│ │ │ └── test_config.py
│ │ ├── issue20176-__gnu_Unwind_Find_exidx/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue20176-__gnu_Unwind_Find_exidx.cpp
│ │ │ └── test_config.py
│ │ ├── issue22165-typeinfo/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── main.cpp
│ │ │ ├── myexception.h
│ │ │ ├── throwable.cpp
│ │ │ └── throwable.h
│ │ ├── issue28598-linker-global-ref/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── liba.cpp
│ │ │ ├── liba.h
│ │ │ └── main.cpp
│ │ ├── issue35933-lambda/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue35933-lambda.cpp
│ │ ├── issue39680-chrono-resolution/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue39680-chrono-resolution.cpp
│ │ ├── issue42891-boost-1_52/
│ │ │ ├── COPYING
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── boost/
│ │ │ │ │ └── boost/
│ │ │ │ │ ├── algorithm/
│ │ │ │ │ │ └── string/
│ │ │ │ │ │ ├── compare.hpp
│ │ │ │ │ │ ├── concept.hpp
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── constants.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── find_format.hpp
│ │ │ │ │ │ │ ├── find_format_all.hpp
│ │ │ │ │ │ │ ├── find_format_store.hpp
│ │ │ │ │ │ │ ├── finder.hpp
│ │ │ │ │ │ │ ├── formatter.hpp
│ │ │ │ │ │ │ ├── replace_storage.hpp
│ │ │ │ │ │ │ ├── sequence.hpp
│ │ │ │ │ │ │ └── util.hpp
│ │ │ │ │ │ ├── find_format.hpp
│ │ │ │ │ │ ├── finder.hpp
│ │ │ │ │ │ ├── formatter.hpp
│ │ │ │ │ │ ├── replace.hpp
│ │ │ │ │ │ ├── sequence_traits.hpp
│ │ │ │ │ │ └── yes_no_type.hpp
│ │ │ │ │ ├── aligned_storage.hpp
│ │ │ │ │ ├── array.hpp
│ │ │ │ │ ├── assert.hpp
│ │ │ │ │ ├── bind/
│ │ │ │ │ │ ├── arg.hpp
│ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ ├── bind_cc.hpp
│ │ │ │ │ │ ├── bind_mf2_cc.hpp
│ │ │ │ │ │ ├── bind_mf_cc.hpp
│ │ │ │ │ │ ├── bind_template.hpp
│ │ │ │ │ │ ├── mem_fn.hpp
│ │ │ │ │ │ ├── mem_fn_cc.hpp
│ │ │ │ │ │ ├── mem_fn_template.hpp
│ │ │ │ │ │ ├── placeholders.hpp
│ │ │ │ │ │ └── storage.hpp
│ │ │ │ │ ├── bind.hpp
│ │ │ │ │ ├── call_traits.hpp
│ │ │ │ │ ├── checked_delete.hpp
│ │ │ │ │ ├── concept/
│ │ │ │ │ │ ├── assert.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── backward_compatibility.hpp
│ │ │ │ │ │ │ ├── concept_def.hpp
│ │ │ │ │ │ │ ├── concept_undef.hpp
│ │ │ │ │ │ │ ├── general.hpp
│ │ │ │ │ │ │ └── has_constraints.hpp
│ │ │ │ │ │ └── usage.hpp
│ │ │ │ │ ├── concept_check.hpp
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── compiler/
│ │ │ │ │ │ │ ├── clang.hpp
│ │ │ │ │ │ │ └── gcc.hpp
│ │ │ │ │ │ ├── no_tr1/
│ │ │ │ │ │ │ ├── cmath.hpp
│ │ │ │ │ │ │ ├── complex.hpp
│ │ │ │ │ │ │ ├── memory.hpp
│ │ │ │ │ │ │ └── utility.hpp
│ │ │ │ │ │ ├── platform/
│ │ │ │ │ │ │ └── linux.hpp
│ │ │ │ │ │ ├── posix_features.hpp
│ │ │ │ │ │ ├── select_compiler_config.hpp
│ │ │ │ │ │ ├── select_platform_config.hpp
│ │ │ │ │ │ ├── select_stdlib_config.hpp
│ │ │ │ │ │ ├── stdlib/
│ │ │ │ │ │ │ └── libstdcpp3.hpp
│ │ │ │ │ │ ├── suffix.hpp
│ │ │ │ │ │ └── user.hpp
│ │ │ │ │ ├── config.hpp
│ │ │ │ │ ├── container/
│ │ │ │ │ │ └── container_fwd.hpp
│ │ │ │ │ ├── cstdint.hpp
│ │ │ │ │ ├── cstdlib.hpp
│ │ │ │ │ ├── current_function.hpp
│ │ │ │ │ ├── detail/
│ │ │ │ │ │ ├── binary_search.hpp
│ │ │ │ │ │ ├── call_traits.hpp
│ │ │ │ │ │ ├── endian.hpp
│ │ │ │ │ │ ├── fenv.hpp
│ │ │ │ │ │ ├── indirect_traits.hpp
│ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ ├── lcast_precision.hpp
│ │ │ │ │ │ ├── reference_content.hpp
│ │ │ │ │ │ ├── sp_typeinfo.hpp
│ │ │ │ │ │ └── workaround.hpp
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── current_exception_cast.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── attribute_noreturn.hpp
│ │ │ │ │ │ │ ├── error_info_impl.hpp
│ │ │ │ │ │ │ └── type_info.hpp
│ │ │ │ │ │ ├── exception.hpp
│ │ │ │ │ │ └── get_error_info.hpp
│ │ │ │ │ ├── functional/
│ │ │ │ │ │ ├── hash/
│ │ │ │ │ │ │ └── hash_fwd.hpp
│ │ │ │ │ │ └── hash_fwd.hpp
│ │ │ │ │ ├── get_pointer.hpp
│ │ │ │ │ ├── integer_traits.hpp
│ │ │ │ │ ├── io/
│ │ │ │ │ │ └── ios_state.hpp
│ │ │ │ │ ├── io_fwd.hpp
│ │ │ │ │ ├── is_placeholder.hpp
│ │ │ │ │ ├── iterator/
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── config_def.hpp
│ │ │ │ │ │ │ ├── config_undef.hpp
│ │ │ │ │ │ │ ├── enable_if.hpp
│ │ │ │ │ │ │ └── facade_iterator_category.hpp
│ │ │ │ │ │ ├── interoperable.hpp
│ │ │ │ │ │ ├── iterator_adaptor.hpp
│ │ │ │ │ │ ├── iterator_categories.hpp
│ │ │ │ │ │ ├── iterator_concepts.hpp
│ │ │ │ │ │ ├── iterator_facade.hpp
│ │ │ │ │ │ ├── iterator_traits.hpp
│ │ │ │ │ │ └── reverse_iterator.hpp
│ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ ├── lexical_cast.hpp
│ │ │ │ │ ├── limits.hpp
│ │ │ │ │ ├── math/
│ │ │ │ │ │ ├── policies/
│ │ │ │ │ │ │ └── policy.hpp
│ │ │ │ │ │ ├── special_functions/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── fp_traits.hpp
│ │ │ │ │ │ │ │ └── round_fwd.hpp
│ │ │ │ │ │ │ ├── fpclassify.hpp
│ │ │ │ │ │ │ ├── math_fwd.hpp
│ │ │ │ │ │ │ └── sign.hpp
│ │ │ │ │ │ └── tools/
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── promotion.hpp
│ │ │ │ │ │ ├── real_cast.hpp
│ │ │ │ │ │ └── user.hpp
│ │ │ │ │ ├── mem_fn.hpp
│ │ │ │ │ ├── memory_order.hpp
│ │ │ │ │ ├── mpl/
│ │ │ │ │ │ ├── O1_size.hpp
│ │ │ │ │ │ ├── O1_size_fwd.hpp
│ │ │ │ │ │ ├── advance.hpp
│ │ │ │ │ │ ├── advance_fwd.hpp
│ │ │ │ │ │ ├── always.hpp
│ │ │ │ │ │ ├── and.hpp
│ │ │ │ │ │ ├── apply.hpp
│ │ │ │ │ │ ├── apply_fwd.hpp
│ │ │ │ │ │ ├── apply_wrap.hpp
│ │ │ │ │ │ ├── arg.hpp
│ │ │ │ │ │ ├── arg_fwd.hpp
│ │ │ │ │ │ ├── assert.hpp
│ │ │ │ │ │ ├── at.hpp
│ │ │ │ │ │ ├── at_fwd.hpp
│ │ │ │ │ │ ├── aux_/
│ │ │ │ │ │ │ ├── O1_size_impl.hpp
│ │ │ │ │ │ │ ├── adl_barrier.hpp
│ │ │ │ │ │ │ ├── advance_backward.hpp
│ │ │ │ │ │ │ ├── advance_forward.hpp
│ │ │ │ │ │ │ ├── arg_typedef.hpp
│ │ │ │ │ │ │ ├── arithmetic_op.hpp
│ │ │ │ │ │ │ ├── arity.hpp
│ │ │ │ │ │ │ ├── arity_spec.hpp
│ │ │ │ │ │ │ ├── at_impl.hpp
│ │ │ │ │ │ │ ├── begin_end_impl.hpp
│ │ │ │ │ │ │ ├── clear_impl.hpp
│ │ │ │ │ │ │ ├── common_name_wknd.hpp
│ │ │ │ │ │ │ ├── comparison_op.hpp
│ │ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ │ ├── adl.hpp
│ │ │ │ │ │ │ │ ├── arrays.hpp
│ │ │ │ │ │ │ │ ├── bcc.hpp
│ │ │ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ │ │ ├── compiler.hpp
│ │ │ │ │ │ │ │ ├── ctps.hpp
│ │ │ │ │ │ │ │ ├── dtp.hpp
│ │ │ │ │ │ │ │ ├── eti.hpp
│ │ │ │ │ │ │ │ ├── forwarding.hpp
│ │ │ │ │ │ │ │ ├── gcc.hpp
│ │ │ │ │ │ │ │ ├── has_apply.hpp
│ │ │ │ │ │ │ │ ├── has_xxx.hpp
│ │ │ │ │ │ │ │ ├── integral.hpp
│ │ │ │ │ │ │ │ ├── intel.hpp
│ │ │ │ │ │ │ │ ├── lambda.hpp
│ │ │ │ │ │ │ │ ├── msvc.hpp
│ │ │ │ │ │ │ │ ├── msvc_typename.hpp
│ │ │ │ │ │ │ │ ├── nttp.hpp
│ │ │ │ │ │ │ │ ├── overload_resolution.hpp
│ │ │ │ │ │ │ │ ├── pp_counter.hpp
│ │ │ │ │ │ │ │ ├── preprocessor.hpp
│ │ │ │ │ │ │ │ ├── static_constant.hpp
│ │ │ │ │ │ │ │ ├── ttp.hpp
│ │ │ │ │ │ │ │ ├── typeof.hpp
│ │ │ │ │ │ │ │ ├── use_preprocessed.hpp
│ │ │ │ │ │ │ │ └── workaround.hpp
│ │ │ │ │ │ │ ├── contains_impl.hpp
│ │ │ │ │ │ │ ├── find_if_pred.hpp
│ │ │ │ │ │ │ ├── fold_impl.hpp
│ │ │ │ │ │ │ ├── full_lambda.hpp
│ │ │ │ │ │ │ ├── has_apply.hpp
│ │ │ │ │ │ │ ├── has_begin.hpp
│ │ │ │ │ │ │ ├── has_size.hpp
│ │ │ │ │ │ │ ├── has_tag.hpp
│ │ │ │ │ │ │ ├── has_type.hpp
│ │ │ │ │ │ │ ├── include_preprocessed.hpp
│ │ │ │ │ │ │ ├── inserter_algorithm.hpp
│ │ │ │ │ │ │ ├── integral_wrapper.hpp
│ │ │ │ │ │ │ ├── is_msvc_eti_arg.hpp
│ │ │ │ │ │ │ ├── iter_apply.hpp
│ │ │ │ │ │ │ ├── iter_fold_if_impl.hpp
│ │ │ │ │ │ │ ├── iter_fold_impl.hpp
│ │ │ │ │ │ │ ├── lambda_arity_param.hpp
│ │ │ │ │ │ │ ├── lambda_spec.hpp
│ │ │ │ │ │ │ ├── lambda_support.hpp
│ │ │ │ │ │ │ ├── largest_int.hpp
│ │ │ │ │ │ │ ├── msvc_eti_base.hpp
│ │ │ │ │ │ │ ├── msvc_never_true.hpp
│ │ │ │ │ │ │ ├── msvc_type.hpp
│ │ │ │ │ │ │ ├── na.hpp
│ │ │ │ │ │ │ ├── na_assert.hpp
│ │ │ │ │ │ │ ├── na_fwd.hpp
│ │ │ │ │ │ │ ├── na_spec.hpp
│ │ │ │ │ │ │ ├── nested_type_wknd.hpp
│ │ │ │ │ │ │ ├── nttp_decl.hpp
│ │ │ │ │ │ │ ├── numeric_cast_utils.hpp
│ │ │ │ │ │ │ ├── numeric_op.hpp
│ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ └── gcc/
│ │ │ │ │ │ │ │ ├── advance_backward.hpp
│ │ │ │ │ │ │ │ ├── advance_forward.hpp
│ │ │ │ │ │ │ │ ├── and.hpp
│ │ │ │ │ │ │ │ ├── apply.hpp
│ │ │ │ │ │ │ │ ├── apply_fwd.hpp
│ │ │ │ │ │ │ │ ├── apply_wrap.hpp
│ │ │ │ │ │ │ │ ├── arg.hpp
│ │ │ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ │ │ ├── bind_fwd.hpp
│ │ │ │ │ │ │ │ ├── equal_to.hpp
│ │ │ │ │ │ │ │ ├── fold_impl.hpp
│ │ │ │ │ │ │ │ ├── full_lambda.hpp
│ │ │ │ │ │ │ │ ├── greater.hpp
│ │ │ │ │ │ │ │ ├── greater_equal.hpp
│ │ │ │ │ │ │ │ ├── iter_fold_if_impl.hpp
│ │ │ │ │ │ │ │ ├── iter_fold_impl.hpp
│ │ │ │ │ │ │ │ ├── less.hpp
│ │ │ │ │ │ │ │ ├── less_equal.hpp
│ │ │ │ │ │ │ │ ├── list.hpp
│ │ │ │ │ │ │ │ ├── minus.hpp
│ │ │ │ │ │ │ │ ├── not_equal_to.hpp
│ │ │ │ │ │ │ │ ├── or.hpp
│ │ │ │ │ │ │ │ ├── placeholders.hpp
│ │ │ │ │ │ │ │ ├── plus.hpp
│ │ │ │ │ │ │ │ ├── quote.hpp
│ │ │ │ │ │ │ │ ├── reverse_fold_impl.hpp
│ │ │ │ │ │ │ │ ├── template_arity.hpp
│ │ │ │ │ │ │ │ ├── times.hpp
│ │ │ │ │ │ │ │ └── vector.hpp
│ │ │ │ │ │ │ ├── preprocessor/
│ │ │ │ │ │ │ │ ├── def_params_tail.hpp
│ │ │ │ │ │ │ │ ├── default_params.hpp
│ │ │ │ │ │ │ │ ├── enum.hpp
│ │ │ │ │ │ │ │ └── params.hpp
│ │ │ │ │ │ │ ├── push_back_impl.hpp
│ │ │ │ │ │ │ ├── push_front_impl.hpp
│ │ │ │ │ │ │ ├── reverse_fold_impl.hpp
│ │ │ │ │ │ │ ├── size_impl.hpp
│ │ │ │ │ │ │ ├── static_cast.hpp
│ │ │ │ │ │ │ ├── template_arity.hpp
│ │ │ │ │ │ │ ├── template_arity_fwd.hpp
│ │ │ │ │ │ │ ├── traits_lambda_spec.hpp
│ │ │ │ │ │ │ ├── type_wrapper.hpp
│ │ │ │ │ │ │ ├── unwrap.hpp
│ │ │ │ │ │ │ ├── value_wknd.hpp
│ │ │ │ │ │ │ └── yes_no.hpp
│ │ │ │ │ │ ├── back_fwd.hpp
│ │ │ │ │ │ ├── back_inserter.hpp
│ │ │ │ │ │ ├── begin_end.hpp
│ │ │ │ │ │ ├── begin_end_fwd.hpp
│ │ │ │ │ │ ├── bind.hpp
│ │ │ │ │ │ ├── bind_fwd.hpp
│ │ │ │ │ │ ├── bool.hpp
│ │ │ │ │ │ ├── bool_fwd.hpp
│ │ │ │ │ │ ├── clear.hpp
│ │ │ │ │ │ ├── clear_fwd.hpp
│ │ │ │ │ │ ├── comparison.hpp
│ │ │ │ │ │ ├── contains.hpp
│ │ │ │ │ │ ├── contains_fwd.hpp
│ │ │ │ │ │ ├── deref.hpp
│ │ │ │ │ │ ├── distance.hpp
│ │ │ │ │ │ ├── distance_fwd.hpp
│ │ │ │ │ │ ├── empty_fwd.hpp
│ │ │ │ │ │ ├── equal_to.hpp
│ │ │ │ │ │ ├── eval_if.hpp
│ │ │ │ │ │ ├── find.hpp
│ │ │ │ │ │ ├── find_if.hpp
│ │ │ │ │ │ ├── fold.hpp
│ │ │ │ │ │ ├── for_each.hpp
│ │ │ │ │ │ ├── front_fwd.hpp
│ │ │ │ │ │ ├── front_inserter.hpp
│ │ │ │ │ │ ├── greater.hpp
│ │ │ │ │ │ ├── greater_equal.hpp
│ │ │ │ │ │ ├── has_xxx.hpp
│ │ │ │ │ │ ├── identity.hpp
│ │ │ │ │ │ ├── if.hpp
│ │ │ │ │ │ ├── inserter.hpp
│ │ │ │ │ │ ├── int.hpp
│ │ │ │ │ │ ├── int_fwd.hpp
│ │ │ │ │ │ ├── integral_c.hpp
│ │ │ │ │ │ ├── integral_c_fwd.hpp
│ │ │ │ │ │ ├── integral_c_tag.hpp
│ │ │ │ │ │ ├── is_sequence.hpp
│ │ │ │ │ │ ├── iter_fold.hpp
│ │ │ │ │ │ ├── iter_fold_if.hpp
│ │ │ │ │ │ ├── iterator_range.hpp
│ │ │ │ │ │ ├── iterator_tags.hpp
│ │ │ │ │ │ ├── lambda.hpp
│ │ │ │ │ │ ├── lambda_fwd.hpp
│ │ │ │ │ │ ├── less.hpp
│ │ │ │ │ │ ├── less_equal.hpp
│ │ │ │ │ │ ├── limits/
│ │ │ │ │ │ │ ├── arity.hpp
│ │ │ │ │ │ │ ├── list.hpp
│ │ │ │ │ │ │ └── vector.hpp
│ │ │ │ │ │ ├── list/
│ │ │ │ │ │ │ ├── aux_/
│ │ │ │ │ │ │ │ ├── O1_size.hpp
│ │ │ │ │ │ │ │ ├── begin_end.hpp
│ │ │ │ │ │ │ │ ├── clear.hpp
│ │ │ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ │ │ ├── front.hpp
│ │ │ │ │ │ │ │ ├── include_preprocessed.hpp
│ │ │ │ │ │ │ │ ├── item.hpp
│ │ │ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ │ │ ├── pop_front.hpp
│ │ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ │ └── plain/
│ │ │ │ │ │ │ │ │ ├── list10.hpp
│ │ │ │ │ │ │ │ │ └── list20.hpp
│ │ │ │ │ │ │ │ ├── push_back.hpp
│ │ │ │ │ │ │ │ ├── push_front.hpp
│ │ │ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ │ │ └── tag.hpp
│ │ │ │ │ │ │ ├── list0.hpp
│ │ │ │ │ │ │ ├── list10.hpp
│ │ │ │ │ │ │ └── list20.hpp
│ │ │ │ │ │ ├── list.hpp
│ │ │ │ │ │ ├── logical.hpp
│ │ │ │ │ │ ├── long.hpp
│ │ │ │ │ │ ├── long_fwd.hpp
│ │ │ │ │ │ ├── minus.hpp
│ │ │ │ │ │ ├── multiplies.hpp
│ │ │ │ │ │ ├── negate.hpp
│ │ │ │ │ │ ├── next.hpp
│ │ │ │ │ │ ├── next_prior.hpp
│ │ │ │ │ │ ├── not.hpp
│ │ │ │ │ │ ├── not_equal_to.hpp
│ │ │ │ │ │ ├── numeric_cast.hpp
│ │ │ │ │ │ ├── or.hpp
│ │ │ │ │ │ ├── pair.hpp
│ │ │ │ │ │ ├── placeholders.hpp
│ │ │ │ │ │ ├── plus.hpp
│ │ │ │ │ │ ├── pop_back_fwd.hpp
│ │ │ │ │ │ ├── pop_front_fwd.hpp
│ │ │ │ │ │ ├── prior.hpp
│ │ │ │ │ │ ├── protect.hpp
│ │ │ │ │ │ ├── push_back.hpp
│ │ │ │ │ │ ├── push_back_fwd.hpp
│ │ │ │ │ │ ├── push_front.hpp
│ │ │ │ │ │ ├── push_front_fwd.hpp
│ │ │ │ │ │ ├── quote.hpp
│ │ │ │ │ │ ├── remove_if.hpp
│ │ │ │ │ │ ├── reverse_fold.hpp
│ │ │ │ │ │ ├── same_as.hpp
│ │ │ │ │ │ ├── sequence_tag.hpp
│ │ │ │ │ │ ├── sequence_tag_fwd.hpp
│ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ ├── size_fwd.hpp
│ │ │ │ │ │ ├── size_t.hpp
│ │ │ │ │ │ ├── size_t_fwd.hpp
│ │ │ │ │ │ ├── tag.hpp
│ │ │ │ │ │ ├── times.hpp
│ │ │ │ │ │ ├── vector/
│ │ │ │ │ │ │ ├── aux_/
│ │ │ │ │ │ │ │ ├── O1_size.hpp
│ │ │ │ │ │ │ │ ├── at.hpp
│ │ │ │ │ │ │ │ ├── back.hpp
│ │ │ │ │ │ │ │ ├── begin_end.hpp
│ │ │ │ │ │ │ │ ├── clear.hpp
│ │ │ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ │ │ ├── front.hpp
│ │ │ │ │ │ │ │ ├── include_preprocessed.hpp
│ │ │ │ │ │ │ │ ├── item.hpp
│ │ │ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ │ │ ├── pop_back.hpp
│ │ │ │ │ │ │ │ ├── pop_front.hpp
│ │ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ │ └── typeof_based/
│ │ │ │ │ │ │ │ │ ├── vector10.hpp
│ │ │ │ │ │ │ │ │ └── vector20.hpp
│ │ │ │ │ │ │ │ ├── push_back.hpp
│ │ │ │ │ │ │ │ ├── push_front.hpp
│ │ │ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ │ │ ├── tag.hpp
│ │ │ │ │ │ │ │ └── vector0.hpp
│ │ │ │ │ │ │ ├── vector0.hpp
│ │ │ │ │ │ │ ├── vector10.hpp
│ │ │ │ │ │ │ └── vector20.hpp
│ │ │ │ │ │ ├── vector.hpp
│ │ │ │ │ │ ├── void.hpp
│ │ │ │ │ │ └── void_fwd.hpp
│ │ │ │ │ ├── next_prior.hpp
│ │ │ │ │ ├── noncopyable.hpp
│ │ │ │ │ ├── none.hpp
│ │ │ │ │ ├── none_t.hpp
│ │ │ │ │ ├── numeric/
│ │ │ │ │ │ └── conversion/
│ │ │ │ │ │ ├── bounds.hpp
│ │ │ │ │ │ ├── cast.hpp
│ │ │ │ │ │ ├── conversion_traits.hpp
│ │ │ │ │ │ ├── converter.hpp
│ │ │ │ │ │ ├── converter_policies.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── bounds.hpp
│ │ │ │ │ │ │ ├── conversion_traits.hpp
│ │ │ │ │ │ │ ├── converter.hpp
│ │ │ │ │ │ │ ├── int_float_mixture.hpp
│ │ │ │ │ │ │ ├── is_subranged.hpp
│ │ │ │ │ │ │ ├── meta.hpp
│ │ │ │ │ │ │ ├── numeric_cast_traits.hpp
│ │ │ │ │ │ │ ├── preprocessed/
│ │ │ │ │ │ │ │ ├── numeric_cast_traits_common.hpp
│ │ │ │ │ │ │ │ └── numeric_cast_traits_long_long.hpp
│ │ │ │ │ │ │ ├── sign_mixture.hpp
│ │ │ │ │ │ │ └── udt_builtin_mixture.hpp
│ │ │ │ │ │ ├── int_float_mixture_enum.hpp
│ │ │ │ │ │ ├── numeric_cast_traits.hpp
│ │ │ │ │ │ ├── sign_mixture_enum.hpp
│ │ │ │ │ │ └── udt_builtin_mixture_enum.hpp
│ │ │ │ │ ├── optional/
│ │ │ │ │ │ ├── optional.hpp
│ │ │ │ │ │ └── optional_fwd.hpp
│ │ │ │ │ ├── optional.hpp
│ │ │ │ │ ├── preprocessor/
│ │ │ │ │ │ ├── arithmetic/
│ │ │ │ │ │ │ ├── add.hpp
│ │ │ │ │ │ │ ├── dec.hpp
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ └── div_base.hpp
│ │ │ │ │ │ │ ├── inc.hpp
│ │ │ │ │ │ │ ├── mod.hpp
│ │ │ │ │ │ │ └── sub.hpp
│ │ │ │ │ │ ├── array/
│ │ │ │ │ │ │ ├── data.hpp
│ │ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ │ └── size.hpp
│ │ │ │ │ │ ├── cat.hpp
│ │ │ │ │ │ ├── comma_if.hpp
│ │ │ │ │ │ ├── comparison/
│ │ │ │ │ │ │ └── less_equal.hpp
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ └── config.hpp
│ │ │ │ │ │ ├── control/
│ │ │ │ │ │ │ ├── deduce_d.hpp
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ └── while.hpp
│ │ │ │ │ │ │ ├── expr_iif.hpp
│ │ │ │ │ │ │ ├── if.hpp
│ │ │ │ │ │ │ ├── iif.hpp
│ │ │ │ │ │ │ └── while.hpp
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── error.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── auto_rec.hpp
│ │ │ │ │ │ │ ├── check.hpp
│ │ │ │ │ │ │ └── is_binary.hpp
│ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ ├── facilities/
│ │ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ │ ├── identity.hpp
│ │ │ │ │ │ │ └── overload.hpp
│ │ │ │ │ │ ├── identity.hpp
│ │ │ │ │ │ ├── inc.hpp
│ │ │ │ │ │ ├── iteration/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── bounds/
│ │ │ │ │ │ │ │ │ ├── lower1.hpp
│ │ │ │ │ │ │ │ │ └── upper1.hpp
│ │ │ │ │ │ │ │ └── iter/
│ │ │ │ │ │ │ │ └── forward1.hpp
│ │ │ │ │ │ │ └── iterate.hpp
│ │ │ │ │ │ ├── list/
│ │ │ │ │ │ │ ├── adt.hpp
│ │ │ │ │ │ │ ├── append.hpp
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── fold_left.hpp
│ │ │ │ │ │ │ │ └── fold_right.hpp
│ │ │ │ │ │ │ ├── fold_left.hpp
│ │ │ │ │ │ │ ├── fold_right.hpp
│ │ │ │ │ │ │ ├── for_each_i.hpp
│ │ │ │ │ │ │ ├── reverse.hpp
│ │ │ │ │ │ │ └── transform.hpp
│ │ │ │ │ │ ├── logical/
│ │ │ │ │ │ │ ├── and.hpp
│ │ │ │ │ │ │ ├── bitand.hpp
│ │ │ │ │ │ │ ├── bool.hpp
│ │ │ │ │ │ │ ├── compl.hpp
│ │ │ │ │ │ │ └── not.hpp
│ │ │ │ │ │ ├── punctuation/
│ │ │ │ │ │ │ ├── comma.hpp
│ │ │ │ │ │ │ ├── comma_if.hpp
│ │ │ │ │ │ │ └── paren.hpp
│ │ │ │ │ │ ├── repeat.hpp
│ │ │ │ │ │ ├── repetition/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ └── for.hpp
│ │ │ │ │ │ │ ├── enum.hpp
│ │ │ │ │ │ │ ├── enum_binary_params.hpp
│ │ │ │ │ │ │ ├── enum_params.hpp
│ │ │ │ │ │ │ ├── enum_trailing_params.hpp
│ │ │ │ │ │ │ ├── for.hpp
│ │ │ │ │ │ │ ├── repeat.hpp
│ │ │ │ │ │ │ └── repeat_from_to.hpp
│ │ │ │ │ │ ├── seq/
│ │ │ │ │ │ │ ├── cat.hpp
│ │ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ │ ├── enum.hpp
│ │ │ │ │ │ │ ├── fold_left.hpp
│ │ │ │ │ │ │ ├── for_each.hpp
│ │ │ │ │ │ │ ├── for_each_i.hpp
│ │ │ │ │ │ │ ├── seq.hpp
│ │ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ │ └── transform.hpp
│ │ │ │ │ │ ├── slot/
│ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ ├── def.hpp
│ │ │ │ │ │ │ │ └── shared.hpp
│ │ │ │ │ │ │ └── slot.hpp
│ │ │ │ │ │ ├── stringize.hpp
│ │ │ │ │ │ ├── tuple/
│ │ │ │ │ │ │ ├── eat.hpp
│ │ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ │ ├── rem.hpp
│ │ │ │ │ │ │ └── to_list.hpp
│ │ │ │ │ │ └── variadic/
│ │ │ │ │ │ ├── elem.hpp
│ │ │ │ │ │ └── size.hpp
│ │ │ │ │ ├── progress.hpp
│ │ │ │ │ ├── range/
│ │ │ │ │ │ ├── algorithm/
│ │ │ │ │ │ │ └── equal.hpp
│ │ │ │ │ │ ├── as_literal.hpp
│ │ │ │ │ │ ├── begin.hpp
│ │ │ │ │ │ ├── concepts.hpp
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── const_iterator.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── common.hpp
│ │ │ │ │ │ │ ├── extract_optional_type.hpp
│ │ │ │ │ │ │ ├── implementation_help.hpp
│ │ │ │ │ │ │ ├── misc_concept.hpp
│ │ │ │ │ │ │ ├── safe_bool.hpp
│ │ │ │ │ │ │ ├── sfinae.hpp
│ │ │ │ │ │ │ └── str_types.hpp
│ │ │ │ │ │ ├── difference_type.hpp
│ │ │ │ │ │ ├── distance.hpp
│ │ │ │ │ │ ├── empty.hpp
│ │ │ │ │ │ ├── end.hpp
│ │ │ │ │ │ ├── functions.hpp
│ │ │ │ │ │ ├── iterator.hpp
│ │ │ │ │ │ ├── iterator_range.hpp
│ │ │ │ │ │ ├── iterator_range_core.hpp
│ │ │ │ │ │ ├── iterator_range_io.hpp
│ │ │ │ │ │ ├── mutable_iterator.hpp
│ │ │ │ │ │ ├── rbegin.hpp
│ │ │ │ │ │ ├── rend.hpp
│ │ │ │ │ │ ├── reverse_iterator.hpp
│ │ │ │ │ │ ├── size.hpp
│ │ │ │ │ │ ├── size_type.hpp
│ │ │ │ │ │ └── value_type.hpp
│ │ │ │ │ ├── ref.hpp
│ │ │ │ │ ├── scoped_array.hpp
│ │ │ │ │ ├── scoped_ptr.hpp
│ │ │ │ │ ├── shared_array.hpp
│ │ │ │ │ ├── shared_ptr.hpp
│ │ │ │ │ ├── smart_ptr/
│ │ │ │ │ │ ├── bad_weak_ptr.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── operator_bool.hpp
│ │ │ │ │ │ │ ├── shared_count.hpp
│ │ │ │ │ │ │ ├── sp_convertible.hpp
│ │ │ │ │ │ │ ├── sp_counted_base.hpp
│ │ │ │ │ │ │ ├── sp_counted_base_gcc_mips.hpp
│ │ │ │ │ │ │ ├── sp_counted_base_gcc_x86.hpp
│ │ │ │ │ │ │ ├── sp_counted_base_spin.hpp
│ │ │ │ │ │ │ ├── sp_counted_impl.hpp
│ │ │ │ │ │ │ ├── sp_has_sync.hpp
│ │ │ │ │ │ │ ├── spinlock.hpp
│ │ │ │ │ │ │ ├── spinlock_pool.hpp
│ │ │ │ │ │ │ ├── spinlock_pt.hpp
│ │ │ │ │ │ │ ├── spinlock_sync.hpp
│ │ │ │ │ │ │ └── yield_k.hpp
│ │ │ │ │ │ ├── scoped_array.hpp
│ │ │ │ │ │ ├── scoped_ptr.hpp
│ │ │ │ │ │ ├── shared_array.hpp
│ │ │ │ │ │ └── shared_ptr.hpp
│ │ │ │ │ ├── static_assert.hpp
│ │ │ │ │ ├── swap.hpp
│ │ │ │ │ ├── test/
│ │ │ │ │ │ ├── debug.hpp
│ │ │ │ │ │ ├── debug_config.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ │ ├── enable_warnings.hpp
│ │ │ │ │ │ │ ├── fwd_decl.hpp
│ │ │ │ │ │ │ ├── global_typedef.hpp
│ │ │ │ │ │ │ ├── log_level.hpp
│ │ │ │ │ │ │ ├── suppress_warnings.hpp
│ │ │ │ │ │ │ ├── unit_test_parameters.hpp
│ │ │ │ │ │ │ └── workaround.hpp
│ │ │ │ │ │ ├── execution_monitor.hpp
│ │ │ │ │ │ ├── floating_point_comparison.hpp
│ │ │ │ │ │ ├── framework.hpp
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── compiler_log_formatter.ipp
│ │ │ │ │ │ │ ├── debug.ipp
│ │ │ │ │ │ │ ├── exception_safety.ipp
│ │ │ │ │ │ │ ├── execution_monitor.ipp
│ │ │ │ │ │ │ ├── framework.ipp
│ │ │ │ │ │ │ ├── interaction_based.ipp
│ │ │ │ │ │ │ ├── logged_expectations.ipp
│ │ │ │ │ │ │ ├── plain_report_formatter.ipp
│ │ │ │ │ │ │ ├── progress_monitor.ipp
│ │ │ │ │ │ │ ├── results_collector.ipp
│ │ │ │ │ │ │ ├── results_reporter.ipp
│ │ │ │ │ │ │ ├── test_tools.ipp
│ │ │ │ │ │ │ ├── unit_test_log.ipp
│ │ │ │ │ │ │ ├── unit_test_main.ipp
│ │ │ │ │ │ │ ├── unit_test_monitor.ipp
│ │ │ │ │ │ │ ├── unit_test_parameters.ipp
│ │ │ │ │ │ │ ├── unit_test_suite.ipp
│ │ │ │ │ │ │ ├── xml_log_formatter.ipp
│ │ │ │ │ │ │ └── xml_report_formatter.ipp
│ │ │ │ │ │ ├── included/
│ │ │ │ │ │ │ └── unit_test.hpp
│ │ │ │ │ │ ├── interaction_based.hpp
│ │ │ │ │ │ ├── mock_object.hpp
│ │ │ │ │ │ ├── output/
│ │ │ │ │ │ │ ├── compiler_log_formatter.hpp
│ │ │ │ │ │ │ ├── plain_report_formatter.hpp
│ │ │ │ │ │ │ ├── xml_log_formatter.hpp
│ │ │ │ │ │ │ └── xml_report_formatter.hpp
│ │ │ │ │ │ ├── output_test_stream.hpp
│ │ │ │ │ │ ├── predicate_result.hpp
│ │ │ │ │ │ ├── progress_monitor.hpp
│ │ │ │ │ │ ├── results_collector.hpp
│ │ │ │ │ │ ├── results_reporter.hpp
│ │ │ │ │ │ ├── test_observer.hpp
│ │ │ │ │ │ ├── test_tools.hpp
│ │ │ │ │ │ ├── unit_test.hpp
│ │ │ │ │ │ ├── unit_test_log.hpp
│ │ │ │ │ │ ├── unit_test_log_formatter.hpp
│ │ │ │ │ │ ├── unit_test_monitor.hpp
│ │ │ │ │ │ ├── unit_test_suite.hpp
│ │ │ │ │ │ ├── unit_test_suite_impl.hpp
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── algorithm.hpp
│ │ │ │ │ │ ├── assign_op.hpp
│ │ │ │ │ │ ├── basic_cstring/
│ │ │ │ │ │ │ ├── basic_cstring.hpp
│ │ │ │ │ │ │ ├── basic_cstring_fwd.hpp
│ │ │ │ │ │ │ ├── bcs_char_traits.hpp
│ │ │ │ │ │ │ ├── compare.hpp
│ │ │ │ │ │ │ └── io.hpp
│ │ │ │ │ │ ├── callback.hpp
│ │ │ │ │ │ ├── class_properties.hpp
│ │ │ │ │ │ ├── custom_manip.hpp
│ │ │ │ │ │ ├── fixed_mapping.hpp
│ │ │ │ │ │ ├── foreach.hpp
│ │ │ │ │ │ ├── iterator/
│ │ │ │ │ │ │ ├── input_iterator_facade.hpp
│ │ │ │ │ │ │ └── token_iterator.hpp
│ │ │ │ │ │ ├── lazy_ostream.hpp
│ │ │ │ │ │ ├── named_params.hpp
│ │ │ │ │ │ ├── rtti.hpp
│ │ │ │ │ │ ├── runtime/
│ │ │ │ │ │ │ ├── argument.hpp
│ │ │ │ │ │ │ ├── cla/
│ │ │ │ │ │ │ │ ├── argument_factory.hpp
│ │ │ │ │ │ │ │ ├── argv_traverser.hpp
│ │ │ │ │ │ │ │ ├── argv_traverser.ipp
│ │ │ │ │ │ │ │ ├── basic_parameter.hpp
│ │ │ │ │ │ │ │ ├── char_parameter.hpp
│ │ │ │ │ │ │ │ ├── char_parameter.ipp
│ │ │ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ │ │ └── argument_value_usage.hpp
│ │ │ │ │ │ │ │ ├── dual_name_parameter.hpp
│ │ │ │ │ │ │ │ ├── dual_name_parameter.ipp
│ │ │ │ │ │ │ │ ├── fwd.hpp
│ │ │ │ │ │ │ │ ├── id_policy.hpp
│ │ │ │ │ │ │ │ ├── id_policy.ipp
│ │ │ │ │ │ │ │ ├── iface/
│ │ │ │ │ │ │ │ │ ├── argument_factory.hpp
│ │ │ │ │ │ │ │ │ └── id_policy.hpp
│ │ │ │ │ │ │ │ ├── modifier.hpp
│ │ │ │ │ │ │ │ ├── named_parameter.hpp
│ │ │ │ │ │ │ │ ├── named_parameter.ipp
│ │ │ │ │ │ │ │ ├── parameter.hpp
│ │ │ │ │ │ │ │ ├── parser.hpp
│ │ │ │ │ │ │ │ ├── parser.ipp
│ │ │ │ │ │ │ │ ├── typed_parameter.hpp
│ │ │ │ │ │ │ │ ├── validation.hpp
│ │ │ │ │ │ │ │ ├── validation.ipp
│ │ │ │ │ │ │ │ ├── value_generator.hpp
│ │ │ │ │ │ │ │ └── value_handler.hpp
│ │ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── environment.hpp
│ │ │ │ │ │ │ │ ├── environment.ipp
│ │ │ │ │ │ │ │ ├── fwd.hpp
│ │ │ │ │ │ │ │ ├── modifier.hpp
│ │ │ │ │ │ │ │ └── variable.hpp
│ │ │ │ │ │ │ ├── fwd.hpp
│ │ │ │ │ │ │ ├── interpret_argument_value.hpp
│ │ │ │ │ │ │ ├── parameter.hpp
│ │ │ │ │ │ │ ├── trace.hpp
│ │ │ │ │ │ │ └── validation.hpp
│ │ │ │ │ │ ├── trivial_singleton.hpp
│ │ │ │ │ │ ├── wrap_stringstream.hpp
│ │ │ │ │ │ └── xml_printer.hpp
│ │ │ │ │ ├── throw_exception.hpp
│ │ │ │ │ ├── timer.hpp
│ │ │ │ │ ├── type.hpp
│ │ │ │ │ ├── type_traits/
│ │ │ │ │ │ ├── add_const.hpp
│ │ │ │ │ │ ├── add_cv.hpp
│ │ │ │ │ │ ├── add_pointer.hpp
│ │ │ │ │ │ ├── add_reference.hpp
│ │ │ │ │ │ ├── add_rvalue_reference.hpp
│ │ │ │ │ │ ├── add_volatile.hpp
│ │ │ │ │ │ ├── alignment_of.hpp
│ │ │ │ │ │ ├── broken_compiler_spec.hpp
│ │ │ │ │ │ ├── config.hpp
│ │ │ │ │ │ ├── conversion_traits.hpp
│ │ │ │ │ │ ├── cv_traits.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── bool_trait_def.hpp
│ │ │ │ │ │ │ ├── bool_trait_undef.hpp
│ │ │ │ │ │ │ ├── cv_traits_impl.hpp
│ │ │ │ │ │ │ ├── false_result.hpp
│ │ │ │ │ │ │ ├── ice_and.hpp
│ │ │ │ │ │ │ ├── ice_eq.hpp
│ │ │ │ │ │ │ ├── ice_not.hpp
│ │ │ │ │ │ │ ├── ice_or.hpp
│ │ │ │ │ │ │ ├── is_function_ptr_helper.hpp
│ │ │ │ │ │ │ ├── is_mem_fun_pointer_impl.hpp
│ │ │ │ │ │ │ ├── size_t_trait_def.hpp
│ │ │ │ │ │ │ ├── size_t_trait_undef.hpp
│ │ │ │ │ │ │ ├── template_arity_spec.hpp
│ │ │ │ │ │ │ ├── type_trait_def.hpp
│ │ │ │ │ │ │ ├── type_trait_undef.hpp
│ │ │ │ │ │ │ └── yes_no_type.hpp
│ │ │ │ │ │ ├── function_traits.hpp
│ │ │ │ │ │ ├── has_nothrow_constructor.hpp
│ │ │ │ │ │ ├── has_nothrow_copy.hpp
│ │ │ │ │ │ ├── has_trivial_constructor.hpp
│ │ │ │ │ │ ├── has_trivial_copy.hpp
│ │ │ │ │ │ ├── ice.hpp
│ │ │ │ │ │ ├── integral_constant.hpp
│ │ │ │ │ │ ├── intrinsics.hpp
│ │ │ │ │ │ ├── is_abstract.hpp
│ │ │ │ │ │ ├── is_arithmetic.hpp
│ │ │ │ │ │ ├── is_array.hpp
│ │ │ │ │ │ ├── is_class.hpp
│ │ │ │ │ │ ├── is_const.hpp
│ │ │ │ │ │ ├── is_convertible.hpp
│ │ │ │ │ │ ├── is_enum.hpp
│ │ │ │ │ │ ├── is_float.hpp
│ │ │ │ │ │ ├── is_floating_point.hpp
│ │ │ │ │ │ ├── is_function.hpp
│ │ │ │ │ │ ├── is_integral.hpp
│ │ │ │ │ │ ├── is_lvalue_reference.hpp
│ │ │ │ │ │ ├── is_member_function_pointer.hpp
│ │ │ │ │ │ ├── is_member_pointer.hpp
│ │ │ │ │ │ ├── is_pod.hpp
│ │ │ │ │ │ ├── is_pointer.hpp
│ │ │ │ │ │ ├── is_reference.hpp
│ │ │ │ │ │ ├── is_rvalue_reference.hpp
│ │ │ │ │ │ ├── is_same.hpp
│ │ │ │ │ │ ├── is_scalar.hpp
│ │ │ │ │ │ ├── is_signed.hpp
│ │ │ │ │ │ ├── is_unsigned.hpp
│ │ │ │ │ │ ├── is_void.hpp
│ │ │ │ │ │ ├── is_volatile.hpp
│ │ │ │ │ │ ├── make_unsigned.hpp
│ │ │ │ │ │ ├── remove_const.hpp
│ │ │ │ │ │ ├── remove_cv.hpp
│ │ │ │ │ │ ├── remove_pointer.hpp
│ │ │ │ │ │ ├── remove_reference.hpp
│ │ │ │ │ │ ├── remove_volatile.hpp
│ │ │ │ │ │ └── type_with_alignment.hpp
│ │ │ │ │ ├── units/
│ │ │ │ │ │ └── detail/
│ │ │ │ │ │ └── utility.hpp
│ │ │ │ │ ├── utility/
│ │ │ │ │ │ ├── addressof.hpp
│ │ │ │ │ │ ├── base_from_member.hpp
│ │ │ │ │ │ ├── binary.hpp
│ │ │ │ │ │ ├── compare_pointees.hpp
│ │ │ │ │ │ ├── detail/
│ │ │ │ │ │ │ ├── in_place_factory_prefix.hpp
│ │ │ │ │ │ │ └── in_place_factory_suffix.hpp
│ │ │ │ │ │ ├── enable_if.hpp
│ │ │ │ │ │ ├── identity_type.hpp
│ │ │ │ │ │ ├── in_place_factory.hpp
│ │ │ │ │ │ ├── swap.hpp
│ │ │ │ │ │ └── value_init.hpp
│ │ │ │ │ ├── utility.hpp
│ │ │ │ │ ├── version.hpp
│ │ │ │ │ └── visit_each.hpp
│ │ │ │ └── main.cpp
│ │ │ └── test_config.py
│ │ ├── issue46718-iostream-crash-gnustl/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue46718-iostream-crash.cpp
│ │ ├── issue61659-neon-assignment/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── issue61659-neon-assignment.c
│ │ │ └── test_config.py
│ │ ├── issue62910-gcc4.8.2-libstdc++-nth-element-segfault/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── issue62910-gcc4.8.2-libstdc++-nth-element-segfault.cpp
│ │ ├── libcxx-relocs/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── bar.cpp
│ │ │ │ └── foo.cpp
│ │ │ └── properties.json
│ │ ├── libcxx-unwind/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── foo.cpp
│ │ │ └── test_config.py
│ │ ├── math/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── math.c
│ │ │ │ └── math.cpp
│ │ │ └── test_config.py
│ │ ├── multi-static-instances/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.cpp
│ │ ├── stat/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── stat.c
│ │ ├── static-executable/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── main.cxx
│ │ │ └── test_config.py
│ │ ├── test-basic-exceptions/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_basic_exceptions.cpp
│ │ ├── test-basic-rtti/
│ │ │ ├── README
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_basic_rtti.cpp
│ │ ├── test-compiler-bug-1/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── main.c
│ │ ├── test-cpufeatures/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test_android_setCpuArm_1.c
│ │ │ ├── test_android_setCpu_1.c
│ │ │ ├── test_android_setCpu_2.c
│ │ │ ├── test_arm_idiv.c
│ │ │ └── test_cpufeatures.c
│ │ ├── test-cxx-init-array/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── global_ctor.cpp
│ │ │ ├── global_ctor.h
│ │ │ └── test.cpp
│ │ ├── test-gnustl-1/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── hello.cpp
│ │ ├── test-gnustl-2/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── hello.cpp
│ │ ├── test-gnustl-copy_vector_into_a_set/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── copy_vector_into_a_set.cpp
│ │ ├── test-gnustl-full/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ ├── properties.json
│ │ │ ├── test_config.py
│ │ │ └── unit/
│ │ │ ├── _template.cpp
│ │ │ ├── accum_test.cpp
│ │ │ ├── adj_test.cpp
│ │ │ ├── advance_test.cpp
│ │ │ ├── alg_test.cpp
│ │ │ ├── algorithm_header_test.cpp
│ │ │ ├── allocator_test.cpp
│ │ │ ├── assert_header_test.c
│ │ │ ├── bcompos_test.cpp
│ │ │ ├── bind_test.cpp
│ │ │ ├── binsert_test.cpp
│ │ │ ├── bitset_header_test.cpp
│ │ │ ├── bitset_test.cpp
│ │ │ ├── bnegate_test.cpp
│ │ │ ├── boost_check.cpp
│ │ │ ├── bound_test.cpp
│ │ │ ├── bsearch_test.cpp
│ │ │ ├── bvector_test.cpp
│ │ │ ├── c_limits_header_test.c
│ │ │ ├── c_locale_header_test.c
│ │ │ ├── cassert_header_test.cpp
│ │ │ ├── cctype_header_test.cpp
│ │ │ ├── cerrno_header_test.cpp
│ │ │ ├── cfloat_header_test.cpp
│ │ │ ├── ciso646_header_test.cpp
│ │ │ ├── climits_header_test.cpp
│ │ │ ├── clocale_header_test.cpp
│ │ │ ├── cmath_header_test.cpp
│ │ │ ├── cmath_test.cpp
│ │ │ ├── codecvt_test.cpp
│ │ │ ├── collate_facets_test.cpp
│ │ │ ├── complete_digits.h
│ │ │ ├── complex_header_test.cpp
│ │ │ ├── config_test.cpp
│ │ │ ├── copy_test.cpp
│ │ │ ├── count_test.cpp
│ │ │ ├── cppunit/
│ │ │ │ ├── cppunit_mini.h
│ │ │ │ ├── cppunit_proxy.h
│ │ │ │ ├── cppunit_timer.h
│ │ │ │ ├── file_reporter.h
│ │ │ │ └── test_main.cpp
│ │ │ ├── csetjmp_header_test.cpp
│ │ │ ├── csignal_header_test.cpp
│ │ │ ├── cstdarg_header_test.cpp
│ │ │ ├── cstddef_header_test.cpp
│ │ │ ├── cstdio_header_test.cpp
│ │ │ ├── cstdlib_header_test.cpp
│ │ │ ├── cstring_header_test.cpp
│ │ │ ├── cstring_test.cpp
│ │ │ ├── ctime_header_test.cpp
│ │ │ ├── ctype_facets_test.cpp
│ │ │ ├── ctype_header_test.c
│ │ │ ├── cwchar_header_test.cpp
│ │ │ ├── cwctype_header_test.cpp
│ │ │ ├── deque_header_test.cpp
│ │ │ ├── deque_test.cpp
│ │ │ ├── divides_test.cpp
│ │ │ ├── epilog_test.cpp
│ │ │ ├── equal_test.cpp
│ │ │ ├── errno_header_test.c
│ │ │ ├── exception_header_test.cpp
│ │ │ ├── exception_test.cpp
│ │ │ ├── fadapter.h
│ │ │ ├── fib.h
│ │ │ ├── fill_test.cpp
│ │ │ ├── find_test.cpp
│ │ │ ├── finsert_test.cpp
│ │ │ ├── float_header_test.c
│ │ │ ├── foreach_test.cpp
│ │ │ ├── fstream_header_test.cpp
│ │ │ ├── fstream_test.cpp
│ │ │ ├── full_streambuf.h
│ │ │ ├── func_test.cpp
│ │ │ ├── functional_header_test.cpp
│ │ │ ├── generator_test.cpp
│ │ │ ├── greater_test.cpp
│ │ │ ├── hash_test.cpp
│ │ │ ├── heap_test.cpp
│ │ │ ├── includes_test.cpp
│ │ │ ├── innerprod_test.cpp
│ │ │ ├── inplace_test.cpp
│ │ │ ├── insert_test.cpp
│ │ │ ├── ioiter_test.cpp
│ │ │ ├── iomanip_header_test.cpp
│ │ │ ├── ios_header_test.cpp
│ │ │ ├── iosfwd_header_test.cpp
│ │ │ ├── iostream_header_test.cpp
│ │ │ ├── iostream_test.cpp
│ │ │ ├── iota.h
│ │ │ ├── iota_test.cpp
│ │ │ ├── iso646_header_test.c
│ │ │ ├── istmit_test.cpp
│ │ │ ├── istream_header_test.cpp
│ │ │ ├── iter_test.cpp
│ │ │ ├── iterator_header_test.cpp
│ │ │ ├── less_test.cpp
│ │ │ ├── lexcmp_test.cpp
│ │ │ ├── limits_header_test.cpp
│ │ │ ├── limits_test.cpp
│ │ │ ├── list_header_test.cpp
│ │ │ ├── list_test.cpp
│ │ │ ├── locale_header_test.cpp
│ │ │ ├── locale_test.cpp
│ │ │ ├── locale_test.h
│ │ │ ├── logic_test.cpp
│ │ │ ├── macro_checks.cpp
│ │ │ ├── map_header_test.cpp
│ │ │ ├── map_test.cpp
│ │ │ ├── math_aux.h
│ │ │ ├── math_header_test.c
│ │ │ ├── max_test.cpp
│ │ │ ├── memory_header_test.cpp
│ │ │ ├── memory_test.cpp
│ │ │ ├── merge_test.cpp
│ │ │ ├── messages_facets_test.cpp
│ │ │ ├── mfunptr_test.cpp
│ │ │ ├── min_test.cpp
│ │ │ ├── mismatch_test.cpp
│ │ │ ├── modulus_test.cpp
│ │ │ ├── money_facets_test.cpp
│ │ │ ├── multiset_test.cpp
│ │ │ ├── mvctor_declaration_test.cpp
│ │ │ ├── mvctor_test.cpp
│ │ │ ├── mvctor_test.h
│ │ │ ├── mvctor_traits_test.cpp
│ │ │ ├── neq_test.cpp
│ │ │ ├── new_header_test.cpp
│ │ │ ├── nthelm_test.cpp
│ │ │ ├── num_facets_test.cpp
│ │ │ ├── num_put_get_test.cpp
│ │ │ ├── numeric_header_test.cpp
│ │ │ ├── ostmit_test.cpp
│ │ │ ├── ostream_header_test.cpp
│ │ │ ├── pair_test.cpp
│ │ │ ├── partial_test.cpp
│ │ │ ├── partition_test.cpp
│ │ │ ├── perm_test.cpp
│ │ │ ├── plusminus_test.cpp
│ │ │ ├── ptr2_test.cpp
│ │ │ ├── ptrspec_test.cpp
│ │ │ ├── queue_header_test.cpp
│ │ │ ├── queue_test.cpp
│ │ │ ├── rawriter_test.cpp
│ │ │ ├── reference_wrapper_test.cpp
│ │ │ ├── resolve_name.cpp
│ │ │ ├── reviter_test.cpp
│ │ │ ├── rm_cp_test.cpp
│ │ │ ├── rndshf_test.cpp
│ │ │ ├── rope_test.cpp
│ │ │ ├── rotate_test.cpp
│ │ │ ├── search_test.cpp
│ │ │ ├── set_header_test.cpp
│ │ │ ├── set_test.cpp
│ │ │ ├── setdiff_test.cpp
│ │ │ ├── setinter_test.cpp
│ │ │ ├── setjmp_header_test.c
│ │ │ ├── setjmp_header_test2.cpp
│ │ │ ├── setunion_test.cpp
│ │ │ ├── shared_ptr_test.cpp
│ │ │ ├── signal_header_test.c
│ │ │ ├── slist_test.cpp
│ │ │ ├── sort_test.cpp
│ │ │ ├── sstream_header_test.cpp
│ │ │ ├── sstream_test.cpp
│ │ │ ├── stack_allocator.h
│ │ │ ├── stack_header_test.cpp
│ │ │ ├── stack_test.cpp
│ │ │ ├── stdarg_header_test.c
│ │ │ ├── stddef_header_test.c
│ │ │ ├── stdexcept_header_test.cpp
│ │ │ ├── stdio_header_test.c
│ │ │ ├── stdlib_header_test.c
│ │ │ ├── stldbg_include.cpp
│ │ │ ├── streambuf_header_test.cpp
│ │ │ ├── string_header_test.c
│ │ │ ├── string_header_test.cpp
│ │ │ ├── string_test.cpp
│ │ │ ├── strstream_buffer_read_test.cpp
│ │ │ ├── strstream_header_test.cpp
│ │ │ ├── strstream_test.cpp
│ │ │ ├── swap_test.cpp
│ │ │ ├── test_errno.cpp
│ │ │ ├── time_facets_test.cpp
│ │ │ ├── time_header_test.c
│ │ │ ├── times_test.cpp
│ │ │ ├── transform_test.cpp
│ │ │ ├── type_traits_test.cpp
│ │ │ ├── typeinfo_header_test.cpp
│ │ │ ├── unary.h
│ │ │ ├── unary_test.cpp
│ │ │ ├── uninitialized_test.cpp
│ │ │ ├── unique_test.cpp
│ │ │ ├── unordered_test.cpp
│ │ │ ├── utility_header_test.cpp
│ │ │ ├── valarray_header_test.cpp
│ │ │ ├── valarray_test.cpp
│ │ │ ├── vector_header_test.cpp
│ │ │ ├── vector_test.cpp
│ │ │ ├── wchar_header_test.c
│ │ │ └── wctype_header_test.c
│ │ ├── test-gnustl_shared-exception/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── test0_foo.cpp
│ │ │ │ ├── test0_main.cpp
│ │ │ │ ├── test1_foo.cpp
│ │ │ │ ├── test1_main.cpp
│ │ │ │ ├── test2_foo.cpp
│ │ │ │ ├── test2_main.cpp
│ │ │ │ ├── test3_bar.cpp
│ │ │ │ ├── test3_foo.cpp
│ │ │ │ ├── test3_main.cpp
│ │ │ │ ├── test4_bar.cpp
│ │ │ │ ├── test4_foo.cpp
│ │ │ │ └── test4_main.cpp
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-gnustl_static-exception/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ ├── test0_foo.cpp
│ │ │ ├── test0_main.cpp
│ │ │ ├── test1_foo.cpp
│ │ │ ├── test1_main.cpp
│ │ │ ├── test2_foo.cpp
│ │ │ ├── test2_main.cpp
│ │ │ ├── test3_bar.cpp
│ │ │ ├── test3_foo.cpp
│ │ │ ├── test3_main.cpp
│ │ │ ├── test4_bar.cpp
│ │ │ ├── test4_foo.cpp
│ │ │ └── test4_main.cpp
│ │ ├── test-googletest-full/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ └── properties.json
│ │ ├── test-googletest-gnustl/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── test-libc++/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_1.cc
│ │ │ └── test_config.py
│ │ ├── test-libc++-shared/
│ │ │ └── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── test_1.cc
│ │ ├── test-libc++-shared-full/
│ │ │ ├── DATA
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-libc++-static/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_1.cc
│ │ │ └── test_config.py
│ │ ├── test-libc++-static-full/
│ │ │ ├── DATA
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ └── Application.mk
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-openmp/
│ │ │ ├── common.mk
│ │ │ ├── host/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── GNUmakefile
│ │ │ │ └── test.mk
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── fib.c
│ │ │ │ ├── openmp.c
│ │ │ │ └── openmp2.c
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-shaderc-gnustl/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── shaderc.cc
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-shaderc-libc++/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── shaderc.cc
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-vulkan/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── instance.cpp
│ │ │ ├── properties.json
│ │ │ └── test_config.py
│ │ ├── test-wait/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── test_wait.c
│ │ │ └── test_config.py
│ │ ├── test-yasm/
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ ├── print_hello.asm
│ │ │ │ └── test-yasm.c
│ │ │ └── test_config.py
│ │ └── whole-static-libs/
│ │ └── jni/
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ ├── foo.c
│ │ ├── foo2.c
│ │ └── main.c
│ ├── filters.py
│ ├── lib/
│ │ ├── awk.rb
│ │ ├── log.rb
│ │ ├── mro.rb
│ │ ├── project.rb
│ │ ├── samples.rb
│ │ ├── standalone.rb
│ │ └── tests.rb
│ ├── ndk.py
│ ├── onhost-functions.mk
│ ├── onhost.mk
│ ├── prepare-buildbot-emulators.py
│ ├── printers.py
│ ├── run-all.py
│ ├── run-boost-tests
│ ├── run-ndk-tests
│ ├── runners.py
│ ├── standalone/
│ │ ├── basic-c-compile/
│ │ │ └── main.c
│ │ ├── basic-cxx-compile/
│ │ │ └── main.cpp
│ │ ├── basic-objc-compile/
│ │ │ └── main.m
│ │ ├── basic-objcxx-compile/
│ │ │ └── main.mm
│ │ ├── builtin-macros/
│ │ │ └── run.sh
│ │ ├── init-fini-arrays/
│ │ │ ├── README
│ │ │ ├── foo.cpp
│ │ │ └── run.sh
│ │ ├── libcrystax-c-linked/
│ │ │ └── main.c
│ │ ├── libcrystax-cxx-linked/
│ │ │ └── main.cpp
│ │ ├── run-all.sh
│ │ ├── run-standalone-tests.rb
│ │ └── run.sh
│ ├── test_filters.py
│ ├── tests.py
│ ├── util.py
│ └── validate.py
└── tools/
├── adbrunner
└── deploy-posix-environment
Showing preview only (1,548K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (15429 symbols across 1615 files)
FILE: build/instruments/build-llvm.py
function android_top (line 25) | def android_top():
function get_default_package_dir (line 34) | def get_default_package_dir():
function get_llvm_prebuilt_path (line 42) | def get_llvm_prebuilt_path(host, version):
class ArgParser (line 51) | class ArgParser(argparse.ArgumentParser):
method __init__ (line 52) | def __init__(self):
function main (line 65) | def main():
FILE: build/instruments/build-python/_sitebuiltins.py
class Quitter (line 13) | class Quitter(object):
method __init__ (line 14) | def __init__(self, name, eof):
method __repr__ (line 17) | def __repr__(self):
method __call__ (line 19) | def __call__(self, code=None):
class _Printer (line 29) | class _Printer(object):
method __init__ (line 35) | def __init__(self, name, data, files=(), dirs=()):
method __setup (line 44) | def __setup(self):
method __repr__ (line 62) | def __repr__(self):
method __call__ (line 69) | def __call__(self):
class _Helper (line 90) | class _Helper(object):
method __repr__ (line 100) | def __repr__(self):
method __call__ (line 103) | def __call__(self, *args, **kwds):
FILE: build/instruments/build-python/build_stdlib.py
class StdlibConfig (line 11) | class StdlibConfig:
method __init__ (line 12) | def __init__(self, ignore_dir_list, ignore_file_list):
function dir_in_interest (line 17) | def dir_in_interest(config, arch_path):
function file_in_interest (line 24) | def file_in_interest(config, arch_path):
function in_interest (line 30) | def in_interest(config, arch_path, is_dir, pathbits):
function enum_content (line 46) | def enum_content(config, seed, catalog, pathbits = None):
function load_build_config (line 82) | def load_build_config():
function get_conf_strings (line 89) | def get_conf_strings(config, section, option):
function build_stdlib (line 93) | def build_stdlib():
FILE: build/instruments/build-python/freeze_stdlib.py
class StdlibConfig (line 40) | class StdlibConfig:
method __init__ (line 41) | def __init__(self, ignore_dir_list, ignore_file_list):
function dir_in_interest (line 46) | def dir_in_interest(config, arch_path):
function file_in_interest (line 53) | def file_in_interest(config, arch_path):
function in_interest (line 59) | def in_interest(config, arch_path, is_dir, pathbits):
function enum_content (line 75) | def enum_content(config, seed, catalog, pathbits = None):
function load_build_config (line 109) | def load_build_config():
function get_conf_strings (line 116) | def get_conf_strings(config, section, option):
class ModuleInfo (line 120) | class ModuleInfo:
method __init__ (line 121) | def __init__(self, py_name, c_name, c_sz_name, frozen_size, c_file):
function strip_coding_comment (line 129) | def strip_coding_comment(pytext):
function assemble_source (line 140) | def assemble_source(co_fname, mangled, source_file, output, py2):
function to_string (line 166) | def to_string(v):
function freeze_stdlib (line 177) | def freeze_stdlib():
FILE: build/instruments/build-python/site.py
function makepath (line 11) | def makepath(*paths):
function abs_paths (line 20) | def abs_paths():
function addpackage (line 36) | def addpackage(sitedir, name, known_paths):
function add_zip_package (line 70) | def add_zip_package(sitedir, zip_name, known_paths):
function addsitedir (line 76) | def addsitedir(sitedir, known_paths):
function setquit (line 99) | def setquit():
function setcopyright (line 117) | def setcopyright():
function sethelper (line 128) | def sethelper():
function aliasmbcs (line 132) | def aliasmbcs():
function main (line 149) | def main():
FILE: build/instruments/build-python/sysconfig.py
function _subst_vars (line 33) | def _subst_vars(s, local_vars):
function _extend_dict (line 42) | def _extend_dict(target_dict, other_dict):
function _expand_vars (line 50) | def _expand_vars(scheme, vars):
function _get_default_scheme (line 63) | def _get_default_scheme():
function _init_config_vars (line 67) | def _init_config_vars(vars):
function get_scheme_names (line 75) | def get_scheme_names():
function get_path_names (line 80) | def get_path_names():
function get_paths (line 85) | def get_paths(scheme=_get_default_scheme(), vars=None, expand=True):
function get_path (line 97) | def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True):
function get_config_vars (line 105) | def get_config_vars(*args):
function get_config_var (line 126) | def get_config_var(name):
function get_platform (line 135) | def get_platform():
function get_python_version (line 157) | def get_python_version():
function _print_dict (line 161) | def _print_dict(title, data):
function _main (line 168) | def _main():
FILE: build/lib/build_support.py
function arch_to_toolchain (line 72) | def arch_to_toolchain(arch):
function arch_to_triple (line 76) | def arch_to_triple(arch):
function toolchain_to_arch (line 80) | def toolchain_to_arch(toolchain):
function arch_to_abis (line 84) | def arch_to_abis(arch):
function abi_to_arch (line 95) | def abi_to_arch(arch):
function android_path (line 108) | def android_path(*args):
function sysroot_path (line 113) | def sysroot_path(toolchain):
function ndk_path (line 122) | def ndk_path(*args):
function toolchain_path (line 126) | def toolchain_path(*args):
function default_api_level (line 130) | def default_api_level(arch):
function jobs_arg (line 137) | def jobs_arg():
function build (line 141) | def build(cmd, args, intermediate_package=False):
function _get_dir_from_env (line 154) | def _get_dir_from_env(default, env_var):
function get_out_dir (line 161) | def get_out_dir():
function get_dist_dir (line 165) | def get_dist_dir(out_dir):
function get_default_host (line 169) | def get_default_host():
function host_to_tag (line 178) | def host_to_tag(host):
function make_repo_prop (line 189) | def make_repo_prop(out_dir):
function make_package (line 206) | def make_package(name, directory, out_dir):
function merge_license_files (line 245) | def merge_license_files(output_path, files):
class ArgParser (line 255) | class ArgParser(argparse.ArgumentParser):
method __init__ (line 256) | def __init__(self):
function run (line 276) | def run(main_func, arg_parser=ArgParser):
FILE: build/scripts/builder.rb
class Builder (line 43) | class Builder
method cc (line 47) | def self.cc(options)
method cxx (line 62) | def self.cxx(options)
method cflags (line 76) | def self.cflags(options)
method toolchain_path_and_path (line 102) | def self.toolchain_path_and_path(options)
method configure_host (line 116) | def self.configure_host(options)
method prepare_dependency (line 137) | def self.prepare_dependency(name)
method copy_sources (line 147) | def self.copy_sources(srcdir, dstdir)
method build_zlib (line 154) | def self.build_zlib(options, paths)
method build_openssl (line 191) | def self.build_openssl(options, paths)
method build_libssh2 (line 229) | def self.build_libssh2(options, paths)
method build_libgit2 (line 276) | def self.build_libgit2(options, paths)
method prepare_sources (line 315) | def self.prepare_sources(pkgname, build_base_dir)
method openssl_platform (line 324) | def self.openssl_platform(platform)
FILE: build/scripts/cache.rb
type Cache (line 43) | module Cache
function full_path (line 47) | def self.full_path(archive)
function try? (line 51) | def self.try?(archive)
function exists? (line 55) | def self.exists?(archive)
function unpack (line 59) | def self.unpack(archive, dstdir)
function add (line 63) | def self.add(archive, buildbase)
FILE: build/scripts/commander.rb
type Commander (line 41) | module Commander
function run (line 43) | def self.run(*cmd)
FILE: build/scripts/common.rb
class Common (line 40) | class Common
method parse_build_options (line 57) | def self.parse_build_options(pkgname)
method parse_install_options (line 99) | def self.parse_install_options
method make_build_data (line 134) | def self.make_build_data(pkgname, options)
method make_archive_base (line 142) | def self.make_archive_base(pkgname, release)
method make_archive_name (line 146) | def self.make_archive_name(pkgname, release, platform)
method host_ssl_cert_file (line 150) | def self.host_ssl_cert_file(os)
method write_properties (line 161) | def self.write_properties(dir, release)
method write_active_file (line 166) | def self.write_active_file(out_dir, platform, uname, release)
method update_release_shasum (line 171) | def self.update_release_shasum(formula_file, release, platform)
method formula_data (line 210) | def self.formula_data(name)
method show_build_help (line 219) | def self.show_build_help(options, pkgname)
method show_install_help (line 239) | def self.show_install_help(options)
method make_paths (line 255) | def self.make_paths(pkgname, release, options)
method default_build_logfile_name (line 267) | def self.default_build_logfile_name(options, pkgname)
method default_install_logfile_name (line 271) | def self.default_install_logfile_name(options)
FILE: build/scripts/exceptions.rb
class CommandFailed (line 38) | class CommandFailed < RuntimeError
method initialize (line 39) | def initialize(cmd, exitstatus)
class UnknownTargetPlatform (line 45) | class UnknownTargetPlatform < RuntimeError
method initialize (line 46) | def initialize(platform)
class UnknownTargetOS (line 52) | class UnknownTargetOS < RuntimeError
method initialize (line 53) | def initialize(os)
class BadVersion (line 59) | class BadVersion < RuntimeError
method initialize (line 60) | def initialize(pkgname, srcver, expver)
FILE: build/scripts/logger.rb
class Logger (line 38) | class Logger
method open_log_file (line 39) | def self.open_log_file(name, rename, verbose)
method start_build_msg (line 50) | def self.start_build_msg(pkgname, platform)
method start_install_msg (line 54) | def self.start_install_msg(platform)
method msg (line 58) | def self.msg(msg)
method log_msg (line 63) | def self.log_msg(msg)
method file_msg (line 68) | def self.file_msg(msg)
method log_exception (line 72) | def self.log_exception(exc)
method rename_logfile (line 84) | def self.rename_logfile(name)
FILE: build/scripts/options.rb
class Options (line 35) | class Options
method initialize (line 40) | def initialize
method no_clean? (line 58) | def no_clean?
method no_check? (line 62) | def no_check?
method force? (line 66) | def force?
method verbose? (line 70) | def verbose?
method rename_log? (line 74) | def rename_log?
method update_sha256_sums? (line 78) | def update_sha256_sums?
method host_platform (line 82) | def host_platform
method target_platform (line 86) | def target_platform
method target_platform_as_sym (line 90) | def target_platform_as_sym
method same_platform? (line 94) | def same_platform?
method host_platform (line 98) | def self.host_platform
method get_host_platform (line 105) | def self.get_host_platform
FILE: build/tools/build-gcc.py
class ArgParser (line 28) | class ArgParser(build_support.ArgParser):
method __init__ (line 29) | def __init__(self): # pylint: disable=super-on-old-class
function get_gcc_prebuilt_path (line 37) | def get_gcc_prebuilt_path(host):
function package_gcc (line 46) | def package_gcc(package_dir, host_tag, arch, version):
function main (line 59) | def main(args):
FILE: build/tools/build-gdbserver.py
class ArgParser (line 28) | class ArgParser(build_support.ArgParser):
method __init__ (line 29) | def __init__(self):
function main (line 37) | def main(args):
FILE: build/tools/build-llvm.py
function get_llvm_prebuilt_path (line 28) | def get_llvm_prebuilt_path(host):
function main (line 37) | def main(args):
FILE: build/tools/build-platforms.py
class ArgParser (line 28) | class ArgParser(build_support.ArgParser):
method __init__ (line 29) | def __init__(self):
function main (line 37) | def main(args):
FILE: build/tools/build-shader-tools.py
function main (line 32) | def main(args):
FILE: build/tools/package.py
function expand_packages (line 42) | def expand_packages(package, host, arches):
function get_all_packages (line 82) | def get_all_packages(host, arches):
function check_packages (line 128) | def check_packages(path, packages):
function extract_all (line 151) | def extract_all(path, packages, out_dir):
function make_shortcuts (line 193) | def make_shortcuts(out_dir, host):
function make_shortcut (line 203) | def make_shortcut(out_dir, host, path, basename, windows_ext=None):
function make_cmd_helper (line 210) | def make_cmd_helper(out_dir, path, basename, windows_ext):
function make_sh_helper (line 222) | def make_sh_helper(out_dir, path, basename):
function make_source_properties (line 235) | def make_source_properties(out_dir, build_number):
function copy_changelog (line 245) | def copy_changelog(out_dir):
function make_package (line 250) | def make_package(build_number, package_dir, packages, host, out_dir, tem...
function _make_tar_package (line 272) | def _make_tar_package(package_path, base_dir, files):
function _make_zip_package (line 277) | def _make_zip_package(package_path, base_dir, files):
class ArgParser (line 287) | class ArgParser(argparse.ArgumentParser):
method __init__ (line 288) | def __init__(self):
function main (line 322) | def main():
FILE: checkbuild.py
class ArgParser (line 73) | class ArgParser(argparse.ArgumentParser):
method __init__ (line 74) | def __init__(self):
function _invoke_build (line 126) | def _invoke_build(script, args):
function invoke_build (line 132) | def invoke_build(script, args=None):
function invoke_external_build (line 137) | def invoke_external_build(script, args=None):
function package_ndk (line 141) | def package_ndk(out_dir, dist_dir, args):
function test_ndk (line 154) | def test_ndk(out_dir, args):
function common_build_args (line 182) | def common_build_args(out_dir, dist_dir, args):
function install_file (line 189) | def install_file(file_name, src_dir, dst_dir):
function _install_dir (line 202) | def _install_dir(src_dir, dst_dir):
function _install_symlink (line 209) | def _install_symlink(src_file, dst_file):
function _install_file (line 217) | def _install_file(src_file, dst_file):
function build_clang (line 225) | def build_clang(out_dir, dist_dir, args):
function build_gcc (line 230) | def build_gcc(out_dir, dist_dir, args):
function build_shader_tools (line 238) | def build_shader_tools(out_dir, dist_dir, args):
function build_host_tools (line 244) | def build_host_tools(out_dir, dist_dir, args):
function package_host_tools (line 280) | def package_host_tools(out_dir, dist_dir, host):
function build_gdbserver (line 333) | def build_gdbserver(out_dir, dist_dir, args):
function _build_stl (line 341) | def _build_stl(out_dir, dist_dir, args, stl):
function build_gnustl (line 349) | def build_gnustl(out_dir, dist_dir, args):
function build_libcxx (line 354) | def build_libcxx(out_dir, dist_dir, args):
function build_stlport (line 359) | def build_stlport(out_dir, dist_dir, args):
function build_platforms (line 364) | def build_platforms(out_dir, dist_dir, args):
function build_libshaderc (line 370) | def build_libshaderc(_, dist_dir, __):
function build_cpufeatures (line 446) | def build_cpufeatures(_, dist_dir, __):
function build_native_app_glue (line 451) | def build_native_app_glue(_, dist_dir, __):
function build_ndk_helper (line 456) | def build_ndk_helper(_, dist_dir, __):
function build_gtest (line 461) | def build_gtest(_, dist_dir, __):
function build_vulkan (line 465) | def build_vulkan(out_dir, dist_dir, args):
function build_build (line 556) | def build_build(_, dist_dir, __):
function build_python_packages (line 561) | def build_python_packages(_, dist_dir, __):
function build_gabixx (line 573) | def build_gabixx(_out_dir, dist_dir, _args):
function build_system_stl (line 579) | def build_system_stl(_out_dir, dist_dir, _args):
function build_libandroid_support (line 585) | def build_libandroid_support(_out_dir, dist_dir, _args):
function build_libcxxabi (line 591) | def build_libcxxabi(_out_dir, dist_dir, _args):
function main (line 597) | def main():
FILE: ndk-gdb.py
function log (line 41) | def log(msg):
function error (line 46) | def error(msg):
class ArgumentParser (line 50) | class ArgumentParser(gdbrunner.ArgumentParser):
method __init__ (line 51) | def __init__(self):
function extract_package_name (line 116) | def extract_package_name(xmlroot):
function extract_launchable (line 123) | def extract_launchable(xmlroot):
function ndk_bin_path (line 161) | def ndk_bin_path():
function handle_args (line 165) | def handle_args():
function find_project (line 207) | def find_project(args):
function canonicalize_activity (line 232) | def canonicalize_activity(package_name, activity_name):
function parse_manifest (line 238) | def parse_manifest(args):
function select_target (line 255) | def select_target(args):
function cd (line 278) | def cd(path):
function dump_var (line 289) | def dump_var(args, variable, abi=None):
function get_api_level (line 305) | def get_api_level(device_props):
function fetch_abi (line 318) | def fetch_abi(args):
function get_app_data_dir (line 361) | def get_app_data_dir(args, package_name):
function abi_to_arch (line 373) | def abi_to_arch(abi):
function get_gdbserver_path (line 382) | def get_gdbserver_path(args, package_name, app_data_dir, arch):
function pull_binaries (line 419) | def pull_binaries(device, out_dir, app_64bit):
function generate_gdb_script (line 452) | def generate_gdb_script(args, sysroot, binary_path, app_64bit, connect_t...
function detect_stl_pretty_printer (line 517) | def detect_stl_pretty_printer(args):
function find_pretty_printer (line 539) | def find_pretty_printer(pretty_printer):
function start_jdb (line 551) | def start_jdb(args, pid):
function main (line 579) | def main():
FILE: samples/test-debug/jni/testdebug.c
function jstring (line 26) | jstring
FILE: samples/test-debug/src/com/example/testdebug/TestDebug.java
class TestDebug (line 23) | public class TestDebug extends Activity
method onCreate (line 26) | @Override
method stringFromJNI (line 44) | public native String stringFromJNI();
FILE: sources/android/cpufeatures/cpu-features.c
function x86_cpuid (line 96) | static __inline__ void x86_cpuid(int func, int values[4])
function x86_cpuid (line 115) | static __inline__ void x86_cpuid(int func, int values[4])
function get_file_size (line 139) | static int
function read_file (line 174) | static int
function has_list_item (line 260) | static int
type CpuList (line 348) | typedef struct {
function cpulist_init (line 352) | static __inline__ void
function cpulist_and (line 357) | static __inline__ void
function cpulist_set (line 362) | static __inline__ void
function cpulist_count (line 369) | static __inline__ int
function cpulist_parse (line 384) | static void
function cpulist_read_from (line 436) | static void
function get_elf_hwcap_from_getauxval (line 519) | static uint32_t
function get_elf_hwcap_from_proc_self_auxv (line 549) | static uint32_t
function get_elf_hwcap_from_proc_cpuinfo (line 584) | static uint32_t
function get_cpu_count (line 638) | static int
function android_cpuInitFamily (line 655) | static void
function android_cpuInitRuntimeFamily (line 676) | static void
function android_cpuInit (line 729) | static void
function AndroidCpuFamily (line 1102) | AndroidCpuFamily
function AndroidCpuFamily (line 1110) | AndroidCpuFamily
function android_getCpuFeatures (line 1118) | uint64_t
function android_getCpuCount (line 1126) | int
function android_cpuInitDummy (line 1133) | static void
function android_setCpu (line 1139) | int
function android_getCpuIdArm (line 1155) | uint32_t
function android_setCpuArm (line 1162) | int
FILE: sources/android/libthread_db/gdb-7.7/libthread_db.c
type ps_prochandle (line 37) | struct ps_prochandle
function _get_task_permitted_caps (line 63) | static int
function td_err_e (line 118) | td_err_e
function td_err_e (line 216) | td_err_e
function td_err_e (line 227) | td_err_e
function _event_getmsg_helper (line 239) | static int
function td_err_e (line 281) | td_err_e
function td_err_e (line 304) | td_err_e
function td_err_e (line 314) | td_err_e
function td_err_e (line 327) | td_err_e
function td_err_e (line 337) | td_err_e
function td_err_e (line 360) | td_err_e
function td_err_e (line 369) | td_err_e
function td_err_e (line 402) | td_err_e
FILE: sources/android/libthread_db/gdb-7.7/thread_db.h
type pid_t (line 28) | typedef pid_t lwpid_t;
type td_err_e (line 78) | typedef int32_t td_err_e;
type td_event_e (line 79) | typedef uint32_t td_event_e;
type td_notify_e (line 80) | typedef uint32_t td_notify_e;
type td_thr_state_e (line 81) | typedef uint32_t td_thr_state_e;
type pthread_t (line 82) | typedef pthread_t thread_t;
type td_thragent_t (line 84) | typedef struct
type td_thrhandle_t (line 90) | typedef struct
type td_event_msg_t (line 96) | typedef struct
type td_thr_events_t (line 105) | typedef struct
type td_notify_t (line 110) | typedef struct
type td_thrinfo_t (line 117) | typedef struct
type ps_prochandle (line 138) | struct ps_prochandle
type ps_prochandle (line 144) | struct ps_prochandle
FILE: sources/android/libthread_db/libthread_db.c
type ps_prochandle (line 26) | struct ps_prochandle
function td_err_e (line 38) | td_err_e td_ta_new(struct ps_prochandle* proc_handle, td_thragent_t** ag...
function td_err_e (line 52) | td_err_e td_ta_delete(td_thragent_t* ta) {
function td_err_e (line 57) | td_err_e td_ta_map_lwp2thr(td_thragent_t const* agent, lwpid_t lwpid, td...
function td_err_e (line 63) | td_err_e td_ta_thr_iter(td_thragent_t const* agent,
function td_err_e (line 103) | td_err_e td_thr_get_info(td_thrhandle_t const* handle, td_thrinfo_t* inf...
function td_err_e (line 115) | td_err_e td_thr_tlsbase(const td_thrhandle_t* unused1, unsigned long int...
function td_err_e (line 119) | td_err_e td_thr_tls_get_addr(const td_thrhandle_t* unused1, psaddr_t unu...
function td_err_e (line 129) | td_err_e td_ta_set_event(td_thragent_t const* agent, td_thr_events_t* ev...
function td_err_e (line 132) | td_err_e td_ta_event_getmsg(td_thragent_t const* agent, td_event_msg_t* ...
function td_err_e (line 135) | td_err_e td_thr_event_enable(const td_thrhandle_t* handle, int event) {
function td_err_e (line 138) | td_err_e td_ta_clear_event(const td_thragent_t* ta_arg, td_thr_events_t*...
function td_err_e (line 141) | td_err_e td_ta_event_addr(td_thragent_t const* agent, td_event_e event, ...
FILE: sources/android/libthread_db/thread_db.h
type td_err_e (line 73) | typedef int32_t td_err_e;
type td_event_e (line 74) | typedef uint32_t td_event_e;
type td_notify_e (line 75) | typedef uint32_t td_notify_e;
type td_thr_state_e (line 76) | typedef uint32_t td_thr_state_e;
type pthread_t (line 77) | typedef pthread_t thread_t;
type td_thragent_t (line 79) | typedef struct
type td_thrhandle_t (line 85) | typedef struct
type td_event_msg_t (line 92) | typedef struct
type td_thr_events_t (line 101) | typedef struct
type td_notify_t (line 106) | typedef struct
type td_thrinfo_t (line 113) | typedef struct
type ps_prochandle (line 134) | struct ps_prochandle
type ps_prochandle (line 140) | struct ps_prochandle
FILE: sources/crystax/crazy_linker/include/crazy_linker.h
type crazy_status_t (line 45) | typedef enum {
type crazy_context_t (line 60) | typedef struct crazy_context_t crazy_context_t;
type crazy_callback_t (line 158) | typedef struct {
type crazy_library_t (line 194) | typedef struct crazy_library_t crazy_library_t;
type crazy_library_info_t (line 224) | typedef struct {
FILE: sources/crystax/crazy_linker/minitest/minitest.cc
type TestInfo (line 10) | struct TestInfo {
function String (line 32) | String& String::operator+=(const String& other) {
function String (line 39) | String& String::operator+=(const char* str) {
function String (line 47) | String& String::operator+=(char ch) {
function String (line 53) | String& String::operator<<(const String& other) {
function String (line 58) | String& String::operator<<(const char* str) {
function String (line 63) | String& String::operator<<(char ch) {
function String (line 68) | String& String::operator<<(bool v) {
FILE: sources/crystax/crazy_linker/minitest/minitest.h
function namespace (line 80) | namespace minitest {
function class (line 205) | class TestCase {
FILE: sources/crystax/crazy_linker/src/crazy_linker_api.cpp
type crazy_context_t (line 32) | struct crazy_context_t {
method crazy_context_t (line 34) | crazy_context_t()
function crazy_context_t (line 68) | crazy_context_t* crazy_context_create(void) { return new crazy_context_t...
method crazy_context_t (line 34) | crazy_context_t()
function crazy_context_clear_error (line 76) | void crazy_context_clear_error(crazy_context_t* context) {
function crazy_context_set_load_address (line 80) | void crazy_context_set_load_address(crazy_context_t* context,
function crazy_context_get_load_address (line 85) | size_t crazy_context_get_load_address(crazy_context_t* context) {
function crazy_context_set_file_offset (line 89) | void crazy_context_set_file_offset(crazy_context_t* context,
function crazy_context_get_file_offset (line 94) | size_t crazy_context_get_file_offset(crazy_context_t* context) {
function crazy_status_t (line 98) | crazy_status_t crazy_context_add_search_path(crazy_context_t* context,
function crazy_status_t (line 104) | crazy_status_t crazy_context_add_search_path_for_address(
function crazy_context_reset_search_paths (line 122) | void crazy_context_reset_search_paths(crazy_context_t* context) {
function crazy_context_set_java_vm (line 126) | void crazy_context_set_java_vm(crazy_context_t* context,
function crazy_context_get_java_vm (line 133) | void crazy_context_get_java_vm(crazy_context_t* context,
function crazy_context_set_callback_poster (line 140) | void crazy_context_set_callback_poster(crazy_context_t* context,
function crazy_context_get_callback_poster (line 147) | void crazy_context_get_callback_poster(crazy_context_t* context,
function crazy_callback_run (line 154) | void crazy_callback_run(crazy_callback_t* callback) {
function crazy_context_destroy (line 158) | void crazy_context_destroy(crazy_context_t* context) { delete context; }
class ScopedDelayedCallbackPoster (line 162) | class ScopedDelayedCallbackPoster {
method ScopedDelayedCallbackPoster (line 164) | ScopedDelayedCallbackPoster(crazy_context_t* context) {
method PostFromContext (line 181) | static bool PostFromContext(void* crazy_context,
function crazy_status_t (line 196) | crazy_status_t crazy_library_open(crazy_library_t** library,
function crazy_status_t (line 226) | crazy_status_t crazy_library_get_info(crazy_library_t* library,
function crazy_status_t (line 246) | crazy_status_t crazy_system_can_share_relro(void) {
function crazy_status_t (line 256) | crazy_status_t crazy_library_create_shared_relro(crazy_library_t* library,
function crazy_status_t (line 277) | crazy_status_t crazy_library_use_shared_relro(crazy_library_t* library,
function crazy_status_t (line 296) | crazy_status_t crazy_library_find_by_name(const char* library_name,
function crazy_status_t (line 311) | crazy_status_t crazy_library_find_symbol(crazy_library_t* library,
function crazy_status_t (line 322) | crazy_status_t crazy_linker_find_symbol(const char* symbol_name,
function crazy_status_t (line 328) | crazy_status_t crazy_library_find_from_address(void* address,
function crazy_library_close (line 343) | void crazy_library_close(crazy_library_t* library) {
function crazy_library_close_with_context (line 347) | void crazy_library_close_with_context(crazy_library_t* library,
FILE: sources/crystax/crazy_linker/src/crazy_linker_ashmem.cpp
type crazy (line 19) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_ashmem.h
function namespace (line 10) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_ashmem_unittest.cpp
type crazy (line 11) | namespace crazy {
function TEST (line 13) | TEST(AshmemRegion, Construction) {
function TEST (line 18) | TEST(AshmemRegion, Allocate) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_debug.cpp
type crazy (line 16) | namespace crazy {
function LogArgs (line 22) | void LogArgs(const char* fmt, va_list args, bool print_error, int erro...
function Log (line 49) | void Log(const char* fmt, ...) {
function LogErrno (line 58) | void LogErrno(const char* fmt, ...) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_debug.h
function namespace (line 15) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_loader.cpp
type crazy (line 16) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_loader.h
function namespace (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_relocations.cpp
type crazy (line 68) | namespace crazy {
type RelocationType (line 73) | enum RelocationType {
function RelocationType (line 82) | RelocationType GetRelocationType(ELF::Word r_type) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_relocations.h
function namespace (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_relro.cpp
type crazy (line 16) | namespace crazy {
function PageEquals (line 20) | inline bool PageEquals(const char* p1, const char* p2) {
function SwapPagesFromFd (line 27) | bool SwapPagesFromFd(void* addr,
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_relro.h
function namespace (line 13) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_symbols.cpp
type crazy (line 10) | namespace crazy {
function ElfHash (line 15) | unsigned ElfHash(const char* name) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_symbols.h
function namespace (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_view.cpp
type crazy (line 9) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_elf_view.h
function namespace (line 13) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_error.cpp
type crazy (line 13) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_error.h
function namespace (line 8) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_error_unittest.cpp
type crazy (line 9) | namespace crazy {
function TEST (line 11) | TEST(Error, ConstructEmpty) {
function TEST (line 16) | TEST(Error, ConstructWithString) {
function TEST (line 21) | TEST(Error, CopyConstructor) {
function TEST (line 28) | TEST(Error, Set) {
function TEST (line 36) | TEST(Error, Append) {
function TEST (line 42) | TEST(Error, Format) {
function TEST (line 48) | TEST(Error, AppendFormat) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_globals.cpp
type crazy (line 11) | namespace crazy {
function CreateGlobalsInstance (line 18) | void CreateGlobalsInstance() { g_globals = new Globals(); }
function Globals (line 29) | Globals* Globals::Get() {
FILE: sources/crystax/crazy_linker/src/crazy_linker_globals.h
function namespace (line 17) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_globals_unittest.cpp
type crazy (line 11) | namespace crazy {
function TEST (line 13) | TEST(Globals, Get) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_library_list.cpp
type crazy (line 16) | namespace crazy {
type SymbolLookupState (line 21) | struct SymbolLookupState {
method SymbolLookupState (line 26) | SymbolLookupState() : found_addr(NULL), weak_addr(NULL), weak_count(...
method CheckSymbol (line 29) | bool CheckSymbol(const char* symbol, SharedLibrary* lib) {
function LibraryView (line 67) | LibraryView* LibraryList::FindLibraryByName(const char* base_name) {
function LibraryView (line 131) | LibraryView* LibraryList::FindLibraryForAddress(void* address) {
function _Unwind_Ptr (line 148) | _Unwind_Ptr LibraryList::FindArmExIdx(void* pc, int* count) {
function LibraryView (line 223) | LibraryView* LibraryList::LoadLibrary(const char* lib_name,
function LibraryView (line 378) | LibraryView* LibraryList::FindKnownLibrary(const char* name) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_library_list.h
function namespace (line 18) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_library_view.cpp
type crazy (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_library_view.h
function namespace (line 11) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_line_reader.cpp
type crazy (line 14) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_line_reader.h
function namespace (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_line_reader_unittest.cpp
type crazy (line 11) | namespace crazy {
function TEST (line 15) | TEST(LineReader, EmptyConstructor) {
function TEST (line 20) | TEST(LineReader, EmptyFile) {
function TEST (line 28) | TEST(LineReader, SingleLineFile) {
function TEST (line 41) | TEST(LineReader, SingleLineFileUnterminated) {
function TEST (line 56) | TEST(LineReader, MultiLineFile) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_memory_mapping.h
function namespace (line 14) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_proc_maps.cpp
type crazy (line 16) | namespace crazy {
function ParseProcMapsLine (line 27) | bool ParseProcMapsLine(const char* line,
class ProcMapsInternal (line 128) | class ProcMapsInternal {
method ProcMapsInternal (line 130) | ProcMapsInternal() : index_(0), entries_() {}
method Open (line 134) | bool Open(const char* path) {
method Rewind (line 160) | void Rewind() { index_ = 0; }
method GetNextEntry (line 162) | bool GetNextEntry(ProcMaps::Entry* entry) {
method Reset (line 171) | void Reset() {
function FindElfBinaryForAddress (line 214) | bool FindElfBinaryForAddress(void* address,
function FindProtectionFlagsForAddress (line 244) | bool FindProtectionFlagsForAddress(void* address, int* prot_flags) {
function FindLoadAddressForFile (line 259) | bool FindLoadAddressForFile(const char* file_name,
FILE: sources/crystax/crazy_linker/src/crazy_linker_proc_maps.h
function namespace (line 14) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_proc_maps_unittest.cpp
type crazy (line 11) | namespace crazy {
class ScopedTestEnv (line 35) | class ScopedTestEnv {
method ScopedTestEnv (line 37) | ScopedTestEnv() : sys_() {
function TEST (line 49) | TEST(ProcMaps, FindElfBinaryForAddress) {
function TEST (line 60) | TEST(ProcMaps, FindElfBinaryForAddressWithBadAddress) {
function TEST (line 69) | TEST(ProcMaps, FindProtectionFlagsForAddress) {
function TEST (line 98) | TEST(ProcMaps, FindLoadAddressForFile) {
function TEST (line 126) | TEST(ProcMaps, GetNextEntry) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_rdebug.cpp
type crazy (line 18) | namespace crazy {
function FindExecutablePath (line 24) | bool FindExecutablePath(String* exe_path) {
function FindElfDynamicSection (line 46) | bool FindElfDynamicSection(const char* path,
class ScopedPageMapper (line 157) | class ScopedPageMapper {
method ScopedPageMapper (line 159) | ScopedPageMapper() : page_address_(0), page_prot_(0) {}
class RDebugRunnable (line 272) | class RDebugRunnable {
method RDebugRunnable (line 274) | RDebugRunnable(rdebug_callback_handler_t handler,
FILE: sources/crystax/crazy_linker/src/crazy_linker_rdebug.h
function namespace (line 125) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_search_path_list.cpp
type crazy (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_search_path_list.h
function namespace (line 12) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_search_path_list_unittest.cpp
type crazy (line 10) | namespace crazy {
class TestSystem (line 12) | class TestSystem {
method TestSystem (line 14) | TestSystem() : sys_() {
method AddFile (line 23) | void AddFile(const char* path, const char* data, size_t len) {
function TEST (line 31) | TEST(SearchPathList, Empty) {
function TEST (line 39) | TEST(SearchPathList, OneItem) {
function TEST (line 48) | TEST(SearchPathList, Reset) {
function TEST (line 58) | TEST(SearchPathList, ResetFromEnv) {
function TEST (line 66) | TEST(SearchPathList, ThreeItems) {
function TEST (line 77) | TEST(SearchPathList, EnvPathsAfterAddedOnes) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_shared_library.cpp
type crazy (line 61) | namespace crazy {
function CallFunction (line 74) | void CallFunction(linker_function_t func, const char* func_type) {
class SharedLibraryResolver (line 85) | class SharedLibraryResolver : public ElfRelocations::SymbolResolver {
method SharedLibraryResolver (line 87) | SharedLibraryResolver(SharedLibrary* lib,
FILE: sources/crystax/crazy_linker/src/crazy_linker_shared_library.h
function namespace (line 18) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_system.cpp
type crazy (line 17) | namespace crazy {
function String (line 60) | String GetCurrentDirectory() {
function PathExists (line 72) | bool PathExists(const char* path) {
function PathIsFile (line 80) | bool PathIsFile(const char* path) {
function IsSystemLibrary (line 92) | bool IsSystemLibrary(const char* lib_name) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_system.h
function namespace (line 24) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_system_mock.cpp
function Panic (line 22) | void Panic(const char* msg, ...) {
class List (line 35) | class List {
method List (line 37) | List() : entries_() {}
method Reset (line 41) | void Reset() {
method PushBack (line 51) | void PushBack(T* item) { entries_.PushBack(item); }
method GetCount (line 53) | size_t GetCount() const { return entries_.GetCount(); }
method T (line 55) | T* operator[](size_t index) { return entries_[index]; }
class MockFileEntry (line 62) | class MockFileEntry {
method MockFileEntry (line 64) | MockFileEntry() : path_(), data_() {}
method GetDataSize (line 70) | size_t GetDataSize() const { return data_.size(); }
method SetPath (line 72) | void SetPath(const char* path) { path_.Assign(path); }
method SetData (line 74) | void SetData(const char* data, size_t data_size) {
class MockEnvEntry (line 84) | class MockEnvEntry {
method MockEnvEntry (line 86) | MockEnvEntry(const char* var_name, const char* var_value)
method String (line 89) | const String& GetName() const { return var_name_; }
method String (line 90) | const String& GetValue() const { return var_value_; }
class MockSystem (line 97) | class MockSystem {
method MockSystem (line 99) | MockSystem() : files_(), environment_() {}
method SetCurrentDir (line 103) | void SetCurrentDir(const char* path) { current_dir_ = path; }
method String (line 105) | String GetCurrentDir() const { return current_dir_; }
method AddFileEntry (line 107) | void AddFileEntry(MockFileEntry* entry) { files_.PushBack(entry); }
method AddEnvEntry (line 109) | void AddEnvEntry(MockEnvEntry* entry) { environment_.PushBack(entry); }
method MockFileEntry (line 111) | MockFileEntry* FindFileEntry(const char* path) {
method MockEnvEntry (line 120) | MockEnvEntry* FindEnvEntry(const char* var_name) {
method Reset (line 129) | void Reset() {
method Check (line 135) | void Check() {
method Activate (line 140) | void Activate() {
method Deactivate (line 147) | void Deactivate() {
class MockFileHandle (line 163) | class MockFileHandle {
method MockFileHandle (line 165) | MockFileHandle(MockFileEntry* entry) : entry_(entry), offset_(0) {}
method IsEof (line 168) | bool IsEof() const { return offset_ >= entry_->GetDataSize(); }
method GetString (line 170) | bool GetString(char* buffer, size_t buffer_size) {
method Read (line 188) | int Read(void* buffer, size_t buffer_size) {
method SeekTo (line 208) | int SeekTo(off_t offset) {
function MockFileHandle (line 259) | MockFileHandle* NewMockFileHandle(const char* path,
method MockFileHandle (line 165) | MockFileHandle(MockFileEntry* entry) : entry_(entry), offset_(0) {}
method IsEof (line 168) | bool IsEof() const { return offset_ >= entry_->GetDataSize(); }
method GetString (line 170) | bool GetString(char* buffer, size_t buffer_size) {
method Read (line 188) | int Read(void* buffer, size_t buffer_size) {
method SeekTo (line 208) | int SeekTo(off_t offset) {
type crazy (line 277) | namespace crazy {
function PathExists (line 281) | bool PathExists(const char* path) {
function PathIsFile (line 286) | bool PathIsFile(const char* path) {
function String (line 291) | String GetCurrentDirectory() {
FILE: sources/crystax/crazy_linker/src/crazy_linker_system_mock.h
function namespace (line 10) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_system_unittest.cpp
type crazy (line 11) | namespace crazy {
function TEST (line 13) | TEST(System, SingleFile) {
function TEST (line 30) | TEST(System, PathExists) {
function TEST (line 37) | TEST(System, PathExistsWithBadPath) {
function TEST (line 42) | TEST(System, IsSystemLibrary) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_thread.cpp
function ThreadDataDestroy (line 16) | static void ThreadDataDestroy(void* data) { free(data); }
function InitThreadKey (line 18) | static void InitThreadKey() {
type crazy (line 24) | namespace crazy {
function ThreadData (line 54) | ThreadData* GetThreadDataFast() {
function ThreadData (line 58) | ThreadData* GetThreadData() {
function SetLinkerErrorString (line 70) | void SetLinkerErrorString(const char* str) { GetThreadData()->SetError...
function SetLinkerError (line 73) | void SetLinkerError(const char* fmt, ...) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_thread.h
function namespace (line 11) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/crazy_linker_thread_unittest.cpp
type crazy (line 9) | namespace crazy {
function TEST (line 11) | TEST(Thread, GetThreadData) {
function TEST (line 19) | TEST(Thread, GetErrorEmpty) {
function TEST (line 26) | TEST(Thread, SetError) {
function TEST (line 33) | TEST(Thread, SetErrorNull) {
function TEST (line 40) | TEST(Thread, GetError) {
function TEST (line 51) | TEST(Thread, SwapErrorBuffers) {
function TEST (line 66) | TEST(Thread, AppendErrorTwice) {
function TEST (line 76) | TEST(Thread, AppendErrorFull) {
function TEST (line 96) | TEST(Thread, AppendErrorNull) {
function TEST (line 104) | TEST(Thread, SetLinkerErrorString) {
function TEST (line 114) | TEST(Thread, SetLinkerError) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_util.cpp
type crazy (line 9) | namespace crazy {
function String (line 100) | String Format(const char* fmt, ...) {
function String (line 108) | String FormatArgs(const char* fmt, va_list args) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_util.h
function namespace (line 13) | namespace crazy {
function Assign (line 116) | void Assign(const String& other) { Assign(other.ptr_, other.size_); }
function Assign (line 118) | void Assign(const char* str) { Assign(str, strlen(str)); }
function Append (line 122) | void Append(const String& other) { Append(other.ptr_, other.size_); }
function Append (line 124) | void Append(const char* str) { Append(str, strlen(str)); }
function PushBack (line 156) | void PushBack(T item) { InsertAt(static_cast<int>(count_), item); }
function T (line 158) | T PopFirst() {
function T (line 164) | T PopLast() {
function Remove (line 170) | void Remove(T item) {
function Has (line 182) | bool Has(T item) const { return IndexOf(item) >= 0; }
function Has (line 269) | bool Has(T item) const { return items_.Has(item); }
FILE: sources/crystax/crazy_linker/src/crazy_linker_util_unittest.cpp
type crazy (line 9) | namespace crazy {
function TEST (line 11) | TEST(GetBaseNamePtr, Test) {
function TEST (line 16) | TEST(String, Empty) {
function TEST (line 23) | TEST(String, CStringConstructor) {
function TEST (line 29) | TEST(String, CStringConstructorWithLength) {
function TEST (line 35) | TEST(String, CopyConstructor) {
function TEST (line 43) | TEST(String, CharConstructor) {
function TEST (line 49) | TEST(String, AppendCString) {
function TEST (line 57) | TEST(String, AppendOther) {
function TEST (line 64) | TEST(String, ArrayAccess) {
function TEST (line 75) | TEST(String, Resize) {
function TEST (line 82) | TEST(String, ResizeToZero) {
function TEST (line 89) | TEST(Vector, IsEmpty) {
function TEST (line 94) | TEST(Vector, PushBack) {
function TEST (line 102) | TEST(Vector, PushBack2) {
function TEST (line 112) | TEST(Vector, At) {
function TEST (line 124) | TEST(Vector, IndexOf) {
function TEST (line 136) | TEST(Vector, InsertAt) {
function TEST (line 161) | TEST(Vector, RemoveAt) {
function TEST (line 180) | TEST(Vector, PopFirst) {
function TEST (line 196) | TEST(Set, Empty) {
function TEST (line 202) | TEST(Set, OneItem) {
function TEST (line 213) | TEST(Set, ThreeItems) {
FILE: sources/crystax/crazy_linker/src/crazy_linker_wrappers.cpp
type crazy (line 37) | namespace crazy {
function __aeabi_atexit (line 50) | int __aeabi_atexit(void* object, void (*destructor)(void*), void* dso_...
function SaveSystemError (line 56) | void SaveSystemError() {
function WrapDladdr (line 165) | int WrapDladdr(void* address, Dl_info* info) {
function WrapDlclose (line 193) | int WrapDlclose(void* lib_handle) {
function _Unwind_Ptr (line 213) | _Unwind_Ptr WrapDl_unwind_find_exidx(_Unwind_Ptr pc, int* pcount) {
function WrapDl_iterate_phdr (line 226) | int WrapDl_iterate_phdr(int (*cb)(dl_phdr_info*, size_t, void*), void*...
FILE: sources/crystax/crazy_linker/src/crazy_linker_wrappers.h
function namespace (line 8) | namespace crazy {
FILE: sources/crystax/crazy_linker/src/elf_traits.h
type ELF (line 15) | struct ELF {
type ELF (line 39) | struct ELF {
FILE: sources/crystax/crazy_linker/src/linker_phdr.cpp
function phdr_table_get_load_size (line 141) | size_t phdr_table_get_load_size(const ELF::Phdr* phdr_table,
function _phdr_table_set_load_prot (line 185) | static int _phdr_table_set_load_prot(const ELF::Phdr* phdr_table,
function phdr_table_protect_segments (line 221) | int phdr_table_protect_segments(const ELF::Phdr* phdr_table,
function phdr_table_unprotect_segments (line 243) | int phdr_table_unprotect_segments(const ELF::Phdr* phdr_table,
function phdr_table_get_relro_info (line 258) | int phdr_table_get_relro_info(const ELF::Phdr* phdr_table,
function phdr_table_protect_gnu_relro (line 312) | int phdr_table_protect_gnu_relro(const ELF::Phdr* phdr_table,
function phdr_table_get_arm_exidx (line 344) | int phdr_table_get_arm_exidx(const ELF::Phdr* phdr_table,
function phdr_table_get_dynamic_section (line 380) | void phdr_table_get_dynamic_section(const ELF::Phdr* phdr_table,
FILE: sources/crystax/crazy_linker/tests/bar.cpp
function Bar (line 10) | void Bar() {
FILE: sources/crystax/crazy_linker/tests/bar_with_relro.cpp
function Bar (line 25) | void Bar() {
FILE: sources/crystax/crazy_linker/tests/bench_load_library.cpp
function Panic (line 20) | static void Panic(const char* fmt, ...) {
function now_ms (line 29) | static double now_ms() {
function drop_caches (line 35) | static void drop_caches() {
class ScopedTimer (line 46) | class ScopedTimer {
method ScopedTimer (line 48) | ScopedTimer(const char* name) {
function main (line 63) | int main(int argc, char** argv) {
FILE: sources/crystax/crazy_linker/tests/foo.cpp
function Foo (line 8) | void Foo() {
FILE: sources/crystax/crazy_linker/tests/foo2.cpp
function Foo2 (line 10) | void Foo2() {
FILE: sources/crystax/crazy_linker/tests/foo_with_relro.cpp
function Foo (line 19) | void Foo() {
FILE: sources/crystax/crazy_linker/tests/foo_with_static_constructor.cpp
class A (line 21) | class A {
method A (line 23) | A() {
method Get (line 40) | int Get() const { return x_; }
function Foo (line 48) | int Foo() { return s_a.Get(); }
FILE: sources/crystax/crazy_linker/tests/jni_lib.cpp
function JNI_OnLoad (line 14) | int JNI_OnLoad(JavaVM* vm, void* reserved) {
function JNI_OnUnload (line 30) | void JNI_OnUnload(JavaVM* vm, void* reserved) {
FILE: sources/crystax/crazy_linker/tests/test_constructors_destructors.cpp
function main (line 23) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_dl_wrappers.cpp
function main (line 22) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_jni_hooks.cpp
function main (line 19) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_load_library.cpp
function main (line 18) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_load_library_callbacks.cpp
function PostCallback (line 16) | bool PostCallback(crazy_callback_t* callback, void* poster_opaque) {
function CheckAndRunCallback (line 30) | void CheckAndRunCallback(crazy_callback_t* callback) {
function main (line 46) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_load_library_depends.cpp
function main (line 19) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_relocated_shared_relro.cpp
function main (line 23) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_search_path_list.cpp
function CheckLibraryCantLoad (line 24) | void CheckLibraryCantLoad(const char* library_name, crazy_context_t* con...
function CheckLibrary (line 38) | void CheckLibrary(const char* library_name,
function main (line 85) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_shared_relro.cpp
function main (line 26) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_two_shared_relros.cpp
function main (line 25) | int main() {
FILE: sources/crystax/crazy_linker/tests/test_util.h
function Panic (line 35) | inline void Panic(const char* fmt, ...) {
function PanicErrno (line 46) | inline void PanicErrno(const char* fmt, ...) {
function class (line 58) | class String {
function Append (line 96) | void Append(const char* str, size_t len) {
function Resize (line 102) | void Resize(size_t len) {
function Format (line 110) | void Format(const char* fmt, ...) {
function class (line 133) | class TempDirectory {
function class (line 171) | class ScopedFILE {
function String (line 195) | inline String GetCurrentExecutable() {
function String (line 207) | inline String GetCurrentExecutableDirectory() {
function CopyFile (line 221) | inline void CopyFile(const char* src_file_name,
function SendFd (line 254) | inline int SendFd(int socket, int fd) {
function ReceiveFd (line 291) | inline int ReceiveFd(int socket, int* fd) {
function CheckRelroMaps (line 326) | inline void CheckRelroMaps(int expected_count) {
type RelroInfo (line 374) | struct RelroInfo {
function Close (line 393) | void Close() { crazy_library_close(this->library); }
function CreateSharedRelro (line 395) | void CreateSharedRelro(crazy_context_t* context, size_t load_address) {
function EnableSharedRelro (line 414) | void EnableSharedRelro(crazy_context_t* context) {
function SendRelroInfo (line 419) | void SendRelroInfo(int fd) {
function ReceiveRelroInfo (line 433) | void ReceiveRelroInfo(int fd) {
function UseSharedRelro (line 454) | void UseSharedRelro(crazy_context_t* context) {
FILE: sources/crystax/crazy_linker/tests/zoo.cpp
function Zoo (line 8) | bool Zoo() {
FILE: sources/crystax/include/crystax/arm/fenv.h
type __uint32_t (line 41) | typedef __uint32_t fexcept_t;
FILE: sources/crystax/include/crystax/arm64/endian.h
function __uint16_t (line 74) | static __inline __uint16_t
FILE: sources/crystax/include/crystax/arm64/fenv.h
function __BEGIN_DECLS (line 38) | __BEGIN_DECLS
type __uint32_t (line 45) | typedef __uint32_t fexcept_t;
FILE: sources/crystax/include/crystax/common.hpp
type crystax (line 35) | namespace crystax
class non_copyable_t (line 38) | class non_copyable_t
method non_copyable_t (line 41) | non_copyable_t() {}
type fileio (line 49) | namespace fileio
FILE: sources/crystax/include/crystax/jutils/class.hpp
type crystax (line 43) | namespace crystax
type jni (line 45) | namespace jni
function jhclass (line 48) | inline
function jhclass (line 57) | inline
function jhclass (line 64) | jhclass get_class(JNIEnv *env, jholder<T, Refcounter> const &obj)
function jhclass (line 73) | jhclass get_class(jholder<T, Refcounter> const &obj)
FILE: sources/crystax/include/crystax/jutils/exceptions.hpp
type crystax (line 42) | namespace crystax
type jni (line 44) | namespace jni
function jthrow (line 49) | inline void jthrow(JNIEnv *env, jhthrowable const &ex)
function jthrow (line 54) | inline void jthrow(jhthrowable const &ex)
function jthrow (line 59) | inline void jthrow(JNIEnv *env, jhclass const &cls, char const *what)
function jthrow (line 64) | inline void jthrow(jhclass const &cls, char const *what)
function jthrow (line 69) | inline void jthrow(JNIEnv *env, char const *clsname, char const *what)
function jthrow (line 74) | inline void jthrow(char const *clsname, char const *what)
function jthrow (line 79) | inline void jthrow(char const *what)
function jexcheck (line 85) | inline bool jexcheck()
function jhthrowable (line 90) | inline jhthrowable jexception(JNIEnv *env)
function jhthrowable (line 97) | inline jhthrowable jexception()
function rethrow (line 107) | inline void rethrow(jthrowable ex)
function rethrow (line 112) | inline void rethrow(JNIEnv *env, jhthrowable const &ex)
function rethrow (line 117) | inline void rethrow(jhthrowable const &ex)
FILE: sources/crystax/include/crystax/jutils/field.hpp
type crystax (line 45) | namespace crystax
type jni (line 47) | namespace jni
function jfieldID (line 53) | inline
function jfieldID (line 62) | inline
function jfieldID (line 69) | jfieldID get_field_id(JNIEnv *env, jholder<T, Refcounter> const &obj...
function jfieldID (line 75) | jfieldID get_field_id(jholder<T, Refcounter> const &obj, const char ...
function jfieldID (line 82) | inline
function jfieldID (line 91) | inline
function jfieldID (line 98) | jfieldID get_static_field_id(JNIEnv *env, jholder<T, Refcounter> con...
function jfieldID (line 104) | jfieldID get_static_field_id(jholder<T, Refcounter> const &obj, cons...
function Ret (line 112) | Ret get_field(JNIEnv *env, jholder<T, Refcounter> const &obj, jfield...
function Ret (line 118) | Ret get_field(jholder<T, Refcounter> const &obj, jfieldID fid)
function Ret (line 124) | Ret get_field(JNIEnv *env, const char *clsname, jfieldID fid)
function Ret (line 130) | Ret get_field(const char *clsname, jfieldID fid)
function Ret (line 136) | Ret get_field(JNIEnv *env, jholder<T, Refcounter> const &obj, const ...
function Ret (line 142) | Ret get_field(jholder<T, Refcounter> const &obj, const char *name, c...
function Ret (line 148) | Ret get_field(JNIEnv *env, const char *clsname, const char *name, co...
function Ret (line 154) | Ret get_field(const char *clsname, const char *name, const char *sig...
function Ret (line 160) | Ret get_field(JNIEnv *env, jholder<T, Refcounter> const &obj, const ...
function Ret (line 166) | Ret get_field(jholder<T, Refcounter> const &obj, const char *name)
function Ret (line 172) | Ret get_field(JNIEnv *env, const char *clsname, const char *name)
function Ret (line 178) | Ret get_field(const char *clsname, const char *name)
function Ret (line 186) | Ret get_static_field(JNIEnv *env, jholder<T, Refcounter> const &obj,...
function Ret (line 192) | Ret get_static_field(jholder<T, Refcounter> const &obj, const char *...
function Ret (line 198) | Ret get_static_field(JNIEnv *env, const char *clsname, const char *n...
function Ret (line 204) | Ret get_static_field(const char *clsname, const char *name, const ch...
function Ret (line 210) | Ret get_static_field(JNIEnv *env, jholder<T, Refcounter> const &obj,...
function Ret (line 216) | Ret get_static_field(jholder<T, Refcounter> const &obj, const char *...
function Ret (line 222) | Ret get_static_field(JNIEnv *env, const char *clsname, const char *n...
function Ret (line 228) | Ret get_static_field(const char *clsname, const char *name)
function set_field (line 236) | void set_field(JNIEnv *env, jholder<T, Refcounter> const &obj, jfiel...
function set_field (line 242) | void set_field(jholder<T, Refcounter> const &obj, jfieldID fid, Arg ...
function set_field (line 248) | void set_field(JNIEnv *env, const char *clsname, jfieldID fid, Arg c...
function set_field (line 254) | void set_field(const char *clsname, jfieldID fid, Arg const &arg)
function set_field (line 260) | void set_field(JNIEnv *env, jholder<T, Refcounter> const &obj, const...
function set_field (line 266) | void set_field(jholder<T, Refcounter> const &obj, const char *name, ...
function set_field (line 272) | void set_field(JNIEnv *env, const char *clsname, const char *name, c...
function set_field (line 278) | void set_field(const char *clsname, const char *name, const char *si...
function set_field (line 284) | void set_field(JNIEnv *env, jholder<T, Refcounter> const &obj, const...
function set_field (line 290) | void set_field(jholder<T, Refcounter> const &obj, const char *name, ...
function set_field (line 296) | void set_field(JNIEnv *env, const char *clsname, const char *name, A...
function set_field (line 302) | void set_field(const char *clsname, const char *name, Arg const &arg)
function set_static_field (line 310) | void set_static_field(JNIEnv *env, jholder<T, Refcounter> const &obj...
function set_static_field (line 316) | void set_static_field(jholder<T, Refcounter> const &obj, const char ...
function set_static_field (line 322) | void set_static_field(JNIEnv *env, const char *clsname, const char *...
function set_static_field (line 328) | void set_static_field(const char *clsname, const char *name, const c...
function set_static_field (line 334) | void set_static_field(JNIEnv *env, jholder<T, Refcounter> const &obj...
function set_static_field (line 340) | void set_static_field(jholder<T, Refcounter> const &obj, const char ...
function set_static_field (line 346) | void set_static_field(JNIEnv *env, const char *clsname, const char *...
function set_static_field (line 352) | void set_static_field(const char *clsname, const char *name, Arg con...
FILE: sources/crystax/include/crystax/jutils/helper.hpp
type crystax (line 42) | namespace crystax
type jni (line 44) | namespace jni
type details (line 47) | namespace details
function T (line 87) | T raw_arg(jholder<T, Refcounter> const &arg)
type jni_helper (line 93) | struct jni_helper
type jni_helper<void> (line 96) | struct jni_helper<void>
method call_method (line 99) | static void call_method(JNIEnv *env, T const &obj, jmethodID mid...
type jni_signature (line 129) | struct jni_signature
FILE: sources/crystax/include/crystax/jutils/jcast.hpp
type crystax (line 42) | namespace crystax
type jni (line 44) | namespace jni
type jcaster (line 48) | struct jcaster
type jcaster<const char *, jstring> (line 51) | struct jcaster<const char *, jstring>
type jcaster<jhstring, const char *> (line 57) | struct jcaster<jhstring, const char *>
type jcaster<const char *, jhstring> (line 63) | struct jcaster<const char *, jhstring>
function T (line 72) | T jcast(U const &v)
FILE: sources/crystax/include/crystax/jutils/jholder.hpp
type crystax (line 43) | namespace crystax
type jni (line 45) | namespace jni
type refcounter (line 48) | namespace refcounter
type local (line 51) | struct local final
method jobject (line 53) | static jobject newref(JNIEnv *env, jobject obj)
method release (line 58) | static void release(JNIEnv *env, jobject obj)
type global (line 64) | struct global final
method jobject (line 66) | static jobject newref(JNIEnv *env, jobject obj)
method release (line 71) | static void release(JNIEnv *env, jobject obj)
class jholder (line 80) | class jholder
method non_null_object (line 83) | void non_null_object() {}
method jholder (line 86) | explicit jholder(T obj = 0)
method jholder (line 90) | jholder(jholder const &c)
method jholder (line 95) | jholder(jholder<U, Refcounter2> const &c)
method jholder (line 104) | jholder &operator=(jholder const &c)
method jholder (line 112) | jholder &operator=(jholder<U, Refcounter2> const &c)
method reset (line 119) | void reset(T obj = 0)
method T (line 125) | T get() const {return object;}
method T (line 127) | T release()
method swap (line 141) | void swap(jholder &c)
FILE: sources/crystax/include/crystax/jutils/jni.hpp
type crystax (line 41) | namespace crystax
type jni (line 43) | namespace jni
function JNIEnv (line 49) | inline JNIEnv *env() { return jnienv(); }
FILE: sources/crystax/include/crystax/jutils/method.hpp
type crystax (line 46) | namespace crystax
type jni (line 48) | namespace jni
function jmethodID (line 51) | inline
function jmethodID (line 60) | inline
function jmethodID (line 67) | jmethodID get_method_id(JNIEnv *env, jholder<T, Refcounter> const &o...
function jmethodID (line 73) | jmethodID get_method_id(jholder<T, Refcounter> const &obj, const cha...
function jmethodID (line 78) | inline
function jmethodID (line 87) | inline
function jmethodID (line 94) | jmethodID get_static_method_id(JNIEnv *env, jholder<T, Refcounter> c...
function jmethodID (line 100) | jmethodID get_static_method_id(jholder<T, Refcounter> const &obj, co...
type details (line 109) | namespace details
type remove_reference (line 113) | struct remove_reference
type remove_reference<T &> (line 119) | struct remove_reference<T &>
type remove_reference<T &&> (line 125) | struct remove_reference<T &&>
type is_lvalue_reference (line 131) | struct is_lvalue_reference
type is_lvalue_reference<T &> (line 137) | struct is_lvalue_reference<T &>
function T (line 143) | inline T && forward(typename remove_reference<T>::type &arg)
function T (line 149) | inline T && forward(typename remove_reference<T>::type &&arg)
function Ret (line 158) | Ret call_method(JNIEnv *env, T const &obj, jmethodID mid, Args&&... ...
function Ret (line 164) | Ret call_method(T const &obj, jmethodID mid, Args&&... args)
function Ret (line 170) | Ret call_method(JNIEnv *env, const char *clsname, jmethodID mid, Arg...
function Ret (line 176) | Ret call_method(const char *clsname, jmethodID mid, Args&&... args)
function Ret (line 182) | Ret call_method(JNIEnv *env, T const &obj, const char *name, const c...
function Ret (line 188) | Ret call_method(T const &obj, const char *name, const char *signatur...
function Ret (line 194) | Ret call_method(JNIEnv *env, const char *clsname, const char *name, ...
function Ret (line 200) | Ret call_method(const char *clsname, const char *name, const char *s...
FILE: sources/crystax/include/crystax/list.hpp
type crystax (line 42) | namespace crystax
class list_t (line 46) | class list_t : public non_copyable_t
method list_t (line 49) | list_t() :phead(0), ptail(0), sz(0) {}
method T (line 52) | T *head() const {return phead;}
method T (line 53) | T *tail() const {return ptail;}
method empty (line 55) | bool empty() const {return sz == 0;}
method size (line 57) | size_t size() const {return sz;}
method clear (line 59) | void clear()
method push (line 71) | bool push(T *before, T *node)
method T (line 84) | T *pop(T *node)
method push_front (line 102) | bool push_front(T *node)
method push_back (line 113) | bool push_back(T *node)
method T (line 127) | T *pop_front()
method T (line 132) | T *pop_back()
method T (line 138) | T *find(Comparator c, V const &v)
FILE: sources/crystax/include/crystax/log.h
function namespace (line 113) | namespace crystax
FILE: sources/crystax/include/crystax/memory.hpp
type crystax (line 39) | namespace crystax
type details (line 42) | namespace details
type free_policy_t (line 45) | struct free_policy_t
method free (line 48) | static void free(T *ptr)
type delete_ptr_policy_t (line 54) | struct delete_ptr_policy_t
method free (line 57) | static void free(T *ptr)
type delete_array_policy_t (line 63) | struct delete_array_policy_t
method free (line 66) | static void free(T *ptr)
class scope_ptr_t (line 73) | class scope_ptr_t : public non_copyable_t
method scope_ptr_t (line 76) | explicit scope_ptr_t(T *p)
method T (line 83) | T *operator->() const {return ptr;}
method T (line 84) | T *get() const {return ptr;}
method T (line 85) | T &operator*() const {return *ptr;}
method T (line 87) | T const &operator[](size_t index) const {return ptr[index];}
method T (line 88) | T &operator[](size_t index) {return ptr[index];}
method reset (line 90) | void reset(T *p = 0)
method T (line 96) | T *release()
method swap (line 103) | void swap(scope_ptr_t &c)
function swap (line 115) | void swap(scope_ptr_t<T, DeletePolicy> &a, scope_ptr_t<T, DeletePoli...
class scope_c_ptr_t (line 123) | class scope_c_ptr_t : public details::scope_ptr_t<T, details::free_pol...
method scope_c_ptr_t (line 126) | explicit scope_c_ptr_t(T *p)
class scope_cpp_ptr_t (line 132) | class scope_cpp_ptr_t : public details::scope_ptr_t<T, details::delete...
method scope_cpp_ptr_t (line 135) | explicit scope_cpp_ptr_t(T *p)
class scope_cpp_array_t (line 141) | class scope_cpp_array_t : public details::scope_ptr_t<T, details::dele...
method scope_cpp_array_t (line 144) | explicit scope_cpp_array_t(T *p)
FILE: sources/crystax/include/crystax/mips/fenv.h
type __uint32_t (line 79) | typedef __uint32_t fexcept_t;
FILE: sources/crystax/include/crystax/mips64/endian.h
function __uint16_t (line 106) | static __inline __uint16_t
function __uint32_t (line 115) | static __inline __uint32_t
function __uint64_t (line 124) | static __inline __uint64_t
FILE: sources/crystax/include/crystax/mips64/fenv.h
type __uint32_t (line 79) | typedef __uint32_t fexcept_t;
FILE: sources/crystax/include/crystax/path.hpp
type crystax (line 45) | namespace crystax
type fileio (line 47) | namespace fileio
type details (line 50) | namespace details
class path_t (line 53) | class path_t
method non_empty_path (line 56) | void non_empty_path() const {}
method path_t (line 58) | explicit path_t(const char *path = NULL)
method empty (line 74) | bool empty() const {return *p == '\0';}
method reset (line 76) | virtual void reset(const char *path = NULL)
method length (line 89) | size_t length() const {return len;}
method subpath (line 91) | bool subpath(path_t const &root) const {return subpath(root.c_st...
method subpath (line 92) | bool subpath(const char *root) const {return is_subpath(root, c_...
method path_t (line 100) | path_t &operator+=(path_t const &path) {return *this += path.c_s...
method path_t (line 101) | path_t &operator+=(const char *path)
class path_t (line 144) | class path_t : public details::path_t
method path_t (line 147) | explicit path_t(const char *path = NULL)
method reset (line 151) | void reset(const char *path = NULL)
function T (line 158) | T jcast(path_t const &p)
class abspath_t (line 163) | class abspath_t : public details::path_t
method abspath_t (line 166) | explicit abspath_t(const char *path = NULL)
method reset (line 170) | void reset(const char *path = NULL)
function T (line 177) | T jcast(abspath_t const &p)
FILE: sources/crystax/include/crystax/sys/fenvsoft.h
type __uint32_t (line 41) | typedef __uint32_t fexcept_t;
FILE: sources/crystax/include/crystax/sys/fpmath.h
type IEEEl2bits_man_t (line 95) | typedef unsigned long IEEEl2bits_man_t;
type __uint64_t (line 122) | typedef __uint64_t IEEEl2bits_man_t;
FILE: sources/crystax/include/crystax/sys/time.h
type timespec (line 52) | struct timespec
type timespec (line 52) | struct timespec
FILE: sources/crystax/include/crystax/x86/fenv.h
function __BEGIN_DECLS (line 38) | __BEGIN_DECLS
type __uint16_t (line 53) | typedef __uint16_t fexcept_t;
FILE: sources/crystax/include/crystax/x86_64/fenv.h
function __BEGIN_DECLS (line 38) | __BEGIN_DECLS
type __uint32_t (line 65) | typedef __uint32_t fexcept_t;
FILE: sources/crystax/include/dlfcn.h
type Dl_info (line 44) | typedef struct {
FILE: sources/crystax/include/getrrsetbyname.h
function __BEGIN_DECLS (line 85) | __BEGIN_DECLS
type rrsetinfo (line 92) | struct rrsetinfo {
type rrsetinfo (line 104) | struct rrsetinfo
type rrsetinfo (line 105) | struct rrsetinfo
FILE: sources/crystax/include/grp.h
type group (line 40) | struct group
type group (line 44) | struct group
type group (line 44) | struct group
type group (line 45) | struct group
type group (line 45) | struct group
FILE: sources/crystax/include/machine/_types.h
type __int8_t (line 47) | typedef signed char __int8_t;
type __uint8_t (line 48) | typedef unsigned char __uint8_t;
type __int16_t (line 49) | typedef short __int16_t;
type __uint16_t (line 50) | typedef unsigned short __uint16_t;
type __int32_t (line 51) | typedef int __int32_t;
type __uint32_t (line 52) | typedef unsigned int __uint32_t;
type __int64_t (line 54) | typedef long long __int64_t;
type __uint64_t (line 55) | typedef unsigned long long __uint64_t;
type __int64_t (line 57) | typedef long __int64_t;
type __uint64_t (line 58) | typedef unsigned long __uint64_t;
type __int8_t (line 70) | typedef __int8_t __int_least8_t;
type __uint8_t (line 71) | typedef __uint8_t __uint_least8_t;
type __int16_t (line 72) | typedef __int16_t __int_least16_t;
type __uint16_t (line 73) | typedef __uint16_t __uint_least16_t;
type __int32_t (line 74) | typedef __int32_t __int_least32_t;
type __uint32_t (line 75) | typedef __uint32_t __uint_least32_t;
type __int64_t (line 76) | typedef __int64_t __int_least64_t;
type __uint64_t (line 77) | typedef __uint64_t __uint_least64_t;
type __int32_t (line 88) | typedef __int32_t __int_fast8_t;
type __uint32_t (line 89) | typedef __uint32_t __uint_fast8_t;
type __int32_t (line 90) | typedef __int32_t __int_fast16_t;
type __uint32_t (line 91) | typedef __uint32_t __uint_fast16_t;
type __int32_t (line 92) | typedef __int32_t __int_fast32_t;
type __uint32_t (line 93) | typedef __uint32_t __uint_fast32_t;
type __int64_t (line 94) | typedef __int64_t __int_fast64_t;
type __uint64_t (line 95) | typedef __uint64_t __uint_fast64_t;
type __int32_t (line 107) | typedef __int32_t __intptr_t;
type __uint32_t (line 108) | typedef __uint32_t __uintptr_t;
type __int64_t (line 110) | typedef __int64_t __intptr_t;
type __uint64_t (line 111) | typedef __uint64_t __uintptr_t;
type __INTMAX_TYPE__ (line 115) | typedef __INTMAX_TYPE__ __intmax_t;
type __int64_t (line 117) | typedef __int64_t __intmax_t;
type __UINTMAX_TYPE__ (line 122) | typedef __UINTMAX_TYPE__ __uintmax_t;
type __uint64_t (line 124) | typedef __uint64_t __uintmax_t;
type __SIZE_TYPE__ (line 129) | typedef __SIZE_TYPE__ __size_t;
type __uint64_t (line 132) | typedef __uint64_t __size_t;
type __uint32_t (line 134) | typedef __uint32_t __size_t;
type __int64_t (line 145) | typedef __int64_t __ssize_t;
type __int32_t (line 147) | typedef __int32_t __ssize_t;
type __int32_t (line 151) | typedef __int32_t __register_t;
type __uint32_t (line 152) | typedef __uint32_t __u_register_t;
type __int64_t (line 154) | typedef __int64_t __register_t;
type __uint64_t (line 155) | typedef __uint64_t __u_register_t;
type __ct_rune_t (line 173) | typedef int __ct_rune_t;
type __ct_rune_t (line 174) | typedef __ct_rune_t __rune_t;
type __ct_rune_t (line 176) | typedef __ct_rune_t __wint_t;
type __WCHAR_TYPE__ (line 187) | typedef __WCHAR_TYPE__ __wchar_t;
type __wint_t (line 189) | typedef __wint_t __wchar_t;
type __wchar_t (line 194) | typedef __wchar_t ___wchar_t;
type __float_t (line 204) | typedef float __float_t;
type __double_t (line 205) | typedef double __double_t;
type __builtin_va_list (line 207) | typedef __builtin_va_list __va_list;
type __kernel_id_t (line 210) | typedef __kernel_id_t __id_t;
type __uint32_t (line 212) | typedef __uint32_t __id_t;
type __uint32_t (line 216) | typedef __uint32_t __socklen_t;
FILE: sources/crystax/include/sys/_types.h
type __size_t (line 39) | typedef __size_t size_t;
type __ssize_t (line 44) | typedef __ssize_t ssize_t;
type __kernel_off_t (line 49) | typedef __kernel_off_t __off_t;
type __kernel_loff_t (line 50) | typedef __kernel_loff_t __loff_t;
type __kernel_off_t (line 52) | typedef __kernel_off_t __off_t;
type __kernel_loff_t (line 53) | typedef __kernel_loff_t __loff_t;
type __loff_t (line 55) | typedef __loff_t __off64_t;
type _xlocale (line 57) | struct _xlocale
type __mbstate_t (line 63) | typedef union {
type __uint32_t (line 69) | typedef __uint32_t __dev_t;
type __uint64_t (line 71) | typedef __uint64_t __dev_t;
type __uint16_t (line 74) | typedef __uint16_t __mode_t;
type __kernel_long_t (line 77) | typedef long __kernel_long_t;
type __kernel_ulong_t (line 80) | typedef unsigned long __kernel_ulong_t;
type __kernel_pid_t (line 83) | typedef __kernel_pid_t __pid_t;
type __kernel_uid32_t (line 84) | typedef __kernel_uid32_t __uid_t;
type __kernel_gid32_t (line 85) | typedef __kernel_gid32_t __gid_t;
type __kernel_clock_t (line 87) | typedef __kernel_clock_t __clock_t;
type __kernel_clockid_t (line 88) | typedef __kernel_clockid_t __clockid_t;
type __kernel_time_t (line 89) | typedef __kernel_time_t __time_t;
type __uint32_t (line 93) | typedef __uint32_t __useconds_t;
type __kernel_suseconds_t (line 94) | typedef __kernel_suseconds_t __suseconds_t;
type __nl_item (line 96) | typedef int __nl_item;
type __uint16_t (line 98) | typedef __uint16_t __in_port_t;
type __uint16_t (line 100) | typedef __uint16_t __sa_family_t;
type __kernel_ino_t (line 102) | typedef __kernel_ino_t __ino_t;
type __kernel_key_t (line 103) | typedef __kernel_key_t __key_t;
type __uint32_t (line 105) | typedef __uint32_t __nlink_t;
type __kernel_blkcnt_t (line 108) | typedef __kernel_blkcnt_t __blkcnt_t;
type __kernel_blksize_t (line 109) | typedef __kernel_blksize_t __blksize_t;
type __blkcnt_t (line 111) | typedef unsigned long __blkcnt_t;
type __blksize_t (line 112) | typedef unsigned long __blksize_t;
type __pthread_t (line 115) | typedef long __pthread_t;
type __pthread_attr_t (line 117) | typedef struct {
type __pthread_mutex_t (line 129) | typedef struct {
type __pthread_cond_t (line 137) | typedef struct {
type __uint_least16_t (line 147) | typedef __uint_least16_t __char16_t;
type __uint_least32_t (line 148) | typedef __uint_least32_t __char32_t;
FILE: sources/crystax/include/sys/shm.h
type shmid_ds (line 41) | struct shmid_ds
FILE: sources/crystax/include/sys/socket.h
type sockaddr (line 69) | struct sockaddr
type sockaddr (line 70) | struct sockaddr
type sockaddr (line 72) | struct sockaddr
type sockaddr (line 73) | struct sockaddr
type sockaddr (line 74) | struct sockaddr
type sockaddr (line 75) | struct sockaddr
type msghdr (line 80) | struct msghdr
type msghdr (line 81) | struct msghdr
type sockaddr (line 86) | struct sockaddr
type sockaddr (line 87) | struct sockaddr
FILE: sources/crystax/include/sys/timeb.h
function __BEGIN_DECLS (line 37) | __BEGIN_DECLS
type timeb (line 46) | struct timeb
FILE: sources/crystax/include/sys/types.h
type __off_t (line 41) | typedef __off_t off_t;
type __loff_t (line 46) | typedef __loff_t loff_t;
type __off64_t (line 51) | typedef __off64_t off64_t;
type __register_t (line 56) | typedef __register_t register_t;
type __u_register_t (line 61) | typedef __u_register_t u_register_t;
type __pid_t (line 66) | typedef __pid_t pid_t;
type __uid_t (line 71) | typedef __uid_t uid_t;
type __gid_t (line 76) | typedef __gid_t gid_t;
type __id_t (line 81) | typedef __id_t id_t;
type __clock_t (line 86) | typedef __clock_t clock_t;
type __clockid_t (line 91) | typedef __clockid_t clockid_t;
type __time_t (line 96) | typedef __time_t time_t;
type __timer_t (line 101) | typedef __timer_t timer_t;
type __useconds_t (line 106) | typedef __useconds_t useconds_t;
type __suseconds_t (line 111) | typedef __suseconds_t suseconds_t;
type __dev_t (line 116) | typedef __dev_t dev_t;
type __mode_t (line 121) | typedef __mode_t mode_t;
type __socklen_t (line 126) | typedef __socklen_t socklen_t;
type __in_port_t (line 131) | typedef __in_port_t in_port_t;
type __locale_t (line 137) | typedef __locale_t locale_t;
type __pthread_t (line 141) | typedef __pthread_t pthread_t;
type __pthread_attr_t (line 146) | typedef __pthread_attr_t pthread_attr_t;
type __pthread_mutex_t (line 151) | typedef __pthread_mutex_t pthread_mutex_t;
type __pthread_cond_t (line 156) | typedef __pthread_cond_t pthread_cond_t;
type __blkcnt_t (line 160) | typedef __blkcnt_t blkcnt_t;
type __blksize_t (line 161) | typedef __blksize_t blksize_t;
type __ino_t (line 163) | typedef __ino_t ino_t;
type __key_t (line 164) | typedef __key_t key_t;
type __nlink_t (line 165) | typedef __nlink_t nlink_t;
type u_char (line 168) | typedef unsigned char u_char;
type u_short (line 169) | typedef unsigned short u_short;
type u_int (line 170) | typedef unsigned int u_int;
type u_long (line 171) | typedef unsigned long u_long;
type __uint32_t (line 173) | typedef __uint32_t u_int32_t;
type __uint16_t (line 174) | typedef __uint16_t u_int16_t;
type __uint8_t (line 175) | typedef __uint8_t u_int8_t;
type __uint64_t (line 176) | typedef __uint64_t u_int64_t;
type __int64_t (line 178) | typedef __int64_t quad_t;
type __uint64_t (line 179) | typedef __uint64_t u_quad_t;
type quad_t (line 180) | typedef quad_t * qaddr_t;
type ushort (line 182) | typedef unsigned short ushort;
type uint (line 183) | typedef unsigned int uint;
type ulong (line 184) | typedef unsigned long ulong;
type fsblkcnt_t (line 190) | typedef unsigned long fsblkcnt_t;
type fsfilcnt_t (line 191) | typedef unsigned long fsfilcnt_t;
FILE: sources/crystax/include/sys/wait.h
type rusage (line 42) | struct rusage
FILE: sources/crystax/include/termios.h
type termios (line 42) | struct termios
type termios (line 43) | struct termios
type termios (line 44) | struct termios
type termios (line 45) | struct termios
type termios (line 46) | struct termios
type termios (line 47) | struct termios
type termios (line 51) | struct termios
type termios (line 54) | struct termios
FILE: sources/crystax/include/xlocale.h
type lconv (line 123) | struct lconv
FILE: sources/crystax/src/__get_thread.cpp
function pthread_internal_t (line 35) | pthread_internal_t* __get_thread()
FILE: sources/crystax/src/__wait4.c
function pid_t (line 32) | pid_t __wait4(pid_t pid, int* status, int options, struct rusage* rusage) {
FILE: sources/crystax/src/bsd_signal.c
function sighandler_t (line 32) | sighandler_t bsd_signal(int signum, sighandler_t handler)
FILE: sources/crystax/src/bzip2/error.c
function bz_internal_error (line 4) | void bz_internal_error(int err)
FILE: sources/crystax/src/crystax/android.cpp
type crystax (line 45) | namespace crystax
type jni (line 53) | namespace jni
function JavaVM (line 56) | JavaVM *jvm()
function jnienv_detach_thread (line 61) | static void jnienv_detach_thread(void * /*arg*/)
function jnienv_key_create (line 69) | static void jnienv_key_create()
function jnienv_key_delete (line 76) | static void jnienv_key_delete()
function save_jnienv (line 83) | static bool save_jnienv(JNIEnv *env)
function JNIEnv (line 92) | JNIEnv *jnienv()
function __crystax_init (line 111) | static bool __crystax_init()
function CRYSTAX_HIDDEN (line 129) | CRYSTAX_HIDDEN
function CRYSTAX_HIDDEN (line 140) | CRYSTAX_HIDDEN
function CRYSTAX_GLOBAL (line 147) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 153) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 159) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 165) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 192) | CRYSTAX_GLOBAL
FILE: sources/crystax/src/crystax/android_jni.cpp
function CRYSTAX_GLOBAL (line 49) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 56) | CRYSTAX_GLOBAL
function initialize_jni_runtime (line 63) | static void initialize_jni_runtime()
function CRYSTAX_GLOBAL (line 102) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 109) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 116) | CRYSTAX_GLOBAL
FILE: sources/crystax/src/crystax/fenvimpl.c
function __crystax_fenv_init (line 34) | int __crystax_fenv_init()
FILE: sources/crystax/src/crystax/isthreaded.c
function __crystax_stdio_thread_lock (line 42) | void __crystax_stdio_thread_lock()
function __crystax_stdio_thread_unlock (line 48) | void __crystax_stdio_thread_unlock()
FILE: sources/crystax/src/crystax/jutils/exceptions.cpp
type crystax (line 37) | namespace crystax
type jni (line 39) | namespace jni
function jexcheck (line 42) | bool jexcheck(JNIEnv *env)
FILE: sources/crystax/src/crystax/jutils/helper.cpp
type crystax (line 34) | namespace crystax
type jni (line 36) | namespace jni
type details (line 39) | namespace details
type jni_base_type (line 74) | struct jni_base_type
type jni_base_type<jholder<T> > (line 80) | struct jni_base_type<jholder<T> >
function call_void_method (line 85) | void call_void_method(JNIEnv *env, jobject obj, jmethodID mid, ...)
function call_void_method (line 93) | void call_void_method(JNIEnv *env, jclass cls, jmethodID mid, ...)
type result_helper (line 102) | struct result_helper
method T (line 104) | static T make_result(JNIEnv * /*env*/, T obj) {return obj;}
type result_helper<jholder<T> > (line 108) | struct result_helper<jholder<T> >
method make_result (line 110) | static jholder<T> make_result(JNIEnv *env, T obj) {return jholde...
FILE: sources/crystax/src/crystax/jutils/jcast.cpp
type crystax (line 39) | namespace crystax
type jni (line 41) | namespace jni
function jcast_init (line 50) | static void jcast_init()
function jhstring (line 86) | jhstring jcaster<jhstring, const char *>::operator()(const char *s)
FILE: sources/crystax/src/crystax/jutils/rethrow.cpp
type crystax (line 35) | namespace crystax
type jni (line 37) | namespace jni
function rethrow (line 40) | void rethrow(JNIEnv *env, jthrowable ex)
FILE: sources/crystax/src/crystax/locale/locale.c
function decompress (line 37) | static int decompress(__crystax_locale_blob_t *blob)
function __crystax_locale_data_t (line 86) | static __crystax_locale_data_t *lookup(const char *encoding)
function __crystax_locale_load (line 103) | int __crystax_locale_load(const char *encoding, int type, void **buf, si...
function __crystax_locale_loads (line 133) | int __crystax_locale_loads(const char *encoding, const char *type, void ...
FILE: sources/crystax/src/crystax/locale/localeinit.c
function __crystax_locale_table_size (line 9456) | size_t __crystax_locale_table_size()
function __crystax_locale_data_t (line 9461) | __crystax_locale_data_t * __crystax_locale_data(size_t idx)
function __crystax_locale_init_impl (line 9468) | static void __crystax_locale_init_impl()
function __crystax_locale_init (line 11942) | int __crystax_locale_init()
FILE: sources/crystax/src/crystax/lock.cpp
type crystax (line 33) | namespace crystax
function mtx_lock (line 36) | static void mtx_lock(pthread_mutex_t &mtx)
FILE: sources/crystax/src/crystax/log.c
function __noinstrument (line 48) | __noinstrument
function __crystax_log_abort (line 59) | static void __crystax_log_abort(int line)
function __noinstrument (line 81) | __noinstrument
function __noinstrument (line 94) | __noinstrument
function __noinstrument (line 107) | __noinstrument
function __noinstrument (line 120) | __noinstrument
function __noinstrument (line 153) | __noinstrument
function __noinstrument (line 167) | __noinstrument
function __noinstrument (line 173) | __noinstrument
FILE: sources/crystax/src/crystax/logcat.c
function handle_input (line 52) | static int handle_input(int fd, int oldfd, int prio, const char *tag)
type stdio2logcat_t (line 77) | typedef struct stdio2logcat_t_
function close_stdio_fds (line 136) | static void close_stdio_fds(void *arg)
function set_flags (line 146) | static void set_flags(int fd, int newflags)
function dupfd (line 156) | static int dupfd(int *fds, int fd)
function __crystax_redirect_stdio_to_logcat (line 176) | void __crystax_redirect_stdio_to_logcat()
FILE: sources/crystax/src/crystax/pthread_workqueue_impl.c
function __crystax_pthread_workqueue_init (line 34) | int __crystax_pthread_workqueue_init()
FILE: sources/crystax/src/crystax/rawargs.cpp
type crystax (line 47) | namespace crystax
type init (line 49) | namespace init
function __noreturn (line 59) | __noreturn static void early_abort(int line)
function put_to_rawargs (line 116) | static void put_to_rawargs(void *&rawargs, size_t &size, off_t &offs...
FILE: sources/crystax/src/crystax/system.cpp
function CRYSTAX_GLOBAL (line 41) | CRYSTAX_GLOBAL
FILE: sources/crystax/src/domainname.c
function getdomainname (line 34) | int getdomainname(char *name, int namelen)
function setdomainname (line 62) | int setdomainname(const char *name, int namelen)
FILE: sources/crystax/src/execve.c
function exec_with_args (line 90) | static int exec_with_args(char *exe, char *args, char * const argv[], ch...
function exec_env (line 143) | static void exec_env(char *args, char * const argv[], char * const envp[])
function exec_shebang (line 203) | static int exec_shebang(char *shebang, const char *filename, char * cons...
function execve (line 272) | int execve(const char *filename, char * const argv[], char * const envp[])
FILE: sources/crystax/src/fcntl/fcntl.c
function dupfd_cloexec (line 39) | static int dupfd_cloexec(int fd, int fd2)
function dup2fd_cloexec (line 55) | static int dup2fd_cloexec(int fd, int fd2)
function crystax_fcntl (line 71) | static int crystax_fcntl(int fd, int command, va_list args)
function fcntl (line 88) | int fcntl(int fd, int command, ...)
FILE: sources/crystax/src/fdprintf.c
function fdprintf (line 33) | int fdprintf(int fd, const char* fmt, ...)
FILE: sources/crystax/src/ftime.c
function ftime (line 33) | int ftime(struct timeb* tb) {
FILE: sources/crystax/src/futex.c
function __futex_wake (line 36) | int __futex_wake(volatile void* ftx, int count)
function __futex_wait (line 41) | int __futex_wait(volatile void* ftx, int value, const struct timespec* t...
FILE: sources/crystax/src/getdents.c
type dirent (line 32) | struct dirent
function getdents (line 34) | int getdents(unsigned int fd, struct dirent* dirp, unsigned int count)
FILE: sources/crystax/src/getdtablesize.c
function getdtablesize (line 34) | int getdtablesize()
FILE: sources/crystax/src/getnetgrent.c
function setnetgrent (line 33) | int setnetgrent(const char *netgroup)
function endnetgrent (line 40) | void endnetgrent()
function getnetgrent (line 45) | int getnetgrent(char **host, char **user, char **domain)
FILE: sources/crystax/src/getrlimit64.c
function getrlimit64 (line 34) | int getrlimit64(int resource, struct rlimit64* limits64)
function setrlimit64 (line 39) | int setrlimit64(int resource, const struct rlimit64* limits64)
FILE: sources/crystax/src/grent.c
type group (line 36) | struct group
type group (line 37) | struct group
function init (line 40) | static void init()
type group (line 60) | struct group
type group (line 62) | struct group
function endgrent (line 73) | void endgrent()
function setgrent (line 78) | void setgrent()
FILE: sources/crystax/src/include/crystax/localeimpl.h
function __BEGIN_DECLS (line 38) | __BEGIN_DECLS
type __crystax_locale_data_t (line 46) | typedef struct {
FILE: sources/crystax/src/include/crystax/lock.hpp
type crystax (line 39) | namespace crystax
class scope_lock_t (line 42) | class scope_lock_t : public non_copyable_t
FILE: sources/crystax/src/issetugid.c
function issetugid (line 32) | int issetugid()
FILE: sources/crystax/src/lchmod.c
function lchmod (line 34) | int lchmod(const char *path, mode_t mode)
FILE: sources/crystax/src/lseek64.cpp
function off64_t (line 39) | off64_t lseek64(int fd, off64_t off, int whence)
FILE: sources/crystax/src/makedev.c
function major (line 32) | int major(dev_t _dev)
function minor (line 37) | int minor(dev_t _dev)
function dev_t (line 42) | dev_t makedev(int __ma, int __mi)
FILE: sources/crystax/src/math/complex.c
function cargl (line 62) | long double cargl(long double complex x)
function clog (line 67) | double complex clog(double complex x)
function clogf (line 72) | float complex clogf(float complex x)
function clogl (line 77) | long double complex clogl(long double complex x)
function cpow (line 82) | double complex cpow(double complex x, double complex y)
function cpowf (line 87) | float complex cpowf(float complex x, float complex y)
function cpowl (line 92) | long double complex cpowl(long double complex x, long double complex y)
FILE: sources/crystax/src/math/fenvsoft.c
function __softfloat_float_raise (line 82) | void __softfloat_float_raise(int e)
function feclearexcept (line 89) | int feclearexcept(int __excepts)
function fegetexceptflag (line 95) | int fegetexceptflag(fexcept_t *__flagp, int __excepts)
function fesetexceptflag (line 101) | int fesetexceptflag(const fexcept_t *__flagp, int __excepts)
function feraiseexcept (line 108) | int feraiseexcept(int __excepts)
function fetestexcept (line 114) | int fetestexcept(int __excepts)
function fegetround (line 119) | int fegetround(void)
function fesetround (line 124) | int fesetround(int __round)
function fegetenv (line 130) | int fegetenv(fenv_t *__envp)
function feholdexcept (line 137) | int feholdexcept(fenv_t *__envp)
function fesetenv (line 145) | int fesetenv(const fenv_t *__envp)
function feupdateenv (line 153) | int feupdateenv(const fenv_t *__envp)
function feenableexcept (line 162) | int feenableexcept(int __mask)
function fedisableexcept (line 170) | int fedisableexcept(int __mask)
function fegetexcept (line 178) | int fegetexcept(void)
FILE: sources/crystax/src/math/sincos.c
function sincos (line 67) | void sincos(double x, double* p_sin, double* p_cos) {
function sincosf (line 72) | void sincosf(float x, float* p_sinf, float* p_cosf) {
function sincosl (line 77) | void sincosl(long double x, long double* p_sinl, long double* p_cosl) {
FILE: sources/crystax/src/memswap.c
function memswap (line 32) | void memswap(void* m1, void* m2, size_t n)
FILE: sources/crystax/src/msgcat.c
function nl_catd (line 33) | nl_catd catopen(const char *name, int oflag)
function catclose (line 40) | int catclose(nl_catd catd)
FILE: sources/crystax/src/openbsd/getrrsetbyname.c
type __res_state (line 78) | struct __res_state
function u_int16_t (line 124) | static u_int16_t
function u_int32_t (line 138) | static u_int32_t
type dns_query (line 155) | struct dns_query {
type dns_rr (line 162) | struct dns_rr {
type dns_response (line 172) | struct dns_response {
type dns_response (line 180) | struct dns_response
type dns_query (line 181) | struct dns_query
type dns_rr (line 183) | struct dns_rr
type dns_query (line 186) | struct dns_query
type dns_rr (line 187) | struct dns_rr
type dns_response (line 188) | struct dns_response
type dns_rr (line 190) | struct dns_rr
function getrrsetbyname (line 192) | int
function freerrset (line 359) | void
type dns_response (line 393) | struct dns_response
type dns_response (line 396) | struct dns_response
type dns_query (line 458) | struct dns_query
type dns_query (line 461) | struct dns_query
type dns_query (line 468) | struct dns_query
type dns_rr (line 504) | struct dns_rr
type dns_rr (line 508) | struct dns_rr
type dns_rr (line 515) | struct dns_rr
function free_dns_query (line 568) | static void
function free_dns_rr (line 580) | static void
function free_dns_response (line 594) | static void
function count_dns_rr (line 607) | static int
FILE: sources/crystax/src/posix_fadvise.c
function posix_fadvise (line 39) | int posix_fadvise(int fd, off_t offset, off_t length, int advice)
function posix_fadvise64 (line 44) | int posix_fadvise64(int fd, off64_t offset, off64_t length, int advice)
FILE: sources/crystax/src/posix_fallocate.c
function fallocate (line 34) | int fallocate(int fd, int s, off_t offset, off_t len)
function posix_fallocate (line 40) | int posix_fallocate(int fd, off_t offset, off_t len)
function posix_fallocate64 (line 50) | int posix_fallocate64(int fd, off64_t offset, off64_t len)
FILE: sources/crystax/src/pread.c
function pread (line 34) | ssize_t pread(int fd, void* buf, size_t byte_count, off_t offset) {
FILE: sources/crystax/src/progname.c
function setprogname (line 40) | void setprogname(const char *progname)
FILE: sources/crystax/src/pthread_attr_getstackaddr.c
function pthread_attr_getstackaddr (line 33) | int pthread_attr_getstackaddr(const pthread_attr_t* attr, void** stack_a...
function pthread_attr_setstackaddr (line 39) | int pthread_attr_setstackaddr(pthread_attr_t* attr, void* stack_addr)
FILE: sources/crystax/src/pthread_gettid.c
function pid_t (line 32) | pid_t __pthread_gettid(pthread_t t) {
FILE: sources/crystax/src/pthread_main_np.cpp
function pthread_main_np (line 33) | int pthread_main_np()
FILE: sources/crystax/src/pwent.c
type passwd (line 36) | struct passwd
type passwd (line 37) | struct passwd
function init (line 40) | static void init()
type passwd (line 60) | struct passwd
type passwd (line 62) | struct passwd
function endpwent (line 73) | void endpwent()
function setpwent (line 78) | void setpwent()
FILE: sources/crystax/src/pwrite.c
function pwrite (line 34) | ssize_t pwrite(int fd, const void* buf, size_t byte_count, off_t offset) {
FILE: sources/crystax/src/shmctl.c
function shmctl (line 35) | int shmctl(int id, int cmd, struct shmid_ds *buf)
FILE: sources/crystax/src/shmdt.c
function shmdt (line 35) | int shmdt(const void *addr)
FILE: sources/crystax/src/shmget.c
function shmget (line 35) | int shmget(key_t key, size_t size, int flag)
FILE: sources/crystax/src/stdlib/abort.c
function abort (line 33) | void abort()
FILE: sources/crystax/src/stdlib/rand.c
function do_rand (line 63) | static int
function rand_r (line 88) | int
FILE: sources/crystax/src/strntoimax.c
function digitval (line 62) | static inline int digitval(int ch)
function uintmax_t (line 78) | uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n)
function intmax_t (line 126) | intmax_t strntoimax(const char* nptr, char** endptr, int base, size_t n)
type timeval (line 131) | struct timeval
FILE: sources/crystax/src/strverscmp.c
function strverscmp (line 56) | int strverscmp(const char *l0, const char *r0)
FILE: sources/crystax/src/swapxx.c
function swap16 (line 36) | uint16_t swap16(uint16_t x)
function swap32 (line 41) | uint32_t swap32(uint32_t x)
function swap64 (line 46) | uint64_t swap64(uint64_t x)
FILE: sources/crystax/src/sysctl.c
function __sysctl (line 39) | int __sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp,
FILE: sources/crystax/src/sysv_signal.cpp
function sighandler_t (line 37) | sighandler_t sysv_signal(int signum, sighandler_t handler)
FILE: sources/crystax/src/tkill.c
function tkill (line 33) | int tkill(pid_t tid, int sig)
FILE: sources/crystax/src/uname.c
type utsname (line 34) | struct utsname
function uname (line 36) | int uname(struct utsname *buf)
FILE: sources/crystax/src/usershell.c
function setusershell (line 38) | void setusershell()
function endusershell (line 43) | void endusershell()
FILE: sources/crystax/src/vfdprintf.c
function vfdprintf (line 32) | int vfdprintf(int fd, const char* fmt, va_list ap)
FILE: sources/crystax/src/wait3.c
function pid_t (line 32) | pid_t wait3(int *status, int options, struct rusage *rusage)
FILE: sources/crystax/src/wcswcs.c
function wchar_t (line 32) | wchar_t *wcswcs(const wchar_t *big, const wchar_t *little)
FILE: sources/crystax/src/write.c
function __write (line 33) | int __write(int fd, const void *buf, size_t n)
FILE: sources/crystax/vfs/accept.cpp
type crystax (line 33) | namespace crystax
type fileio (line 35) | namespace fileio
function CRYSTAX_LOCAL (line 38) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 72) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/access.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 60) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/android.cpp
type crystax (line 32) | namespace crystax
type fileio (line 35) | namespace fileio
type osfs (line 37) | namespace osfs
function CRYSTAX_GLOBAL (line 45) | CRYSTAX_GLOBAL __attribute__ ((constructor))
function CRYSTAX_GLOBAL (line 56) | CRYSTAX_GLOBAL __attribute__ ((destructor))
function CRYSTAX_GLOBAL (line 62) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 80) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/android_jni.cpp
function CRYSTAX_GLOBAL (line 34) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 40) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/assets/adriver.cpp
type crystax (line 44) | namespace crystax
type fileio (line 46) | namespace fileio
type assets (line 48) | namespace assets
function dump_stat (line 67) | static void dump_stat(struct stat const &st)
function fill_stat (line 89) | static void fill_stat(JNIEnv *env, jhobject const &objContext, fil...
function CRYSTAX_LOCAL (line 147) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 187) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 234) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 272) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 300) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 326) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 333) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 361) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 372) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 387) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 414) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 439) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 460) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 478) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 492) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 506) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 512) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 548) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 555) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 636) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 642) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 648) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 654) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 660) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 666) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 672) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 678) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 684) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 698) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 704) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 710) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 716) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 766) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 772) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 778) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 784) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 859) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 865) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 871) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 897) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1010) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1017) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1023) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1029) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1099) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1105) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1112) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1119) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1125) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1132) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1170) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1176) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1183) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1190) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1196) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1202) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1243) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1286) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1315) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1327) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1350) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1366) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/assets/driver.hpp
type crystax (line 36) | namespace crystax
type fileio (line 38) | namespace fileio
type assets (line 40) | namespace assets
class driver_t (line 43) | class driver_t : public ::crystax::fileio::driver_t
type stat (line 63) | struct stat
type dirent (line 66) | struct dirent
type stat (line 72) | struct stat
type iovec (line 79) | struct iovec
type dirent (line 80) | struct dirent
type dirent (line 81) | struct dirent
type dirent (line 81) | struct dirent
type dirent (line 87) | struct dirent
type dirent (line 87) | struct dirent
type dirent (line 88) | struct dirent
type dirent (line 88) | struct dirent
type timeval (line 90) | struct timeval
type stat (line 91) | struct stat
type iovec (line 96) | struct iovec
type stat (line 102) | struct stat
type stat (line 103) | struct stat
type stat (line 132) | struct stat
type fd_entry_t (line 134) | struct fd_entry_t
type metadata_entry_t (line 146) | struct metadata_entry_t
method metadata_entry_t (line 154) | metadata_entry_t(const char *p, bool r)
FILE: sources/crystax/vfs/bind.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 58) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/chdir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 41) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 77) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/chown.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/chroot.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 48) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/close.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 54) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/closedir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 54) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/connect.cpp
type crystax (line 33) | namespace crystax
type fileio (line 35) | namespace fileio
function CRYSTAX_LOCAL (line 38) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 72) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/dirfd.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/dup.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/dup2.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 62) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fchdir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fchown.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fcntl.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fdatasync.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fdopendir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 56) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fileio.cpp
type crystax (line 35) | namespace crystax
type fileio (line 37) | namespace fileio
type fd_record_t (line 47) | struct fd_record_t
function CRYSTAX_LOCAL (line 60) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 80) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 88) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 106) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 132) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 159) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 183) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 213) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 237) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 272) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 293) | CRYSTAX_LOCAL
function __crystax_fileio_init (line 318) | int __crystax_fileio_init()
FILE: sources/crystax/vfs/fileio/api.hpp
type crystax (line 36) | namespace crystax
type fileio (line 38) | namespace fileio
FILE: sources/crystax/vfs/fileio/driver.hpp
type crystax (line 35) | namespace crystax
type fileio (line 37) | namespace fileio
class driver_t (line 40) | class driver_t : non_copyable_t
method driver_t (line 43) | driver_t(const char *root, driver_t *d)
method path_t (line 50) | path_t const &root() const {return rootpath;}
method driver_t (line 52) | driver_t *underlying() const {return underlying_driver;}
type stat (line 65) | struct stat
type dirent (line 68) | struct dirent
type stat (line 74) | struct stat
type iovec (line 81) | struct iovec
type dirent (line 82) | struct dirent
type dirent (line 83) | struct dirent
type dirent (line 83) | struct dirent
type dirent (line 89) | struct dirent
type dirent (line 89) | struct dirent
type dirent (line 90) | struct dirent
type dirent (line 90) | struct dirent
type timeval (line 92) | struct timeval
type stat (line 93) | struct stat
type iovec (line 98) | struct iovec
method open (line 100) | int open(const char *path, int oflag, ...)
method fcntl (line 109) | int fcntl(int fd, int command, ...)
method ioctl (line 118) | int ioctl(int fd, int request, ...)
FILE: sources/crystax/vfs/flock.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fstat.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/fsync.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/ftruncate.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/futils.cpp
type crystax (line 49) | namespace crystax
type fileio (line 51) | namespace fileio
function is_normalized (line 189) | bool is_normalized(const char *path)
function is_absolute (line 268) | bool is_absolute(const char *path)
function is_subpath (line 274) | bool is_subpath(const char *root, const char *path)
FILE: sources/crystax/vfs/getcwd.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 41) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 72) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/getdents.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/getsockname.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 58) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/getsockopt.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 58) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/ioctl.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/lchown.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/link.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 57) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/listen.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 58) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/lseek.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/lseek64.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/lstat.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/mkdir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/mmap.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 63) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/mount.cpp
type crystax (line 40) | namespace crystax
type fileio (line 42) | namespace fileio
function CRYSTAX_LOCAL (line 58) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 91) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 134) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 176) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 183) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 189) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/open.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 50) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 82) | CRYSTAX_GLOBAL
function CRYSTAX_GLOBAL (line 92) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/opendir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 64) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/osfs/asyncsocketclosemonitor.cpp
function blockedThreadSignalHandler (line 41) | static void blockedThreadSignalHandler(int /*signal*/) {
type sigaction (line 49) | struct sigaction
FILE: sources/crystax/vfs/osfs/asyncsocketclosemonitor.h
function class (line 39) | class AsynchronousSocketCloseMonitor {
FILE: sources/crystax/vfs/osfs/osfs.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
type osfs (line 36) | namespace osfs
type eclair (line 39) | namespace eclair
type froyo (line 44) | namespace froyo
type gingerbread (line 49) | namespace gingerbread
type ics (line 54) | namespace ics
function CRYSTAX_LOCAL (line 95) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 146) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 180) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 218) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 228) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 238) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 247) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 254) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 262) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 268) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 274) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 287) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 310) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 323) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 357) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 377) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/osfs/osfs.hpp
type crystax (line 67) | namespace crystax
type fileio (line 69) | namespace fileio
type osfs (line 71) | namespace osfs
function jniThrowExceptionFmt (line 86) | inline int jniThrowExceptionFmt(JNIEnv* env, const char* className...
type flock (line 99) | struct flock
FILE: sources/crystax/vfs/osfs/osfs_eclair.cpp
type crystax (line 49) | namespace crystax
type fileio (line 51) | namespace fileio
type osfs (line 53) | namespace osfs
type eclair (line 55) | namespace eclair
function convertToPlatform (line 58) | static void convertToPlatform(char *path) {
function jint (line 70) | static jint OSFileSystem_lockImpl(JNIEnv * env, jobject thiz, ji...
function jint (line 105) | static jint OSFileSystem_getAllocGranularity(JNIEnv * env, jobje...
function jint (line 114) | static jint OSFileSystem_unlockImpl(JNIEnv * env, jobject thiz, ...
function jint (line 144) | static jint OSFileSystem_fflushImpl(JNIEnv * env, jobject thiz, ...
function jlong (line 150) | static jlong OSFileSystem_seekImpl(JNIEnv * env, jobject thiz, j...
function jlong (line 190) | static jlong OSFileSystem_readDirectImpl(JNIEnv * env, jobject t...
function jlong (line 206) | static jlong OSFileSystem_writeDirectImpl(JNIEnv * env, jobject ...
function jlong (line 224) | static jlong OSFileSystem_readImpl(JNIEnv * env, jobject thiz, j...
function jlong (line 272) | static jlong OSFileSystem_writeImpl(JNIEnv * env, jobject thiz, ...
function jlong (line 310) | static jlong OSFileSystem_readvImpl(JNIEnv *env, jobject thiz, j...
function jlong (line 348) | static jlong OSFileSystem_writevImpl(JNIEnv *env, jobject thiz, ...
function jint (line 386) | static jint OSFileSystem_closeImpl(JNIEnv * env, jobject thiz, j...
function jint (line 407) | static jint OSFileSystem_truncateImpl(JNIEnv * env, jobject thiz...
function jint (line 430) | static jint OSFileSystem_openImpl(JNIEnv * env, jobject obj, jby...
function jlong (line 493) | static jlong OSFileSystem_transferImpl(JNIEnv *env, jobject thiz...
function jint (line 513) | static jint OSFileSystem_ioctlAvailable(JNIEnv *env, jobject thi...
function jlong (line 564) | static jlong OSFileSystem_ttyReadImpl(JNIEnv *env, jobject thiz,
function CRYSTAX_LOCAL (line 627) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/osfs/osfs_froyo.cpp
type crystax (line 49) | namespace crystax
type fileio (line 51) | namespace fileio
type osfs (line 53) | namespace osfs
type froyo (line 55) | namespace froyo
function CRYSTAX_LOCAL (line 59) | CRYSTAX_LOCAL
function jint (line 81) | static jint OSFileSystem_close(JNIEnv* env, jobject, jint fd) {
function OSFileSystem_fflush (line 90) | static void OSFileSystem_fflush(JNIEnv* env, jobject, jint fd,
function jint (line 99) | static jint OSFileSystem_getAllocGranularity(JNIEnv* env, jobjec...
function jint (line 105) | static jint OSFileSystem_ioctlAvailable(JNIEnv*env, jobject, jin...
function jint (line 153) | static jint OSFileSystem_lockImpl(JNIEnv* env, jobject, jint han...
function jint (line 174) | static jint OSFileSystem_openImpl(JNIEnv* env, jobject, jbyteArr...
function jlong (line 229) | static jlong OSFileSystem_readDirect(JNIEnv* env, jobject, jint fd,
function jlong (line 247) | static jlong OSFileSystem_readImpl(JNIEnv* env, jobject, jint fd,
function jlong (line 273) | static jlong OSFileSystem_readv(JNIEnv* env, jobject, jint fd,
function jlong (line 288) | static jlong OSFileSystem_seek(JNIEnv* env, jobject, jint fd, jl...
function jlong (line 321) | static jlong OSFileSystem_transfer(JNIEnv* env, jobject, jint fd...
function jint (line 342) | static jint OSFileSystem_truncate(JNIEnv* env, jobject, jint fd,...
function OSFileSystem_unlockImpl (line 355) | static void OSFileSystem_unlockImpl(JNIEnv* env, jobject, jint h...
function jlong (line 373) | static jlong OSFileSystem_writeDirect(JNIEnv* env, jobject, jint...
function jlong (line 384) | static jlong OSFileSystem_writeImpl(JNIEnv* env, jobject, jint fd,
function jlong (line 403) | static jlong OSFileSystem_writev(JNIEnv* env, jobject, jint fd,
function CRYSTAX_LOCAL (line 437) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/osfs/osfs_gingerbread.cpp
type crystax (line 49) | namespace crystax
type fileio (line 51) | namespace fileio
type osfs (line 53) | namespace osfs
type gingerbread (line 55) | namespace gingerbread
function jint (line 58) | static jint OSFileSystem_lockImpl(JNIEnv* env, jobject, jint fd,
function OSFileSystem_unlockImpl (line 79) | static void OSFileSystem_unlockImpl(JNIEnv* env, jobject, jint f...
function jint (line 99) | static jint OSFileSystem_getAllocGranularity(JNIEnv*, jobject) {
function iovec (line 106) | static iovec* initIoVec(JNIEnv* env,
function jlong (line 133) | static jlong OSFileSystem_readv(JNIEnv* env, jobject, jint fd,
function jlong (line 150) | static jlong OSFileSystem_writev(JNIEnv* env, jobject, jint fd,
function jlong (line 164) | static jlong OSFileSystem_transfer(JNIEnv* env, jobject, jint fd...
function jlong (line 185) | static jlong OSFileSystem_readDirect(JNIEnv* env, jobject, jint fd,
function jlong (line 206) | static jlong OSFileSystem_read(JNIEnv* env, jobject, jint fd,
function jlong (line 217) | static jlong OSFileSystem_writeDirect(JNIEnv* env, jobject, jint...
function jlong (line 231) | static jlong OSFileSystem_write(JNIEnv* env, jobject, jint fd,
function jlong (line 242) | static jlong OSFileSystem_seek(JNIEnv* env, jobject, jint fd, jl...
function OSFileSystem_fsync (line 274) | static void OSFileSystem_fsync(JNIEnv* env, jobject, jint fd, jb...
function jint (line 283) | static jint OSFileSystem_truncate(JNIEnv* env, jobject, jint fd,...
function jint (line 296) | static jint OSFileSystem_open(JNIEnv* env, jobject, jstring java...
function jint (line 351) | static jint OSFileSystem_ioctlAvailable(JNIEnv*env, jobject, job...
function jlong (line 404) | static jlong OSFileSystem_length(JNIEnv* env, jobject, jint fd) {
function IoUtils_close (line 414) | static void IoUtils_close(JNIEnv* env, jclass, jobject fileDescr...
function jint (line 424) | static jint IoUtils_getFd(JNIEnv* env, jclass, jobject fileDescr...
function IoUtils_pipe (line 428) | static void IoUtils_pipe(JNIEnv* env, jclass, jintArray javaFds) {
function IoUtils_setFd (line 440) | static void IoUtils_setFd(JNIEnv* env, jclass, jobject fileDescr...
function setBlocking (line 445) | static bool setBlocking(int fd, bool blocking) {
function IoUtils_setBlocking (line 462) | static void IoUtils_setBlocking(JNIEnv* env, jclass, jobject fil...
function CRYSTAX_LOCAL (line 500) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/osfs/osfs_ics.cpp
type crystax (line 98) | namespace crystax
type fileio (line 100) | namespace fileio
type osfs (line 102) | namespace osfs
type ics (line 104) | namespace ics
function throwException (line 127) | static void throwException(JNIEnv* env, jclass exceptionClass, j...
function throwErrnoException (line 152) | static void throwErrnoException(JNIEnv* env, const char* functio...
function throwGaiException (line 162) | static void throwGaiException(JNIEnv* env, const char* functionN...
function jobjectArray (line 178) | jobjectArray toStringArray(JNIEnv* env, Counter* counter, Getter...
type ArrayCounter (line 197) | struct ArrayCounter {
method ArrayCounter (line 199) | ArrayCounter(const char* const* strings) : strings(strings) {}
type ArrayGetter (line 209) | struct ArrayGetter {
method ArrayGetter (line 211) | ArrayGetter(const char* const* strings) : strings(strings) {}
function jobjectArray (line 217) | jobjectArray toStringArray(JNIEnv* env, const char* const* strin...
function rc_t (line 224) | static rc_t throwIfMinusOne(JNIEnv* env, const char* name, rc_t ...
class ScopedUtfChars (line 232) | class ScopedUtfChars {
method ScopedUtfChars (line 234) | ScopedUtfChars(JNIEnv* env, jstring s)
method size (line 255) | size_t size() const {
class ScopedBytes (line 275) | class ScopedBytes {
method ScopedBytes (line 277) | ScopedBytes(JNIEnv* env, jobject object)
class ScopedBytesRO (line 310) | class ScopedBytesRO : public ScopedBytes<true> {
method ScopedBytesRO (line 312) | ScopedBytesRO(JNIEnv* env, jobject object) : ScopedBytes<true>...
method jbyte (line 313) | const jbyte* get() const {
class ScopedBytesRW (line 318) | class ScopedBytesRW : public ScopedBytes<false> {
method ScopedBytesRW (line 320) | ScopedBytesRW(JNIEnv* env, jobject object) : ScopedBytes<false...
method jbyte (line 321) | jbyte* get() {
type DefaultDelete (line 327) | struct DefaultDelete {
method DefaultDelete (line 329) | DefaultDelete() {}
type DefaultDelete<T[]> (line 337) | struct DefaultDelete<T[]> {
class UniquePtr (line 353) | class UniquePtr {
method UniquePtr (line 356) | explicit UniquePtr(T* ptr = NULL) : mPtr(ptr) {
method T (line 364) | T& operator*() const { return *mPtr; }
method T (line 365) | T* operator->() const { return mPtr; }
method T (line 366) | T* get() const { return mPtr; }
method T (line 370) | T* release() __attribute__((warn_unused_result)) {
method reset (line 379) | void reset(T* ptr = NULL) {
class UniquePtr<T[], D> (line 402) | class UniquePtr<T[], D> {
method UniquePtr (line 404) | explicit UniquePtr(T* ptr = NULL) : mPtr(ptr) {
method T (line 411) | T& operator[](size_t i) const {
method T (line 414) | T* get() const { return mPtr; }
method T (line 416) | T* release() __attribute__((warn_unused_result)) {
method reset (line 422) | void reset(T* ptr = NULL) {
type addrinfo_deleter (line 437) | struct addrinfo_deleter {
class IoVec (line 446) | class IoVec : public non_copyable_t {
method IoVec (line 448) | IoVec(JNIEnv* env, size_t bufferCount) : mEnv(env), mBufferCou...
method init (line 454) | bool init(jobjectArray javaBuffers, jintArray javaOffsets, jin...
method iovec (line 495) | iovec* get() {
method size (line 499) | size_t size() {
function jobject (line 510) | static jobject sockaddrToInetAddress(JNIEnv* env, const sockaddr...
function inetAddressToSockaddr (line 571) | static bool inetAddressToSockaddr(JNIEnv* env, jobject inetAddre...
function inetAddressToSockaddrVerbatim (line 638) | static bool inetAddressToSockaddrVerbatim(JNIEnv* env, jobject i...
function inetAddressToSockaddr (line 642) | static bool inetAddressToSockaddr(JNIEnv* env, jobject inetAddre...
function fillIfreq (line 646) | static bool fillIfreq(JNIEnv* env, jstring javaInterfaceName, st...
function fillInetSocketAddress (line 658) | static bool fillInetSocketAddress(JNIEnv* env, jint rc, jobject ...
function jobject (line 676) | static jobject makeSocketAddress(JNIEnv* env, const sockaddr_sto...
function jobject (line 689) | static jobject makeStructPasswd(JNIEnv* env, const struct passwd...
class Passwd (line 700) | class Passwd {
method Passwd (line 702) | Passwd(JNIEnv* env) : mEnv(env), mResult(NULL) {
method jobject (line 712) | jobject getpwnam(const char* name) {
method jobject (line 716) | jobject getpwuid(uid_t uid) {
type passwd (line 720) | struct passwd
method jobject (line 725) | jobject process(const char* syscall, int error) {
type passwd (line 737) | struct passwd
type passwd (line 738) | struct passwd
function jobject (line 741) | static jobject makeStructStat(JNIEnv* env, const struct stat& sb) {
function jobject (line 755) | static jobject doStat(JNIEnv* env, jstring javaPath, bool isLsta...
function jobject (line 771) | static jobject makeStructStatFs(JNIEnv* env, const struct statfs...
function jobject (line 786) | static jobject makeStructLinger(JNIEnv* env, const struct linger...
function jobject (line 792) | static jobject makeStructTimeval(JNIEnv* env, const struct timev...
function jobject (line 799) | static jobject makeStructUtsname(JNIEnv* env, const struct utsna...
function jboolean (line 812) | static jboolean Posix_access(JNIEnv* env, jobject, jstring javaP...
function jobject (line 825) | static jobject Posix_accept(JNIEnv* env, jobject, jobject javaFd...
function Posix_bind (line 841) | static void Posix_bind(JNIEnv* env, jobject, jobject javaFd, job...
function Posix_chmod (line 852) | static void Posix_chmod(JNIEnv* env, jobject, jstring javaPath, ...
function Posix_close (line 861) | static void Posix_close(JNIEnv* env, jobject, jobject javaFd) {
function Posix_connect (line 875) | static void Posix_connect(JNIEnv* env, jobject, jobject javaFd, ...
function jobject (line 886) | static jobject Posix_dup(JNIEnv* env, jobject, jobject javaOldFd) {
function jobject (line 895) | static jobject Posix_dup2(JNIEnv* env, jobject, jobject javaOldF...
function jobjectArray (line 904) | static jobjectArray Posix_environ(JNIEnv* env, jobject) {
function jint (line 908) | static jint Posix_fcntlVoid(JNIEnv* env, jobject, jobject javaFd...
function jint (line 915) | static jint Posix_fcntlLong(JNIEnv* env, jobject, jobject javaFd...
function jint (line 922) | static jint Posix_fcntlFlock(JNIEnv* env, jobject, jobject javaF...
function Posix_fdatasync (line 951) | static void Posix_fdatasync(JNIEnv* env, jobject, jobject javaFd) {
function jobject (line 958) | static jobject Posix_fstat(JNIEnv* env, jobject, jobject javaFd) {
function jobject (line 971) | static jobject Posix_fstatfs(JNIEnv* env, jobject, jobject javaF...
function Posix_fsync (line 984) | static void Posix_fsync(JNIEnv* env, jobject, jobject javaFd) {
function Posix_ftruncate (line 991) | static void Posix_ftruncate(JNIEnv* env, jobject, jobject javaFd...
function jstring (line 998) | static jstring Posix_gai_strerror(JNIEnv* env, jobject, jint err...
function jobjectArray (line 1003) | static jobjectArray Posix_getaddrinfo(JNIEnv* env, jobject, jstr...
function jint (line 1069) | static jint Posix_getegid(JNIEnv*, jobject) {
function jint (line 1074) | static jint Posix_geteuid(JNIEnv*, jobject) {
function jint (line 1079) | static jint Posix_getgid(JNIEnv*, jobject) {
function jstring (line 1084) | static jstring Posix_getenv(JNIEnv* env, jobject, jstring javaNa...
function jstring (line 1093) | static jstring Posix_getnameinfo(JNIEnv* env, jobject, jobject j...
function jint (line 1113) | static jint Posix_getpid(JNIEnv*, jobject) {
function jint (line 1118) | static jint Posix_getppid(JNIEnv*, jobject) {
function jobject (line 1123) | static jobject Posix_getpwnam(JNIEnv* env, jobject, jstring java...
function jobject (line 1132) | static jobject Posix_getpwuid(JNIEnv* env, jobject, jint uid) {
function jobject (line 1137) | static jobject Posix_getsockname(JNIEnv* env, jobject, jobject j...
function jint (line 1152) | static jint Posix_getsockoptByte(JNIEnv* env, jobject, jobject j...
function jobject (line 1162) | static jobject Posix_getsockoptInAddr(JNIEnv* env, jobject, jobj...
function jint (line 1179) | static jint Posix_getsockoptInt(JNIEnv* env, jobject, jobject ja...
function jobject (line 1189) | static jobject Posix_getsockoptLinger(JNIEnv* env, jobject, jobj...
function jobject (line 1204) | static jobject Posix_getsockoptTimeval(JNIEnv* env, jobject, job...
function jint (line 1219) | static jint Posix_getuid(JNIEnv*, jobject) {
function jstring (line 1224) | static jstring Posix_if_indextoname(JNIEnv* env, jobject, jint i...
function jobject (line 1233) | static jobject Posix_inet_pton(JNIEnv* env, jobject, jint family...
function jobject (line 1250) | static jobject Posix_ioctlInetAddress(JNIEnv* env, jobject, jobj...
function jint (line 1265) | static jint Posix_ioctlInt(JNIEnv* env, jobject, jobject javaFd,...
function jboolean (line 1280) | static jboolean Posix_isatty(JNIEnv* env, jobject, jobject javaF...
function Posix_kill (line 1287) | static void Posix_kill(JNIEnv* env, jobject, jint pid, jint sig) {
function Posix_listen (line 1292) | static void Posix_listen(JNIEnv* env, jobject, jobject javaFd, j...
function jlong (line 1299) | static jlong Posix_lseek(JNIEnv* env, jobject, jobject javaFd, j...
function jobject (line 1306) | static jobject Posix_lstat(JNIEnv* env, jobject, jstring javaPat...
function Posix_mincore (line 1311) | static void Posix_mincore(JNIEnv* env, jobject, jlong address, j...
function Posix_mkdir (line 1322) | static void Posix_mkdir(JNIEnv* env, jobject, jstring javaPath, ...
function Posix_mlock (line 1331) | static void Posix_mlock(JNIEnv* env, jobject, jlong address, jlo...
function jlong (line 1337) | static jlong Posix_mmap(JNIEnv* env, jobject, jlong address, jlo...
function Posix_msync (line 1349) | static void Posix_msync(JNIEnv* env, jobject, jlong address, jlo...
function Posix_munlock (line 1355) | static void Posix_munlock(JNIEnv* env, jobject, jlong address, j...
function Posix_munmap (line 1361) | static void Posix_munmap(JNIEnv* env, jobject, jlong address, jl...
function jobject (line 1367) | static jobject Posix_open(JNIEnv* env, jobject, jstring javaPath...
function jobjectArray (line 1378) | static jobjectArray Posix_pipe(JNIEnv* env, jobject) {
function jint (line 1399) | static jint Posix_poll(JNIEnv* env, jobject, jobjectArray javaSt...
function jint (line 1441) | static jint Posix_preadBytes(JNIEnv* env, jobject, jobject javaF...
function jint (line 1452) | static jint Posix_pwriteBytes(JNIEnv* env, jobject, jobject java...
function jint (line 1463) | static jint Posix_readBytes(JNIEnv* env, jobject, jobject javaFd...
function jint (line 1474) | static jint Posix_readv(JNIEnv* env, jobject, jobject javaFd, jo...
function jint (line 1485) | static jint Posix_recvfromBytes(JNIEnv* env, jobject, jobject ja...
function Posix_remove (line 1502) | static void Posix_remove(JNIEnv* env, jobject, jstring javaPath) {
function Posix_rename (line 1511) | static void Posix_rename(JNIEnv* env, jobject, jstring javaOldPa...
function jlong (line 1524) | static jlong Posix_sendfile(JNIEnv* env, jobject, jobject javaOu...
function jint (line 1545) | static jint Posix_sendtoBytes(JNIEnv* env, jobject, jobject java...
function Posix_setegid (line 1561) | static void Posix_setegid(JNIEnv* env, jobject, jint egid) {
function Posix_seteuid (line 1566) | static void Posix_seteuid(JNIEnv* env, jobject, jint euid) {
function Posix_setgid (line 1571) | static void Posix_setgid(JNIEnv* env, jobject, jint gid) {
function Posix_setsockoptByte (line 1576) | static void Posix_setsockoptByte(JNIEnv* env, jobject, jobject j...
function Posix_setsockoptIfreq (line 1584) | static void Posix_setsockoptIfreq(JNIEnv* env, jobject, jobject ...
function Posix_setsockoptInt (line 1595) | static void Posix_setsockoptInt(JNIEnv* env, jobject, jobject ja...
function Posix_setsockoptIpMreqn (line 1602) | static void Posix_setsockoptIpMreqn(JNIEnv* env, jobject, jobjec...
function Posix_setsockoptGroupReq (line 1612) | static void Posix_setsockoptGroupReq(JNIEnv* env, jobject, jobje...
function Posix_setsockoptLinger (line 1645) | static void Posix_setsockoptLinger(JNIEnv* env, jobject, jobject...
function Posix_setsockoptTimeval (line 1657) | static void Posix_setsockoptTimeval(JNIEnv* env, jobject, jobjec...
function Posix_setuid (line 1669) | static void Posix_setuid(JNIEnv* env, jobject, jint uid) {
function Posix_shutdown (line 1674) | static void Posix_shutdown(JNIEnv* env, jobject, jobject javaFd,...
function jobject (line 1681) | static jobject Posix_socket(JNIEnv* env, jobject, jint domain, j...
function jobject (line 1688) | static jobject Posix_stat(JNIEnv* env, jobject, jstring javaPath) {
function jobject (line 1693) | static jobject Posix_statfs(JNIEnv* env, jobject, jstring javaPa...
function jstring (line 1708) | static jstring Posix_strerror(JNIEnv* env, jobject, jint errnum) {
function Posix_symlink (line 1715) | static void Posix_symlink(JNIEnv* env, jobject, jstring javaOldP...
function jlong (line 1728) | static jlong Posix_sysconf(JNIEnv* env, jobject, jint name) {
function jobject (line 1739) | static jobject Posix_uname(JNIEnv* env, jobject) {
function jint (line 1748) | static jint Posix_waitpid(JNIEnv* env, jobject, jint pid, jobjec...
function jint (line 1759) | static jint Posix_writeBytes(JNIEnv* env, jobject, jobject javaF...
function jint (line 1770) | static jint Posix_writev(JNIEnv* env, jobject, jobject javaFd, j...
function CRYSTAX_LOCAL (line 1869) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/pipe.cpp
type crystax (line 33) | namespace crystax
type fileio (line 35) | namespace fileio
function CRYSTAX_LOCAL (line 38) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 72) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/pread.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/pwrite.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/read.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/readdir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/readdir_r.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/readlink.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/readv.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/recv.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/recvfrom.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/recvmsg.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/remove.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/rename.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/rewinddir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/rmdir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/scandir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/seekdir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/select.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 91) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/send.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/sendmsg.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/sendto.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/setsockopt.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 58) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/shutdown.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/socket.cpp
type crystax (line 33) | namespace crystax
type fileio (line 35) | namespace fileio
function CRYSTAX_LOCAL (line 38) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 62) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/stat.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/symlink.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 57) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/system/driver.hpp
type crystax (line 35) | namespace crystax
type fileio (line 37) | namespace fileio
type system (line 39) | namespace system
class driver_t (line 42) | class driver_t : public ::crystax::fileio::driver_t
type stat (line 68) | struct stat
type dirent (line 72) | struct dirent
type stat (line 78) | struct stat
type iovec (line 85) | struct iovec
type dirent (line 86) | struct dirent
type dirent (line 87) | struct dirent
type dirent (line 87) | struct dirent
type dirent (line 93) | struct dirent
type dirent (line 93) | struct dirent
type dirent (line 94) | struct dirent
type dirent (line 94) | struct dirent
type timeval (line 96) | struct timeval
type stat (line 97) | struct stat
type iovec (line 102) | struct iovec
FILE: sources/crystax/vfs/system/sdriver.cpp
type crystax (line 41) | namespace crystax
type fileio (line 44) | namespace fileio
type system (line 46) | namespace system
type sockaddr (line 52) | struct sockaddr
type sockaddr (line 54) | struct sockaddr
type sockaddr (line 60) | struct sockaddr
type stat (line 70) | struct stat
type dirent (line 74) | struct dirent
type passwd (line 75) | struct passwd
type passwd (line 75) | struct passwd
type passwd (line 76) | struct passwd
type passwd (line 76) | struct passwd
type sockaddr (line 77) | struct sockaddr
type stat (line 85) | struct stat
type iovec (line 97) | struct iovec
type dirent (line 98) | struct dirent
type dirent (line 99) | struct dirent
type dirent (line 99) | struct dirent
type sockaddr (line 103) | struct sockaddr
type msghdr (line 104) | struct msghdr
type dirent (line 109) | struct dirent
type dirent (line 110) | struct dirent
type dirent (line 111) | struct dirent
type dirent (line 111) | struct dirent
type timeval (line 113) | struct timeval
type msghdr (line 115) | struct msghdr
type sockaddr (line 117) | struct sockaddr
type stat (line 121) | struct stat
type iovec (line 128) | struct iovec
function CRYSTAX_LOCAL (line 203) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 317) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 334) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 365) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 371) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 377) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 383) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 389) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 395) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 401) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 407) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 413) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 419) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 425) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 431) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 437) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 443) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 449) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 455) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 461) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 467) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 473) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 479) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 485) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 491) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 497) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 503) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 509) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 515) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 521) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 527) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 533) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 539) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 545) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 551) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 557) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 563) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 569) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 575) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 581) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 587) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 593) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 599) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 605) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 612) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 618) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 624) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 630) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 642) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 648) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 654) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 663) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 670) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 677) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 684) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 691) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 698) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 705) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 712) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 719) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 726) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 733) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 740) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 747) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 754) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 761) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 772) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 780) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 787) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 794) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 801) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 808) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 815) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 822) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 829) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 836) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 848) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 860) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 867) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 874) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 885) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 893) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 900) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 907) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 914) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 921) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 928) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 935) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 942) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 949) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 957) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 968) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 981) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 988) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 995) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1002) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1009) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1016) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1023) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1030) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1037) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1044) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1051) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1058) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1066) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1073) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1080) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1087) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1094) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1101) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1109) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1117) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1124) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1131) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1138) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1146) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1153) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1160) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1167) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1174) | CRYSTAX_LOCAL
function system_telldir (line 1181) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1194) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1201) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1208) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1215) | CRYSTAX_LOCAL
function CRYSTAX_LOCAL (line 1222) | CRYSTAX_LOCAL
FILE: sources/crystax/vfs/telldir.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function telldir (line 37) | CRYSTAX_LOCAL
function telldir (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/unlink.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 52) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/write.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/crystax/vfs/writev.cpp
type crystax (line 32) | namespace crystax
type fileio (line 34) | namespace fileio
function CRYSTAX_LOCAL (line 37) | CRYSTAX_LOCAL
function CRYSTAX_GLOBAL (line 53) | CRYSTAX_GLOBAL
FILE: sources/cxx-stl/gnu-libstdc++/build.py
class ArgParser (line 28) | class ArgParser(build_support.ArgParser):
method __init__ (line 29) | def __init__(self):
function main (line 37) | def main(args):
FILE: sources/cxx-stl/llvm-libc++/build.py
class ArgParser (line 31) | class ArgParser(build_support.ArgParser):
method __init__ (line 32) | def __init__(self): # pylint: disable=super-on-old-class
function main (line 40) | def main(args):
FILE: sources/cxx-stl/llvm-libc++/test/test_1.cc
function main (line 14) | int main(void) {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/include/cxxabi.h
function namespace (line 28) | namespace std {
function namespace (line 34) | namespace __cxxabiv1 {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/include/libunwind.h
type unw_context_t (line 48) | struct unw_context_t {
type unw_context_t (line 51) | typedef struct unw_context_t unw_context_t;
type unw_cursor_t (line 53) | struct unw_cursor_t {
type unw_cursor_t (line 56) | typedef struct unw_cursor_t unw_cursor_t;
type unw_addr_space (line 58) | struct unw_addr_space
type unw_regnum_t (line 60) | typedef int unw_regnum_t;
type unw_word_t (line 62) | typedef uint32_t unw_word_t;
type unw_fpreg_t (line 63) | typedef uint64_t unw_fpreg_t;
type unw_word_t (line 65) | typedef uint64_t unw_word_t;
type unw_fpreg_t (line 66) | typedef double unw_fpreg_t;
type unw_proc_info_t (line 69) | struct unw_proc_info_t {
type unw_proc_info_t (line 82) | typedef struct unw_proc_info_t unw_proc_info_t;
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/include/mach-o/compact_unwind_encoding.h
type compact_unwind_encoding_t (line 41) | typedef uint32_t compact_unwind_encoding_t;
type unwind_info_section_header (line 410) | struct unwind_info_section_header
type unwind_info_section_header_index_entry (line 425) | struct unwind_info_section_header_index_entry
type unwind_info_section_header_lsda_index_entry (line 432) | struct unwind_info_section_header_lsda_index_entry
type unwind_info_regular_second_level_entry (line 445) | struct unwind_info_regular_second_level_entry
type unwind_info_regular_second_level_page_header (line 452) | struct unwind_info_regular_second_level_page_header
type unwind_info_compressed_second_level_page_header (line 461) | struct unwind_info_compressed_second_level_page_header
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/include/unwind.h
type _Unwind_Reason_Code (line 28) | typedef enum {
type _Unwind_Action (line 44) | typedef enum {
type _Unwind_Context (line 52) | typedef struct _Unwind_Context _Unwind_Context;
type _Unwind_State (line 55) | typedef uint32_t _Unwind_State;
type _Unwind_EHT_Header (line 63) | typedef uint32_t _Unwind_EHT_Header;
type _Unwind_Control_Block (line 65) | struct _Unwind_Control_Block
type _Unwind_Control_Block (line 66) | typedef struct _Unwind_Control_Block _Unwind_Control_Block;
type _Unwind_Exception (line 67) | typedef struct _Unwind_Control_Block _Unwind_Exception;
type _Unwind_Control_Block (line 69) | struct _Unwind_Control_Block {
type _Unwind_Reason_Code (line 104) | typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
type _Unwind_Reason_Code (line 109) | typedef _Unwind_Reason_Code (*__personality_routine)
type _Unwind_Context (line 114) | struct _Unwind_Context
type _Unwind_Exception (line 115) | struct _Unwind_Exception
type _Unwind_Exception (line 116) | typedef struct _Unwind_Exception _Unwind_Exception;
type _Unwind_Exception (line 118) | struct _Unwind_Exception {
type _Unwind_Reason_Code (line 133) | typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
type _Unwind_Reason_Code (line 141) | typedef _Unwind_Reason_Code (*__personality_routine)
type _Unwind_VRS_RegClass (line 168) | typedef enum {
type _Unwind_VRS_DataRepresentation (line 175) | typedef enum {
type _Unwind_VRS_Result (line 183) | typedef enum {
type _Unwind_Context (line 207) | struct _Unwind_Context
type _Unwind_Context (line 208) | struct _Unwind_Context
type _Unwind_Context (line 210) | struct _Unwind_Context
type _Unwind_Context (line 211) | struct _Unwind_Context
type _Unwind_Context (line 213) | struct _Unwind_Context
type _Unwind_Context (line 215) | struct _Unwind_Context
type _Unwind_FunctionContext (line 227) | struct _Unwind_FunctionContext
type _Unwind_Reason_Code (line 250) | typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *,
type _Unwind_Context (line 257) | struct _Unwind_Context
type _Unwind_Context (line 266) | struct _Unwind_Context
type dwarf_eh_bases (line 284) | struct dwarf_eh_bases {
type dwarf_eh_bases (line 289) | struct dwarf_eh_bases
type _Unwind_Context (line 301) | struct _Unwind_Context
type _Unwind_Context (line 303) | struct _Unwind_Context
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/AddressSpace.hpp
type libunwind (line 27) | namespace libunwind {
type UnwindInfoSections (line 70) | struct UnwindInfoSections {
class LocalAddressSpace (line 98) | class __attribute__((visibility("hidden"))) LocalAddressSpace {
method get8 (line 107) | uint8_t get8(pint_t addr) {
method get16 (line 112) | uint16_t get16(pint_t addr) {
method get32 (line 117) | uint32_t get32(pint_t addr) {
method get64 (line 122) | uint64_t get64(pint_t addr) {
method getDouble (line 127) | double getDouble(pint_t addr) {
method v128 (line 132) | v128 getVector(pint_t addr) {
type dyld_unwind_sections (line 298) | struct dyld_unwind_sections
type mach_header (line 300) | struct mach_header
function _dyld_find_unwind_sections (line 313) | static inline bool _dyld_find_unwind_sections(void* addr,
type dl_iterate_cb_data (line 370) | struct dl_iterate_cb_data {
type dl_phdr_info (line 378) | struct dl_phdr_info
class OtherAddressSpace (line 468) | class OtherAddressSpace {
method OtherAddressSpace (line 470) | OtherAddressSpace(task_t task) : fTask(task) {}
type unw_addr_space (line 546) | struct unw_addr_space {
type unw_addr_space_i386 (line 554) | struct unw_addr_space_i386 : public unw_addr_space {
method unw_addr_space_i386 (line 555) | unw_addr_space_i386(task_t task) : oas(task) {}
type unw_addr_space_x86_64 (line 562) | struct unw_addr_space_x86_64 : public unw_addr_space {
method unw_addr_space_x86_64 (line 563) | unw_addr_space_x86_64(task_t task) : oas(task) {}
type unw_addr_space_ppc (line 570) | struct unw_addr_space_ppc : public unw_addr_space {
method unw_addr_space_ppc (line 571) | unw_addr_space_ppc(task_t task) : oas(task) {}
type EHTEntry (line 51) | struct EHTEntry {
type libunwind (line 67) | namespace libunwind {
type UnwindInfoSections (line 70) | struct UnwindInfoSections {
class LocalAddressSpace (line 98) | class __attribute__((visibility("hidden"))) LocalAddressSpace {
method get8 (line 107) | uint8_t get8(pint_t addr) {
method get16 (line 112) | uint16_t get16(pint_t addr) {
method get32 (line 117) | uint32_t get32(pint_t addr) {
method get64 (line 122) | uint64_t get64(pint_t addr) {
method getDouble (line 127) | double getDouble(pint_t addr) {
method v128 (line 132) | v128 getVector(pint_t addr) {
type dyld_unwind_sections (line 298) | struct dyld_unwind_sections
type mach_header (line 300) | struct mach_header
function _dyld_find_unwind_sections (line 313) | static inline bool _dyld_find_unwind_sections(void* addr,
type dl_iterate_cb_data (line 370) | struct dl_iterate_cb_data {
type dl_phdr_info (line 378) | struct dl_phdr_info
class OtherAddressSpace (line 468) | class OtherAddressSpace {
method OtherAddressSpace (line 470) | OtherAddressSpace(task_t task) : fTask(task) {}
type unw_addr_space (line 546) | struct unw_addr_space {
type unw_addr_space_i386 (line 554) | struct unw_addr_space_i386 : public unw_addr_space {
method unw_addr_space_i386 (line 555) | unw_addr_space_i386(task_t task) : oas(task) {}
type unw_addr_space_x86_64 (line 562) | struct unw_addr_space_x86_64 : public unw_addr_space {
method unw_addr_space_x86_64 (line 563) | unw_addr_space_x86_64(task_t task) : oas(task) {}
type unw_addr_space_ppc (line 570) | struct unw_addr_space_ppc : public unw_addr_space {
method unw_addr_space_ppc (line 571) | unw_addr_space_ppc(task_t task) : oas(task) {}
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/CompactUnwinder.hpp
type libunwind (line 28) | namespace libunwind {
class CompactUnwinder_x86 (line 33) | class CompactUnwinder_x86 {
class CompactUnwinder_x86_64 (line 263) | class CompactUnwinder_x86_64 {
class CompactUnwinder_arm64 (line 493) | class CompactUnwinder_arm64 {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/DwarfInstructions.hpp
type libunwind (line 27) | namespace libunwind {
class DwarfInstructions (line 33) | class DwarfInstructions {
method pint_t (line 66) | static pint_t getCFA(A &addressSpace, const PrologInfo &prolog,
function v128 (line 132) | v128 DwarfInstructions<A, R>::getSavedVectorRegister(
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/DwarfParser.hpp
type libunwind (line 28) | namespace libunwind {
class CFI_Parser (line 35) | class CFI_Parser {
type CIE_Info (line 40) | struct CIE_Info {
type FDE_Info (line 57) | struct FDE_Info {
type RegisterSavedWhere (line 69) | enum RegisterSavedWhere {
type RegisterLocation (line 77) | struct RegisterLocation {
type PrologInfo (line 83) | struct PrologInfo {
type PrologInfoStackEntry (line 94) | struct PrologInfoStackEntry {
method PrologInfoStackEntry (line 95) | PrologInfoStackEntry(PrologInfoStackEntry *n, const PrologInfo &i)
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/EHHeaderParser.hpp
type libunwind (line 21) | namespace libunwind {
class EHHeaderParser (line 28) | class EHHeaderParser {
type EHHeaderInfo (line 33) | struct EHHeaderInfo {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/Registers.hpp
type libunwind (line 23) | namespace libunwind {
type v128 (line 26) | struct v128 { uint32_t vec[4]; }
function Registers_x86 (line 31) | class _LIBUNWIND_HIDDEN Registers_x86 {
function v128 (line 208) | inline v128 Registers_x86::getVectorRegister(int) const {
function Registers_x86_64 (line 219) | class _LIBUNWIND_HIDDEN Registers_x86_64 {
function v128 (line 456) | inline v128 Registers_x86_64::getVectorRegister(int) const {
function Registers_ppc (line 467) | class _LIBUNWIND_HIDDEN Registers_ppc {
function v128 (line 875) | inline v128 Registers_ppc::getVectorRegister(int regNum) const {
function Registers_arm64 (line 1031) | class _LIBUNWIND_HIDDEN Registers_arm64 {
function v128 (line 1286) | inline v128 Registers_arm64::getVectorRegister(int) const {
function Registers_arm (line 1299) | class _LIBUNWIND_HIDDEN Registers_arm {
function unw_fpreg_t (line 1650) | inline unw_fpreg_t Registers_arm::getFloatRegister(int regNum) {
function v128 (line 1708) | inline v128 Registers_arm::getVectorRegister(int) const {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/Unwind-EHABI.cpp
function getByte (line 35) | uint8_t getByte(const uint32_t* data, size_t offset) {
type Descriptor (line 50) | struct Descriptor {
function _Unwind_Reason_Code (line 70) | _Unwind_Reason_Code ProcessDescriptors(
function _Unwind_Reason_Code (line 164) | static _Unwind_Reason_Code unwindOneFrame(_Unwind_State state,
function RegisterMask (line 195) | uint32_t RegisterMask(uint8_t start, uint8_t count_minus_one) {
function RegisterRange (line 201) | uint32_t RegisterRange(uint8_t start, uint8_t count_minus_one) {
function _Unwind_Reason_Code (line 241) | _Unwind_Reason_Code _Unwind_VRS_Interpret(
function _Unwind_Reason_Code (line 412) | _Unwind_Reason_Code __aeabi_unwind_cpp_pr0(
function _Unwind_Reason_Code (line 419) | _Unwind_Reason_Code __aeabi_unwind_cpp_pr1(
function _Unwind_Reason_Code (line 426) | _Unwind_Reason_Code __aeabi_unwind_cpp_pr2(
function _Unwind_Reason_Code (line 433) | static _Unwind_Reason_Code
function _Unwind_Reason_Code (line 547) | static _Unwind_Reason_Code unwind_phase2(unw_context_t *uc,
function _LIBUNWIND_EXPORT (line 692) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 712) | _LIBUNWIND_EXPORT void _Unwind_Complete(_Unwind_Exception* exception_obj...
function _LIBUNWIND_EXPORT (line 729) | _LIBUNWIND_EXPORT void
function _LIBUNWIND_EXPORT (line 746) | _LIBUNWIND_EXPORT uintptr_t
function ValueAsBitPattern (line 764) | static uint64_t ValueAsBitPattern(_Unwind_VRS_DataRepresentation represe...
function _Unwind_VRS_Result (line 782) | _Unwind_VRS_Result
function _Unwind_VRS_Result (line 834) | static _Unwind_VRS_Result
function _Unwind_VRS_Result (line 882) | _Unwind_VRS_Result _Unwind_VRS_Get(
function _Unwind_VRS_Result (line 899) | _Unwind_VRS_Result
function _LIBUNWIND_EXPORT (line 970) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 985) | _LIBUNWIND_EXPORT void
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/Unwind-EHABI.h
function signExtendPrel31 (line 24) | static inline uint32_t signExtendPrel31(uint32_t data) {
function readPrel31 (line 28) | static inline uint32_t readPrel31(const uint32_t *data) {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/Unwind-sjlj.c
type _Unwind_FunctionContext (line 37) | struct _Unwind_FunctionContext {
function _LIBUNWIND_EXPORT (line 58) | _LIBUNWIND_EXPORT void
function _LIBUNWIND_EXPORT (line 66) | _LIBUNWIND_EXPORT void
function _Unwind_Reason_Code (line 72) | static _Unwind_Reason_Code
function _Unwind_Reason_Code (line 127) | static _Unwind_Reason_Code
function _Unwind_Reason_Code (line 195) | static _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 279) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 309) | _LIBUNWIND_EXPORT void
function _LIBUNWIND_EXPORT (line 326) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 349) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 359) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetGR(struct _Unwind_Context *context,
function _LIBUNWIND_EXPORT (line 369) | _LIBUNWIND_EXPORT void _Unwind_SetGR(struct _Unwind_Context *context, in...
function _LIBUNWIND_EXPORT (line 379) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetIP(struct _Unwind_Context *contex...
function _LIBUNWIND_EXPORT (line 390) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetIPInfo(struct _Unwind_Context *co...
function _LIBUNWIND_EXPORT (line 401) | _LIBUNWIND_EXPORT void _Unwind_SetIP(struct _Unwind_Context *context,
function _LIBUNWIND_EXPORT (line 412) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 423) | _LIBUNWIND_EXPORT void
function _LIBUNWIND_EXPORT (line 436) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 447) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 457) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetCFA(struct _Unwind_Context *conte...
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/UnwindCursor.hpp
type libunwind (line 37) | namespace libunwind {
function DwarfFDECache (line 42) | class _LIBUNWIND_HIDDEN DwarfFDECache {
type mach_header (line 161) | struct mach_header
class UnwindSectionHeader (line 181) | class UnwindSectionHeader {
method UnwindSectionHeader (line 183) | UnwindSectionHeader(A &addressSpace, typename A::pint_t addr)
method version (line 186) | uint32_t version() const {
method commonEncodingsArraySectionOffset (line 190) | uint32_t commonEncodingsArraySectionOffset() const {
method commonEncodingsArrayCount (line 195) | uint32_t commonEncodingsArrayCount() const {
method personalityArraySectionOffset (line 199) | uint32_t personalityArraySectionOffset() const {
method personalityArrayCount (line 203) | uint32_t personalityArrayCount() const {
method indexSectionOffset (line 207) | uint32_t indexSectionOffset() const {
method indexCount (line 211) | uint32_t indexCount() const {
class UnwindSectionIndexArray (line 221) | class UnwindSectionIndexArray {
method UnwindSectionIndexArray (line 223) | UnwindSectionIndexArray(A &addressSpace, typename A::pint_t addr)
method functionOffset (line 226) | uint32_t functionOffset(uint32_t index) const {
method secondLevelPagesSectionOffset (line 231) | uint32_t secondLevelPagesSectionOffset(uint32_t index) const {
method lsdaIndexArraySectionOffset (line 236) | uint32_t lsdaIndexArraySectionOffset(uint32_t index) const {
class UnwindSectionRegularPageHeader (line 247) | class UnwindSectionRegularPageHeader {
method UnwindSectionRegularPageHeader (line 249) | UnwindSectionRegularPageHeader(A &addressSpace, typename A::pint_t a...
method kind (line 252) | uint32_t kind() const {
method entryPageOffset (line 256) | uint16_t entryPageOffset() const {
method entryCount (line 261) | uint16_t entryCount() const {
class UnwindSectionRegularArray (line 272) | class UnwindSectionRegularArray {
method UnwindSectionRegularArray (line 274) | UnwindSectionRegularArray(A &addressSpace, typename A::pint_t addr)
method functionOffset (line 277) | uint32_t functionOffset(uint32_t index) const {
method encoding (line 282) | uint32_t encoding(uint32_t index) const {
class UnwindSectionCompressedPageHeader (line 293) | class UnwindSectionCompressedPageHeader {
method UnwindSectionCompressedPageHeader (line 295) | UnwindSectionCompressedPageHeader(A &addressSpace, typename A::pint_...
method kind (line 298) | uint32_t kind() const {
method entryPageOffset (line 303) | uint16_t entryPageOffset() const {
method entryCount (line 308) | uint16_t entryCount() const {
method encodingsPageOffset (line 313) | uint16_t encodingsPageOffset() const {
method encodingsCount (line 318) | uint16_t encodingsCount() const {
class UnwindSectionCompressedArray (line 329) | class UnwindSectionCompressedArray {
method UnwindSectionCompressedArray (line 331) | UnwindSectionCompressedArray(A &addressSpace, typename A::pint_t addr)
method functionOffset (line 334) | uint32_t functionOffset(uint32_t index) const {
method encodingIndex (line 338) | uint16_t encodingIndex(uint32_t index) const {
class UnwindSectionLsdaArray (line 348) | class UnwindSectionLsdaArray {
method UnwindSectionLsdaArray (line 350) | UnwindSectionLsdaArray(A &addressSpace, typename A::pint_t addr)
method functionOffset (line 353) | uint32_t functionOffset(uint32_t index) const {
method lsdaOffset (line 358) | uint32_t lsdaOffset(uint32_t index) const {
function AbstractUnwindCursor (line 370) | class _LIBUNWIND_HIDDEN AbstractUnwindCursor {
class UnwindCursor (line 416) | class UnwindCursor : public AbstractUnwindCursor{
method stepWithDwarfFDE (line 448) | int stepWithDwarfFDE() {
method stepWithCompactEncoding (line 459) | int stepWithCompactEncoding() {
method stepWithCompactEncoding (line 468) | int stepWithCompactEncoding(Registers_x86_64 &) {
method stepWithCompactEncoding (line 473) | int stepWithCompactEncoding(Registers_x86 &) {
method stepWithCompactEncoding (line 478) | int stepWithCompactEncoding(Registers_ppc &) {
method stepWithCompactEncoding (line 482) | int stepWithCompactEncoding(Registers_arm64 &) {
method compactSaysUseDwarf (line 487) | bool compactSaysUseDwarf(uint32_t *offset=NULL) const {
method compactSaysUseDwarf (line 492) | bool compactSaysUseDwarf(Registers_x86_64 &, uint32_t *offset) const {
method compactSaysUseDwarf (line 501) | bool compactSaysUseDwarf(Registers_x86 &, uint32_t *offset) const {
method compactSaysUseDwarf (line 510) | bool compactSaysUseDwarf(Registers_ppc &, uint32_t *) const {
method compactSaysUseDwarf (line 514) | bool compactSaysUseDwarf(Registers_arm64 &, uint32_t *offset) const {
method compact_unwind_encoding_t (line 525) | compact_unwind_encoding_t dwarfEncoding() const {
method compact_unwind_encoding_t (line 530) | compact_unwind_encoding_t dwarfEncoding(Registers_x86_64 &) const {
method compact_unwind_encoding_t (line 534) | compact_unwind_encoding_t dwarfEncoding(Registers_x86 &) const {
method compact_unwind_encoding_t (line 538) | compact_unwind_encoding_t dwarfEncoding(Registers_ppc &) const {
method compact_unwind_encoding_t (line 542) | compact_unwind_encoding_t dwarfEncoding(Registers_arm64 &) const {
function unw_word_t (line 580) | unw_word_t UnwindCursor<A, R>::getReg(int regNum) {
function unw_fpreg_t (line 595) | unw_fpreg_t UnwindCursor<A, R>::getFloatReg(int regNum) {
type EHABIIndexEntry (line 624) | struct EHABIIndexEntry {
type EHABISectionIterator (line 630) | struct EHABISectionIterator {
method _Self (line 640) | static _Self begin(A& addressSpace, const UnwindInfoSections& sects) {
method _Self (line 643) | static _Self end(A& addressSpace, const UnwindInfoSections& sects) {
method EHABISectionIterator (line 647) | EHABISectionIterator(A& addressSpace, const UnwindInfoSections& sect...
method _Self (line 650) | _Self& operator++() { ++_i; return *this; }
method _Self (line 651) | _Self& operator+=(size_t a) { _i += a; return *this; }
method _Self (line 652) | _Self& operator--() { assert(_i > 0); --_i; return *this; }
method _Self (line 653) | _Self& operator-=(size_t a) { assert(_i >= a); _i -= a; return *this; }
method _Self (line 655) | _Self operator+(size_t a) { _Self out = *this; out._i += a; return o...
method _Self (line 656) | _Self operator-(size_t a) { assert(_i >= a); _Self out = *this; out....
method functionAddress (line 668) | typename A::pint_t functionAddress() const {
method dataAddress (line 674) | typename A::pint_t dataAddress() {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c
function _LIBUNWIND_EXPORT (line 28) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 65) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 75) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 85) | _LIBUNWIND_EXPORT void *_Unwind_FindEnclosingFunction(void *pc) {
function _LIBUNWIND_EXPORT (line 103) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 195) | _LIBUNWIND_EXPORT const void *_Unwind_Find_FDE(const void *pc,
function _LIBUNWIND_EXPORT (line 216) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetCFA(struct _Unwind_Context *conte...
function _LIBUNWIND_EXPORT (line 229) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetIPInfo(struct _Unwind_Context *co...
function _LIBUNWIND_EXPORT (line 242) | _LIBUNWIND_EXPORT void __register_frame(const void *fde) {
function _LIBUNWIND_EXPORT (line 252) | _LIBUNWIND_EXPORT void __deregister_frame(const void *fde) {
function _LIBUNWIND_EXPORT (line 267) | _LIBUNWIND_EXPORT void __register_frame_info_bases(const void *fde, void...
function _LIBUNWIND_EXPORT (line 278) | _LIBUNWIND_EXPORT void __register_frame_info(const void *fde, void *ob) {
function _LIBUNWIND_EXPORT (line 285) | _LIBUNWIND_EXPORT void __register_frame_info_table_bases(const void *fde,
function _LIBUNWIND_EXPORT (line 297) | _LIBUNWIND_EXPORT void __register_frame_info_table(const void *fde, void...
function _LIBUNWIND_EXPORT (line 304) | _LIBUNWIND_EXPORT void __register_frame_table(const void *fde) {
function _LIBUNWIND_EXPORT (line 310) | _LIBUNWIND_EXPORT void *__deregister_frame_info(const void *fde) {
function _LIBUNWIND_EXPORT (line 317) | _LIBUNWIND_EXPORT void *__deregister_frame_info_bases(const void *fde) {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/UnwindLevel1.c
function _Unwind_Reason_Code (line 28) | static _Unwind_Reason_Code
function _Unwind_Reason_Code (line 122) | static _Unwind_Reason_Code
function _Unwind_Reason_Code (line 232) | static _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 337) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 371) | _LIBUNWIND_EXPORT void
function _LIBUNWIND_EXPORT (line 393) | _LIBUNWIND_EXPORT _Unwind_Reason_Code
function _LIBUNWIND_EXPORT (line 412) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 433) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 448) | _LIBUNWIND_EXPORT void
function _LIBUNWIND_EXPORT (line 461) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 470) | _LIBUNWIND_EXPORT void _Unwind_SetGR(struct _Unwind_Context *context, in...
function _LIBUNWIND_EXPORT (line 477) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetIP(struct _Unwind_Context *contex...
function _LIBUNWIND_EXPORT (line 485) | _LIBUNWIND_EXPORT void _Unwind_SetIP(struct _Unwind_Context *context,
function _LIBUNWIND_EXPORT (line 496) | _LIBUNWIND_EXPORT uintptr_t
function _LIBUNWIND_EXPORT (line 507) | _LIBUNWIND_EXPORT void _Unwind_SetGR(struct _Unwind_Context *context, in...
function _LIBUNWIND_EXPORT (line 517) | _LIBUNWIND_EXPORT uintptr_t _Unwind_GetIP(struct _Unwind_Context *contex...
function _LIBUNWIND_EXPORT (line 529) | _LIBUNWIND_EXPORT void _Unwind_SetIP(struct _Unwind_Context *context,
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/Unwind_AppleExtras.cpp
type libgcc_object (line 24) | struct libgcc_object {
type libgcc_object_info (line 36) | struct libgcc_object_info {
type libunwind (line 146) | namespace libunwind {
function _LIBUNWIND_HIDDEN (line 148) | _LIBUNWIND_HIDDEN
function _LIBUNWIND_HIDDEN (line 191) | _LIBUNWIND_HIDDEN
function _LIBUNWIND_HIDDEN (line 197) | _LIBUNWIND_HIDDEN
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/config.h
function assert_rtn (line 67) | static inline void assert_rtn(const char* func, const char* file, int li...
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/libunwind.cpp
function _LIBUNWIND_EXPORT (line 47) | _LIBUNWIND_EXPORT int unw_init_local(unw_cursor_t *cursor,
function _LIBUNWIND_EXPORT (line 77) | _LIBUNWIND_EXPORT int unw_init_remote_thread(unw_cursor_t *cursor,
function is64bit (line 108) | static bool is64bit(task_t task) {
function _LIBUNWIND_EXPORT (line 113) | _LIBUNWIND_EXPORT unw_addr_space_t unw_create_addr_space_for_task(task_t...
function _LIBUNWIND_EXPORT (line 133) | _LIBUNWIND_EXPORT void unw_destroy_addr_space(unw_addr_space_t asp) {
function _LIBUNWIND_EXPORT (line 158) | _LIBUNWIND_EXPORT int unw_get_reg(unw_cursor_t *cursor, unw_regnum_t reg...
function _LIBUNWIND_EXPORT (line 173) | _LIBUNWIND_EXPORT int unw_set_reg(unw_cursor_t *cursor, unw_regnum_t reg...
function _LIBUNWIND_EXPORT (line 192) | _LIBUNWIND_EXPORT int unw_get_fpreg(unw_cursor_t *cursor, unw_regnum_t r...
function _LIBUNWIND_EXPORT (line 207) | _LIBUNWIND_EXPORT int unw_set_fpreg(unw_cursor_t *cursor, unw_regnum_t r...
function _LIBUNWIND_EXPORT (line 226) | _LIBUNWIND_EXPORT int unw_step(unw_cursor_t *cursor) {
function _LIBUNWIND_EXPORT (line 234) | _LIBUNWIND_EXPORT int unw_get_proc_info(unw_cursor_t *cursor,
function _LIBUNWIND_EXPORT (line 248) | _LIBUNWIND_EXPORT int unw_resume(unw_cursor_t *cursor) {
function _LIBUNWIND_EXPORT (line 257) | _LIBUNWIND_EXPORT int unw_get_proc_name(unw_cursor_t *cursor, char *buf,
function _LIBUNWIND_EXPORT (line 271) | _LIBUNWIND_EXPORT int unw_is_fpreg(unw_cursor_t *cursor, unw_regnum_t re...
function _LIBUNWIND_EXPORT (line 280) | _LIBUNWIND_EXPORT const char *unw_regname(unw_cursor_t *cursor,
function _LIBUNWIND_EXPORT (line 290) | _LIBUNWIND_EXPORT int unw_is_signal_frame(unw_cursor_t *cursor) {
function _LIBUNWIND_EXPORT (line 299) | _LIBUNWIND_EXPORT void unw_save_vfp_as_X(unw_cursor_t *cursor) {
function _LIBUNWIND_EXPORT (line 310) | _LIBUNWIND_EXPORT void unw_iterate_dwarf_unwind_cache(void (*func)(
function _unw_add_dynamic_fde (line 319) | void _unw_add_dynamic_fde(unw_word_t fde) {
function _unw_remove_dynamic_fde (line 338) | void _unw_remove_dynamic_fde(unw_word_t fde) {
function _LIBUNWIND_HIDDEN (line 352) | _LIBUNWIND_HIDDEN
function _LIBUNWIND_HIDDEN (line 364) | _LIBUNWIND_HIDDEN
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/Unwind/unwind_ext.h
type _Unwind_FunctionContext (line 25) | struct _Unwind_FunctionContext
type _Unwind_FunctionContext (line 29) | struct _Unwind_FunctionContext
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/abort_message.cpp
function abort_message (line 34) | __attribute__((visibility("hidden"), noreturn))
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_aux_runtime.cpp
type __cxxabiv1 (line 17) | namespace __cxxabiv1
function LIBCXXABI_NORETURN (line 23) | LIBCXXABI_NORETURN
function LIBCXXABI_NORETURN (line 28) | LIBCXXABI_NORETURN
function LIBCXXABI_NORETURN (line 33) | LIBCXXABI_NORETURN
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_default_handlers.cpp
function default_terminate_handler (line 24) | __attribute__((noreturn))
function default_unexpected_handler (line 80) | __attribute__((noreturn))
type std (line 98) | namespace std
function unexpected_handler (line 101) | unexpected_handler
function terminate_handler (line 112) | terminate_handler
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_demangle.cpp
type __cxxabiv1 (line 21) | namespace __cxxabiv1
function print_stack (line 55) | void
function print_state (line 96) | void
type float_data (line 134) | struct float_data
type float_data<float> (line 137) | struct float_data<float>
type float_data<double> (line 147) | struct float_data<double>
type float_data<long double> (line 157) | struct float_data<long double>
function String (line 2839) | String
class save_value (line 4454) | class save_value
method save_value (line 4459) | save_value(T& restore)
method save_value (line 4469) | save_value(const save_value&) = delete;
method save_value (line 4470) | save_value& operator=(const save_value&) = delete;
function demangle (line 4657) | void
class arena (line 4706) | class arena
method align_up (line 4712) | std::size_t
method pointer_in_buffer (line 4716) | bool
method arena (line 4721) | arena() noexcept : ptr_(buf_) {}
method arena (line 4723) | arena(const arena&) = delete;
method arena (line 4724) | arena& operator=(const arena&) = delete;
method size (line 4729) | static constexpr std::size_t size() {return N;}
method used (line 4730) | std::size_t used() const {return static_cast<std::size_t>(ptr_ - buf...
method reset (line 4731) | void reset() {ptr_ = buf_;}
class short_alloc (line 4763) | class short_alloc
type rebind (line 4770) | struct rebind {typedef short_alloc<_Up, N> other;}
method short_alloc (line 4772) | short_alloc(arena<N>& a) noexcept : a_(a) {}
method short_alloc (line 4774) | short_alloc(const short_alloc<U, N>& a) noexcept
method short_alloc (line 4776) | short_alloc(const short_alloc&) = default;
method short_alloc (line 4777) | short_alloc& operator=(const short_alloc&) = delete;
method T (line 4779) | T* allocate(std::size_t n)
method deallocate (line 4783) | void deallocate(T* p, std::size_t n) noexcept
class malloc_alloc (line 4813) | class malloc_alloc
method malloc_alloc (line 4818) | malloc_alloc() = default;
method malloc_alloc (line 4819) | malloc_alloc(const malloc_alloc<U>&) noexcept {}
method T (line 4821) | T* allocate(std::size_t n)
method deallocate (line 4825) | void deallocate(T* p, std::size_t) noexcept
type string_pair (line 4852) | struct string_pair
method string_pair (line 4857) | string_pair() = default;
method string_pair (line 4858) | string_pair(StrT f) : first(std::move(f)) {}
method string_pair (line 4859) | string_pair(StrT f, StrT s)
method string_pair (line 4862) | string_pair(const char (&s)[N]) : first(s, N-1) {}
method size (line 4864) | size_t size() const {return first.size() + second.size();}
method StrT (line 4865) | StrT full() const {return first + second;}
method StrT (line 4866) | StrT move_full() {return std::move(first) + std::move(second);}
type Db (line 4869) | struct Db
method Db (line 4887) | Db(arena<N>& ar) :
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_exception.cpp
type __cxxabiv1 (line 37) | namespace __cxxabiv1 {
function __cxa_exception (line 42) | static
function __cxa_exception (line 63) | static
function cxa_exception_size_from_exception_thrown_size (line 71) | static
function setExceptionClass (line 79) | static void setExceptionClass(_Unwind_Exception* unwind_exception) {
function setDependentExceptionClass (line 83) | static void setDependentExceptionClass(_Unwind_Exception* unwind_excep...
function isOurExceptionClass (line 88) | static bool isOurExceptionClass(const _Unwind_Exception* unwind_except...
function isDependentException (line 93) | static bool isDependentException(_Unwind_Exception* unwind_exception) {
function incrementHandlerCount (line 98) | static inline int incrementHandlerCount(__cxa_exception *exception) {
function decrementHandlerCount (line 103) | static inline int decrementHandlerCount(__cxa_exception *exception) {
function do_free (line 117) | static void do_free(void *ptr) {
function exception_cleanup_func (line 128) | static
function LIBCXXABI_NORETURN (line 140) | static LIBCXXABI_NORETURN void failed_throw(__cxa_exception* exception...
function __cxa_free_exception (line 170) | void __cxa_free_exception (void * thrown_object) throw() {
function __cxa_free_dependent_exception (line 190) | void __cxa_free_dependent_exception (void * dependent_exception) {
function LIBCXXABI_NORETURN (line 221) | LIBCXXABI_NORETURN
function __cxa_begin_cleanup (line 273) | bool
function _Unwind_Exception (line 312) | __attribute__((used)) static _Unwind_Exception *
function __cxa_end_catch (line 446) | void __cxa_end_catch()
function LIBCXXABI_NORETURN (line 548) | LIBCXXABI_NORETURN
function __cxa_increment_exception_refcount (line 596) | void
function __cxa_decrement_exception_refcount (line 614) | void
function dependent_exception_cleanup (line 667) | static
function __cxa_rethrow_primary_exception (line 683) | void
function __cxa_uncaught_exception (line 712) | bool
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_exception.hpp
type __cxxabiv1 (line 21) | namespace __cxxabiv1 {
type __cxa_exception (line 29) | struct __cxa_exception {
type __cxa_dependent_exception (line 72) | struct __cxa_dependent_exception {
type __cxa_eh_globals (line 104) | struct __cxa_eh_globals {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_exception_storage.cpp
type __cxxabiv1 (line 20) | namespace __cxxabiv1 {
function __cxa_eh_globals (line 23) | __cxa_eh_globals *__cxa_get_globals() { return &eh_globals; }
function __cxa_eh_globals (line 24) | __cxa_eh_globals *__cxa_get_globals_fast() { return &eh_globals; }
function __cxa_eh_globals (line 33) | __cxa_eh_globals * __globals () {
function __cxa_eh_globals (line 40) | __cxa_eh_globals * __cxa_get_globals () { return __globals (); }
function __cxa_eh_globals (line 41) | __cxa_eh_globals * __cxa_get_globals_fast () { return __globals (); }
function destruct_ (line 60) | void destruct_ (void *p) {
function construct_ (line 66) | void construct_ () {
function __cxa_eh_globals (line 73) | __cxa_eh_globals * __cxa_get_globals () {
function __cxa_eh_globals (line 93) | __cxa_eh_globals * __cxa_get_globals_fast () {
type __cxxabiv1 (line 30) | namespace __cxxabiv1 {
function __cxa_eh_globals (line 23) | __cxa_eh_globals *__cxa_get_globals() { return &eh_globals; }
function __cxa_eh_globals (line 24) | __cxa_eh_globals *__cxa_get_globals_fast() { return &eh_globals; }
function __cxa_eh_globals (line 33) | __cxa_eh_globals * __globals () {
function __cxa_eh_globals (line 40) | __cxa_eh_globals * __cxa_get_globals () { return __globals (); }
function __cxa_eh_globals (line 41) | __cxa_eh_globals * __cxa_get_globals_fast () { return __globals (); }
function destruct_ (line 60) | void destruct_ (void *p) {
function construct_ (line 66) | void construct_ () {
function __cxa_eh_globals (line 73) | __cxa_eh_globals * __cxa_get_globals () {
function __cxa_eh_globals (line 93) | __cxa_eh_globals * __cxa_get_globals_fast () {
type __cxxabiv1 (line 55) | namespace __cxxabiv1 {
function __cxa_eh_globals (line 23) | __cxa_eh_globals *__cxa_get_globals() { return &eh_globals; }
function __cxa_eh_globals (line 24) | __cxa_eh_globals *__cxa_get_globals_fast() { return &eh_globals; }
function __cxa_eh_globals (line 33) | __cxa_eh_globals * __globals () {
function __cxa_eh_globals (line 40) | __cxa_eh_globals * __cxa_get_globals () { return __globals (); }
function __cxa_eh_globals (line 41) | __cxa_eh_globals * __cxa_get_globals_fast () { return __globals (); }
function destruct_ (line 60) | void destruct_ (void *p) {
function construct_ (line 66) | void construct_ () {
function __cxa_eh_globals (line 73) | __cxa_eh_globals * __cxa_get_globals () {
function __cxa_eh_globals (line 93) | __cxa_eh_globals * __cxa_get_globals_fast () {
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_guard.cpp
type __cxxabiv1 (line 28) | namespace __cxxabiv1
function is_initialized (line 41) | inline bool is_initialized(guard_type* guard_object) {
function set_initialized (line 45) | inline void set_initialized(guard_type* guard_object) {
function is_initialized (line 53) | bool is_initialized(guard_type* guard_object) {
function set_initialized (line 58) | void set_initialized(guard_type* guard_object) {
function lock_type (line 76) | inline
function set_lock (line 83) | inline
function lock_type (line 92) | inline
function set_lock (line 99) | inline
function lock_type (line 112) | inline
function set_lock (line 124) | inline
function lock_type (line 137) | inline
function set_lock (line 149) | inline
function __cxa_guard_acquire (line 170) | int __cxa_guard_acquire(guard_type* guard_object)
function __cxa_guard_release (line 175) | void __cxa_guard_release(guard_type* guard_object)
function __cxa_guard_abort (line 181) | void __cxa_guard_abort(guard_type* guard_object)
function __cxa_guard_acquire (line 188) | int __cxa_guard_acquire(guard_type* guard_object)
function __cxa_guard_release (line 230) | void __cxa_guard_release(guard_type* guard_object)
function __cxa_guard_abort (line 242) | void __cxa_guard_abort(guard_type* guard_object)
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_handlers.cpp
type std (line 23) | namespace std
function unexpected_handler (line 26) | unexpected_handler
function __unexpected (line 35) | __attribute__((visibility("hidden"), noreturn))
function unexpected (line 44) | __attribute__((noreturn))
function terminate_handler (line 51) | terminate_handler
function __terminate (line 60) | __attribute__((visibility("hidden"), noreturn))
function terminate (line 81) | __attribute__((noreturn))
function new_handler (line 109) | new_handler
function new_handler (line 117) | new_handler
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_handlers.hpp
type std (line 18) | namespace std
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_new_delete.cpp
type std (line 198) | namespace std
function bad_array_length (line 237) | class _LIBCPP_EXCEPTION_ABI bad_array_length
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_personality.cpp
type __cxxabiv1 (line 141) | namespace __cxxabiv1
function readULEB128 (line 177) | static
function readSLEB128 (line 200) | static
function readEncodedPointer (line 226) | static
function call_terminate (line 302) | static
function __shim_type_info (line 336) | static const __shim_type_info*
function __shim_type_info (line 355) | static
function exception_spec_can_catch (line 402) | static
function exception_spec_can_catch (line 444) | static
type scan_results (line 494) | struct scan_results
function set_registers (line 509) | static
function scan_eh_tab (line 542) | static void scan_eh_tab(scan_results &results, _Unwind_Action actions,
function __gxx_personality_sj0 (line 927) | __gxx_personality_sj0
function _Unwind_Reason_Code (line 1023) | static _Unwind_Reason_Code continue_unwind(_Unwind_Exception* unwind_e...
function save_results_to_barrier_cache (line 1066) | static void save_results_to_barrier_cache(_Unwind_Exception* unwind_ex...
function load_results_from_barrier_cache (line 1076) | static void load_results_from_barrier_cache(scan_results& results,
function _Unwind_Reason_Code (line 1086) | _Unwind_Reason_Code
function __cxa_call_unexpected (line 1191) | __attribute__((noreturn))
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_thread_atexit.cpp
type __cxxabiv1 (line 12) | namespace __cxxabiv1 {
function __cxa_thread_atexit (line 18) | int __cxa_thread_atexit(void (*dtor)(void *), void *obj,
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_unexpected.cpp
type __cxxabiv1 (line 14) | namespace __cxxabiv1
FILE: sources/cxx-stl/llvm-libc++abi/libcxxabi/src/cxa_vector.cpp
type __cxxabiv1 (line 18) | namespace __cxxabiv1 {
function __get_element_count (line 23) | inline static size_t __get_element_count ( void *p ) {
function __set_element_count (line 27) | inline static void __set_element_count ( void *p, size_t element_count...
class st_heap_block2 (line 42) | class st_heap_block2 {
method st_heap_block2 (line 46) | st_heap_block2 ( dealloc_f dealloc, void *ptr )
method release (line 49) | void release () { enabled_ = false; }
class st_heap_block3 (line 57) | class st_heap_block3 {
method st_heap_block3 (line 61) | st_heap_block3 ( dealloc_f dealloc, void *ptr, size_t size )
method release (line 64) | void release () { enabled_ = false; }
class st_cxa_cleanup (line 73) | class st_cxa_cleanup {
method st_cxa_cleanup (line 77) | st_cxa_cleanup ( void *ptr, size_t &idx, size_t element_size, destru...
method release (line 85) | void release () { enabled_ = false; }
class st_terminate (line 95) | class st_terminate {
method st_terminate (line 97) | st_terminate ( bool enabled = true )
Copy disabled (too large)
Download .json
Condensed preview — 3568 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (28,160K chars).
[
{
"path": ".gitignore",
"chars": 665,
"preview": "*~\n*.bak\n*.pyc\n*.swp\n.DS_Store\n.crew\n.tramp_history\nThumbs.db\nlocal.properties\nbuild.xml\nplatforms/\npackages/\npostpone/\n"
},
{
"path": "Android.mk",
"chars": 199,
"preview": "# Please try to keep this file empty by only including what is necessary to\n# build the Android platform. This is not th"
},
{
"path": "BACKERS.md",
"chars": 522,
"preview": "# Bountysource Backers\n\nThank you to everyone who backed our [Bountysource fundraiser](https://www.bountysource.com/team"
},
{
"path": "CHANGELOG.md",
"chars": 5135,
"preview": "Changelog\n=========\n\nWe've moved our bug tracker to GitHub: https://github.com/android-ndk/ndk/issues\n\nClang\n-----\n\n * *"
},
{
"path": "CleanSpec.mk",
"chars": 2227,
"preview": "# Copyright (C) 2007 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "OWNERS",
"chars": 242,
"preview": "danalbert\nenh\njmgao\n\n# For questions rather than code review, send email to:\n#\n# android-ndk@google.com (Googlers only)\n"
},
{
"path": "README.md",
"chars": 4431,
"preview": "Android Native Development Kit (NDK)\n====================================\n\nThe latest version of this document is availa"
},
{
"path": "build/NOTICE",
"chars": 577,
"preview": "Copyright (C) 2016 The Android Open Source Project\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
},
{
"path": "build/awk/check-awk.awk",
"chars": 1242,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/extract-debuggable.awk",
"chars": 4982,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/extract-launchable.awk",
"chars": 7542,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/extract-minsdkversion.awk",
"chars": 4891,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/extract-package-name.awk",
"chars": 4903,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/extract-pid.awk",
"chars": 2417,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/extract-platform.awk",
"chars": 1284,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/gen-cygwin-deps-converter.awk",
"chars": 6836,
"preview": "# Copyright (C) 2011 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/gen-windows-host-path.awk",
"chars": 4945,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/awk/xml.awk",
"chars": 11779,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/add-application.mk",
"chars": 11472,
"preview": "# Copyright (C) 2009, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "build/core/add-platform.mk",
"chars": 1257,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/add-toolchain.mk",
"chars": 3121,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/build-all.mk",
"chars": 5308,
"preview": "# Copyright (C) 2009-2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"Licen"
},
{
"path": "build/core/build-binary.mk",
"chars": 31946,
"preview": "# Copyright (C) 2008, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2."
},
{
"path": "build/core/build-executable.mk",
"chars": 1102,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/build-local.mk",
"chars": 8203,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/build-module.mk",
"chars": 1308,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/build-shared-library.mk",
"chars": 1135,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/build-static-library.mk",
"chars": 1097,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/check-cygwin-make.mk",
"chars": 1500,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/clear-vars.mk",
"chars": 953,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/default-application.mk",
"chars": 1071,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/default-build-commands.mk",
"chars": 6150,
"preview": "# The following definitions are the defaults used by all toolchains.\n# This is included in setup-toolchain.mk just befor"
},
{
"path": "build/core/defaults.mk",
"chars": 96,
"preview": "DEFAULT_CXX_STANDARD := gnu++11\nDEFAULT_LIBSTDCXX := gnustl\nDEFAULT_LIBOBJC := cocotron\n"
},
{
"path": "build/core/definitions-graph.mk",
"chars": 21690,
"preview": "# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/definitions-host.mk",
"chars": 9455,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/definitions-tests.mk",
"chars": 3371,
"preview": "# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/definitions-utils.mk",
"chars": 11978,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/definitions.mk",
"chars": 94145,
"preview": "# Copyright (C) 2009, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2."
},
{
"path": "build/core/import-locals.mk",
"chars": 3510,
"preview": "# Copyright (C) 2009, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "build/core/init.mk",
"chars": 23274,
"preview": "# Copyright (C) 2009-2010, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the "
},
{
"path": "build/core/main.mk",
"chars": 4559,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/prebuilt-library.mk",
"chars": 2995,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/prebuilt-shared-library.mk",
"chars": 955,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/prebuilt-static-library.mk",
"chars": 1206,
"preview": "# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/setup-abi.mk",
"chars": 2636,
"preview": "# Copyright (C) 2009, 2017 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "build/core/setup-app.mk",
"chars": 6272,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/core/setup-imports.mk",
"chars": 1489,
"preview": "# Copyright (C) 2009-2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"Licen"
},
{
"path": "build/core/setup-toolchain.mk",
"chars": 10499,
"preview": "# Copyright (C) 2009, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2."
},
{
"path": "build/gmsl/README",
"chars": 351,
"preview": "GNU Make Standard Library\n-------------------------\n\n1. Visit http://gmsl.sf.net for more details\n\n2. To use the GMSL in"
},
{
"path": "build/gmsl/__gmsl",
"chars": 39916,
"preview": "# ----------------------------------------------------------------------------\n#\n# GNU Make Standard Library (GMSL)\n#\n# "
},
{
"path": "build/gmsl/gmsl",
"chars": 3057,
"preview": "# ----------------------------------------------------------------------------\n#\n# GNU Make Standard Library (GMSL)\n#\n# "
},
{
"path": "build/gmsl/gmsl-tests",
"chars": 25971,
"preview": "# ----------------------------------------------------------------------------\n#\n# GNU Make Standard Library (GMSL) Test"
},
{
"path": "build/gmsl/index.html",
"chars": 28469,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html><head>\n <meta content=\"text/html; charset=ISO-885"
},
{
"path": "build/instruments/README.md",
"chars": 21241,
"preview": "This directory contains a number of shell scripts, which we will\ncall the \"dev-scripts\", that are only used to develop t"
},
{
"path": "build/instruments/build-analyzer.sh",
"chars": 3524,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/build-boost.sh",
"chars": 31015,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-ccache.sh",
"chars": 3271,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/build-cocotron.sh",
"chars": 4743,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-compiler-rt.sh",
"chars": 9448,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2013, 2014, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/build-crystax.sh",
"chars": 5523,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-docs.sh",
"chars": 3508,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2013, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-gcc.sh",
"chars": 26967,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache Licen"
},
{
"path": "build/instruments/build-gdb-stub.sh",
"chars": 3022,
"preview": "#!/bin/bash\n\nNDK_BUILDTOOLS_PATH=\"$(dirname $0)\"\n. \"$NDK_BUILDTOOLS_PATH/prebuilt-common.sh\"\n. \"$NDK_BUILDTOOLS_PATH/com"
},
{
"path": "build/instruments/build-gdbserver.sh",
"chars": 8687,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010, 2014, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/build-gnu-libstdc++.sh",
"chars": 20805,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/build-gnustep-libobjc2.sh",
"chars": 7020,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-host-awk.sh",
"chars": 2999,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-host-gdb.sh",
"chars": 9632,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/build-host-make.sh",
"chars": 3784,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-host-prebuilts.sh",
"chars": 12412,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache Licen"
},
{
"path": "build/instruments/build-host-python.sh",
"chars": 20025,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2012, 2014 The Android Open Source Project\n# Copyright (C) 2012 Ray Donnelly <mingw.androi"
},
{
"path": "build/instruments/build-host-toolbox.sh",
"chars": 4111,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-host-yasm.sh",
"chars": 4605,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2013, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-icu.sh",
"chars": 15750,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-libjpeg-turbo.sh",
"chars": 11679,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-libjpeg.sh",
"chars": 11156,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-libpng.sh",
"chars": 11298,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-libtiff.sh",
"chars": 11492,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-llvm-libc++.sh",
"chars": 13357,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2013, 2014, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/build-llvm.py",
"chars": 3469,
"preview": "#!/usr/bin/env python\n#\n# Copyright (C) 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Vers"
},
{
"path": "build/instruments/build-llvm.sh",
"chars": 20846,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2012, 2014, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/build-mingw64-toolchain.sh",
"chars": 22191,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/build-ndk-stack.sh",
"chars": 5658,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-ndk-sysroot.sh",
"chars": 7626,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2009, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/build-python/_sitebuiltins.py",
"chars": 3164,
"preview": "\"\"\"\nThe objects used by the site module to add custom builtins.\n\"\"\"\n\n# Those objects are almost immortal and they keep a"
},
{
"path": "build/instruments/build-python/_sysconfigdata.py",
"chars": 87,
"preview": "# system configuration generated and used by the sysconfig module\nbuild_time_vars = {}\n"
},
{
"path": "build/instruments/build-python/android.mk.2.7",
"chars": 7416,
"preview": "MY_PYCORE_SRC_FILES := \\\n \\\n $(MY_PYTHON_SRC_ROOT)/Python/_warnings.c \\\n $(MY_PYTHON_SRC_ROOT)/Python/asdl.c \\\n $(MY"
},
{
"path": "build/instruments/build-python/android.mk.3.5",
"chars": 7745,
"preview": "MY_PYCORE_SRC_FILES := \\\n \\\n $(MY_PYTHON_SRC_ROOT)/Python/_warnings.c \\\n $(MY_PYTHON_SRC_ROOT)/Python/asdl.c \\\n $(MY"
},
{
"path": "build/instruments/build-python/build_stdlib.py",
"chars": 4080,
"preview": "import sys\nif sys.version_info[0] < 3:\n import ConfigParser as configparser\nelse:\n import configparser\nimport argp"
},
{
"path": "build/instruments/build-python/config.c.2.7",
"chars": 3988,
"preview": "#include <Python.h>\n\nextern void initposix(void);\nextern void initpwd(void);\nextern void initfcntl(void);\nextern void in"
},
{
"path": "build/instruments/build-python/config.c.3.5",
"chars": 4792,
"preview": "#include <Python.h>\n\nextern PyObject* PyInit_posix(void);\nextern PyObject* PyInit_pwd(void);\nextern PyObject* PyInit_fcn"
},
{
"path": "build/instruments/build-python/freeze_stdlib.py",
"chars": 9133,
"preview": "from __future__ import print_function\nimport sys\nif sys.version_info[0] < 3:\n import ConfigParser as configparser\nels"
},
{
"path": "build/instruments/build-python/frozen.c.2.7",
"chars": 199,
"preview": "/* Minimal frozen modules initializer */\n\n#include <Python.h>\n\nstatic struct _frozen _PyImport_FrozenModules[] = {\n {"
},
{
"path": "build/instruments/build-python/frozen.c.3.x",
"chars": 446,
"preview": "/* Minimal frozen modules initializer */\n\n#include <Python.h>\n#include <importlib.h>\n#include <importlib_external.h>\n\n\ns"
},
{
"path": "build/instruments/build-python/getpath.c.2.7",
"chars": 4438,
"preview": "#include <Python.h>\n#include <osdefs.h>\n\nstatic char EMPTY_STR[1] = {0};\nstatic char prog_path[MAXPATHLEN+1] = {0};\nstat"
},
{
"path": "build/instruments/build-python/getpath.c.3.x",
"chars": 5929,
"preview": "#include <Python.h>\n#include <osdefs.h>\n\nstatic wchar_t EMPTY_STR[1] = {0};\nstatic wchar_t* module_search_path = NULL;\ns"
},
{
"path": "build/instruments/build-python/host/CMakeLists.txt.2.7",
"chars": 9547,
"preview": "set(CMAKE_BUILD_TYPE RELEASE)\n\nif(UNIX AND NOT APPLE)\n set(LINUX TRUE)\nendif()\n\nif(WIN32)\n set(PYCORE_TARGET_NAME \"pyt"
},
{
"path": "build/instruments/build-python/host/CMakeLists.txt.3.5",
"chars": 9951,
"preview": "set(CMAKE_BUILD_TYPE RELEASE)\n\nif(UNIX AND NOT APPLE)\n set(LINUX TRUE)\nendif()\n\nif(WIN32)\n set(PYCORE_TARGET_NAME \"pyt"
},
{
"path": "build/instruments/build-python/host/callproc.c.2.7.mingw.patch",
"chars": 840,
"preview": "--- callproc.c\t2016-01-27 10:53:11.000000000 +0300\n+++ callproc.c.2.7.mingw\t2016-03-31 07:20:15.000000000 +0300\n@@ -779,"
},
{
"path": "build/instruments/build-python/host/callproc.c.3.5.mingw.patch",
"chars": 840,
"preview": "--- callproc.c\t2016-01-27 10:54:56.000000000 +0300\n+++ callproc.c.3.5.mingw\t2016-03-31 07:40:58.000000000 +0300\n@@ -754,"
},
{
"path": "build/instruments/build-python/host/config.c.2.7",
"chars": 4273,
"preview": "#include <Python.h>\n\n#ifdef _WIN32\nextern void initnt(void);\nextern void init_winreg(void);\nextern void initmsvcrt(void)"
},
{
"path": "build/instruments/build-python/host/config.c.3.5",
"chars": 5161,
"preview": "#include <Python.h>\n\n#ifdef _WIN32\nextern PyObject* PyInit_nt(void);\nextern PyObject* PyInit_msvcrt(void);\nextern PyObje"
},
{
"path": "build/instruments/build-python/host/dynload_win.c.2.7.mingw.patch",
"chars": 488,
"preview": "--- dynload_win.c\t2016-01-27 10:53:11.000000000 +0300\n+++ dynload_win.c.2.7.mingw\t2016-03-24 01:41:30.000000000 +0300\n@@"
},
{
"path": "build/instruments/build-python/host/dynload_win.c.3.5.mingw.patch",
"chars": 558,
"preview": "--- dynload_win.c\t2016-01-27 10:54:56.000000000 +0300\n+++ dynload_win.c.3.5.mingw\t2016-03-25 11:08:08.969689462 +0300\n@@"
},
{
"path": "build/instruments/build-python/host/getpath.c.2.7",
"chars": 6871,
"preview": "#include <Python.h>\n#include <osdefs.h>\n\n#ifdef _WIN32\n#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#else\n#include <"
},
{
"path": "build/instruments/build-python/host/getpath.c.3.x",
"chars": 8690,
"preview": "#include <Python.h>\r\n#include <osdefs.h>\r\n\r\n#ifdef _WIN32\r\n#define WIN32_LEAN_AND_MEAN\r\n#include <windows.h>\r\n#else\r\n#in"
},
{
"path": "build/instruments/build-python/host/interpreter-posix.c.2.7",
"chars": 2212,
"preview": "#include <stdio.h>\n#include <limits.h>\n#include <unistd.h>\n#include <string.h>\n#include <dlfcn.h>\n#include <stdlib.h>\n\n#"
},
{
"path": "build/instruments/build-python/host/interpreter-posix.c.3.x",
"chars": 4374,
"preview": "#include <stdio.h>\n#include <limits.h>\n#include <unistd.h>\n#include <string.h>\n#include <dlfcn.h>\n#include <wchar.h>\n#in"
},
{
"path": "build/instruments/build-python/host/interpreter-winapi.c.2.7",
"chars": 3500,
"preview": "#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#include <stdio.h>\n\n#ifndef PYTHON_DSO_REL_PATH\n#error PYTHON_DSO_REL_P"
},
{
"path": "build/instruments/build-python/host/interpreter-winapi.c.3.x",
"chars": 3506,
"preview": "#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#include <stdio.h>\n\n#ifndef PYTHON_DSO_REL_PATH\n#error PYTHON_DSO_REL_P"
},
{
"path": "build/instruments/build-python/host/posixmodule.c.2.7.mingw.patch",
"chars": 1449,
"preview": "--- posixmodule.c\t2016-01-27 10:53:11.000000000 +0300\n+++ posixmodule.c.2.7.mingw\t2016-03-24 01:22:16.392646043 +0300\n@@"
},
{
"path": "build/instruments/build-python/host/posixmodule.c.3.5.1.mingw.patch",
"chars": 1829,
"preview": "--- posixmodule.c\t2016-01-27 10:54:56.000000000 +0300\n+++ posixmodule.c.3.5.mingw\t2016-03-25 11:00:27.519578146 +0300\n@@"
},
{
"path": "build/instruments/build-python/host/posixmodule.c.3.5.x.mingw.patch",
"chars": 1325,
"preview": "--- posixmodule.c\t2016-06-26 00:38:38.000000000 +0300\n+++ posixmodule.c.3.5.mingw\t2016-09-10 10:40:23.000000000 +0300\n@@"
},
{
"path": "build/instruments/build-python/host/pyconfig.h.2.7.mingw.patch",
"chars": 373,
"preview": "--- pyconfig.h\t2016-01-27 10:53:11.000000000 +0300\n+++ pyconfig.h.2.7.mingw\t2016-03-28 11:46:24.000000000 +0300\n@@ -102,"
},
{
"path": "build/instruments/build-python/host/pyconfig.h.3.5.mingw.patch",
"chars": 373,
"preview": "--- pyconfig.h\t2016-01-27 10:54:56.000000000 +0300\n+++ pyconfig.h.3.5.mingw\t2016-03-28 11:46:48.000000000 +0300\n@@ -100,"
},
{
"path": "build/instruments/build-python/interpreter-static.c.2.7",
"chars": 828,
"preview": "#include <Python.h>\n\n#include <python_module__ctypes.h>\n#include <python_module__multiprocessing.h>\n#include <python_mod"
},
{
"path": "build/instruments/build-python/interpreter-static.c.3.x",
"chars": 1665,
"preview": "#include <Python.h>\n\n#include <python_module__ctypes.h>\n#include <python_module__multiprocessing.h>\n#include <python_mod"
},
{
"path": "build/instruments/build-python/pyconfig.h",
"chars": 598,
"preview": "#if defined(__ARM_ARCH_5TE__)\n#include \"pyconfig_armeabi.h\"\n#elif defined(__ARM_ARCH_7A__) && !defined(__ARM_PCS_VFP)\n#i"
},
{
"path": "build/instruments/build-python/site.py",
"chars": 5089,
"preview": "from __future__ import print_function\nimport sys\nimport os\nif sys.version_info < (3, 0):\n import __builtin__ as built"
},
{
"path": "build/instruments/build-python/stdlib.config",
"chars": 341,
"preview": "[CONFIG]\n\nIGNORE_DIR =\n site-packages\n curses\n dbm\n distutils\n idlelib\n lib2to3\n msilib\n pydoc_data\n tkinter\n "
},
{
"path": "build/instruments/build-python/sysconfig.py",
"chars": 4542,
"preview": "\"\"\"Access to Python's configuration information.\"\"\"\n\nfrom __future__ import print_function\nimport os\nimport sys\nimport o"
},
{
"path": "build/instruments/build-renderscript.sh",
"chars": 2106,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2014 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/build-sqlite3.sh",
"chars": 8973,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-support.sh",
"chars": 8678,
"preview": "#!/bin/sh\n#\n# Copyright (C) 2013 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the"
},
{
"path": "build/instruments/build-target-bash.sh",
"chars": 5049,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-cpulimit.sh",
"chars": 5038,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-ffmpeg.sh",
"chars": 5046,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-coreutils.sh",
"chars": 5469,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-grep.sh",
"chars": 5133,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-less.sh",
"chars": 5422,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-sed.sh",
"chars": 5117,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-tar.sh",
"chars": 5241,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-which.sh",
"chars": 5185,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-gnu-zip.sh",
"chars": 5264,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-htop.sh",
"chars": 5291,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-info-unzip.sh",
"chars": 5192,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-info-zip.sh",
"chars": 5135,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-ncurses.sh",
"chars": 5234,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-net-tools.sh",
"chars": 5196,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-openssh.sh",
"chars": 5586,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-openssl.sh",
"chars": 19932,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-prebuilts.sh",
"chars": 12366,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache Licen"
},
{
"path": "build/instruments/build-target-procps-ng.sh",
"chars": 5571,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-python.sh",
"chars": 57131,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-vim.sh",
"chars": 5479,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-target-x264.sh",
"chars": 5075,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/build-vendor-host-python.sh",
"chars": 41727,
"preview": "#!/bin/bash\n#\n# Copyright (c) 2011-2016 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary "
},
{
"path": "build/instruments/builder-funcs.sh",
"chars": 18281,
"preview": "#\n# Copyright (C) 2011, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "build/instruments/check-glibc.sh",
"chars": 1479,
"preview": "#!/bin/sh\n\n# Check if ELF depends on GLIBC/GLIBCXX symbols known to be absent from\n# libc.so in server\n\n# ToDo: GLBICXX "
},
{
"path": "build/instruments/cleanup-apps.sh",
"chars": 377,
"preview": "#!/bin/bash\n#\n# This is used to cleanup the project directories before making a commit or\n# a clean release. This will g"
},
{
"path": "build/instruments/common-build-host-funcs.sh",
"chars": 27366,
"preview": "# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "build/instruments/dev-defaults.sh",
"chars": 572,
"preview": "if [ -z \"$NDK\" ]; then\n THISFILE=\"\"\n if [ \"x$BASH_VERSION\" != \"x\" ]; then\n THISFILE=${BASH_SOURCE[0]}\n e"
},
{
"path": "build/instruments/dev-platform-compress.sh",
"chars": 3880,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/dev-platform-expand-all.sh",
"chars": 2058,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/dev-platform-expand.sh",
"chars": 7225,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/dev-platform-import.sh",
"chars": 14965,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/dev-system-import.sh",
"chars": 20889,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/find-case-duplicates.sh",
"chars": 1403,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2009, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/gen-platforms.sh",
"chars": 32824,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/gen-system-symbols.sh",
"chars": 6483,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/gen-toolchain-wrapper.sh",
"chars": 5802,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2012 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/make-release.sh",
"chars": 11241,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010, 2014, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/ndk-ccache-g++.sh",
"chars": 45,
"preview": "#!/bin/bash\n$NDK_CCACHE $NDK_CCACHE_CXX \"$@\"\n"
},
{
"path": "build/instruments/ndk-ccache-gcc.sh",
"chars": 44,
"preview": "#!/bin/bash\n$NDK_CCACHE $NDK_CCACHE_CC \"$@\"\n"
},
{
"path": "build/instruments/ndk-common.sh",
"chars": 26402,
"preview": "# Copyright (C) 2009, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2."
},
{
"path": "build/instruments/package-platforms.sh",
"chars": 2295,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2011, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Version "
},
{
"path": "build/instruments/package-release.sh",
"chars": 26903,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2009-2010, 2014, 2015, 2016 The Android Open Source Project\n#\n# Licensed under the Apache "
},
{
"path": "build/instruments/patch-sources.sh",
"chars": 2568,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "build/instruments/prebuilt-common.sh",
"chars": 45706,
"preview": "# Common functions for all prebuilt-related scripts\n# This is included/sourced by other scripts\n#\n\n# ensure stable sort "
},
{
"path": "build/instruments/rebuild-all-prebuilt.sh",
"chars": 5728,
"preview": "#!/bin/bash\n#\n# Copyright (C) 2010, 2014, 2015 The Android Open Source Project\n#\n# Licensed under the Apache License, Ve"
},
{
"path": "build/instruments/regenerate-platforms",
"chars": 532,
"preview": "#!/bin/bash\n\ncd $(dirname $0)/../../ || exit 1\n\nNDK=$(pwd)\nexport NDK\n\nrun()\n{\n echo \"## COMMAND: $@\"\n \"$@\"\n}\n\nech"
},
{
"path": "build/instruments/toolchain-licenses/COPYING",
"chars": 18002,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
},
{
"path": "build/instruments/toolchain-licenses/COPYING.LIB",
"chars": 26527,
"preview": "\n GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 1"
},
{
"path": "build/instruments/toolchain-licenses/COPYING.RUNTIME",
"chars": 3324,
"preview": "GCC RUNTIME LIBRARY EXCEPTION\n\nVersion 3.1, 31 March 2009\n\nCopyright (C) 2009 Free Software Foundation, Inc. <http://fsf"
},
{
"path": "build/instruments/toolchain-licenses/COPYING3",
"chars": 35147,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "build/instruments/toolchain-licenses/COPYING3.LIB",
"chars": 7639,
"preview": "\t\t GNU LESSER GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software"
},
{
"path": "build/instruments/toolchain-patches-host/mingw-w64/mingw-w64-widl.patch",
"chars": 3388,
"preview": "Index: mingw-w64-headers/Makefile.am\n===================================================================\n--- mingw-w64-h"
},
{
"path": "build/instruments/unpack-build-cache",
"chars": 2661,
"preview": "#!/bin/bash\n\n# Copyright (c) 2011-2015 CrystaX.\n# All rights reserved.\n#\n# Redistribution and use in source and binary f"
},
{
"path": "build/instruments/unwanted-symbols/arm/libc.so.functions.txt",
"chars": 243,
"preview": "atexit\ndlmalloc\nfree_malloc_leak_info\nget_malloc_leak_info\n__srget\n__swbuf\n__srefill\n__swsetup\n__sflags\n__sfp\n__sinit\n__"
},
{
"path": "build/instruments/unwanted-symbols/arm/libc.so.variables.txt",
"chars": 31,
"preview": "__dso_handle\n__sdidinit\n__sglue"
},
{
"path": "build/instruments/unwanted-symbols/arm/libgcc.a.functions.txt",
"chars": 24657,
"preview": "__absvdi2\n__absvsi2\n__adddf3\n__addsf3\n__addvdi3\n__addvsi3\n__aeabi_cdcmpeq\n__aeabi_cdcmple\n__aeabi_cdrcmple\n__aeabi_cfcmp"
},
{
"path": "build/instruments/unwanted-symbols/arm/libgcc.a.variables.txt",
"chars": 53,
"preview": "__clz_tab\n__CTOR_LIST__\n__DTOR_LIST__\n__popcount_tab\n"
},
{
"path": "build/instruments/unwanted-symbols/arm64/libc.so.functions.txt",
"chars": 963,
"preview": "android_getaddrinfofornet\nandroid_gethostbyaddrfornet\nandroid_gethostbynamefornet\n__android_set_abort_message\narc4random"
},
{
"path": "build/instruments/unwanted-symbols/arm64/libc.so.variables.txt",
"chars": 168,
"preview": "__atexit\n__atexit_invalid\n_C_ctype_\n_C_tolower_\n_C_toupper_\ngMallocLeakZygoteChild\n__isthreaded\n__sdidinit\n__sglue\n__sys"
},
{
"path": "build/instruments/unwanted-symbols/arm64/libgcc.a.functions.txt",
"chars": 1728,
"preview": "__aarch64_sync_cache_range\n__absvdi2\n__absvsi2\n__absvti2\n__addtf3\n__addvdi3\n__addvsi3\n__addvti3\n__ashlti3\n__ashrti3\n__bs"
},
{
"path": "build/instruments/unwanted-symbols/arm64/libgcc.a.variables.txt",
"chars": 53,
"preview": "__clz_tab\n__CTOR_LIST__\n__DTOR_LIST__\n__popcount_tab\n"
},
{
"path": "build/instruments/unwanted-symbols/mips/libc.so.functions.txt",
"chars": 243,
"preview": "atexit\ndlmalloc\nfree_malloc_leak_info\nget_malloc_leak_info\n__srget\n__swbuf\n__srefill\n__swsetup\n__sflags\n__sfp\n__sinit\n__"
},
{
"path": "build/instruments/unwanted-symbols/mips/libc.so.variables.txt",
"chars": 18,
"preview": "__sdidinit\n__sglue"
},
{
"path": "build/instruments/unwanted-symbols/mips/libgcc.a.functions.txt",
"chars": 4326,
"preview": "__absvdi2\n__absvsi2\n__adddf3\n__addsf3\n__addvdi3\n__addvsi3\n__ashldi3\n__ashrdi3\n__bswapdi2\n__bswapsi2\n__clear_cache\n__clrs"
},
{
"path": "build/instruments/unwanted-symbols/mips/libgcc.a.variables.txt",
"chars": 49,
"preview": "__clz_tab\n__popcount_tab\n__thenan_df\n__thenan_sf\n"
},
{
"path": "build/instruments/unwanted-symbols/mips64/libc.so.functions.txt",
"chars": 963,
"preview": "android_getaddrinfofornet\nandroid_gethostbyaddrfornet\nandroid_gethostbynamefornet\n__android_set_abort_message\narc4random"
},
{
"path": "build/instruments/unwanted-symbols/mips64/libc.so.variables.txt",
"chars": 168,
"preview": "__atexit\n__atexit_invalid\n_C_ctype_\n_C_tolower_\n_C_toupper_\ngMallocLeakZygoteChild\n__isthreaded\n__sdidinit\n__sglue\n__sys"
},
{
"path": "build/instruments/unwanted-symbols/mips64/libgcc.a.functions.txt",
"chars": 3557,
"preview": "__absvdi2\n__absvsi2\n__absvti2\n__adddf3\n__addsf3\n__addtf3\n__addvdi3\n__addvsi3\n__addvti3\n__ashlti3\n__ashrti3\n__bswapdi2\n__"
},
{
"path": "build/instruments/unwanted-symbols/mips64/libgcc.a.variables.txt",
"chars": 25,
"preview": "__clz_tab\n__popcount_tab\n"
},
{
"path": "build/instruments/unwanted-symbols/x86/libc.so.functions.txt",
"chars": 236,
"preview": "dlmalloc\nfree_malloc_leak_info\nget_malloc_leak_info\n__srget\n__swbuf\n__srefill\n__swsetup\n__sflags\n__sfp\n__sinit\n__smakebu"
},
{
"path": "build/instruments/unwanted-symbols/x86/libc.so.variables.txt",
"chars": 18,
"preview": "__sdidinit\n__sglue"
},
{
"path": "build/instruments/unwanted-symbols/x86/libgcc.a.functions.txt",
"chars": 9163,
"preview": "__absvdi2\n__absvsi2\n__addtf3\n__addvdi3\n__addvsi3\n__alloca\n__ashldi3\n__ashrdi3\n__bid128_abs\n__bid128_add\n__bid128_class\n_"
},
{
"path": "build/instruments/unwanted-symbols/x86/libgcc.a.variables.txt",
"chars": 1507,
"preview": "__bid_char_table2\n__bid_char_table3\n__bid_convert_table\n__bid_estimate_bin_expon\n__bid_estimate_decimal_digits\n__bid_Ex1"
},
{
"path": "build/instruments/unwanted-symbols/x86_64/libc.so.functions.txt",
"chars": 963,
"preview": "android_getaddrinfofornet\nandroid_gethostbyaddrfornet\nandroid_gethostbynamefornet\n__android_set_abort_message\narc4random"
},
{
"path": "build/instruments/unwanted-symbols/x86_64/libc.so.variables.txt",
"chars": 168,
"preview": "__atexit\n__atexit_invalid\n_C_ctype_\n_C_tolower_\n_C_toupper_\ngMallocLeakZygoteChild\n__isthreaded\n__sdidinit\n__sglue\n__sys"
}
]
// ... and 3368 more files (download for full content)
About this extraction
This page contains the full source code of the crystax/android-platform-ndk GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3568 files (25.6 MB), approximately 6.9M tokens, and a symbol index with 15429 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.