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