summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/CompilerKit/AE.h5
-rw-r--r--dev/CompilerKit/PEF.h22
-rw-r--r--dev/CompilerKit/StringKit.h2
-rw-r--r--dev/CompilerKit/UUID.h2
-rw-r--r--dev/CompilerKit/ck-osx-san.json3
-rw-r--r--dev/CompilerKit/ck-osx.json3
-rw-r--r--dev/CompilerKit/impl/32x0.h (renamed from dev/CompilerKit/detail/32x0.h)2
-rw-r--r--dev/CompilerKit/impl/64x0.h (renamed from dev/CompilerKit/detail/64x0.h)2
-rw-r--r--dev/CompilerKit/impl/Aarch64.h (renamed from dev/CompilerKit/detail/Aarch64.h)2
-rw-r--r--dev/CompilerKit/impl/PowerPC.h (renamed from dev/CompilerKit/detail/PowerPC.h)0
-rw-r--r--dev/CompilerKit/impl/X64.h (renamed from dev/CompilerKit/detail/X64.h)2
-rw-r--r--dev/CompilerKit/src/Backend/Assembler32x0.cc2
-rw-r--r--dev/CompilerKit/src/Backend/Assembler64x0.cc2
-rw-r--r--dev/CompilerKit/src/Backend/AssemblerAMD64.cc2
-rw-r--r--dev/CompilerKit/src/Backend/AssemblerARM64.cc2
-rw-r--r--dev/CompilerKit/src/Backend/AssemblerPowerPC.cc2
-rw-r--r--dev/CompilerKit/src/Frontend/CCompiler64x0.cc2
-rw-r--r--dev/CompilerKit/src/Frontend/CCompilerARM64.cc2
-rw-r--r--dev/CompilerKit/src/Frontend/CCompilerPower64.cc2
-rw-r--r--dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc2
-rw-r--r--dev/CompilerKit/src/Linker/DynamicLinker64PEF.cc59
-rw-r--r--dev/CompilerKit/utils/DylibHelpers.h50
-rw-r--r--dev/LibC++/__abi+unreachable.cc3
-rw-r--r--dev/ThirdParty/Dialogs.h41
24 files changed, 138 insertions, 78 deletions
diff --git a/dev/CompilerKit/AE.h b/dev/CompilerKit/AE.h
index 1c334ad..30f07c1 100644
--- a/dev/CompilerKit/AE.h
+++ b/dev/CompilerKit/AE.h
@@ -7,7 +7,8 @@
* ========================================================
*/
-#pragma once
+#ifndef _NECTI_AE_H_
+#define _NECTI_AE_H_
#include <CompilerKit/Defines.h>
@@ -131,3 +132,5 @@ class AEReadableProtocol final {
}
};
} // namespace CompilerKit::Utils
+
+#endif /* ifndef _NECTI_AE_H_ */ \ No newline at end of file
diff --git a/dev/CompilerKit/PEF.h b/dev/CompilerKit/PEF.h
index a997f17..db317fa 100644
--- a/dev/CompilerKit/PEF.h
+++ b/dev/CompilerKit/PEF.h
@@ -41,7 +41,7 @@
#define kPefStart "__ImageStart"
namespace CompilerKit {
- /* @brief Architecture type. */
+/* @brief Architecture type. */
enum {
kPefArchIntel86S,
kPefArchAMD64,
@@ -54,10 +54,10 @@ enum {
kPefArchInvalid = 0xFF,
};
- /* @brief Architecture vendor. */
+/* @brief Architecture vendor. */
enum {
kPefSubArchGeneric = 0,
- kPefSubArchAMD = 200,
+ kPefSubArchAMD = 200,
kPefSubArchIntel,
kPefSubArchARM,
kPefSubArchIBM,
@@ -65,11 +65,11 @@ enum {
enum {
kPefKindInvalid = 0,
- kPefKindExec = 1, /* .exec */
- kPefKindDylib = 2, /* .dylib */
- kPefKindObject = 4, /* .obj */
- kPefKindDebug = 5, /* .dbg */
- kPefKindDriver = 6,
+ kPefKindExec = 1, /* .exec */
+ kPefKindDylib = 2, /* .dylib */
+ kPefKindObject = 4, /* .obj */
+ kPefKindDebug = 5, /* .dbg */
+ kPefKindDriver = 6,
kPefKindCount,
};
@@ -93,7 +93,7 @@ typedef struct PEFContainer final {
/* PEF executable section and commands. */
- /* @brief Command Header, a la Mach-O, designed with FAT binaries and virtual memory in mind. */
+/* @brief Command Header, a la Mach-O, designed with FAT binaries and virtual memory in mind. */
typedef struct PEFCommandHeader final {
Char Name[kPefNameLen]; /* container name */
UInt32 Cpu; /* container cpu */
@@ -102,8 +102,8 @@ typedef struct PEFCommandHeader final {
UInt16 Kind; /* container kind */
UIntPtr Offset; /* File offset */
SizeType OffsetSize;
- UIntPtr VirtualAddress; /* Virtual Address */
- SizeType VirtualSize; /* Virtual Size */
+ UIntPtr VirtualAddress; /* Virtual Address */
+ SizeType VirtualSize; /* Virtual Size */
} PACKED PEFCommandHeader, *PEFCommandHeaderPtr;
enum {
diff --git a/dev/CompilerKit/StringKit.h b/dev/CompilerKit/StringKit.h
index fce1e04..422d163 100644
--- a/dev/CompilerKit/StringKit.h
+++ b/dev/CompilerKit/StringKit.h
@@ -80,7 +80,7 @@ struct StringBuilder final {
static BOOL Equals(const char* lhs, const char* rhs);
};
-using BasicStringOr = ErrorOr<BasicString>;
+using BasicStringOr = ErrorOr<BasicString>;
using BasicStringPtr = BasicString*;
using BasicStringRef = Ref<BasicString>;
} // namespace CompilerKit
diff --git a/dev/CompilerKit/UUID.h b/dev/CompilerKit/UUID.h
index d54eec7..39db276 100644
--- a/dev/CompilerKit/UUID.h
+++ b/dev/CompilerKit/UUID.h
@@ -172,7 +172,7 @@ namespace Detail {
process_byte(static_cast<unsigned char>((bitCount >> 24) & 0xFF));
process_byte(static_cast<unsigned char>((bitCount >> 16) & 0xFF));
process_byte(static_cast<unsigned char>((bitCount >> 8) & 0xFF));
- process_byte(static_cast<unsigned char>((bitCount) & 0xFF));
+ process_byte(static_cast<unsigned char>((bitCount) &0xFF));
memcpy(digest, m_digest, 5 * sizeof(uint32_t));
return digest;
diff --git a/dev/CompilerKit/ck-osx-san.json b/dev/CompilerKit/ck-osx-san.json
index f190db2..df1c36b 100644
--- a/dev/CompilerKit/ck-osx-san.json
+++ b/dev/CompilerKit/ck-osx-san.json
@@ -5,7 +5,8 @@
"../CompilerKit",
"../",
"../CompilerKit/src/",
- "../CompilerKit/src/impl"
+ "../CompilerKit/src/impl",
+ "/opt/homebrew/Cellar/boost/1.87.0/include"
],
"sources_path": [
"src/*.cc",
diff --git a/dev/CompilerKit/ck-osx.json b/dev/CompilerKit/ck-osx.json
index 4880763..cab0221 100644
--- a/dev/CompilerKit/ck-osx.json
+++ b/dev/CompilerKit/ck-osx.json
@@ -5,7 +5,8 @@
"../CompilerKit",
"../",
"../CompilerKit/src/",
- "../CompilerKit/src/impl"
+ "../CompilerKit/src/impl",
+ "/opt/homebrew/Cellar/boost/1.87.0/include"
],
"sources_path": [
"src/*.cc",
diff --git a/dev/CompilerKit/detail/32x0.h b/dev/CompilerKit/impl/32x0.h
index f2d30e4..635833e 100644
--- a/dev/CompilerKit/detail/32x0.h
+++ b/dev/CompilerKit/impl/32x0.h
@@ -9,7 +9,7 @@
#include <CompilerKit/Defines.h>
// @brief Open32x0 support.
-// @file detail/32x0.h
+// @file impl/32x0.h
#define CK_ASM_OPCODE(__NAME, __OPCODE, __FUNCT3, __FUNCT7) \
{.fName = __NAME, .fOpcode = __OPCODE, .fFunct3 = __FUNCT3, .fFunct7 = __FUNCT7},
diff --git a/dev/CompilerKit/detail/64x0.h b/dev/CompilerKit/impl/64x0.h
index 9c12ca5..116c5ae 100644
--- a/dev/CompilerKit/detail/64x0.h
+++ b/dev/CompilerKit/impl/64x0.h
@@ -10,7 +10,7 @@
#include <vector>
// @brief Open64x0 support.
-// @file detail/64x0.h
+// @file impl/64x0.h
#define CK_ASM_OPCODE(__NAME, __OPCODE, __FUNCT3, __FUNCT7) \
{.fName = __NAME, .fOpcode = __OPCODE, .fFunct3 = __FUNCT3, .fFunct7 = __FUNCT7},
diff --git a/dev/CompilerKit/detail/Aarch64.h b/dev/CompilerKit/impl/Aarch64.h
index 528a993..939235f 100644
--- a/dev/CompilerKit/detail/Aarch64.h
+++ b/dev/CompilerKit/impl/Aarch64.h
@@ -10,7 +10,7 @@ Copyright (C) 2024-2025 Amlal EL Mahrouss, all rights reserved
#include <stdint.h>
/// @brief ARM64 encoding support.
-/// @file detail/Aarch64.h
+/// @file impl/Aarch64.h
struct CpuOpcodeArm64;
diff --git a/dev/CompilerKit/detail/PowerPC.h b/dev/CompilerKit/impl/PowerPC.h
index 03aea49..03aea49 100644
--- a/dev/CompilerKit/detail/PowerPC.h
+++ b/dev/CompilerKit/impl/PowerPC.h
diff --git a/dev/CompilerKit/detail/X64.h b/dev/CompilerKit/impl/X64.h
index ed995be..3e9c840 100644
--- a/dev/CompilerKit/detail/X64.h
+++ b/dev/CompilerKit/impl/X64.h
@@ -9,7 +9,7 @@
#include <CompilerKit/Defines.h>
// @brief AMD64 support.
-// @file detail/X64.h
+// @file impl/X64.h
#define CK_ASM_OPCODE(__NAME, __OPCODE) {.fName = __NAME, .fOpcode = __OPCODE},
diff --git a/dev/CompilerKit/src/Backend/Assembler32x0.cc b/dev/CompilerKit/src/Backend/Assembler32x0.cc
index 8478930..5534f59 100644
--- a/dev/CompilerKit/src/Backend/Assembler32x0.cc
+++ b/dev/CompilerKit/src/Backend/Assembler32x0.cc
@@ -24,7 +24,7 @@
#include <CompilerKit/AE.h>
#include <CompilerKit/Frontend.h>
#include <CompilerKit/PEF.h>
-#include <CompilerKit/detail/32x0.h>
+#include <CompilerKit/impl/32x0.h>
#include <CompilerKit/utils/CompilerUtils.h>
/////////////////////////////////////////////////////////////////////////////////////////
diff --git a/dev/CompilerKit/src/Backend/Assembler64x0.cc b/dev/CompilerKit/src/Backend/Assembler64x0.cc
index c2dd31c..7aa991b 100644
--- a/dev/CompilerKit/src/Backend/Assembler64x0.cc
+++ b/dev/CompilerKit/src/Backend/Assembler64x0.cc
@@ -24,7 +24,7 @@
#include <CompilerKit/AE.h>
#include <CompilerKit/Frontend.h>
#include <CompilerKit/PEF.h>
-#include <CompilerKit/detail/64x0.h>
+#include <CompilerKit/impl/64x0.h>
#include <CompilerKit/utils/CompilerUtils.h>
#include <algorithm>
#include <filesystem>
diff --git a/dev/CompilerKit/src/Backend/AssemblerAMD64.cc b/dev/CompilerKit/src/Backend/AssemblerAMD64.cc
index 7e21c93..2e5f58f 100644
--- a/dev/CompilerKit/src/Backend/AssemblerAMD64.cc
+++ b/dev/CompilerKit/src/Backend/AssemblerAMD64.cc
@@ -31,7 +31,7 @@
#include <CompilerKit/AE.h>
#include <CompilerKit/Frontend.h>
#include <CompilerKit/PEF.h>
-#include <CompilerKit/detail/X64.h>
+#include <CompilerKit/impl/X64.h>
#include <algorithm>
#include <cstdlib>
#include <filesystem>
diff --git a/dev/CompilerKit/src/Backend/AssemblerARM64.cc b/dev/CompilerKit/src/Backend/AssemblerARM64.cc
index ec0f16b..fb03da8 100644
--- a/dev/CompilerKit/src/Backend/AssemblerARM64.cc
+++ b/dev/CompilerKit/src/Backend/AssemblerARM64.cc
@@ -24,7 +24,7 @@
#include <CompilerKit/Frontend.h>
#include <CompilerKit/PEF.h>
#include <CompilerKit/Version.h>
-#include <CompilerKit/detail/Aarch64.h>
+#include <CompilerKit/impl/Aarch64.h>
#include <CompilerKit/utils/AsmUtils.h>
#include <algorithm>
#include <filesystem>
diff --git a/dev/CompilerKit/src/Backend/AssemblerPowerPC.cc b/dev/CompilerKit/src/Backend/AssemblerPowerPC.cc
index 3282ccb..ffcc102 100644
--- a/dev/CompilerKit/src/Backend/AssemblerPowerPC.cc
+++ b/dev/CompilerKit/src/Backend/AssemblerPowerPC.cc
@@ -24,7 +24,7 @@
#include <CompilerKit/Frontend.h>
#include <CompilerKit/PEF.h>
#include <CompilerKit/Version.h>
-#include <CompilerKit/detail/PowerPC.h>
+#include <CompilerKit/impl/PowerPC.h>
#include <CompilerKit/utils/AsmUtils.h>
#include <algorithm>
#include <filesystem>
diff --git a/dev/CompilerKit/src/Frontend/CCompiler64x0.cc b/dev/CompilerKit/src/Frontend/CCompiler64x0.cc
index de76807..c23f255 100644
--- a/dev/CompilerKit/src/Frontend/CCompiler64x0.cc
+++ b/dev/CompilerKit/src/Frontend/CCompiler64x0.cc
@@ -12,7 +12,7 @@
#include <CompilerKit/Frontend.h>
#include <CompilerKit/UUID.h>
-#include <CompilerKit/detail/64x0.h>
+#include <CompilerKit/impl/64x0.h>
#include <CompilerKit/utils/CompilerUtils.h>
#include <cstdio>
#include <fstream>
diff --git a/dev/CompilerKit/src/Frontend/CCompilerARM64.cc b/dev/CompilerKit/src/Frontend/CCompilerARM64.cc
index 9cfc019..88e2113 100644
--- a/dev/CompilerKit/src/Frontend/CCompilerARM64.cc
+++ b/dev/CompilerKit/src/Frontend/CCompilerARM64.cc
@@ -12,7 +12,7 @@
#include <CompilerKit/Frontend.h>
#include <CompilerKit/UUID.h>
-#include <CompilerKit/detail/Aarch64.h>
+#include <CompilerKit/impl/Aarch64.h>
#include <CompilerKit/utils/CompilerUtils.h>
#include <cstdio>
diff --git a/dev/CompilerKit/src/Frontend/CCompilerPower64.cc b/dev/CompilerKit/src/Frontend/CCompilerPower64.cc
index 1888ed0..39bb58c 100644
--- a/dev/CompilerKit/src/Frontend/CCompilerPower64.cc
+++ b/dev/CompilerKit/src/Frontend/CCompilerPower64.cc
@@ -9,7 +9,7 @@
#include <CompilerKit/Frontend.h>
#include <CompilerKit/UUID.h>
-#include <CompilerKit/detail/PowerPC.h>
+#include <CompilerKit/impl/PowerPC.h>
#include <CompilerKit/utils/CompilerUtils.h>
#include <cstdio>
#include <fstream>
diff --git a/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc b/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc
index c92f2e2..19bbe91 100644
--- a/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc
+++ b/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc
@@ -18,7 +18,7 @@
#include <CompilerKit/Frontend.h>
#include <CompilerKit/PEF.h>
#include <CompilerKit/UUID.h>
-#include <CompilerKit/detail/X64.h>
+#include <CompilerKit/impl/X64.h>
#include <CompilerKit/utils/CompilerUtils.h>
#include <csignal>
#include <cstdlib>
diff --git a/dev/CompilerKit/src/Linker/DynamicLinker64PEF.cc b/dev/CompilerKit/src/Linker/DynamicLinker64PEF.cc
index 04dda25..617ee03 100644
--- a/dev/CompilerKit/src/Linker/DynamicLinker64PEF.cc
+++ b/dev/CompilerKit/src/Linker/DynamicLinker64PEF.cc
@@ -41,7 +41,10 @@
/// @brief PEF stack size symbol.
#define kLinkerStackSizeSymbol "__PEFSizeOfReserveStack"
-#define kConsoleOut (std::cout << "\e[0;31m" << "ld64: " << "\e[0;97m")
+#define kConsoleOut \
+ (std::cout << "\e[0;31m" \
+ << "ld64: " \
+ << "\e[0;97m")
enum {
kABITypeNull = 0,
@@ -309,13 +312,13 @@ NECTI_MODULE(DynamicLinker64PEF) {
}
ld_mark_header:
- command_header.Offset = offset_of_obj;
- command_header.Kind = ae_records[ae_record_index].fKind;
- command_header.VirtualSize = ae_records[ae_record_index].fSize;
- command_header.Cpu = hdr.fArch;
+ command_header.Offset = offset_of_obj;
+ command_header.Kind = ae_records[ae_record_index].fKind;
+ command_header.VirtualSize = ae_records[ae_record_index].fSize;
+ command_header.Cpu = hdr.fArch;
command_header.VirtualAddress = org;
- command_header.SubCpu = hdr.fSubArch;
- command_header.OffsetSize = ae_records[ae_record_index].fSize;
+ command_header.SubCpu = hdr.fSubArch;
+ command_header.OffsetSize = ae_records[ae_record_index].fSize;
org += command_header.VirtualSize;
@@ -378,8 +381,7 @@ NECTI_MODULE(DynamicLinker64PEF) {
cmd_hdr_name = command_hdr.Name;
- if (auto it = std::find(not_found.begin(), not_found.end(),
- cmd_hdr_name);
+ if (auto it = std::find(not_found.begin(), not_found.end(), cmd_hdr_name);
it == not_found.end()) {
not_found.emplace_back(cmd_hdr_name);
}
@@ -440,7 +442,8 @@ NECTI_MODULE(DynamicLinker64PEF) {
<< ", you may have forget to link "
"against the C++ runtime library.\n";
- kConsoleOut << "Undefined entrypoint " << kLinkerStart << " for executable: " << kOutput << "\n";
+ kConsoleOut << "Undefined entrypoint " << kLinkerStart << " for executable: " << kOutput
+ << "\n";
}
// step 4: write all PEF commands.
@@ -454,10 +457,10 @@ NECTI_MODULE(DynamicLinker64PEF) {
strncpy(date_cmd_hdr.Name, timeStampStr.c_str(), timeStampStr.size());
- date_cmd_hdr.Flags = 0;
- date_cmd_hdr.Kind = CompilerKit::kPefZero;
- date_cmd_hdr.Offset = output_fc.tellp();
- date_cmd_hdr.VirtualSize = timeStampStr.size();
+ date_cmd_hdr.Flags = 0;
+ date_cmd_hdr.Kind = CompilerKit::kPefZero;
+ date_cmd_hdr.Offset = output_fc.tellp();
+ date_cmd_hdr.VirtualSize = timeStampStr.size();
command_headers.push_back(date_cmd_hdr);
@@ -487,19 +490,19 @@ NECTI_MODULE(DynamicLinker64PEF) {
std::memcpy(abi_cmd_hdr.Name, abi.c_str(), abi.size());
- abi_cmd_hdr.VirtualSize = abi.size();
- abi_cmd_hdr.Offset = output_fc.tellp();
- abi_cmd_hdr.Flags = 0;
- abi_cmd_hdr.Kind = CompilerKit::kPefLinkerID;
+ abi_cmd_hdr.VirtualSize = abi.size();
+ abi_cmd_hdr.Offset = output_fc.tellp();
+ abi_cmd_hdr.Flags = 0;
+ abi_cmd_hdr.Kind = CompilerKit::kPefLinkerID;
command_headers.push_back(abi_cmd_hdr);
CompilerKit::PEFCommandHeader stack_cmd_hdr{0};
- stack_cmd_hdr.Cpu = kArch;
- stack_cmd_hdr.Flags = 0;
- stack_cmd_hdr.VirtualSize = sizeof(uintptr_t);
- stack_cmd_hdr.Offset = 0;
+ stack_cmd_hdr.Cpu = kArch;
+ stack_cmd_hdr.Flags = 0;
+ stack_cmd_hdr.VirtualSize = sizeof(uintptr_t);
+ stack_cmd_hdr.Offset = 0;
std::memcpy(stack_cmd_hdr.Name, kLinkerStackSizeSymbol, strlen(kLinkerStackSizeSymbol));
@@ -521,10 +524,10 @@ NECTI_MODULE(DynamicLinker64PEF) {
std::memcpy(uuid_cmd_hdr.Name, "Container:GUID:4:", strlen("Container:GUID:4:"));
std::memcpy(uuid_cmd_hdr.Name + strlen("Container:GUID:4:"), uuidStr.c_str(), uuidStr.size());
- uuid_cmd_hdr.VirtualSize = strlen(uuid_cmd_hdr.Name);
- uuid_cmd_hdr.Offset = output_fc.tellp();
- uuid_cmd_hdr.Flags = CompilerKit::kPefLinkerID;
- uuid_cmd_hdr.Kind = CompilerKit::kPefZero;
+ uuid_cmd_hdr.VirtualSize = strlen(uuid_cmd_hdr.Name);
+ uuid_cmd_hdr.Offset = output_fc.tellp();
+ uuid_cmd_hdr.Flags = CompilerKit::kPefLinkerID;
+ uuid_cmd_hdr.Kind = CompilerKit::kPefZero;
command_headers.push_back(uuid_cmd_hdr);
@@ -589,8 +592,8 @@ NECTI_MODULE(DynamicLinker64PEF) {
if (kVerbose) {
kConsoleOut << "Command name: " << name << "\n";
- kConsoleOut << "VirtualAddress of command content: " << command_headers[commandHeaderIndex].Offset
- << "\n";
+ kConsoleOut << "VirtualAddress of command content: "
+ << command_headers[commandHeaderIndex].Offset << "\n";
}
output_fc << command_headers[commandHeaderIndex];
diff --git a/dev/CompilerKit/utils/DylibHelpers.h b/dev/CompilerKit/utils/DylibHelpers.h
index 1ae7c03..31e0b68 100644
--- a/dev/CompilerKit/utils/DylibHelpers.h
+++ b/dev/CompilerKit/utils/DylibHelpers.h
@@ -7,7 +7,57 @@
#pragma once
#include <CompilerKit/Defines.h>
+#include <mutex>
#include <dlfcn.h>
+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;
+ }
+};
diff --git a/dev/LibC++/__abi+unreachable.cc b/dev/LibC++/__abi+unreachable.cc
index fb1d336..f72e749 100644
--- a/dev/LibC++/__abi+unreachable.cc
+++ b/dev/LibC++/__abi+unreachable.cc
@@ -12,5 +12,6 @@ static const int32_t __unreachable_code = 34;
extern "C" void __compilerkit_unreachable(void) {
std::base_process::signal(__unreachable_code);
- while (1);
+ while (1)
+ ;
} \ No newline at end of file
diff --git a/dev/ThirdParty/Dialogs.h b/dev/ThirdParty/Dialogs.h
index ce50b81..84e239f 100644
--- a/dev/ThirdParty/Dialogs.h
+++ b/dev/ThirdParty/Dialogs.h
@@ -175,7 +175,7 @@ namespace internal {
#elif __EMSCRIPTEN__
void start(int exit_code);
#else
- void start_process(std::vector<std::string> const& command);
+ void start_process(std::vector<std::string> const& command);
#endif
~executor();
@@ -490,10 +490,10 @@ inline settings::settings(bool resync) {
#if _WIN32
flags(flag::is_vista) = internal::is_vista();
#elif !__APPLE__
- flags(flag::has_zenity) = check_program("zenity");
+ flags(flag::has_zenity) = check_program("zenity");
flags(flag::has_matedialog) = check_program("matedialog");
- flags(flag::has_qarma) = check_program("qarma");
- flags(flag::has_kdialog) = check_program("kdialog");
+ flags(flag::has_qarma) = check_program("qarma");
+ flags(flag::has_kdialog) = check_program("kdialog");
// If multiple helpers are available, try to default to the best one
if (flags(flag::has_zenity) && flags(flag::has_kdialog)) {
@@ -540,7 +540,7 @@ inline bool settings::check_program(std::string const& program) {
(void) program;
return false;
#else
- int exit_code = -1;
+ int exit_code = -1;
internal::executor async;
async.start_process({"/bin/sh", "-c", "which " + program});
async.result(&exit_code);
@@ -604,7 +604,7 @@ inline std::string path::home() {
if (size_max != -1) len = size_t(size_max);
#endif
std::vector<char> buf(len);
- struct passwd pwd, *result;
+ struct passwd pwd, *result;
if (getpwuid_r(getuid(), &pwd, buf.data(), buf.size(), &result) == 0) return result->pw_dir;
#endif
return "/";
@@ -717,7 +717,7 @@ inline void internal::executor::start_process(std::vector<std::string> const& co
}
close(in[1]);
- m_fd = out[0];
+ m_fd = out[0];
auto flags = fcntl(m_fd, F_GETFL);
fcntl(m_fd, F_SETFL, flags | O_NONBLOCK);
@@ -753,7 +753,7 @@ inline bool internal::executor::ready(int timeout /* = default_wait_timeout */)
// FIXME: do something
(void) timeout;
#else
- char buf[BUFSIZ];
+ char buf[BUFSIZ];
ssize_t received = read(m_fd, buf, BUFSIZ); // Flawfinder: ignore
if (received > 0) {
m_stdout += std::string(buf, received);
@@ -764,7 +764,7 @@ inline bool internal::executor::ready(int timeout /* = default_wait_timeout */)
// (this happens when the calling application handles or ignores SIG_CHLD) and results in
// waitpid() failing with ECHILD. Otherwise we assume the child is running and we sleep for
// a little while.
- int status;
+ int status;
pid_t child = waitpid(m_pid, &status, WNOHANG);
if (child != m_pid && (child >= 0 || errno != ECHILD)) {
// FIXME: this happens almost always at first iteration
@@ -782,7 +782,8 @@ inline bool internal::executor::ready(int timeout /* = default_wait_timeout */)
inline void internal::executor::stop() {
// Loop until the user closes the dialog
- while (!ready());
+ while (!ready())
+ ;
}
// dll implementation
@@ -878,11 +879,11 @@ inline std::vector<std::string> internal::dialog::desktop_helper() const {
#if __APPLE__
return {"osascript"};
#else
- return {flags(flag::has_zenity) ? "zenity"
+ return {flags(flag::has_zenity) ? "zenity"
: flags(flag::has_matedialog) ? "matedialog"
- : flags(flag::has_qarma) ? "qarma"
- : flags(flag::has_kdialog) ? "kdialog"
- : "echo"};
+ : flags(flag::has_qarma) ? "qarma"
+ : flags(flag::has_kdialog) ? "kdialog"
+ : "echo"};
#endif
}
@@ -1124,9 +1125,9 @@ inline internal::file_dialog::file_dialog(type in_type, std::string const& title
// Split the pattern list to check whether "*" is in there; if it
// is, we have to disable filters because there is no mechanism in
// OS X for the user to override the filter.
- std::regex sep("\\s+");
- std::string filter_list;
- bool has_filter = true;
+ std::regex sep("\\s+");
+ std::string filter_list;
+ bool has_filter = true;
std::sregex_token_iterator iter(patterns.begin(), patterns.end(), sep, -1);
std::sregex_token_iterator end;
for (; iter != end; ++iter) {
@@ -1235,7 +1236,7 @@ inline std::vector<std::string> internal::file_dialog::vector_result() {
return m_vector_result;
#else
std::vector<std::string> ret;
- auto result = m_async->result();
+ auto result = m_async->result();
for (;;) {
// Split result along newline characters
auto i = result.find('\n');
@@ -1568,7 +1569,7 @@ inline message::message(std::string const& title, std::string const& text,
if_cancel = button::ok;
break;
}
- m_mappings[1] = if_cancel;
+ m_mappings[1] = if_cancel;
m_mappings[256] = if_cancel; // XXX: I think this was never correct
script += " with icon ";
switch (_icon) {
@@ -1655,7 +1656,7 @@ inline message::message(std::string const& title, std::string const& text,
if (_choice == choice::yes_no_cancel) flag += "cancel";
command.push_back(flag);
if (_choice == choice::yes_no || _choice == choice::yes_no_cancel) {
- m_mappings[0] = button::yes;
+ m_mappings[0] = button::yes;
m_mappings[256] = button::no;
}
}