Move shim partition configuration to separate test file. This expands the use of BRP for testing in both pdfium_embeddertests and pdfium_test. Currently, these are running with a malloc shim, when supported, but not with the full BRP tracing enabled at runtime. Change-Id: I5d7f8b4df0e66f6f8a860eec1286a2cb27adcc4f Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/110394 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn index aa45294..2d90fca 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -474,9 +474,6 @@ if (is_android) { use_raw_android_executable = true } - if (pdf_use_partition_alloc) { - deps += [ "//base/allocator/partition_allocator:partition_alloc" ] - } if (pdf_enable_v8) { configs += [ "//v8:external_startup_data" ] deps += [
diff --git a/samples/BUILD.gn b/samples/BUILD.gn index 577d685..981750b 100644 --- a/samples/BUILD.gn +++ b/samples/BUILD.gn
@@ -21,7 +21,9 @@ if (is_asan) { defines += [ "PDF_ENABLE_ASAN" ] } - + if (pdf_use_partition_alloc) { + defines += [ "PDF_USE_PARTITION_ALLOC" ] + } if (enable_callgrind) { defines += [ "ENABLE_CALLGRIND" ] }
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc index 1dfc70c..282c539 100644 --- a/samples/pdfium_test.cc +++ b/samples/pdfium_test.cc
@@ -62,6 +62,10 @@ #include <valgrind/callgrind.h> #endif // ENABLE_CALLGRIND +#if defined(PDF_USE_PARTITION_ALLOC) +#include "testing/allocator_shim_config.h" +#endif + #ifdef PDF_ENABLE_SKIA #include "third_party/skia/include/core/SkCanvas.h" // nogncheck #include "third_party/skia/include/core/SkColor.h" // nogncheck @@ -1832,6 +1836,10 @@ } // namespace int main(int argc, const char* argv[]) { +#if defined(PDF_USE_PARTITION_ALLOC) + pdfium::ConfigurePartitionAllocShimPartitionForTest(); +#endif + SetUpErrorHandling(); setlocale(LC_CTYPE, "en_US.UTF-8"); // For printf() of high-characters.
diff --git a/testing/BUILD.gn b/testing/BUILD.gn index a20955a..309e6c3 100644 --- a/testing/BUILD.gn +++ b/testing/BUILD.gn
@@ -51,6 +51,13 @@ "../:pdfium_noshorten_config", ] visibility = [ "../*" ] + if (pdf_use_partition_alloc) { + sources += [ + "allocator_shim_config.cpp", + "allocator_shim_config.h", + ] + deps += [ "//base/allocator/partition_allocator:partition_alloc" ] + } if (pdf_enable_v8) { sources += [ "v8_initializer.cpp",
diff --git a/testing/allocator_shim_config.cpp b/testing/allocator_shim_config.cpp new file mode 100644 index 0000000..8f0380d --- /dev/null +++ b/testing/allocator_shim_config.cpp
@@ -0,0 +1,25 @@ +// Copyright 2023 The PDFium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/allocator_shim_config.h" + +#include "base/allocator/partition_allocator/partition_alloc_buildflags.h" +#include "base/allocator/partition_allocator/shim/allocator_shim.h" + +namespace pdfium { + +void ConfigurePartitionAllocShimPartitionForTest() { +#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) +#if BUILDFLAG(ENABLE_BACKUP_REF_PTR_SUPPORT) + allocator_shim::ConfigurePartitions( + allocator_shim::EnableBrp(true), + allocator_shim::EnableMemoryTagging(false), + allocator_shim::SplitMainPartition(true), + allocator_shim::UseDedicatedAlignedPartition(true), 0, + allocator_shim::BucketDistribution::kNeutral); +#endif // BUILDFLAG(ENABLE_BACKUP_REF_PTR_SUPPORT) +#endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) +} + +} // namespace pdfium
diff --git a/testing/allocator_shim_config.h b/testing/allocator_shim_config.h new file mode 100644 index 0000000..cd14484 --- /dev/null +++ b/testing/allocator_shim_config.h
@@ -0,0 +1,18 @@ +// Copyright 2023 The PDFium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef TESTING_ALLOCATOR_SHIM_CONFIG_H_ +#define TESTING_ALLOCATOR_SHIM_CONFIG_H_ + +#if !defined(PDF_USE_PARTITION_ALLOC) +#error "Included under the wrong build options" +#endif + +namespace pdfium { + +void ConfigurePartitionAllocShimPartitionForTest(); + +} // namespace pdfium + +#endif // TESTING_ALLOCATOR_SHIM_CONFIG_H_
diff --git a/testing/embedder_test_main.cpp b/testing/embedder_test_main.cpp index 53049b6..e089b1a 100644 --- a/testing/embedder_test_main.cpp +++ b/testing/embedder_test_main.cpp
@@ -12,10 +12,18 @@ #include "testing/v8_test_environment.h" #endif // PDF_ENABLE_V8 +#if defined(PDF_USE_PARTITION_ALLOC) +#include "testing/allocator_shim_config.h" +#endif + // Can't use gtest-provided main since we need to create our own // testing environment which needs the executable path in order to // find the external V8 binary data files. int main(int argc, char** argv) { +#if defined(PDF_USE_PARTITION_ALLOC) + pdfium::ConfigurePartitionAllocShimPartitionForTest(); +#endif + FX_InitializeMemoryAllocators(); #ifdef PDF_ENABLE_V8
diff --git a/testing/unit_test_main.cpp b/testing/unit_test_main.cpp index 30d4203..28476b0 100644 --- a/testing/unit_test_main.cpp +++ b/testing/unit_test_main.cpp
@@ -8,8 +8,7 @@ #include "testing/pdf_test_environment.h" #if defined(PDF_USE_PARTITION_ALLOC) -#include "base/allocator/partition_allocator/partition_alloc_buildflags.h" -#include "base/allocator/partition_allocator/shim/allocator_shim.h" +#include "testing/allocator_shim_config.h" #endif #ifdef PDF_ENABLE_V8 @@ -23,14 +22,7 @@ // alloc before invoking any test, and add test environments. int main(int argc, char** argv) { #if defined(PDF_USE_PARTITION_ALLOC) -#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) - allocator_shim::ConfigurePartitions( - allocator_shim::EnableBrp(true), - allocator_shim::EnableMemoryTagging(false), - allocator_shim::SplitMainPartition(true), - allocator_shim::UseDedicatedAlignedPartition(true), 0, - allocator_shim::BucketDistribution::kNeutral); -#endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) + pdfium::ConfigurePartitionAllocShimPartitionForTest(); #endif // defined(PDF_USE_PARTITION_ALLOC) FX_InitializeMemoryAllocators();