| # Copyright 2019 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/cpp/library_headers.gni") |
| |
| library_headers("headers") { |
| headers = [ |
| "runtime/thread.h", |
| "runtime/tls.h", |
| ] |
| public_deps = [ "//src/zircon/lib/zircon:headers" ] |
| } |
| |
| static_library("runtime") { |
| public_deps = [ ":headers" ] |
| sources = [ "thread.cc" ] |
| deps = [ |
| "//sdk/lib/stdcompat", |
| "//src/lib/elfldltl", |
| "//src/zircon/lib/zircon", |
| "//zircon/system/ulib/zircon-internal", |
| ] |
| |
| # This code is used in early startup, where safe-stack is not ready yet. |
| configs += [ "//build/config/sanitizers:no_sanitizers" ] |
| |
| # This might be necessary if something from stdcompat didn't get inlined. A |
| # libc++ ABI symbol that's supposedly the same might be COMDAT'd with another |
| # TU's version that didn't disable the sanitizers. |
| defines = [ "_LIBCPP_HIDE_FROM_ABI_PER_TU=1" ] |
| |
| if (zircon_toolchain != false) { |
| # Make sure the thread_trampoline function has a frame pointer so that |
| # user-visible thread backtraces are consistent across collection methods. |
| configs += [ "//build/config:default_frame_pointers" ] |
| configs -= [ "//build/config:default_frame_pointers" ] |
| configs += [ "//build/config:frame_pointers" ] |
| } |
| } |