summaryrefslogtreecommitdiffhomepage
path: root/dev/LibCompiler/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-27 13:22:49 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-05-27 13:22:49 +0200
commitd12204e7302b8f3bd521c782094338733abfded1 (patch)
tree708549c25f71e56b30b4223750adb0c317896fde /dev/LibCompiler/src
parent38f86a6646bd59dc746067caaaa9f933fa9707d4 (diff)
feat!: better crash reporting.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/LibCompiler/src')
-rw-r--r--dev/LibCompiler/src/Asm/Assembler64x0.cc2
-rw-r--r--dev/LibCompiler/src/Asm/AssemblerAMD64.cc2
-rw-r--r--dev/LibCompiler/src/Asm/AssemblerARM64.cc2
-rw-r--r--dev/LibCompiler/src/Asm/AssemblerPowerPC.cc2
-rw-r--r--dev/LibCompiler/src/Cl/CCompiler64x0.cc2
-rw-r--r--dev/LibCompiler/src/Cl/CCompilerARM64.cc2
-rw-r--r--dev/LibCompiler/src/Cl/CCompilerPower64.cc2
-rw-r--r--dev/LibCompiler/src/Cl/CPlusPlusCompilerAMD64.cc26
-rw-r--r--dev/LibCompiler/src/Linker/DynamicLinkerPEF.cc2
9 files changed, 15 insertions, 27 deletions
diff --git a/dev/LibCompiler/src/Asm/Assembler64x0.cc b/dev/LibCompiler/src/Asm/Assembler64x0.cc
index 8c1adb5..fb96708 100644
--- a/dev/LibCompiler/src/Asm/Assembler64x0.cc
+++ b/dev/LibCompiler/src/Asm/Assembler64x0.cc
@@ -67,7 +67,7 @@ static bool asm_read_attributes(std::string line);
/////////////////////////////////////////////////////////////////////////////////////////
LIBCOMPILER_MODULE(AssemblerMain64x0) {
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
for (size_t i = 1; i < argc; ++i) {
if (argv[i][0] == '-') {
diff --git a/dev/LibCompiler/src/Asm/AssemblerAMD64.cc b/dev/LibCompiler/src/Asm/AssemblerAMD64.cc
index 4a4ca41..e9f3ad5 100644
--- a/dev/LibCompiler/src/Asm/AssemblerAMD64.cc
+++ b/dev/LibCompiler/src/Asm/AssemblerAMD64.cc
@@ -85,7 +85,7 @@ static bool asm_read_attributes(std::string line);
LIBCOMPILER_MODULE(AssemblerMainAMD64) {
//////////////// CPU OPCODES BEGIN ////////////////
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
std::string opcodes_jump[kJumpLimit] = {"ja", "jae", "jb", "jbe", "jc", "je", "jg", "jge",
"jl", "jle", "jna", "jnae", "jnb", "jnbe", "jnc", "jne",
diff --git a/dev/LibCompiler/src/Asm/AssemblerARM64.cc b/dev/LibCompiler/src/Asm/AssemblerARM64.cc
index 59df5a7..8fad6b5 100644
--- a/dev/LibCompiler/src/Asm/AssemblerARM64.cc
+++ b/dev/LibCompiler/src/Asm/AssemblerARM64.cc
@@ -71,7 +71,7 @@ static bool asm_read_attributes(std::string line);
/////////////////////////////////////////////////////////////////////////////////////////
LIBCOMPILER_MODULE(AssemblerMainARM64) {
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
for (size_t i = 1; i < argc; ++i) {
if (argv[i][0] == '-') {
diff --git a/dev/LibCompiler/src/Asm/AssemblerPowerPC.cc b/dev/LibCompiler/src/Asm/AssemblerPowerPC.cc
index bf7f115..86a70b9 100644
--- a/dev/LibCompiler/src/Asm/AssemblerPowerPC.cc
+++ b/dev/LibCompiler/src/Asm/AssemblerPowerPC.cc
@@ -71,7 +71,7 @@ static bool asm_read_attributes(std::string line);
/////////////////////////////////////////////////////////////////////////////////////////
LIBCOMPILER_MODULE(AssemblerMainPower64) {
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
for (size_t i = 1; i < argc; ++i) {
if (argv[i][0] == '-') {
diff --git a/dev/LibCompiler/src/Cl/CCompiler64x0.cc b/dev/LibCompiler/src/Cl/CCompiler64x0.cc
index 2d37227..fc31ef9 100644
--- a/dev/LibCompiler/src/Cl/CCompiler64x0.cc
+++ b/dev/LibCompiler/src/Cl/CCompiler64x0.cc
@@ -1198,7 +1198,7 @@ static void cc_print_help() {
#define kExt ".c"
LIBCOMPILER_MODULE(NeOSCompilerCLang64x0) {
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
kCompilerTypes.push_back({.fName = "void", .fValue = "void"});
kCompilerTypes.push_back({.fName = "char", .fValue = "byte"});
diff --git a/dev/LibCompiler/src/Cl/CCompilerARM64.cc b/dev/LibCompiler/src/Cl/CCompilerARM64.cc
index 093c818..02e39f9 100644
--- a/dev/LibCompiler/src/Cl/CCompilerARM64.cc
+++ b/dev/LibCompiler/src/Cl/CCompilerARM64.cc
@@ -1196,7 +1196,7 @@ static void cc_print_help() {
#define kCExtension ".c"
LIBCOMPILER_MODULE(NeOSCompilerCLangARM64) {
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
kCompilerTypes.push_back({.fName = "void", .fValue = "void"});
kCompilerTypes.push_back({.fName = "char", .fValue = "byte"});
diff --git a/dev/LibCompiler/src/Cl/CCompilerPower64.cc b/dev/LibCompiler/src/Cl/CCompilerPower64.cc
index e0081f7..216891a 100644
--- a/dev/LibCompiler/src/Cl/CCompilerPower64.cc
+++ b/dev/LibCompiler/src/Cl/CCompilerPower64.cc
@@ -1215,7 +1215,7 @@ static void cc_print_help() {
#define kExt ".c"
LIBCOMPILER_MODULE(NeOSCompilerCLangPowerPC) {
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
kCompilerTypes.push_back({.fName = "void", .fValue = "void"});
kCompilerTypes.push_back({.fName = "char", .fValue = "byte"});
diff --git a/dev/LibCompiler/src/Cl/CPlusPlusCompilerAMD64.cc b/dev/LibCompiler/src/Cl/CPlusPlusCompilerAMD64.cc
index 856bc64..bfa1896 100644
--- a/dev/LibCompiler/src/Cl/CPlusPlusCompilerAMD64.cc
+++ b/dev/LibCompiler/src/Cl/CPlusPlusCompilerAMD64.cc
@@ -9,6 +9,7 @@
/// BUGS: 1
+#include "LibCompiler/Defines.h"
#define kPrintF printf
#define kExitOK (EXIT_SUCCESS)
@@ -71,18 +72,14 @@ struct CompilerRegisterMap final {
std::string fReg;
};
-// \brief Offset based struct/class
+/// \brief Offset based struct/class
struct CompilerStructMap final {
- std::string fName;
- std::string fReg;
-
- // offset counter
- std::size_t fOffsetsCnt;
-
- // offset array
+ std::string fName;
+ std::string fReg;
std::vector<std::pair<UInt32, std::string>> fOffsets;
};
+/// \brief Compiler state structure.
struct CompilerState final {
std::vector<CompilerRegisterMap> fStackMapVector;
std::vector<CompilerStructMap> fStructMapVector;
@@ -99,7 +96,7 @@ static Int32 kOnClassScope = 0;
/////////////////////////////////////////////////////////////////////////////////////////
// Target architecture.
-static int kMachine = LibCompiler::AssemblyFactory::kArchAMD64;
+static Int32 kMachine = LibCompiler::AssemblyFactory::kArchAMD64;
/////////////////////////////////////////
@@ -740,21 +737,12 @@ class AssemblyCPlusPlusInterface final LC_ASSEMBLY_INTERFACE {
std::string line_source;
while (std::getline(src_fp, line_source)) {
- if (kVerbose) {
- kStdOut << line_source << std::endl;
- kStdOut << line_source.length() << " bytes\n";
- }
-
kCompilerFrontend->Compile(line_source, src);
out_fp << kState.fOutputValue;
kState.fOutputValue.clear();
}
- if (kVerbose) {
- kStdOut << "Done compiling " << src << " to " << dest << "\n";
- }
-
return kExitOK;
}
};
@@ -832,7 +820,7 @@ LIBCOMPILER_MODULE(CompilerCPlusPlusAMD64) {
kCompilerFrontend = new CompilerFrontendCPlusPlus();
kFactory.Mount(new AssemblyCPlusPlusInterface());
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
for (auto index = 1UL; index < argc; ++index) {
if (argv[index][0] == '-') {
diff --git a/dev/LibCompiler/src/Linker/DynamicLinkerPEF.cc b/dev/LibCompiler/src/Linker/DynamicLinkerPEF.cc
index 0c6f3bf..edfd47a 100644
--- a/dev/LibCompiler/src/Linker/DynamicLinkerPEF.cc
+++ b/dev/LibCompiler/src/Linker/DynamicLinkerPEF.cc
@@ -101,7 +101,7 @@ static std::vector<Detail::DynamicLinkerBlob> kObjectBytes;
LIBCOMPILER_MODULE(DynamicLinker64PEF) {
bool is_executable = true;
- ::signal(SIGSEGV, Detail::drv_segfault_handler);
+ ::signal(SIGSEGV, Detail::drvi_crash_handler);
/**
* @brief parse flags and trigger options.