Refactor malloc debug.
Changes
- Refactor the code so that only guards require creating a special header
for every pointer allocated.
- Store only a single copy of every backtrace. This saves memory so that
turning on the backtrace option doesn't result in 10X memory usage.
- Added new option track_allocs that only verifies pointers are valid for
free/malloc_usable_size/realloc.
- Remove suffix from test names.
- Add the TRACK_ALLOCS options to all guard options.
- Add new option verify_pointers that is a lightweight way to verify
pointers that are passed to allocation routines.
- Do auto-formatting of the code.
- Updated documentation for all of these changes.
Bug: 74361929
Test: Ran unit tests.
Test: Ran libmemunreachable unit tests.
Test: Ran an app with backtrace enabled.
Change-Id: I3246c48ae4f9811f64622d90d0a9b4d9d818702c
diff --git a/libc/malloc_debug/Android.bp b/libc/malloc_debug/Android.bp
index ede2431..899987c 100644
--- a/libc/malloc_debug/Android.bp
+++ b/libc/malloc_debug/Android.bp
@@ -42,15 +42,13 @@
name: "libc_malloc_debug",
srcs: [
- "BacktraceData.cpp",
"Config.cpp",
"DebugData.cpp",
"debug_disable.cpp",
- "FreeTrackData.cpp",
"GuardData.cpp",
"malloc_debug.cpp",
+ "PointerData.cpp",
"RecordData.cpp",
- "TrackData.cpp",
],
stl: "libc++_static",
@@ -91,6 +89,7 @@
"-Werror",
"-fno-stack-protector",
"-Wno-error=format-zero-length",
+ "-Wthread-safety",
],
}
@@ -98,16 +97,7 @@
// Unit Tests
// ==============================================================
cc_test {
-
name: "malloc_debug_unit_tests",
- multilib: {
- lib32: {
- suffix: "32",
- },
- lib64: {
- suffix: "64",
- },
- },
srcs: [
"tests/backtrace_fake.cpp",