diff --git a/System/Posix/DynamicLinker/Module.hsc b/System/Posix/DynamicLinker/Module.hsc
index aa83b6bc4fa58dd1f60aefacb303871b0850d0b7..aa18d839714cce0d575e066fbf3f1f668434e51e 100644
--- a/System/Posix/DynamicLinker/Module.hsc
+++ b/System/Posix/DynamicLinker/Module.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/System/Posix/DynamicLinker/Prim.hsc b/System/Posix/DynamicLinker/Prim.hsc
index 0bef60bc14df6d68df3c04fc309f4a7f01897632..9e4dde7e99725f2c8d22efd5d68308e1b9a989e0 100644
--- a/System/Posix/DynamicLinker/Prim.hsc
+++ b/System/Posix/DynamicLinker/Prim.hsc
@@ -1,5 +1,8 @@
 #ifdef __GLASGOW_HASKELL__
 {-# LANGUAGE Trustworthy #-}
+#if __GLASGOW_HASKELL__ >= 709
+{-# OPTIONS_GHC -fno-warn-trustworthy-safe #-}
+#endif
 #endif
 -----------------------------------------------------------------------------
 -- |
diff --git a/System/Posix/Env.hsc b/System/Posix/Env.hsc
index 557bc570c84512cb8d6a82ce8164b1f7f85b34b6..95b7bc8c16e2903305411e94bf2af2eaba702c86 100644
--- a/System/Posix/Env.hsc
+++ b/System/Posix/Env.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/System/Posix/IO.hsc b/System/Posix/IO.hsc
index eeabb2457f8a3e9509da5498f4f38adebfe25b9b..41e0b3b0902d4974d2fdf756710b165adcd5dbf3 100644
--- a/System/Posix/IO.hsc
+++ b/System/Posix/IO.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/System/Posix/IO/ByteString.hsc b/System/Posix/IO/ByteString.hsc
index 87dfad6fe5b6c265fd43510833b6226d1f73ee81..b8bc87aa7b8fa3b8f2149ce6ea2699ba25f95511 100644
--- a/System/Posix/IO/ByteString.hsc
+++ b/System/Posix/IO/ByteString.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/System/Posix/SharedMem.hsc b/System/Posix/SharedMem.hsc
index c85e4b7f74a9e29136c68b8a673919ea1aa576fd..ff43b9775ebce5e819fcd510f81ebd62c900128c 100644
--- a/System/Posix/SharedMem.hsc
+++ b/System/Posix/SharedMem.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/System/Posix/Temp.hsc b/System/Posix/Temp.hsc
index c27645fadeba0440956358c9473bdfd4fd36f9d0..349030b0a7cd9148c433ce310834974383235a7c 100644
--- a/System/Posix/Temp.hsc
+++ b/System/Posix/Temp.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/System/Posix/Temp/ByteString.hsc b/System/Posix/Temp/ByteString.hsc
index 73230123454383e7c10df73c8d59eb59b0795e04..61bd7e9acbcd26cff6b76bfed8545ab09d4cdb5b 100644
--- a/System/Posix/Temp/ByteString.hsc
+++ b/System/Posix/Temp/ByteString.hsc
@@ -1,4 +1,6 @@
-#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 709
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 703
 {-# LANGUAGE Trustworthy #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/changelog.md b/changelog.md
index 6ef8de8f6d7323bf022e8f5501ea98028a994ef5..d5100cf1dd62c03111103e5cf2d1ca35812a611d 100644
--- a/changelog.md
+++ b/changelog.md
@@ -3,6 +3,7 @@
 ## 2.7.0.2  *TBA*
 
   * Add support for `base-4.8.0.0`
+  * Tighten `SafeHaskell` bounds for GHC 7.10+
   * Add haddock comments on `RTLD_NEXT` and `RTLD_DEFAULT`
   * Deprecate function `haveRtldLocal`
   * Fix `getGroupEntryForID/getGroupEntryForName' on Solaris. Solaris uses