summaryrefslogtreecommitdiffhomepage
path: root/src/CompilerKit/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/CompilerKit/utils')
-rw-r--r--src/CompilerKit/utils/AsmUtils.h92
-rw-r--r--src/CompilerKit/utils/CompilerUtils.h116
-rw-r--r--src/CompilerKit/utils/DylibHelpers.h63
3 files changed, 0 insertions, 271 deletions
diff --git a/src/CompilerKit/utils/AsmUtils.h b/src/CompilerKit/utils/AsmUtils.h
deleted file mode 100644
index 2cde706..0000000
--- a/src/CompilerKit/utils/AsmUtils.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license
-
-======================================== */
-
-#pragma once
-
-#include <CompilerKit/AST.h>
-#include <CompilerKit/CodeGenerator.h>
-#include <CompilerKit/utils/CompilerUtils.h>
-
-using namespace CompilerKit;
-
-/// @brief Get Number from lineBuffer.
-/// @param lineBuffer the lineBuffer to fetch from.
-/// @param numberKey where to seek that number.
-/// @return
-static NumberCast32 GetNumber32(STLString lineBuffer, STLString numberKey) {
- auto pos = lineBuffer.find(numberKey) + numberKey.size();
-
- while (lineBuffer[pos] == ' ') {
- ++pos;
- }
-
- switch (lineBuffer[pos + 1]) {
- case 'x': {
- if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 16); !res) {
- if (errno != 0) {
- Detail::print_error("invalid hex number: " + lineBuffer, "CompilerKit");
- throw std::runtime_error("invalid_hex");
- }
- }
-
- NumberCast32 numOffset(strtol(lineBuffer.substr(pos).c_str(), nullptr, 16));
-
- if (kVerbose) {
- kStdOut << "asm: found a base 16 number here: " << lineBuffer.substr(pos) << "\n";
- }
-
- return numOffset;
- }
- case 'b': {
- if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 2); !res) {
- if (errno != 0) {
- Detail::print_error("invalid binary number:" + lineBuffer, "CompilerKit");
- throw std::runtime_error("invalid_bin");
- }
- }
-
- NumberCast32 numOffset(strtol(lineBuffer.substr(pos).c_str(), nullptr, 2));
-
- if (kVerbose) {
- kStdOut << "asm: found a base 2 number here:" << lineBuffer.substr(pos) << "\n";
- }
-
- return numOffset;
- }
- case 'o': {
- if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 7); !res) {
- if (errno != 0) {
- Detail::print_error("invalid octal number: " + lineBuffer, "CompilerKit");
- throw std::runtime_error("invalid_octal");
- }
- }
-
- NumberCast32 numOffset(strtol(lineBuffer.substr(pos).c_str(), nullptr, 7));
-
- if (kVerbose) {
- kStdOut << "asm: found a base 8 number here:" << lineBuffer.substr(pos) << "\n";
- }
-
- return numOffset;
- }
- default: {
- if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 10); !res) {
- if (errno != 0) {
- Detail::print_error("invalid hex number: " + lineBuffer, "CompilerKit");
- throw std::runtime_error("invalid_hex");
- }
- }
-
- NumberCast32 numOffset(strtol(lineBuffer.substr(pos).c_str(), nullptr, 10));
-
- if (kVerbose) {
- kStdOut << "asm: found a base 10 number here:" << lineBuffer.substr(pos) << "\n";
- }
-
- return numOffset;
- }
- }
-}
diff --git a/src/CompilerKit/utils/CompilerUtils.h b/src/CompilerKit/utils/CompilerUtils.h
deleted file mode 100644
index ebde2b9..0000000
--- a/src/CompilerKit/utils/CompilerUtils.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license
-
-======================================== */
-
-#pragma once
-
-#include <CompilerKit/AST.h>
-#include <CompilerKit/CodeGenerator.h>
-#include <CompilerKit/detail/Config.h>
-#include <CompilerKit/ErrorID.h>
-#include <ThirdParty/Dialogs.h>
-#include <iostream>
-
-#define kZero64Section ".zero64"
-#define kCode64Section ".code64"
-#define kData64Section ".data64"
-
-#define kZero128Section ".zero128"
-#define kCode128Section ".code128"
-#define kData128Section ".data128"
-
-#define kBlank "\e[0;30m"
-#define kRed "\e[0;31m"
-#define kWhite "\e[0;97m"
-#define kYellow "\e[0;33m"
-
-#define kStdOut (std::cout << kRed << "drv: " << kWhite)
-#define kStdErr (std::cout << kYellow << "drv: " << kWhite)
-
-inline static UInt32 kErrorLimit = 10;
-inline static UInt32 kAcceptableErrors = 0;
-inline static bool kVerbose = false;
-inline static bool kOutputAsBinary = false;
-
-namespace Detail {
-/// @brief Linker specific blob metadata structure
-struct DynamicLinkerBlob final {
- std::vector<Char> mBlob{}; // PEF code/bss/data blob.
- UIntPtr mOffset{0UL}; // the offset of the PEF container header...
-};
-
-inline void print_error(std::string reason, std::string file) noexcept {
- if (reason[0] == '\n') reason.erase(0, 1);
-
- kStdErr << reason << kBlank << std::endl;
-
- if (kAcceptableErrors > kErrorLimit) std::exit(NECTI_EXEC_ERROR);
-
- ++kAcceptableErrors;
-}
-
-inline void print_warning(std::string reason, std::string file) noexcept {
- if (reason[0] == '\n') reason.erase(0, 1);
-
- kStdOut << kYellow << reason << kBlank << std::endl;
-}
-
-/// @internal
-/// @brief Handler for SIGSEGV signal.
-inline void drvi_crash_handler(std::int32_t id) {
- CompilerKit::STLString verbose_header = "LIBCOMPILER CRASH REPORT - ";
- verbose_header += kDistVersion;
- verbose_header += " - ";
- verbose_header += CompilerKit::current_date();
-
- for (auto& ch : verbose_header) {
- std::cout << '=';
- }
-
- std::cout << std::endl;
-
- std::cout << verbose_header << std::endl;
-
- for (auto& ch : verbose_header) {
- std::cout << '=';
- }
-
- std::cout << std::endl;
-
- kStdOut << "DATE: " << CompilerKit::current_date() << std::endl;
- kStdOut << "VERSION: " << kDistVersion << std::endl;
- kStdOut << "ERRNO: " << errno << std::endl;
- kStdOut << "ERRNO(STRING): " << strerror(errno) << std::endl;
-
- switch (id) {
- case SIGSEGV: {
- kStdOut << "SIGNAL: Segmentation Fault." << kBlank << std::endl;
- break;
- }
- case SIGABRT: {
- kStdOut << "SIGNAL: Aborted." << kBlank << std::endl;
- break;
- }
- }
-
- std::cout << kWhite;
-
- for (auto& ch : verbose_header) {
- std::cout << '=';
- }
-
- std::cout << std::endl;
-
- std::cout << verbose_header << std::endl;
-
- for (auto& ch : verbose_header) {
- std::cout << '=';
- }
-
- std::cout << std::endl;
-
- std::exit(NECTI_EXEC_ERROR);
-}
-} // namespace Detail
diff --git a/src/CompilerKit/utils/DylibHelpers.h b/src/CompilerKit/utils/DylibHelpers.h
deleted file mode 100644
index 6b03823..0000000
--- a/src/CompilerKit/utils/DylibHelpers.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* ========================================
-
- Copyright (C) 2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license
-
-======================================== */
-
-#pragma once
-
-#include <CompilerKit/detail/Config.h>
-#include <dlfcn.h>
-#include <mutex>
-
-struct CompilerKitDylibTraits;
-
-typedef Int32 (*CompilerKitEntrypoint)(Int32 argc, Char const* argv[]);
-typedef VoidPtr CompilerKitDylib;
-
-struct CompilerKitDylibTraits final {
- CompilerKitDylib fDylib{nullptr};
- CompilerKitEntrypoint fEntrypoint{nullptr};
- std::mutex fMutex;
-
- CompilerKitDylibTraits& operator()(const Char* path, const Char* fEntrypoint) {
- std::lock_guard<std::mutex> lock(this->fMutex);
-
- if (!path || !fEntrypoint) return *this;
-
- if (this->fDylib) {
- dlclose(this->fDylib);
- this->fDylib = nullptr;
- }
-
- this->fDylib = dlopen(path, RTLD_LAZY);
-
- if (!this->fDylib) {
- return *this;
- }
-
- this->fEntrypoint = (CompilerKitEntrypoint) dlsym(this->fDylib, fEntrypoint);
-
- if (!this->fEntrypoint) {
- dlclose(this->fDylib);
- this->fDylib = nullptr;
-
- return *this;
- }
-
- return *this;
- }
-
- NECTI_COPY_DELETE(CompilerKitDylibTraits);
-
- CompilerKitDylibTraits() = default;
-
- ~CompilerKitDylibTraits() {
- if (this->fDylib) {
- dlclose(this->fDylib);
- this->fDylib = nullptr;
- }
-
- this->fEntrypoint = nullptr;
- }
-};