[all-commits] [llvm/llvm-project] 658a1b: [builtins] Add COMPILER_RT_BUILTINS_HIDE_SYMBOLS

Ryan Prichard via All-commits all-commits at lists.llvm.org
Thu Jan 7 17:56:22 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 658a1be76ba2e9880bc1dd530869a45be452344c
      https://github.com/llvm/llvm-project/commit/658a1be76ba2e9880bc1dd530869a45be452344c
  Author: Ryan Prichard <rprichard at google.com>
  Date:   2021-01-07 (Thu, 07 Jan 2021)

  Changed paths:
    M compiler-rt/lib/builtins/CMakeLists.txt

  Log Message:
  -----------
  [builtins] Add COMPILER_RT_BUILTINS_HIDE_SYMBOLS

On Android, when the builtins are linked into a binary, they are
typically linked using -Wl,--exclude-libs so that the symbols aren't
reexported. For the NDK, compiler-rt's default behavior (build the
builtins archive with -fvisibility=hidden) is better so that builtins
are hidden even without -Wl,--exclude-libs.

Android needs the builtins with non-hidden symbols only for a special
case: for backwards compatibility with old binaries, the libc.so and
libm.so DSOs in the platform need to export some builtins for arm32 and
32-bit x86. See D56977.

Control the behavior with a new flag,
`COMPILER_RT_BUILTINS_HIDE_SYMBOLS`, that behaves similarly to the
`*_HERMETIC_STATIC_LIBRARY` in libunwind/libcxx/libcxxabi, so that
Android can build a special builtins variant for libc.so/libm.so.

Unlike the hermetic flags for other projects, this new flag is enabled
by default.

Reviewed By: compnerd, MaskRay

Differential Revision: https://reviews.llvm.org/D93431




More information about the All-commits mailing list