summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-haskell/gtk2hs-buildtools/files/gtk2hs-buildtools-0.13.0.4-ia64.patch')
-rw-r--r--dev-haskell/gtk2hs-buildtools/files/gtk2hs-buildtools-0.13.0.4-ia64.patch47
1 files changed, 0 insertions, 47 deletions
diff --git a/dev-haskell/gtk2hs-buildtools/files/gtk2hs-buildtools-0.13.0.4-ia64.patch b/dev-haskell/gtk2hs-buildtools/files/gtk2hs-buildtools-0.13.0.4-ia64.patch
deleted file mode 100644
index 3caf5f769cab..000000000000
--- a/dev-haskell/gtk2hs-buildtools/files/gtk2hs-buildtools-0.13.0.4-ia64.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-ia64 is is a special showflake.
-
-Technically does nothing bad,
-but it alone uses '__builtin_offsetof (struct sigcontext'
-in system headers. c2hs does not handle that.
-
-https://bugs.gentoo.org/498638
-diff --git a/c2hs/c/C.hs b/c2hs/c/C.hs
-index f79b6d9..aa1b5e4 100644
---- a/c2hs/c/C.hs
-+++ b/c2hs/c/C.hs
-@@ -1 +1,2 @@
-+{-# LANGUAGE CPP, PatternGuards #-}
- -- C->Haskell Compiler: interface to C processing routines
-@@ -94,2 +95,20 @@ isuffix = ".i"
-
-+-- This stanza workarounds very specific limitation
-+-- of c2hs of not being able to expang __builtin_offsetof
-+-- used by all glib/gtk headers at least on ia64.
-+raw_mangle :: String -> String
-+raw_mangle s = case s of
-+ [] -> []
-+#ifdef ia64_HOST_ARCH
-+ _ | Just (h, rest) <- chop_head "__builtin_offsetof (struct sigcontext, sc_gr[0])"
-+ "200" -- ia64/linux/glibc, sigh
-+ -> h ++ raw_mangle rest
-+#endif /* ia64_HOST_ARCH */
-+ (h:t) -> h : raw_mangle t
-+ where chop_head prefix new_prefix =
-+ case splitAt p_len s of
-+ (h, t) | h == prefix -> Just (new_prefix, t)
-+ _ -> Nothing
-+ where p_len = length prefix
-+
- -- given a file name (with suffix), parse that file as a C header and do the
-@@ -106,3 +124,3 @@ loadAttrC fname = do
- traceInfoRead fname
-- contents <- readFileCIO fname
-+ contents <- raw_mangle `fmap` readFileCIO fname
-
-@@ -126,4 +144,4 @@ loadAttrC fname = do
- errmsgs <- showErrors
-- fatal ("C header contains \
-- \errors:\n\n" ++ errmsgs) -- fatal error
-+ fatal ("C header contains " ++
-+ "errors:\n\n" ++ errmsgs) -- fatal error
- else do