diff options
| author | Amlal <amlal@nekernel.org> | 2025-04-25 13:14:01 +0200 |
|---|---|---|
| committer | Amlal <amlal@nekernel.org> | 2025-04-25 13:14:01 +0200 |
| commit | 20042235d1f53ae428aa154e64afdbae5d8d91ad (patch) | |
| tree | 6ea42d1b30505a57301f8ff2916c78ce94ff6eaf /dev/LibCompiler/AE.h | |
| parent | 0561a8d0a6ae7588309a6e3513bbfeeef5f0aa15 (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.h | 199 |
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 |
