diff --git a/libc/Android.bp b/libc/Android.bp
index be005de..736c147 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -2099,6 +2099,7 @@
     srcs: ["arch-common/bionic/crtbegin_so.c"],
 
     defaults: ["crt_so_defaults"],
+
     bazel_module: { bp2build_available: true },
 }
 
@@ -2118,15 +2119,22 @@
     srcs: ["arch-common/bionic/crtend_so.S"],
 
     defaults: ["crt_so_defaults"],
+
+    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
     name: "crtbegin_static1",
-    local_include_dirs: ["include"],
+    local_include_dirs: [
+        "include",
+        "bionic", // crtbegin.c includes bionic/libc_init_common.h
+    ],
     srcs: ["arch-common/bionic/crtbegin.c"],
     defaults: ["crt_defaults"],
     // When using libc.a, we're using the latest library regardless of target API level.
     min_sdk_version: "current",
+
+    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2143,9 +2151,14 @@
 
 cc_object {
     name: "crtbegin_dynamic1",
-    local_include_dirs: ["include"],
+    local_include_dirs: [
+        "include",
+        "bionic", // crtbegin.c includes bionic/libc_init_common.h
+    ],
     srcs: ["arch-common/bionic/crtbegin.c"],
     defaults: ["crt_defaults"],
+
+    bazel_module: { bp2build_available: true },
 }
 
 cc_object {
@@ -2174,6 +2187,8 @@
     srcs: ["arch-common/bionic/crtend.S"],
 
     defaults: ["crt_defaults"],
+
+    bazel_module: { bp2build_available: true },
 }
 
 cc_library_static {
diff --git a/tests/fdsan_test.cpp b/tests/fdsan_test.cpp
index 134d621..c294ff3 100644
--- a/tests/fdsan_test.cpp
+++ b/tests/fdsan_test.cpp
@@ -27,6 +27,7 @@
 
 #if defined(__BIONIC__)
 #include <android/fdsan.h>
+#include <bionic/reserved_signals.h>
 #endif
 
 #include <unordered_map>
@@ -38,7 +39,7 @@
   EXPECT_DEATH((android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL), expression), \
                (regex))
 
-struct FdsanTest : public ::testing::Test {
+struct fdsan : public ::testing::Test {
   void SetUp() override {
 #if defined(__BIONIC__)
     // The bionic unit test running forks for each test by default, which turns
@@ -48,28 +49,38 @@
   }
 };
 
-TEST_F(FdsanTest, unowned_untagged_close) {
+struct fdsan_DeathTest : public BionicDeathTest {
+#if defined(__BIONIC__)
+  void SetUp() override {
+    android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL);
+    signal(BIONIC_SIGNAL_DEBUGGER, SIG_DFL);  // Disable debuggerd.
+    BionicDeathTest::SetUp();
+  }
+#endif
+};
+
+TEST_F(fdsan, unowned_untagged_close) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   ASSERT_EQ(0, close(fd));
 #endif
 }
 
-TEST_F(FdsanTest, unowned_tagged_close) {
+TEST_F(fdsan, unowned_tagged_close) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   ASSERT_EQ(0, android_fdsan_close_with_tag(fd, 0));
 #endif
 }
 
-TEST_F(FdsanTest, unowned_improperly_tagged_close) {
+TEST_F(fdsan_DeathTest, unowned_improperly_tagged_close) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   EXPECT_FDSAN_DEATH(android_fdsan_close_with_tag(fd, 0xdeadbeef), "actually unowned");
 #endif
 }
 
-TEST_F(FdsanTest, unowned_incorrect_exchange) {
+TEST_F(fdsan_DeathTest, unowned_incorrect_exchange) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   EXPECT_FDSAN_DEATH(android_fdsan_exchange_owner_tag(fd, 0xbadc0de, 0xdeadbeef),
@@ -77,7 +88,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, owned_untagged_close) {
+TEST_F(fdsan_DeathTest, owned_untagged_close) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef);
@@ -85,7 +96,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, owned_tagged_close) {
+TEST_F(fdsan, owned_tagged_close) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef);
@@ -93,7 +104,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, owned_improperly_tagged_close) {
+TEST_F(fdsan_DeathTest, owned_improperly_tagged_close) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef);
@@ -101,7 +112,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, owned_incorrect_exchange) {
+TEST_F(fdsan_DeathTest, owned_incorrect_exchange) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef);
@@ -110,7 +121,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, fopen) {
+TEST_F(fdsan_DeathTest, fopen) {
 #if defined(__BIONIC__)
   FILE* f = fopen("/dev/null", "r");
   ASSERT_TRUE(f);
@@ -118,7 +129,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, closedir) {
+TEST_F(fdsan_DeathTest, closedir) {
 #if defined(__BIONIC__)
   DIR* dir = opendir("/dev/");
   ASSERT_TRUE(dir);
@@ -126,7 +137,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, overflow) {
+TEST_F(fdsan, overflow) {
 #if defined(__BIONIC__)
   std::unordered_map<int, uint64_t> fds;
   for (int i = 0; i < 4096; ++i) {
@@ -142,7 +153,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, owner_value_high) {
+TEST_F(fdsan_DeathTest, owner_value_high) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   uint64_t tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_UNIQUE_FD, ~0ULL);
@@ -152,7 +163,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, owner_value_low) {
+TEST_F(fdsan_DeathTest, owner_value_low) {
 #if defined(__BIONIC__)
   int fd = open("/dev/null", O_RDONLY);
   uint64_t tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_UNIQUE_FD, 1);
@@ -162,7 +173,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, unique_fd_unowned_close) {
+TEST_F(fdsan_DeathTest, unique_fd_unowned_close) {
 #if defined(__BIONIC__)
   android::base::unique_fd fd(open("/dev/null", O_RDONLY));
   android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL);
@@ -170,19 +181,19 @@
 #endif
 }
 
-TEST_F(FdsanTest, unique_fd_untag_on_release) {
+TEST_F(fdsan, unique_fd_untag_on_release) {
   android::base::unique_fd fd(open("/dev/null", O_RDONLY));
   close(fd.release());
 }
 
-TEST_F(FdsanTest, unique_fd_move) {
+TEST_F(fdsan, unique_fd_move) {
   android::base::unique_fd fd(open("/dev/null", O_RDONLY));
   android::base::unique_fd fd_moved = std::move(fd);
   ASSERT_EQ(-1, fd.get());
   ASSERT_GT(fd_moved.get(), -1);
 }
 
-TEST_F(FdsanTest, unique_fd_unowned_close_after_move) {
+TEST_F(fdsan_DeathTest, unique_fd_unowned_close_after_move) {
 #if defined(__BIONIC__)
   android::base::unique_fd fd(open("/dev/null", O_RDONLY));
   android::base::unique_fd fd_moved = std::move(fd);
@@ -194,7 +205,7 @@
 #endif
 }
 
-TEST_F(FdsanTest, vfork) {
+TEST_F(fdsan, vfork) {
   android::base::unique_fd fd(open("/dev/null", O_RDONLY));
 
   pid_t rc = vfork();
diff --git a/tests/fdtrack_test.cpp b/tests/fdtrack_test.cpp
index fe9a61c..95758bf 100644
--- a/tests/fdtrack_test.cpp
+++ b/tests/fdtrack_test.cpp
@@ -62,7 +62,6 @@
 
   android_fdtrack_hook_t previous = nullptr;
   android_fdtrack_hook_t hook = [](android_fdtrack_event* event) {
-    raise(BIONIC_SIGNAL_DEBUGGER);
     events.push_back(*event);
   };
 
