diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# ghc-tags-1.8 (2024-01-24)
+* Add support for GHC 9.8 and drop support for GHC 9.2.
+
 # ghc-tags-1.7 (2023-06-29)
 * Add support for GHC 9.6 and drop support for GHC 9.0.
 
diff --git a/ghc-tags.cabal b/ghc-tags.cabal
--- a/ghc-tags.cabal
+++ b/ghc-tags.cabal
@@ -1,6 +1,6 @@
-cabal-version:       2.4
+cabal-version:       3.0
 name:                ghc-tags
-version:             1.7
+version:             1.8
 synopsis:            Utility for generating ctags and etags with GHC API.
 description:         Utility for generating etags (Emacs) and ctags (Vim and other
                      editors) with GHC API for efficient project navigation.
@@ -8,13 +8,13 @@
 license-file:        LICENSE
 author:              Andrzej Rybczak
 maintainer:          andrzej@rybczak.net
-copyright:           (c) 2021, Andrzej Rybczak
+copyright:           Andrzej Rybczak
 category:            Development
 extra-source-files:  CHANGELOG.md
                      README.md
 homepage:            https://github.com/arybczak/ghc-tags
 bug-reports:         https://github.com/arybczak/ghc-tags/issues
-tested-with:         GHC ==9.2.8 || ==9.4.5 || ==9.6.2
+tested-with:         GHC == { 9.4.8, 9.6.4, 9.8.1 }
 
 source-repository head
   type:     git
@@ -28,13 +28,13 @@
 executable ghc-tags
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-A4m
 
-  if !flag(ghc-lib) && impl(ghc == 9.6.*)
+  if !flag(ghc-lib) && impl(ghc == 9.8.*)
      build-depends:    ghc, ghc-boot
   else
-     build-depends:    ghc-lib == 9.6.*
+     build-depends:    ghc-lib == 9.8.*
 
-  build-depends:       base >=4.16 && <4.19
-                     , aeson >= 2.0.0.0 && < 2.2.0.0
+  build-depends:       base >=4.17 && <4.20
+                     , aeson >= 2.0.0.0
                      , async
                      , attoparsec
                      , bytestring
diff --git a/src/GhcTags/Ghc.hs b/src/GhcTags/Ghc.hs
--- a/src/GhcTags/Ghc.hs
+++ b/src/GhcTags/Ghc.hs
@@ -47,9 +47,9 @@
     | GtkTypeClass
     | GtkTypeClassMember               (HsWildCardBndrs GhcPs (LHsSigType GhcPs))
     | GtkTypeClassInstance             (HsType GhcPs)
-    | GtkTypeFamily             (Maybe ([HsTyVarBndr () GhcPs], Either (HsKind GhcPs) (HsTyVarBndr () GhcPs)))
+    | GtkTypeFamily             (Maybe ([HsTyVarBndr (HsBndrVis GhcPs) GhcPs], Either (HsKind GhcPs) (HsTyVarBndr () GhcPs)))
     | GtkTypeFamilyInstance     (TyFamInstDecl GhcPs)
-    | GtkDataTypeFamily         (Maybe ([HsTyVarBndr () GhcPs], Either (HsKind GhcPs) (HsTyVarBndr () GhcPs)))
+    | GtkDataTypeFamily         (Maybe ([HsTyVarBndr (HsBndrVis GhcPs) GhcPs], Either (HsKind GhcPs) (HsTyVarBndr () GhcPs)))
     | GtkDataTypeFamilyInstance (Maybe (HsKind GhcPs))
     | GtkForeignImport
     | GtkForeignExport
@@ -66,7 +66,7 @@
     -- ^ tag's kind
   , gtIsExported :: Bool
     -- ^ 'True' iff the term is exported
-  , gtFFI        :: Maybe String
+  , gtFFI        :: Maybe ByteString
     -- ^ @ffi@ import
   }
 
@@ -347,7 +347,7 @@
                 case sourceText of
                   NoSourceText -> tag
                   -- TODO: add header information from '_mheader'
-                  SourceText s -> tag { gtFFI = Just s }
+                  SourceText s -> tag { gtFFI = Just $ bytesFS s }
               : tags
             where
               tag = mkGhcTag' decLoc fd_name GtkForeignImport
diff --git a/src/GhcTags/GhcCompat.hs b/src/GhcTags/GhcCompat.hs
--- a/src/GhcTags/GhcCompat.hs
+++ b/src/GhcTags/GhcCompat.hs
@@ -107,7 +107,6 @@
       getToolSetting :: String -> IO String
       getToolSetting key = expandToolDir useInplaceMinGW mtool_dir <$> getSetting key
 
-  myExtraGccViaCFlags <- getSetting "GCC extra via C opts"
   -- On Windows, mingw is distributed with GHC,
   -- so we look in TopDir/../mingw/bin,
   -- as well as TopDir/../../mingw/bin for hadrian.
@@ -229,7 +228,7 @@
       , toolSettings_opt_lc      = []
       , toolSettings_opt_i       = []
 
-      , toolSettings_extraGccViaCFlags = words myExtraGccViaCFlags
+      , toolSettings_extraGccViaCFlags = []
       }
 
     , sTargetPlatform = platform
diff --git a/src/GhcTags/Tag.hs b/src/GhcTags/Tag.hs
--- a/src/GhcTags/Tag.hs
+++ b/src/GhcTags/Tag.hs
@@ -386,7 +386,7 @@
         TagFields $
           case gtFFI of
             Nothing  -> mempty
-            Just ffi -> [TagField "ffi" $ Text.pack ffi]
+            Just ffi -> [TagField "ffi" $ Text.decodeUtf8 ffi]
 
 
     -- 'TagFields' from 'GhcTagKind'
