summaryrefslogtreecommitdiff
path: root/rts/Libdw.c
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2015-12-04 22:07:13 +0000
committerSergei Trofimovich <siarheit@google.com>2015-12-04 22:07:13 +0000
commite2c518e6a751b7a16c704198a14dcc688b020038 (patch)
tree40608eb35b10b3da1da88ac2bf6055d6abf9aaa4 /rts/Libdw.c
parentc865c425a37b0bc52f4dead9d70eb0ee2bc287d6 (diff)
downloadhaskell-e2c518e6a751b7a16c704198a14dcc688b020038.tar.gz
libdw: enable support only on i386 and amd64
Summary: Currently libdw requires per-arch implementation of set_initial_registers() function. Otherwise build fails with linkage error (seen on sparc): rts/dist/build/libHSrts_thr-ghc7.11.20151129.so: undefined reference to `set_initial_registers' collect2: error: ld returned 1 exit status `gcc' failed in phase `Linker'. (Exit code: 1) make[1]: *** [ghc/stage2/build/tmp/ghc-stage2] Error 1 Converted link-time error to compile-time error, added arch whitelist. Signed-off-by: Sergei Trofimovich <siarheit@google.com> Reviewers: austin, thomie, bgamari Reviewed By: bgamari Differential Revision: https://phabricator.haskell.org/D1567
Diffstat (limited to 'rts/Libdw.c')
-rw-r--r--rts/Libdw.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/rts/Libdw.c b/rts/Libdw.c
index 1ef51b2444..8c3c58156a 100644
--- a/rts/Libdw.c
+++ b/rts/Libdw.c
@@ -299,8 +299,7 @@ static bool set_initial_registers(Dwfl_Thread *thread,
);
return dwfl_thread_state_registers(thread, 0, 17, regs);
}
-#endif
-#ifdef i386_HOST_ARCH
+#elif defined(i386_HOST_ARCH)
static bool set_initial_registers(Dwfl_Thread *thread,
void *arg STG_UNUSED) {
Dwarf_Word regs[9];
@@ -321,6 +320,8 @@ static bool set_initial_registers(Dwfl_Thread *thread,
);
return dwfl_thread_state_registers(thread, 0, 9, regs);
}
+#else
+# error "Please implement set_initial_registers() for your arch"
#endif
static const Dwfl_Thread_Callbacks thread_cbs = {