From 3154ce262c73bf5daecedbad78183d1d3d1fc648 Mon Sep 17 00:00:00 2001 From: Kostya Kortchinsky Date: Fri, 4 Oct 2019 15:46:34 +0000 Subject: [scudo][standalone] Make malloc_info return a minimal XML Summary: Initially, our malloc_info was returning ENOTSUP, but Android would rather have it return successfully and write a barebone XML to the stream, so we will oblige. Add an associated test. Reviewers: cferris, morehouse, hctim, eugenis, vitalybuka Reviewed By: morehouse Subscribers: delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D68427 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@373754 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/scudo/standalone/tests/combined_test.cpp | 2 +- lib/scudo/standalone/tests/wrappers_c_test.cpp | 11 +++++++++++ lib/scudo/standalone/wrappers_c.inc | 7 ++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/scudo/standalone/tests/combined_test.cpp b/lib/scudo/standalone/tests/combined_test.cpp index c9c65690a..3f971a304 100644 --- a/lib/scudo/standalone/tests/combined_test.cpp +++ b/lib/scudo/standalone/tests/combined_test.cpp @@ -101,7 +101,7 @@ template static void testAllocator() { // returns the same chunk. This requires that all the sizes we iterate on use // the same block size, but that should be the case for 2048 with our default // class size maps. - P = Allocator->allocate(DataSize, Origin); + P = Allocator->allocate(DataSize, Origin); memset(P, Marker, DataSize); for (scudo::sptr Delta = -32; Delta < 32; Delta += 8) { const scudo::uptr NewSize = DataSize + Delta; diff --git a/lib/scudo/standalone/tests/wrappers_c_test.cpp b/lib/scudo/standalone/tests/wrappers_c_test.cpp index 28c21ebc8..cb651f265 100644 --- a/lib/scudo/standalone/tests/wrappers_c_test.cpp +++ b/lib/scudo/standalone/tests/wrappers_c_test.cpp @@ -281,3 +281,14 @@ TEST(ScudoWrappersCTest, MallocIterateBoundary) { free(P); } + +TEST(ScudoWrappersCTest, MallocInfo) { + char Buffer[64]; + FILE *F = fmemopen(Buffer, sizeof(Buffer), "w+"); + EXPECT_NE(F, nullptr); + errno = 0; + EXPECT_EQ(malloc_info(0, F), 0); + EXPECT_EQ(errno, 0); + fclose(F); + EXPECT_EQ(strncmp(Buffer, "", stream); + fputs("", stream); + return 0; } -- cgit v1.2.1