summaryrefslogtreecommitdiff
path: root/view/sharedcache/api
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-04-01 01:03:56 -0400
committerMason Reed <mason@vector35.com>2025-04-02 05:36:54 -0400
commite1b164fa2bd10d5662c65ed930416d2f911c12e1 (patch)
tree52edee3d42e0f414b4553145b523b3345f2665a4 /view/sharedcache/api
parent7d8fab3ca667ea727becce31ce605d932c8784ed (diff)
[SharedCache] Fix some bugs
Diffstat (limited to 'view/sharedcache/api')
-rw-r--r--view/sharedcache/api/sharedcache.cpp35
-rw-r--r--view/sharedcache/api/sharedcacheapi.h2
2 files changed, 27 insertions, 10 deletions
diff --git a/view/sharedcache/api/sharedcache.cpp b/view/sharedcache/api/sharedcache.cpp
index 6d552f0d..8c9b2234 100644
--- a/view/sharedcache/api/sharedcache.cpp
+++ b/view/sharedcache/api/sharedcache.cpp
@@ -9,21 +9,21 @@ using namespace SharedCacheAPI;
BNSharedCacheImage ImageToApi(CacheImage image)
{
- BNSharedCacheImage apiImage;
+ BNSharedCacheImage apiImage {};
apiImage.name = BNAllocString(image.name.c_str());
apiImage.headerAddress = image.headerAddress;
apiImage.regionStartCount = image.regionStarts.size();
- // TODO: If we alloc then core cannot delete
uint64_t *regionStarts = new uint64_t[image.regionStarts.size()];
for (size_t i = 0; i < image.regionStarts.size(); i++)
regionStarts[i] = image.regionStarts[i];
- apiImage.regionStarts = regionStarts;
+ apiImage.regionStarts = BNSharedCacheAllocRegionList(regionStarts, image.regionStarts.size());
+ delete[] regionStarts;
return apiImage;
}
CacheImage ImageFromApi(BNSharedCacheImage image)
{
- CacheImage apiImage;
+ CacheImage apiImage {};
apiImage.name = image.name;
apiImage.headerAddress = image.headerAddress;
apiImage.regionStarts.reserve(image.regionStartCount);
@@ -34,7 +34,7 @@ CacheImage ImageFromApi(BNSharedCacheImage image)
BNSharedCacheRegion RegionToApi(const CacheRegion &region)
{
- BNSharedCacheRegion apiRegion;
+ BNSharedCacheRegion apiRegion {};
apiRegion.vmAddress = region.start;
apiRegion.name = BNAllocString(region.name.c_str());
apiRegion.size = region.size;
@@ -47,7 +47,7 @@ BNSharedCacheRegion RegionToApi(const CacheRegion &region)
CacheRegion RegionFromApi(BNSharedCacheRegion apiRegion)
{
- CacheRegion region;
+ CacheRegion region {};
region.start = apiRegion.vmAddress;
region.name = apiRegion.name;
region.size = apiRegion.size;
@@ -58,7 +58,7 @@ CacheRegion RegionFromApi(BNSharedCacheRegion apiRegion)
BNSharedCacheMappingInfo MappingToApi(const CacheMappingInfo &mapping)
{
- BNSharedCacheMappingInfo apiMapping;
+ BNSharedCacheMappingInfo apiMapping {};
apiMapping.vmAddress = mapping.vmAddress;
apiMapping.size = mapping.size;
apiMapping.fileOffset = mapping.fileOffset;
@@ -67,7 +67,7 @@ BNSharedCacheMappingInfo MappingToApi(const CacheMappingInfo &mapping)
CacheMappingInfo MappingFromApi(BNSharedCacheMappingInfo apiMapping)
{
- CacheMappingInfo mapping;
+ CacheMappingInfo mapping {};
mapping.vmAddress = apiMapping.vmAddress;
mapping.size = apiMapping.size;
mapping.fileOffset = apiMapping.fileOffset;
@@ -76,7 +76,7 @@ CacheMappingInfo MappingFromApi(BNSharedCacheMappingInfo apiMapping)
BNSharedCacheEntry EntryToApi(const CacheEntry &entry)
{
- BNSharedCacheEntry apiEntry;
+ BNSharedCacheEntry apiEntry {};
apiEntry.path = BNAllocString(entry.path.c_str());
apiEntry.entryType = entry.entryType;
const auto &mappings = entry.mappings;
@@ -90,7 +90,7 @@ BNSharedCacheEntry EntryToApi(const CacheEntry &entry)
CacheEntry EntryFromApi(BNSharedCacheEntry apiEntry)
{
- CacheEntry entry;
+ CacheEntry entry {};
entry.path = apiEntry.path;
entry.entryType = apiEntry.entryType;
entry.mappings.reserve(apiEntry.mappingCount);
@@ -125,6 +125,21 @@ std::string SharedCacheAPI::GetRegionTypeAsString(const BNSharedCacheRegionType
}
}
+std::string SharedCacheAPI::GetSymbolTypeAsString(const BNSymbolType &type)
+{
+ // NOTE: We currently only use the function and data symbol for cache symbols.
+ // update this if that changes.
+ switch (type)
+ {
+ case FunctionSymbol:
+ return "Function";
+ case DataSymbol:
+ return "Data";
+ default:
+ return "Unknown";
+ }
+}
+
SharedCacheController::SharedCacheController(BNSharedCacheController *controller)
{
m_object = controller;
diff --git a/view/sharedcache/api/sharedcacheapi.h b/view/sharedcache/api/sharedcacheapi.h
index e12582f2..ee49140e 100644
--- a/view/sharedcache/api/sharedcacheapi.h
+++ b/view/sharedcache/api/sharedcacheapi.h
@@ -289,6 +289,8 @@ namespace SharedCacheAPI {
std::string name;
};
+ std::string GetSymbolTypeAsString(const BNSymbolType& type);
+
class SharedCacheController : public DSCCoreRefCountObject<BNSharedCacheController, BNNewSharedCacheControllerReference, BNFreeSharedCacheControllerReference> {
public:
explicit SharedCacheController(BNSharedCacheController* controller);