summaryrefslogtreecommitdiffhomepage
path: root/dev/LibCompiler/AE.h
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-04-25 13:14:01 +0200
committerAmlal <amlal@nekernel.org>2025-04-25 13:14:01 +0200
commit20042235d1f53ae428aa154e64afdbae5d8d91ad (patch)
tree6ea42d1b30505a57301f8ff2916c78ce94ff6eaf /dev/LibCompiler/AE.h
parent0561a8d0a6ae7588309a6e3513bbfeeef5f0aa15 (diff)
meta: update .clang-format, format codebase.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/LibCompiler/AE.h')
-rw-r--r--dev/LibCompiler/AE.h199
1 files changed, 92 insertions, 107 deletions
diff --git a/dev/LibCompiler/AE.h b/dev/LibCompiler/AE.h
index fdf42a5..6e5f97f 100644
--- a/dev/LibCompiler/AE.h
+++ b/dev/LibCompiler/AE.h
@@ -15,128 +15,113 @@
#define kAEMag1 'E'
#define kAESymbolLen (255)
-#define kAEPad (8)
-#define kAEMagLen (2)
-#define kAENullType (0x00)
+#define kAEPad (8)
+#define kAEMagLen (2)
+#define kAENullType (0x00)
// Advanced Executable File Format for ld64.
// Reloctable by offset is the default strategy.
// You can also relocate at runtime but that's up to the operating system loader.
-namespace LibCompiler
-{
- // @brief Advanced Executable Header
- // One thing to keep in mind.
- // This object format, is reloctable.
- typedef struct AEHeader final
- {
- CharType fMagic[kAEMagLen];
- CharType fArch;
- CharType fSubArch;
- SizeType fCount;
- CharType fSize;
- SizeType fStartCode;
- SizeType fCodeSize;
- CharType fPad[kAEPad];
- } PACKED AEHeader, *AEHeaderPtr;
-
- // @brief Advanced Executable Record.
- // Could be data, code or bss.
- // fKind must be filled with PEF fields.
-
- typedef struct AERecordHeader final
- {
- CharType fName[kAESymbolLen];
- SizeType fKind;
- SizeType fSize;
- SizeType fFlags;
- UIntPtr fOffset;
- CharType fPad[kAEPad];
- } PACKED AERecordHeader, *AERecordHeaderPtr;
-
- enum
- {
- kKindRelocationByOffset = 0x23f,
- kKindRelocationAtRuntime = 0x34f,
- };
-} // namespace LibCompiler
+namespace LibCompiler {
+// @brief Advanced Executable Header
+// One thing to keep in mind.
+// This object format, is reloctable.
+typedef struct AEHeader final {
+ CharType fMagic[kAEMagLen];
+ CharType fArch;
+ CharType fSubArch;
+ SizeType fCount;
+ CharType fSize;
+ SizeType fStartCode;
+ SizeType fCodeSize;
+ CharType fPad[kAEPad];
+} PACKED AEHeader, *AEHeaderPtr;
+
+// @brief Advanced Executable Record.
+// Could be data, code or bss.
+// fKind must be filled with PEF fields.
+
+typedef struct AERecordHeader final {
+ CharType fName[kAESymbolLen];
+ SizeType fKind;
+ SizeType fSize;
+ SizeType fFlags;
+ UIntPtr fOffset;
+ CharType fPad[kAEPad];
+} PACKED AERecordHeader, *AERecordHeaderPtr;
+
+enum {
+ kKindRelocationByOffset = 0x23f,
+ kKindRelocationAtRuntime = 0x34f,
+};
+} // namespace LibCompiler
// provide operator<< for AE
-inline std::ofstream& operator<<(std::ofstream& fp, LibCompiler::AEHeader& container)
-{
- fp.write((char*)&container, sizeof(LibCompiler::AEHeader));
+inline std::ofstream& operator<<(std::ofstream& fp, LibCompiler::AEHeader& container) {
+ fp.write((char*) &container, sizeof(LibCompiler::AEHeader));
- return fp;
+ return fp;
}
-inline std::ofstream& operator<<(std::ofstream& fp,
- LibCompiler::AERecordHeader& container)
-{
- fp.write((char*)&container, sizeof(LibCompiler::AERecordHeader));
+inline std::ofstream& operator<<(std::ofstream& fp, LibCompiler::AERecordHeader& container) {
+ fp.write((char*) &container, sizeof(LibCompiler::AERecordHeader));
- return fp;
+ return fp;
}
-inline std::ifstream& operator>>(std::ifstream& fp, LibCompiler::AEHeader& container)
-{
- fp.read((char*)&container, sizeof(LibCompiler::AEHeader));
- return fp;
+inline std::ifstream& operator>>(std::ifstream& fp, LibCompiler::AEHeader& container) {
+ fp.read((char*) &container, sizeof(LibCompiler::AEHeader));
+ return fp;
}
-inline std::ifstream& operator>>(std::ifstream& fp,
- LibCompiler::AERecordHeader& container)
-{
- fp.read((char*)&container, sizeof(LibCompiler::AERecordHeader));
- return fp;
+inline std::ifstream& operator>>(std::ifstream& fp, LibCompiler::AERecordHeader& container) {
+ fp.read((char*) &container, sizeof(LibCompiler::AERecordHeader));
+ return fp;
}
-namespace LibCompiler::Utils
-{
- /**
- * @brief AE Reader protocol
- *
- */
- class AEReadableProtocol final
- {
- public:
- std::ifstream FP;
-
- public:
- explicit AEReadableProtocol() = default;
- ~AEReadableProtocol() = default;
-
- LIBCOMPILER_COPY_DELETE(AEReadableProtocol);
-
- /**
- * @brief Read AE Record headers.
- *
- * @param raw the containing buffer
- * @param sz it's size (1 = one AERecordHeader, 2 two AERecordHeader(s))
- * @return AERecordHeaderPtr
- */
- AERecordHeaderPtr Read(char* raw, std::size_t sz)
- {
- if (!raw)
- return nullptr;
-
- return this->_Read<AERecordHeader>(raw, sz * sizeof(AERecordHeader));
- }
-
- private:
- /**
- * @brief Implementation of Read for raw classes.
- *
- * @tparam TypeClass The class to read.
- * @param raw the buffer
- * @param sz the size
- * @return TypeClass* the returning class.
- */
- template <typename TypeClass>
- TypeClass* _Read(char* raw, std::size_t sz)
- {
- FP.read(raw, std::streamsize(sz));
- return reinterpret_cast<TypeClass*>(raw);
- }
- };
-} // namespace LibCompiler::Utils
+namespace LibCompiler::Utils {
+/**
+ * @brief AE Reader protocol
+ *
+ */
+class AEReadableProtocol final {
+ public:
+ std::ifstream FP;
+
+ public:
+ explicit AEReadableProtocol() = default;
+ ~AEReadableProtocol() = default;
+
+ LIBCOMPILER_COPY_DELETE(AEReadableProtocol);
+
+ /**
+ * @brief Read AE Record headers.
+ *
+ * @param raw the containing buffer
+ * @param sz it's size (1 = one AERecordHeader, 2 two AERecordHeader(s))
+ * @return AERecordHeaderPtr
+ */
+ AERecordHeaderPtr Read(char* raw, std::size_t sz) {
+ if (!raw) return nullptr;
+
+ return this->_Read<AERecordHeader>(raw, sz * sizeof(AERecordHeader));
+ }
+
+ private:
+ /**
+ * @brief Implementation of Read for raw classes.
+ *
+ * @tparam TypeClass The class to read.
+ * @param raw the buffer
+ * @param sz the size
+ * @return TypeClass* the returning class.
+ */
+ template <typename TypeClass>
+ TypeClass* _Read(char* raw, std::size_t sz) {
+ FP.read(raw, std::streamsize(sz));
+ return reinterpret_cast<TypeClass*>(raw);
+ }
+};
+} // namespace LibCompiler::Utils