BUILD.bazel 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. #
  2. # Copyright 2017 The Abseil Authors.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # https://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. #
  16. load(
  17. "//absl:copts/configure_copts.bzl",
  18. "ABSL_DEFAULT_COPTS",
  19. "ABSL_DEFAULT_LINKOPTS",
  20. "ABSL_TEST_COPTS",
  21. )
  22. package(
  23. default_visibility = ["//visibility:public"],
  24. features = [
  25. "header_modules",
  26. "layering_check",
  27. "parse_headers",
  28. ],
  29. )
  30. licenses(["notice"])
  31. cc_library(
  32. name = "stacktrace",
  33. srcs = [
  34. "internal/stacktrace_aarch64-inl.inc",
  35. "internal/stacktrace_arm-inl.inc",
  36. "internal/stacktrace_config.h",
  37. "internal/stacktrace_emscripten-inl.inc",
  38. "internal/stacktrace_generic-inl.inc",
  39. "internal/stacktrace_powerpc-inl.inc",
  40. "internal/stacktrace_riscv-inl.inc",
  41. "internal/stacktrace_unimplemented-inl.inc",
  42. "internal/stacktrace_win32-inl.inc",
  43. "internal/stacktrace_x86-inl.inc",
  44. "stacktrace.cc",
  45. ],
  46. hdrs = ["stacktrace.h"],
  47. copts = ABSL_DEFAULT_COPTS,
  48. linkopts = ABSL_DEFAULT_LINKOPTS,
  49. deps = [
  50. ":debugging_internal",
  51. "//absl/base:config",
  52. "//absl/base:core_headers",
  53. "//absl/base:dynamic_annotations",
  54. "//absl/base:raw_logging_internal",
  55. ],
  56. )
  57. cc_test(
  58. name = "stacktrace_test",
  59. srcs = ["stacktrace_test.cc"],
  60. copts = ABSL_TEST_COPTS,
  61. linkopts = ABSL_DEFAULT_LINKOPTS,
  62. deps = [
  63. ":stacktrace",
  64. "//absl/base:core_headers",
  65. "@com_google_googletest//:gtest",
  66. "@com_google_googletest//:gtest_main",
  67. ],
  68. )
  69. cc_library(
  70. name = "symbolize",
  71. srcs = [
  72. "symbolize.cc",
  73. "symbolize_darwin.inc",
  74. "symbolize_elf.inc",
  75. "symbolize_emscripten.inc",
  76. "symbolize_unimplemented.inc",
  77. "symbolize_win32.inc",
  78. ],
  79. hdrs = [
  80. "internal/symbolize.h",
  81. "symbolize.h",
  82. ],
  83. copts = ABSL_DEFAULT_COPTS,
  84. linkopts = ABSL_DEFAULT_LINKOPTS + select({
  85. "//absl:msvc_compiler": ["-DEFAULTLIB:dbghelp.lib"],
  86. "//absl:clang-cl_compiler": ["-DEFAULTLIB:dbghelp.lib"],
  87. "//absl:mingw_compiler": [
  88. "-DEFAULTLIB:dbghelp.lib",
  89. "-ldbghelp",
  90. ],
  91. "//conditions:default": [],
  92. }),
  93. deps = [
  94. ":debugging_internal",
  95. ":demangle_internal",
  96. "//absl/base",
  97. "//absl/base:config",
  98. "//absl/base:core_headers",
  99. "//absl/base:dynamic_annotations",
  100. "//absl/base:malloc_internal",
  101. "//absl/base:raw_logging_internal",
  102. "//absl/strings",
  103. ],
  104. )
  105. cc_test(
  106. name = "symbolize_test",
  107. srcs = ["symbolize_test.cc"],
  108. copts = ABSL_TEST_COPTS + select({
  109. "//absl:msvc_compiler": ["/Z7"],
  110. "//absl:clang-cl_compiler": ["/Z7"],
  111. "//conditions:default": [],
  112. }),
  113. linkopts = ABSL_DEFAULT_LINKOPTS + select({
  114. "//absl:msvc_compiler": ["/DEBUG"],
  115. "//absl:clang-cl_compiler": ["/DEBUG"],
  116. "//conditions:default": [],
  117. }),
  118. deps = [
  119. ":stack_consumption",
  120. ":symbolize",
  121. "//absl/base",
  122. "//absl/base:config",
  123. "//absl/base:core_headers",
  124. "//absl/log",
  125. "//absl/log:check",
  126. "//absl/memory",
  127. "//absl/strings",
  128. "@com_google_googletest//:gtest",
  129. ],
  130. )
  131. cc_library(
  132. name = "examine_stack",
  133. srcs = [
  134. "internal/examine_stack.cc",
  135. ],
  136. hdrs = [
  137. "internal/examine_stack.h",
  138. ],
  139. copts = ABSL_DEFAULT_COPTS,
  140. linkopts = ABSL_DEFAULT_LINKOPTS,
  141. visibility = ["//absl/log/internal:__pkg__"],
  142. deps = [
  143. ":stacktrace",
  144. ":symbolize",
  145. "//absl/base:config",
  146. "//absl/base:core_headers",
  147. "//absl/base:raw_logging_internal",
  148. ],
  149. )
  150. cc_library(
  151. name = "failure_signal_handler",
  152. srcs = ["failure_signal_handler.cc"],
  153. hdrs = ["failure_signal_handler.h"],
  154. copts = ABSL_DEFAULT_COPTS,
  155. linkopts = ABSL_DEFAULT_LINKOPTS,
  156. deps = [
  157. ":examine_stack",
  158. ":stacktrace",
  159. "//absl/base",
  160. "//absl/base:config",
  161. "//absl/base:core_headers",
  162. "//absl/base:raw_logging_internal",
  163. ],
  164. )
  165. cc_test(
  166. name = "failure_signal_handler_test",
  167. srcs = ["failure_signal_handler_test.cc"],
  168. copts = ABSL_TEST_COPTS,
  169. linkopts = select({
  170. "//absl:msvc_compiler": [],
  171. "//absl:clang-cl_compiler": [],
  172. "//absl:wasm": [],
  173. "//conditions:default": ["-pthread"],
  174. }) + ABSL_DEFAULT_LINKOPTS,
  175. deps = [
  176. ":failure_signal_handler",
  177. ":stacktrace",
  178. ":symbolize",
  179. "//absl/base:raw_logging_internal",
  180. "//absl/log:check",
  181. "//absl/strings",
  182. "@com_google_googletest//:gtest",
  183. ],
  184. )
  185. cc_library(
  186. name = "debugging_internal",
  187. srcs = [
  188. "internal/address_is_readable.cc",
  189. "internal/elf_mem_image.cc",
  190. "internal/vdso_support.cc",
  191. ],
  192. hdrs = [
  193. "internal/address_is_readable.h",
  194. "internal/elf_mem_image.h",
  195. "internal/vdso_support.h",
  196. ],
  197. copts = ABSL_DEFAULT_COPTS,
  198. linkopts = ABSL_DEFAULT_LINKOPTS,
  199. visibility = ["//visibility:private"],
  200. deps = [
  201. "//absl/base:config",
  202. "//absl/base:core_headers",
  203. "//absl/base:dynamic_annotations",
  204. "//absl/base:errno_saver",
  205. "//absl/base:raw_logging_internal",
  206. ],
  207. )
  208. cc_library(
  209. name = "demangle_internal",
  210. srcs = [
  211. "internal/demangle.cc",
  212. "internal/demangle_rust.cc",
  213. ],
  214. hdrs = [
  215. "internal/demangle.h",
  216. "internal/demangle_rust.h",
  217. ],
  218. copts = ABSL_DEFAULT_COPTS,
  219. linkopts = ABSL_DEFAULT_LINKOPTS,
  220. visibility = [
  221. "//absl/container:__pkg__",
  222. "//absl/debugging:__pkg__",
  223. ],
  224. deps = [
  225. "//absl/base",
  226. "//absl/base:config",
  227. "//absl/base:core_headers",
  228. ],
  229. )
  230. cc_test(
  231. name = "demangle_rust_test",
  232. srcs = ["internal/demangle_rust_test.cc"],
  233. copts = ABSL_TEST_COPTS,
  234. linkopts = ABSL_DEFAULT_LINKOPTS,
  235. deps = [
  236. ":demangle_internal",
  237. "//absl/base:config",
  238. "//absl/base:core_headers",
  239. "@com_google_googletest//:gtest",
  240. "@com_google_googletest//:gtest_main",
  241. ],
  242. )
  243. cc_test(
  244. name = "demangle_test",
  245. srcs = ["internal/demangle_test.cc"],
  246. copts = ABSL_TEST_COPTS,
  247. linkopts = ABSL_DEFAULT_LINKOPTS,
  248. deps = [
  249. ":demangle_internal",
  250. ":stack_consumption",
  251. "//absl/base:config",
  252. "//absl/base:core_headers",
  253. "//absl/log",
  254. "//absl/memory",
  255. "@com_google_googletest//:gtest",
  256. "@com_google_googletest//:gtest_main",
  257. ],
  258. )
  259. cc_library(
  260. name = "leak_check",
  261. srcs = ["leak_check.cc"],
  262. hdrs = ["leak_check.h"],
  263. copts = ABSL_DEFAULT_COPTS,
  264. linkopts = ABSL_DEFAULT_LINKOPTS,
  265. deps = [
  266. "//absl/base:config",
  267. "//absl/base:core_headers",
  268. ],
  269. )
  270. cc_test(
  271. name = "leak_check_test",
  272. srcs = ["leak_check_test.cc"],
  273. copts = ABSL_TEST_COPTS,
  274. linkopts = ABSL_DEFAULT_LINKOPTS,
  275. tags = ["notsan"],
  276. deps = [
  277. ":leak_check",
  278. "//absl/base:config",
  279. "//absl/log",
  280. "@com_google_googletest//:gtest",
  281. "@com_google_googletest//:gtest_main",
  282. ],
  283. )
  284. # Binary that leaks memory and expects to fail on exit. This isn't a
  285. # test that expected to pass on its own; it exists to be called by a
  286. # script that checks exit status and output.
  287. # TODO(absl-team): Write a test to run this with a script that
  288. # verifies that it correctly fails.
  289. cc_binary(
  290. name = "leak_check_fail_test_binary",
  291. srcs = ["leak_check_fail_test.cc"],
  292. copts = ABSL_TEST_COPTS,
  293. linkopts = ABSL_DEFAULT_LINKOPTS,
  294. deps = [
  295. ":leak_check",
  296. "//absl/log",
  297. "@com_google_googletest//:gtest",
  298. "@com_google_googletest//:gtest_main",
  299. ],
  300. )
  301. cc_library(
  302. name = "stack_consumption",
  303. testonly = 1,
  304. srcs = ["internal/stack_consumption.cc"],
  305. hdrs = ["internal/stack_consumption.h"],
  306. copts = ABSL_DEFAULT_COPTS,
  307. linkopts = ABSL_DEFAULT_LINKOPTS,
  308. visibility = ["//visibility:private"],
  309. deps = [
  310. "//absl/base:config",
  311. "//absl/base:core_headers",
  312. "//absl/base:raw_logging_internal",
  313. ],
  314. )
  315. cc_test(
  316. name = "stack_consumption_test",
  317. srcs = ["internal/stack_consumption_test.cc"],
  318. copts = ABSL_TEST_COPTS,
  319. linkopts = ABSL_DEFAULT_LINKOPTS,
  320. tags = ["notsan"],
  321. deps = [
  322. ":stack_consumption",
  323. "//absl/base:core_headers",
  324. "//absl/log",
  325. "@com_google_googletest//:gtest",
  326. "@com_google_googletest//:gtest_main",
  327. ],
  328. )
  329. cc_binary(
  330. name = "stacktrace_benchmark",
  331. testonly = 1,
  332. srcs = ["stacktrace_benchmark.cc"],
  333. copts = ABSL_TEST_COPTS,
  334. linkopts = ABSL_DEFAULT_LINKOPTS,
  335. tags = ["benchmark"],
  336. deps = [
  337. ":stacktrace",
  338. "//absl/base:config",
  339. "//absl/base:core_headers",
  340. "@com_github_google_benchmark//:benchmark_main",
  341. ],
  342. )