creport: Improve code region list (as N did in 6.1.0)

This commit is contained in:
Michael Scire
2018-11-11 19:52:19 -08:00
parent 1aba87ef76
commit 36530a5501
4 changed files with 49 additions and 14 deletions

View File

@@ -19,6 +19,7 @@
#include <cstdio>
#include "creport_debug_types.hpp"
#include "creport_thread_info.hpp"
struct CodeInfo {
char name[0x20];
@@ -29,18 +30,19 @@ struct CodeInfo {
class CodeList {
private:
static const size_t max_code_count = 0x10;
static const size_t max_code_count = 0x60;
u32 code_count = 0;
CodeInfo code_infos[max_code_count];
/* For pretty-printing. */
char address_str_buf[0x280];
public:
void ReadCodeRegionsFromProcess(Handle debug_handle, u64 pc, u64 lr);
void ReadCodeRegionsFromThreadInfo(Handle debug_handle, const ThreadInfo *thread);
const char *GetFormattedAddressString(u64 address);
void SaveToFile(FILE *f_report);
private:
bool TryFindCodeRegion(Handle debug_handle, u64 guess, u64 *address);
void AddCodeRegion(u64 debug_handle, u64 code_address);
void GetCodeInfoName(u64 debug_handle, u64 rx_address, u64 ro_address, char *name);
void GetCodeInfoBuildId(u64 debug_handle, u64 ro_address, u8 *build_id);
};