Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e745214f authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topics "libmemunreachable_vendor_available", "libmemunreachable_version_script"

* changes:
  Make libmemunreachable vendor_available
  Hide most symbols in libmemunreachable
  Improve memunreachable ABI before making it vendor_available
parents 68d3978f 05719708
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -27,6 +27,13 @@
    {
      "name": "memunreachable_test"
    },
    {
      "name": "memunreachable_unit_test"
    },
    {
      "name": "memunreachable_unit_test",
      "host": true
    },
    {
      "name": "memunreachable_binder_test"
    },
+16 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ cc_defaults {

cc_library {
    name: "libmemunreachable",
    vendor_available: true,
    defaults: ["libmemunreachable_defaults"],
    srcs: [
        "Allocator.cpp",
@@ -48,11 +49,24 @@ cc_library {
    },
    export_include_dirs: ["include"],
    local_include_dirs: ["include"],
    version_script: "libmemunreachable.map",
}

// Integration test that runs against the public API of libmemunreachable
cc_test {
    name: "memunreachable_test",
    defaults: ["libmemunreachable_defaults"],
    srcs: [
        "tests/MemUnreachable_test.cpp",
    ],
    shared_libs: ["libmemunreachable"],

    test_suites: ["device-tests"],
}

cc_test {
    name: "memunreachable_unit_test",
    defaults: ["libmemunreachable_defaults"],
    host_supported: true,
    srcs: [
        "tests/Allocator_test.cpp",
@@ -67,8 +81,9 @@ cc_test {
                "tests/MemUnreachable_test.cpp",
                "tests/ThreadCapture_test.cpp",
            ],
            shared_libs: [
            static_libs: [
                "libmemunreachable",
                "libc_malloc_debug_backtrace",
            ],
        },
        host: {
+6 −0
Original line number Diff line number Diff line
@@ -280,6 +280,12 @@ static inline const char* plural(T val) {
}

bool GetUnreachableMemory(UnreachableMemoryInfo& info, size_t limit) {
  if (info.version > 0) {
    MEM_ALOGE("unsupported UnreachableMemoryInfo.version %zu in GetUnreachableMemory",
              info.version);
    return false;
  }

  int parent_pid = getpid();
  int parent_tid = gettid();

+23 −16
Original line number Diff line number Diff line
@@ -28,38 +28,45 @@
namespace android {

struct Leak {
  uintptr_t begin;
  size_t size;
  uintptr_t begin = 0;
  size_t size = 0;

  size_t referenced_count;
  size_t referenced_size;
  size_t referenced_count = 0;
  size_t referenced_size = 0;

  size_t similar_count;
  size_t similar_size;
  size_t similar_referenced_count;
  size_t similar_referenced_size;
  size_t similar_count = 0;
  size_t similar_size = 0;
  size_t similar_referenced_count = 0;
  size_t similar_referenced_size = 0;

  size_t total_size;
  size_t total_size = 0;

  static const size_t contents_length = 32;
  char contents[contents_length];
  char contents[contents_length] = {};

  struct Backtrace {
    size_t num_frames;
    size_t num_frames = 0;

    static const size_t max_frames = 16;
    uintptr_t frames[max_frames];
    uintptr_t frames[max_frames] = {};

    size_t reserved[8] = {};
  } backtrace;

  size_t reserved[8] = {};

  std::string ToString(bool log_contents) const;
};

struct UnreachableMemoryInfo {
  std::vector<Leak> leaks;
  size_t num_leaks;
  size_t leak_bytes;
  size_t num_allocations;
  size_t allocation_bytes;
  size_t num_leaks = 0;
  size_t leak_bytes = 0;
  size_t num_allocations = 0;
  size_t allocation_bytes = 0;

  size_t version = 0;  // Must be 0
  size_t reserved[8] = {};

  UnreachableMemoryInfo() {}
  ~UnreachableMemoryInfo();
+13 −0
Original line number Diff line number Diff line
LIBMEMUNREACHABLE {
  global:
    LogUnreachableMemory;
    NoLeaks;
    extern "C++" {
      android::GetUnreachableMemory*;
      android::GetUnreachableMemoryString*;
      android::Leak::*;
      android::UnreachableMemoryInfo::*;
    };
  local:
    *;
};
Loading