diff --git a/include/wums/defines/dynamic_linking_defines.h b/include/wums/defines/dynamic_linking_defines.h index 39e4cf6..d48c821 100644 --- a/include/wums/defines/dynamic_linking_defines.h +++ b/include/wums/defines/dynamic_linking_defines.h @@ -1,19 +1,19 @@ /**************************************************************************** - * Copyright (C) 2018 Maschell - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - ****************************************************************************/ +* Copyright (C) 2022 Maschell +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +****************************************************************************/ #pragma once @@ -25,37 +25,21 @@ extern "C" { #endif -#define DYN_LINK_FUNCTION_NAME_LENGTH 351 -#define DYN_LINK_IMPORT_NAME_LENGTH 50 - -#define DYN_LINK_FUNCTION_LIST_LENGTH 500 -#define DYN_LINK_IMPORT_LIST_LENGTH 50 - -#define DYN_LINK_TRAMPOLINE_LIST_LENGTH DYN_LINK_FUNCTION_LIST_LENGTH - -typedef struct _dyn_linking_function_t { - char functionName[DYN_LINK_FUNCTION_NAME_LENGTH + 1]; - void *address; -} dyn_linking_function_t; - +// clang-format off typedef struct _dyn_linking_import_t { - char importName[DYN_LINK_IMPORT_NAME_LENGTH + 1]; - bool isData; + const char * importName; + bool isData; } dyn_linking_import_t; typedef struct _dyn_linking_relocation_entry_t { - dyn_linking_function_t *functionEntry; - dyn_linking_import_t *importEntry; - void *destination; - char type; - size_t offset; - int32_t addend; + const char * functionName; + dyn_linking_import_t * importEntry; + void * destination; + char type; + size_t offset; + int32_t addend; } dyn_linking_relocation_entry_t; - -typedef struct _dyn_linking_relocation_data_t { - dyn_linking_function_t functions[DYN_LINK_FUNCTION_LIST_LENGTH]; - dyn_linking_import_t imports[DYN_LINK_IMPORT_LIST_LENGTH]; -} dyn_linking_relocation_data_t; +// clang-format on #ifdef __cplusplus } diff --git a/include/wums/defines/export_defines.h b/include/wums/defines/export_defines.h index ac01c8e..835a344 100644 --- a/include/wums/defines/export_defines.h +++ b/include/wums/defines/export_defines.h @@ -1,10 +1,28 @@ +/**************************************************************************** +* Copyright (C) 2022 Maschell +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +****************************************************************************/ + #pragma once #include -#define EXPORT_MAXIMUM_NAME_LENGTH 50 +// clang-format off typedef struct export_data_t { - uint32_t type; - char name[EXPORT_MAXIMUM_NAME_LENGTH]; - uint32_t address; -} export_data_t; \ No newline at end of file + uint32_t type; + const char * name; + uint32_t address; +} export_data_t; +// clang-format on \ No newline at end of file diff --git a/include/wums/defines/module_defines.h b/include/wums/defines/module_defines.h index 30bcc7a..f5e299b 100644 --- a/include/wums/defines/module_defines.h +++ b/include/wums/defines/module_defines.h @@ -1,19 +1,19 @@ /**************************************************************************** - * Copyright (C) 2018-2019 Maschell - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - ****************************************************************************/ +* Copyright (C) 2022 Maschell +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +****************************************************************************/ #pragma once @@ -27,59 +27,45 @@ extern "C" { #endif -#define MAXIMUM_MODULE_PATH_NAME_LENGTH 256 -#define MAXIMUM_EXPORT_MODULE_NAME_LENGTH 51 - -#define FUNCTION_SYMBOL_LIST_LENGTH 50000 -#define DYN_LINK_RELOCATION_LIST_LENGTH 500 -#define EXPORT_ENTRY_LIST_LENGTH 100 -#define HOOK_ENTRY_LIST_LENGTH 20 - +// clang-format off typedef struct hook_data_t { uint32_t type; uint32_t target; } hook_data_t; typedef struct module_function_symbol_data_t { - char *name; - void *address; - uint32_t size; + const char * name; + void * address; + uint32_t size; } module_function_symbol_data_t; -// clang-format off typedef struct module_information_single_t { - char path[MAXIMUM_MODULE_PATH_NAME_LENGTH]; // Path where the module is stored - dyn_linking_relocation_entry_t linking_entries[DYN_LINK_RELOCATION_LIST_LENGTH]; - char module_export_name[MAXIMUM_EXPORT_MODULE_NAME_LENGTH]; - export_data_t export_entries[EXPORT_ENTRY_LIST_LENGTH]; - hook_data_t hook_entries[HOOK_ENTRY_LIST_LENGTH]; - int32_t priority; // Priority of this module - uint32_t bssAddr; - uint32_t bssSize; - uint32_t sbssAddr; - uint32_t sbssSize; - uint32_t entrypoint; - uint32_t startAddress; - uint32_t endAddress; - uint8_t skipInitFini; - uint8_t initBeforeRelocationDoneHook; - module_function_symbol_data_t * function_symbol_entries; - uint32_t number_used_function_symbols; + dyn_linking_relocation_entry_t * linking_entries; + uint32_t number_linking_entries; + const char * module_export_name; + export_data_t * export_entries; + uint32_t number_export_entries; + hook_data_t * hook_entries; + uint32_t number_hook_entries; + uint32_t bssAddr; + uint32_t bssSize; + uint32_t sbssAddr; + uint32_t sbssSize; + uint32_t startAddress; + uint32_t endAddress; + uint32_t entrypoint; + uint8_t skipInitFini; + uint8_t initBeforeRelocationDoneHook; + module_function_symbol_data_t * function_symbol_entries; + uint32_t number_function_symbols; } module_information_single_t; -// clang-format on -#define MAXIMUM_MODULES 32 -#define MODULE_INFORMATION_VERSION 0x00000007 +#define MODULE_INFORMATION_VERSION 0x0000000D -// clang-format off typedef struct module_information_t { uint32_t version; - int32_t number_used_modules; // Number of used function. Maximum is MAXIMUM_MODULES - dyn_linking_relocation_data_t linking_data; - relocation_trampoline_entry_t trampolines[DYN_LINK_TRAMPOLINE_LIST_LENGTH]; - module_function_symbol_data_t function_symbols[FUNCTION_SYMBOL_LIST_LENGTH]; - uint32_t number_used_function_symbols; - module_information_single_t module_data[MAXIMUM_MODULES]; + uint32_t number_modules; + module_information_single_t * modules; } module_information_t; // clang-format on diff --git a/include/wums/defines/relocation_defines.h b/include/wums/defines/relocation_defines.h index 5ca5881..dd76a4a 100644 --- a/include/wums/defines/relocation_defines.h +++ b/include/wums/defines/relocation_defines.h @@ -1,7 +1,25 @@ +/**************************************************************************** +* Copyright (C) 2022 Maschell +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +****************************************************************************/ + #pragma once #include +// clang-format off typedef enum RelocationTrampolineStatus { RELOC_TRAMP_FREE = 0, RELOC_TRAMP_FIXED = 1, @@ -15,7 +33,8 @@ typedef enum RelocationType { } RelocationType; typedef struct relocation_trampoline_entry_t { - uint32_t id; - uint32_t trampoline[4]; - RelocationTrampolineStatus status; + uint32_t id; + uint32_t trampoline[4]; + RelocationTrampolineStatus status; } relocation_trampoline_entry_t; +// clang-format on