summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2019-10-09 15:09:28 +0000
committerKostya Kortchinsky <kostyak@google.com>2019-10-09 15:09:28 +0000
commitf7b1489ffc5106aff3135b3ed664c99cf9a57481 (patch)
tree2c93ae442609e99b5d80ec54251f0155975fa7e8 /compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
parentae1b7859cbd61d2284d9690bc53482d0b6a46f63 (diff)
downloadbcm5719-llvm-f7b1489ffc5106aff3135b3ed664c99cf9a57481.tar.gz
bcm5719-llvm-f7b1489ffc5106aff3135b3ed664c99cf9a57481.zip
[scudo][standalone] Get statistics in a char buffer
Summary: Following up on D68471, this CL introduces some `getStats` APIs to gather statistics in char buffers (`ScopedString` really) instead of printing them out right away. Ultimately `printStats` will just output the buffer, but that allows us to potentially do some work on the intermediate buffer, and can be used for a `mallocz` type of functionality. This allows us to pretty much get rid of all the `Printf` calls around, but I am keeping the function in for debugging purposes. This changes the existing tests to use the new APIs when required. I will add new tests as suggested in D68471 in another CL. Reviewers: morehouse, hctim, vitalybuka, eugenis, cferris Reviewed By: morehouse Subscribers: delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D68653 llvm-svn: 374173
Diffstat (limited to 'compiler-rt/lib/scudo/standalone/tests/combined_test.cpp')
-rw-r--r--compiler-rt/lib/scudo/standalone/tests/combined_test.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/compiler-rt/lib/scudo/standalone/tests/combined_test.cpp b/compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
index 3f971a30428..d74c07e8458 100644
--- a/compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
+++ b/compiler-rt/lib/scudo/standalone/tests/combined_test.cpp
@@ -136,7 +136,21 @@ template <class Config> static void testAllocator() {
}
Allocator->releaseToOS();
- Allocator->printStats();
+
+ scudo::uptr BufferSize = 8192;
+ std::vector<char> Buffer(BufferSize);
+ scudo::uptr ActualSize = Allocator->getStats(Buffer.data(), BufferSize);
+ while (ActualSize > BufferSize) {
+ BufferSize = ActualSize + 1024;
+ Buffer.resize(BufferSize);
+ ActualSize = Allocator->getStats(Buffer.data(), BufferSize);
+ }
+ std::string Stats(Buffer.begin(), Buffer.end());
+ // Basic checks on the contents of the statistics output, which also allows us
+ // to verify that we got it all.
+ EXPECT_NE(Stats.find("Stats: SizeClassAllocator"), std::string::npos);
+ EXPECT_NE(Stats.find("Stats: MapAllocator"), std::string::npos);
+ EXPECT_NE(Stats.find("Stats: Quarantine"), std::string::npos);
}
TEST(ScudoCombinedTest, BasicCombined) {
OpenPOWER on IntegriCloud