Another possible reasons for non-stable ABI hashes: names of SPEC rules. This is a backport of
https://git.haskell.org/ghc.git/commitdiff/a477e8118137b7483d0a7680c1fd337a007a023b
which is contained in 7.10.1.


Index: ghc-7.8.4/compiler/specialise/Specialise.lhs
===================================================================
--- ghc-7.8.4.orig/compiler/specialise/Specialise.lhs	2014-04-07 20:26:08.000000000 +0200
+++ ghc-7.8.4/compiler/specialise/Specialise.lhs	2015-05-25 19:26:53.276640698 +0200
@@ -1148,7 +1148,7 @@
            ; let
                 -- The rule to put in the function's specialisation is:
                 --      forall b, d1',d2'.  f t1 b t3 d1' d2' = f1 b
-                rule_name = mkFastString ("SPEC " ++ showSDocDump dflags (ppr fn <+> ppr spec_ty_args))
+                rule_name = mkFastString ("SPEC " ++ showSDocForUser dflags neverQualify (ppr fn <+> ppr spec_ty_args))
                 spec_env_rule = mkRule True {- Auto generated -} is_local
                                   rule_name
                                   inl_act       -- Note [Auto-specialisation and RULES]
