diff --git a/llvm-pretty.cabal b/llvm-pretty.cabal
--- a/llvm-pretty.cabal
+++ b/llvm-pretty.cabal
@@ -1,5 +1,5 @@
 Name:                llvm-pretty
-Version:             0.2.0.0
+Version:             0.3.0.0
 License:             BSD3
 License-file:        LICENSE
 Author:              Trevor Elliott
diff --git a/src/Text/LLVM.hs b/src/Text/LLVM.hs
--- a/src/Text/LLVM.hs
+++ b/src/Text/LLVM.hs
@@ -237,6 +237,7 @@
     , defArgs    = args
     , defVarArgs = False
     , defBody    = body
+    , defSection = Nothing
     }
   let fnty = PtrTo (FunTy rty (map typedType args) False)
   return (Typed fnty (ValSymbol fun))
@@ -262,6 +263,7 @@
     , defArgs    = args
     , defVarArgs = va
     , defBody    = snd (runBB (k (map (fmap toValue) args)))
+    , defSection = Nothing
     }
   let fnty = PtrTo (FunTy rty sig False)
   return (Typed fnty (ValSymbol sym))
diff --git a/src/Text/LLVM/AST.hs b/src/Text/LLVM/AST.hs
--- a/src/Text/LLVM/AST.hs
+++ b/src/Text/LLVM/AST.hs
@@ -530,6 +530,7 @@
   , defName    :: Symbol
   , defArgs    :: [Typed Ident]
   , defVarArgs :: Bool
+  , defSection :: Maybe String
   , defBody    :: [BasicBlock]
   } deriving (Show)
 
@@ -539,6 +540,7 @@
          <+> ppType (defRetType d)
          <+> ppSymbol (defName d)
           <> ppArgList (defVarArgs d) (map (ppTyped ppIdent) (defArgs d))
+         <+> ppMaybe (\s  -> text "section" <+> doubleQuotes (text s)) (defSection d)
          <+> ppMaybe (\gc -> text "gc" <+> ppGC gc) (funGC (defAttrs d))
          <+> char '{'
          $+$ vcat (map ppBasicBlock (defBody d))
