summaryrefslogtreecommitdiff
path: root/libm
AgeCommit message (Collapse)Author
2021-04-26Replace llndk_library with llndk clause in cc_libraryColin Cross
Remove the vestigial llndk_library and replace it with properties in the llndk clause of the implementation cc_library. In order to reduce duplication of the arch-specific headers used by the implementation and LLNDK, rename libc_headers_arch to libc_llndk_headers and hoist the "include" directory out of it, since that directory is preproccessed separately for LLNDK libraries. Bug: 170784825 Test: m checkbuild Test: compare out/soong/build.ninja Change-Id: I75f0ff9129d910640da55eee6a6387467e6e4a9d
2021-02-19Add LOCAL_LICENSE_KINDS to bionicBob Badour
Added SPDX-license-identifier-Apache-2.0 to: apex/Android.bp libdl/Android.bp tools/Android.bp tools/versioner/Android.bp tools/versioner/src/Android.bp Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to: benchmarks/Android.bp benchmarks/linker_relocation/gen/Android.bp libc/malloc_debug/Android.bp libc/system_properties/Android.bp tests/Android.bp tests/libs/Android.bp tests/libs/Android.build.dlext_testzip.mk tests/make_fortify_compile_test.mk Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD SPDX-license-identifier-ISC SPDX-license-identifier-MIT legacy_notice legacy_unencumbered to: libc/Android.bp Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD SPDX-license-identifier-MIT legacy_unencumbered to: libm/Android.bp Added SPDX-license-identifier-Apache-2.0 legacy_unencumbered to: libc/tools/Android.bp Added SPDX-license-identifier-BSD to: benchmarks/linker_relocation/Android.bp benchmarks/spawn/Android.bp libc/async_safe/Android.bp libc/malloc_hooks/Android.bp libfdtrack/Android.bp linker/Android.bp tests/headers/Android.bp tests/headers/posix/Android.bp Bug: 68860345 Bug: 151177513 Bug: 151953481 Test: m all Exempt-From-Owner-Approval: janitorial work Change-Id: Ib05bcaa276b3aa71a7654ccbe8e67e1f16aec9f3
2021-02-16Fix/update notices.Elliott Hughes
Auto-generate NOTICE files for all the directories, and for each one individually rather than mixing libc and libm together. Test: N/A Change-Id: I7e251194a8805c4ca78fcc5675c3321bcd5abf0a
2021-02-04Add -Wno-ignored-pragmas.Chih-Hung Hsieh
* https://reviews.llvm.org/D90316 changed warning on FENV_ACCESS pragma from unknown to ignored. Existing -Wno-unknown-pragmas cannot suppress the new -Wignored-pragmas. Bug: 178516148 Test: make with WITH_TIDY=1 Change-Id: I783feef35324ef43946efca844cd944410875bfa
2021-02-02Merge changes from topic "builtins-exported"Ryan Prichard
* changes: Use exported variants of arm32/x86 builtins Fix -Wl,--exclude-libs typo: x86->i686
2021-01-28Use exported variants of arm32/x86 builtinsRyan Prichard
For backwards compatibility (e.g. with old apps), arm32 libc.so and libm.so export some of the builtins. On 32-bit x86, libc.so also exports some of the builtins. The non-exported variant of the builtins will eventually have hidden symbols but doesn't currently because D93431 hasn't been merged into our toolchain yet. See: - https://reviews.llvm.org/D93431 - I44ec79728db92c089e2f39823c35b6f97d24c1ab in toolchain/llvm_android Bug: http://b/153025717 Test: bionic unit tests Change-Id: Ic489cb06a07ef61412502fc65a21b0cf630c11ed
2021-01-26Sync libm with upstream FreeBSD.Elliott Hughes
Upstream SHA 78599c32efed3247d165302a1fbe8d9203e38974. Test: treehugger Change-Id: Ib103d211315e320df89a6f0bcb30cd8ba67dd603
2021-01-19Don't set native_bridge_supported: true for ndk librariesColin Cross
Native bridge modules will never compile against stubs, remove native_bridge_supported: true. Test: m checkbuild Change-Id: I0eb93fe1a2c3f6ca34ce4dab17edda8807132ce8
2020-10-29Merge "Make vendor_ramdisk_available."Yifan Hong
2020-10-27Make vendor_ramdisk_available.Yifan Hong
Test: pass Bug: 156098440 Change-Id: I8fe2deb8fa3b24c227202be02d8af648629cffeb
2020-10-19Make the connection between implementation and llndk_library explicitColin Cross
Instead of assuming a module with the .llndk suffix exists, add an llndk_stubs property to every cc_library module that has a corresponding llndk_library. Also rename the llndk_library to have an explicit .llndk suffix. Bug: 170784825 Test: no changes to build.ninja (excluding comments) or Android-${TARGET_PRODUCT}.mk Change-Id: Ib5453472a09ebc64818ceb69bcbe1184720ce86a
2020-09-29No global ThinLTO for bionicYi Kong
There are multiple build breakages with bionic when we enable ThinLTO globally. Opt bionic out of ThinLTO for now. #global-thinlto-opt-out Test: TreeHugger Bug: 169004486 Change-Id: I546a8074f9c3e0ddbd01d3b7cd730e215e3c0c49
2020-09-25Merge changes from topic "arm64_branch-protection"Elliott Hughes
* changes: libc: Add Armv8.3-A PAuth and Armv8.5-A BTI compatibility to *.S Update crtbegin.c and crt*.S to support Armv8.5-A BTI libm: Add Armv8.3-A PAuth and Armv8.5-A BTI support to assembly files libc: Prepare support for Armv8.3-A PAuth and Armv8.5-A BTI in *.S
2020-09-24Merge "Avoid explicit use of "10000" in build files."Dan Albert
2020-09-04libm: Add Armv8.3-A PAuth and Armv8.5-A BTI support to assembly filesTamas Petz
This change adds both Armv8.3-A Pointer Authentication and Armv8.5-A BTI support to *.S files. Tests: Tested on FVP with BTI enabled Change-Id: I82750afcbc950a91584463fbc979c2c35d41916a
2020-08-21Fix issues with .note.GNU-stack section directives.Stephen Hines
bionic/libm/x86_64/s_log1p.S:809:2: error: changed section type for .note.GNU-stack, expected: 0x1 .section .note.GNU-stack, "" ^ These assembly sources are missing @progbits to set the section flags correctly. Without it, they end up denoting a different section type. By adding the @progbits explicitly, we see the same section flags with readelf. [ 4] .note.GNU-stack   PROGBITS        0000000000000000 000593 000000 00      0   0  1 Bug: http://b/155835175 Test: m for aosp_x86_64 Change-Id: Ifff35d35f5f9ded5938e88677b18805809820e9f
2020-08-13Avoid explicit use of "10000" in build files.Dan Albert
Test: treehugger Bug: None Change-Id: Iab713c5f4b53665f8224b3857beaa6a1d19f8d69
2020-08-12Show coverage for libm too.Elliott Hughes
Test: manual Change-Id: Idf50d918ad53ff2d5a3097dfcbd5a392d6f0ed31
2020-02-27Add 29 to stubs.versions of libc/libdl/libmJooyung Han
Stubs of version 29 should be provided to those APEX modules targeting previous SDK release. Bug: 145796956 Test: m Change-Id: I9454fbf81377aba25e75a6fdfc77cbb070eaadde
2020-02-11Clean up the math headers.Elliott Hughes
I had hoped that this would then let us remove more of the "introduced in" annotations, but it looks like that's not really going to happen until the NDK's minimum supported API is 21. Also remove a .c file that wasn't referenced anywhere. Test: treehugger Change-Id: I8b4a61c082293f8445195a4fa5ee30595d70444e
2020-01-30Fully disable clang format where needed.Christopher Ferris
Even with formatting off, clang still tries to rearrange the include files or the using statements, so disable that too. Test: Verified that the include directories are not rearranged. Change-Id: I991a1b2bfa94a8202c5a486664658d654f1c7811
2020-01-29Link .clang-format file to system/core one.Christopher Ferris
Use the .clang-format-2 found in system/core instead of this which is not actually being used. Also, enable clang-format running by default. All upstream directories are marked as ignoring formatting so that their source files are not modified. Test: NA Change-Id: Icee6030f373fa5f072df162f97e6f34320e3d89a
2020-01-22Make ramdisk_available.Yifan Hong
Test: pass Bug: 147347110 Change-Id: I142311a7558a19d209bcd63207a88e12cf6f130e
2020-01-07Track library name change.Elliott Hughes
Test: treehugger Change-Id: Ief93c2a18144ee2da134a4800e1965b91be7f32c
2019-11-15Stop exporting certain deprecated unwinder symbols from libc.so and libm.so.Peter Collingbourne
We have data that indicates that we no longer need to export the libgcc unwinder's implementation detail symbols from libc.so, as well as the entire unwinder interface from libm.so, so stop exporting them. Bug: 144430859 Change-Id: Iebb591c4a121abe6368d9854ec96819abe70a006
2019-11-12Link libgcc_stripped into libc.so and libm.so with --whole-archive on ARM.Peter Collingbourne
This library was previously being statically linked into both libraries as a consequence of the relocation to __aeabi_unwind_cpp_prX present in most object files. However, after LLVM commit 1549b469, we no longer emit these relocations on Android, so we need to link the library explicitly with --whole-archive. The intent is to eventually stop linking libgcc into these libraries altogether, but for now, we need to keep linking them in order to avoid breaking the build. Change-Id: I275109527b7cbd6c4247b3fe348975d720626273
2019-10-24libm: sync with upstream FreeBSD.Elliott Hughes
Bug: http://b/143311272 Test: ran tests Change-Id: I0fbf94fb5cd13e64a55957d0f951757746d0367a
2019-10-09Merge "Remove unused -D from libm build."Elliott Hughes
2019-10-08Remove unused -D from libm build.Elliott Hughes
Test: treehugger Change-Id: I3dd9625790f56b49fabd3fa7b58aab23bffa9dba
2019-10-07Restrict the availability of the bionic libsJiyong Park
The bionic libs are now restricted to be in the runtime APEX and the platform (for bootstrapping). It can still be referenced from other APEXes but can't be included there. Bug: 139870423 Test: m Change-Id: I7f99eef27ccf75844ca5c9a7ea866496841b738f
2019-09-17libm: track arm-optimized-routines changes.Elliott Hughes
Test: builds Change-Id: I194ba29a2cabbf2fb2ef5c14ac6ad6252b43c76d
2019-08-27libm: remove unused x86/x86_64 assembler.Elliott Hughes
Test: treehugger Change-Id: Icefa51fe2d204f0ad5700fd67649a1d4b1e6a38f
2019-07-15SSE4.1 is part of the Android x86/x86-64 ABI.Elliott Hughes
We shouldn't be treating this as a special variant. Test: builds Change-Id: I80722f941b5aefe34d777db329453cbedf249620
2019-05-30Change SANITIZE_TARGET refs from 'coverage' to 'fuzzer'.Mitch Phillips
Cleanup of references to 'coverage' in build files. Part of a larger cleanup to make fuzzing work again in the Android build tree. Also fixed a test issue with emulated TLS with the new changes, and removed libc.so fuzzer support until a linked bug is fixed (b/132640749). Bug: 121042685 Test: With all patches in the bug merged: mmma bionic Change-Id: I592352fe9210ff811a2660a88cbbfe48d70a1e57 Merged-In: I592352fe9210ff811a2660a88cbbfe48d70a1e57
2019-05-06Enable native_bridge_supportdimitry
Enable native bridge support for bionic libraries. Makes it possible to use them in binaries for translated architectures. Bug: http://b/77159578 Test: make Change-Id: Iccd4ad7aecfa5260cc15f09ca975d2e18987278a
2019-03-14Don't install *.mountpoint targetsJiyong Park
The *.mountpoint targets that installs /bionic/lib/lib*.so and /bionic/bin/linker* are no longer needed. Now, /system/lib/lib*.so and /system/bin/linker* are simply symlinks to the corresponding files in the runtime apex. For example, /system/lib/libc.so -> /apex/com.android.runtime/lib/bionic/libc.so This is made possible because we now activate APEXes even before the data partition is mounted. Before the data partition mounting, the APEXes from the system partition are ativated. After the data partition is mounted, updated APEXes in the partition (if any) are activated. As a result, the symlink always points to the valid path regardless of whether /data is mounted or not. Bug: 125549215 Test: device boots Change-Id: Ie7d83686abe00b3c436f9f9db75d4244200a0fc9
2019-02-22Turn on XOM for libmYi Kong
Test: bionic-unit-tests Bug: 122993571 Bug: 123241361 Change-Id: I070d3a2627ee64124ff415a646ddfbcc767b54d1
2019-02-22Switch libm to libcrt.builtinsYi Kong
After switching libm from libgcc to libcrt.builtins, some of the symbols are no longer getting included in libm, causing the compiler to complain about missing symbols from the version script. Explicitly export them in libc (since libm depends on libc). Bug: 122993571 Test: m checkbuild Test: bionic-unit-tests Change-Id: Ie91765874d20df605f557b1a8c4236619553c549
2019-02-12Use no_libcrt property instead of hard coding projects to excludeYi Kong
Test: m checkbuild Change-Id: If34c72d37dc4077ca3e83135391256bc53d295b5
2019-02-04libm: sync with upstream FreeBSD.Elliott Hughes
Test: ran tests Change-Id: I16b5930b0dc652ceac60d8ed1d57c6126c74699c
2019-01-31Add bionic mount points under /bionicJiyong Park
This change adds following files and symlinks: Files: /bionic/lib[64]/lib{c|dl|m}.so /bionic/bin/linker[64] Symlinks: /system/lib[64]/lib{c|dl|m}.so -> /bionic/lib[64]/lib{c|dl|m}.so /system/bin/linker[64] -> /bionic/bin/linker[64] /system/bin/linker_asan[64] -> /bionic/bin/linker[64] The files serve as mount points for either the bootstrap Bionic or the default Bionic from the runtime APEX. init does the bind-mounting during booting. The symlinks are there to not change the ordinary paths to the bionic files; there are many places that the paths are implied or hard-coded, e.g., dlopen("/system/lib/libc.so") or DT_INTERP pointing to /system/bin/linker in the vendor prebuilts. Bug: 120266448 Test: m blueline, cf_x86, aosp_arm The aforementioned files and symlinks are found Change-Id: I97e38c29409ac0610dde285db8df6e94a7930094
2019-01-04Add stubs variants for bionic libsJiyong Park
Bionic libs are part of the runtime APEX (com.android.runtime). In order to be able to update the runtime APEX independetly from the platform, we have to prevent things outside of the APEX from using bionic symbols that are not guaranteed to be stable. Otherwise, platform could break when a symbol is removed from the libs via the APEX update. To achive this goal, this change adds stubs variant to the bionic libs. With this, things outside of the runtime APEX (i.e. other APEXes and the platform) are built with the stubs variants that provide only the symbols that are guaranteed to be stable. The set of symbols are basically the same as the symbols available to NDK clients. However, there are a few additional symbols that are not available for NDK but should be made available for platform components. They are marked with "# apex" tag. Symbols with that tag are not exposed to apps (via NDK stubs) or vendors (via LLNDK stubs). Note that the stubs is a build-time only artifact. It is used just to break the build when private symbols are used outside of the runtime APEX. At runtime, the real library in the APEX is used. Bug: 120266448 Test: m Test: m bionic-unit-tests Change-Id: I7b8d75830c81d7d7d54e2fca21a85b3417531b47
2018-12-17Generate the per-arch .map files at build time.Elliott Hughes
We shouldn't be checking in these generated files... Bug: N/A Test: ran tests Change-Id: Ib67c1ba839eacd7acebd713e1dcd4dd2c25d67f0
2018-12-13Suppress cert-dcl16-c clang-tidy warningsChih-Hung Hsieh
Bug: 120614316 Test: make with WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=-*,cert-dcl16-c Change-Id: Iab21f41806d81268ebc13bb9605920b4b8e825c9
2018-11-27Disable XOM in linker, libc, and libm.Ivan Lozano
These modules have issues running with execute-only memory. Disable it in them until we can resolve the issues. Bug: 77958880 Test: No more XOM-related crashes in these binaries Change-Id: Ie6c957731155566c2bbe7dbb7a91b9583d9aff93
2018-09-27Merge "Use builtins for ceil/floor/rint/trunc on arm64"Elliott Hughes
2018-09-05Revert "arm64: Use builtin for nearbyintf/nearbyint"Elliott Hughes
This reverts commit 35d8ba303b3b21f25ce66d8602ed36672145de3f. Reason for revert: caused test failures... [ FAILED ] math_h_force_long_double.nearbyint (15 ms) bionic/tests/math_test.cpp:(1080) Failure in test math_h_force_long_double.nearbyint Value of: (fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) == 0 Actual: false Expected: true math_h_force_long_double.nearbyint exited with exitcode 1. Change-Id: If8e3a3dfbd0e7ee071e5187f96749b6acbb5fc05
2018-09-04arm64: Use builtin for nearbyintf/nearbyintAdhemerval Zanella
This allows compiler optimize both calls to a single frinti. Test: Builds, ran unit tests on arm64. Change-Id: Ie59ac11a419281836a8051ecda26a5c7b72f3dea
2018-08-30Remove ARM/MIPS fenv duplication.Elliott Hughes
Bug: http://b/32709207 Test: ran tests Change-Id: I58d354e9f8b1e6023427ba271bf39e4e24b7f8ab
2018-08-21Use --Bsymbolic-functions on libmAdhemerval Zanella
This option removes mostly of the PLT calls for internal symbol, they are routed to internal entrypoint instead. It should be safe for libm, since symbol interposing is not supported. For arm64 the remaining PLTs are __cxa_finalize, ldexp, __stack_chk_fail, isnanf, memset, and isxdigit. All of them are expected (clang (r339432) does not have optimization for isnan/isinf inline expansion and these symbols are defined on libc.so). Test: Builds, ran unit tests on arm and x86. Change-Id: I1eb1a9f2b30f21788d9ad8639b4a0a15f6d0566a