summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheng Shao <astrohavoc@gmail.com>2022-10-22 18:38:05 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-11-11 00:26:55 -0500
commitd2d6dfd271b442891b2384203c59d72c7caca5b0 (patch)
tree4474ad8d8d339f5bcd6db44b0a034306fe427f39
parentc0ba1547ca4cd16735c7e375b71d6ea6737387de (diff)
downloadhaskell-d2d6dfd271b442891b2384203c59d72c7caca5b0.tar.gz
rts: wasm32 placeholder linker
This patch adds minimal placeholder linker logic for wasm32, just enough to unblock compiling rts on wasm32. RTS linker functionality is not properly implemented yet for wasm32.
-rw-r--r--rts/Linker.c2
-rw-r--r--rts/LinkerInternals.h4
-rw-r--r--rts/linker/Wasm32Types.h9
3 files changed, 15 insertions, 0 deletions
diff --git a/rts/Linker.c b/rts/Linker.c
index ed60d14b62..6300240c48 100644
--- a/rts/Linker.c
+++ b/rts/Linker.c
@@ -946,6 +946,8 @@ SymbolAddr* lookupDependentSymbol (SymbolName* lbl, ObjectCode *dependent, SymTy
}
return internal_dlsym(lbl + 1);
+# elif defined(OBJFORMAT_WASM32)
+ return NULL;
# else
# error No OBJFORMAT_* macro set
# endif
diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h
index bafd7f0543..8982318b2a 100644
--- a/rts/LinkerInternals.h
+++ b/rts/LinkerInternals.h
@@ -29,6 +29,8 @@ void printLoadedObjects(void);
# define OBJFORMAT_PEi386
#elif defined(darwin_HOST_OS) || defined(ios_HOST_OS)
# define OBJFORMAT_MACHO
+#elif defined(wasm32_HOST_ARCH)
+# define OBJFORMAT_WASM32
#endif
typedef void SymbolAddr;
@@ -66,6 +68,8 @@ typedef enum _SymType {
# include "linker/PEi386Types.h"
#elif defined(OBJFORMAT_MACHO)
# include "linker/MachOTypes.h"
+#elif defined(OBJFORMAT_WASM32)
+# include "linker/Wasm32Types.h"
#else
# error "Unknown OBJECT_FORMAT for HOST_OS"
#endif
diff --git a/rts/linker/Wasm32Types.h b/rts/linker/Wasm32Types.h
new file mode 100644
index 0000000000..991cda35e1
--- /dev/null
+++ b/rts/linker/Wasm32Types.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#if defined(OBJFORMAT_WASM32)
+
+struct SectionFormatInfo { };
+
+struct ObjectCodeFormatInfo { };
+
+#endif