plug in dwarf converter to radbin; hook up to both rdi generation & breakpad generation; radbin exe -> pdb / elf -> dwarf inferences; cleanup / unification passes

This commit is contained in:
Ryan Fleury
2025-06-10 08:53:57 -07:00
parent 638adad93b
commit 49de09883e
29 changed files with 1524 additions and 1019 deletions
+3 -2
View File
@@ -4,7 +4,7 @@
//- GENERATED CODE
C_LINKAGE_BEGIN
String8 rb_file_format_display_name_table[9] =
String8 rb_file_format_display_name_table[10] =
{
{0},
str8_lit_comp("PDB"),
@@ -13,7 +13,8 @@ str8_lit_comp("COFF (OBJ)"),
str8_lit_comp("COFF (Big OBJ)"),
str8_lit_comp("COFF (Archive)"),
str8_lit_comp("COFF (Thin Archive)"),
str8_lit_comp("ELF"),
str8_lit_comp("ELF32"),
str8_lit_comp("ELF64"),
str8_lit_comp("RDI"),
};
+3 -2
View File
@@ -15,13 +15,14 @@ RB_FileFormat_COFF_OBJ,
RB_FileFormat_COFF_BigOBJ,
RB_FileFormat_COFF_Archive,
RB_FileFormat_COFF_ThinArchive,
RB_FileFormat_ELF,
RB_FileFormat_ELF32,
RB_FileFormat_ELF64,
RB_FileFormat_RDI,
RB_FileFormat_COUNT,
} RB_FileFormat;
C_LINKAGE_BEGIN
extern String8 rb_file_format_display_name_table[9];
extern String8 rb_file_format_display_name_table[10];
C_LINKAGE_END
+579 -394
View File
File diff suppressed because it is too large Load Diff
+36
View File
@@ -9,6 +9,42 @@
#include "radbin/generated/radbin.meta.h"
////////////////////////////////
//~ rjf: File Types
typedef U32 RB_FileFormatFlags;
enum
{
RB_FileFormatFlag_HasDWARF = (1<<0),
};
typedef struct RB_File RB_File;
struct RB_File
{
RB_FileFormat format;
RB_FileFormatFlags format_flags;
String8 path;
String8 data;
};
typedef struct RB_FileNode RB_FileNode;
struct RB_FileNode
{
RB_FileNode *next;
RB_File *v;
};
typedef struct RB_FileList RB_FileList;
struct RB_FileList
{
RB_FileNode *first;
RB_FileNode *last;
U64 count;
};
read_only global RB_File rb_file_nil = {0};
#define rb_file_list_first(list) ((list)->first ? (list)->first->v : &rb_file_nil)
////////////////////////////////
//~ rjf: Top-Level Entry Point
+2 -1
View File
@@ -10,7 +10,8 @@ RB_FileFormatTable:
{ COFF_BigOBJ "COFF (Big OBJ)" }
{ COFF_Archive "COFF (Archive)" }
{ COFF_ThinArchive "COFF (Thin Archive)" }
{ ELF "ELF" }
{ ELF32 "ELF32" }
{ ELF64 "ELF64" }
{ RDI "RDI" }
}
+16
View File
@@ -16,6 +16,7 @@
//- rjf: [h]
#include "base/base_inc.h"
#include "linker/hash_table.h"
#include "os/os_inc.h"
#include "path/path.h"
#include "async/async.h"
@@ -28,17 +29,25 @@
#include "elf/elf_parse.h"
#include "codeview/codeview.h"
#include "codeview/codeview_parse.h"
#include "dwarf/dwarf.h"
#include "dwarf/dwarf_parse.h"
#include "dwarf/dwarf_coff.h"
#include "dwarf/dwarf_elf.h"
#include "msf/msf.h"
#include "msf/msf_parse.h"
#include "pdb/pdb.h"
#include "pdb/pdb_parse.h"
#include "pdb/pdb_stringize.h"
#include "rdi_from_coff/rdi_from_coff.h"
#include "rdi_from_elf/rdi_from_elf.h"
#include "rdi_from_pdb/rdi_from_pdb.h"
#include "rdi_breakpad_from_pdb/rdi_breakpad_from_pdb.h"
#include "rdi_from_dwarf/rdi_from_dwarf.h"
#include "radbin/radbin.h"
//- rjf: [c]
#include "base/base_inc.c"
#include "linker/hash_table.c"
#include "os/os_inc.c"
#include "path/path.c"
#include "async/async.c"
@@ -51,13 +60,20 @@
#include "elf/elf_parse.c"
#include "codeview/codeview.c"
#include "codeview/codeview_parse.c"
#include "dwarf/dwarf.c"
#include "dwarf/dwarf_parse.c"
#include "dwarf/dwarf_coff.c"
#include "dwarf/dwarf_elf.c"
#include "msf/msf.c"
#include "msf/msf_parse.c"
#include "pdb/pdb.c"
#include "pdb/pdb_parse.c"
#include "pdb/pdb_stringize.c"
#include "rdi_from_coff/rdi_from_coff.c"
#include "rdi_from_elf/rdi_from_elf.c"
#include "rdi_from_pdb/rdi_from_pdb.c"
#include "rdi_breakpad_from_pdb/rdi_breakpad_from_pdb.c"
#include "rdi_from_dwarf/rdi_from_dwarf.c"
#include "radbin/radbin.c"
////////////////////////////////