Skip to content

Commit

Permalink
Review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
RyanGlScott committed Aug 1, 2024
1 parent c596e8d commit d978319
Show file tree
Hide file tree
Showing 14 changed files with 109 additions and 89 deletions.
2 changes: 2 additions & 0 deletions stubs-common/src/Stubs/FunctionOverride/AArch32/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ aarch32LinuxIntegerArguments bak archVals argTypes regFile mem = do
let ?ptrWidth = ptrWidth
let stackArgList = map (AFS.loadIntegerStackArgument bak archVals regFile mem)
[0..]
-- NB: `regArgList` below only has four elements, so the cost of using (++)
-- below (which is O(n) in the size of the first list n) is negligible.
let argList = regArgList ++ stackArgList
AO.buildArgumentAssignment bak argTypes argList
where
Expand Down
4 changes: 3 additions & 1 deletion stubs-common/src/Stubs/FunctionOverride/PPC/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ ppcLinuxIntegerArguments
)
=> bak
-> DMS.GenArchVals mem (DMP.AnyPPC v)
-- ^ ARM-specific architecture information
-- ^ PPC-specific architecture information
-> LCT.CtxRepr atps
-- ^ The argument types
-> Ctx.Assignment (LCS.RegValue' sym) (DMS.MacawCrucibleRegTypes (DMP.AnyPPC v))
Expand All @@ -84,6 +84,8 @@ ppcLinuxIntegerArguments bak archVals argTypes regs mem = do
-- not 0, as the first stack argument is located at @8(r1)@
-- instead of @0(r1)@ (which is where the back chain resides).
[1..]
-- NB: `regArgList` below only has eight elements, so the cost of using (++)
-- below (which is O(n) in the size of the first list n) is negligible.
let argList = regArgList ++ stackArgList
AO.buildArgumentAssignment bak argTypes argList
where
Expand Down
2 changes: 2 additions & 0 deletions stubs-common/src/Stubs/FunctionOverride/X86_64/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ x86_64LinuxIntegerArguments bak archVals argTypes regs mem = do
-- instead of @0(%rsp)@ (which is where the return address
-- resides).
[1..]
-- NB: `regArgList` below only has six elements, so the cost of using (++)
-- below (which is O(n) in the size of the first list n) is negligible.
let argList = regArgList ++ stackArgList
AO.buildArgumentAssignment bak argTypes argList
where
Expand Down
24 changes: 15 additions & 9 deletions stubs-common/src/Stubs/Memory/AArch32/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE RankNTypes #-}
{-# OPTIONS_GHC -Wno-orphans #-}

{-| Description: IsStubsMemoryModel instance for LLVMMemory with AArch32
Expand Down Expand Up @@ -50,7 +51,7 @@ import qualified Data.Macaw.Architecture.Info as DMA
import qualified Data.Parameterized.NatRepr as PN
import qualified Stubs.Memory as SM
import qualified SemMC.Architecture.AArch32 as SAA
import Control.Monad.IO.Class (liftIO)
import Control.Monad.IO.Class (MonadIO(..))
import Data.Macaw.AArch32.Symbolic ()
import qualified Stubs.Extensions as SE
import qualified Data.Macaw.Symbolic.MemOps as DMSMO
Expand All @@ -59,18 +60,21 @@ import qualified Data.Macaw.BinaryLoader as DMB
import qualified Stubs.Loader.BinaryConfig as SLB
import qualified Stubs.Memory.Common as SMC

instance SM.IsStubsMemoryModel DMS.LLVMMemory SAA.AArch32 where
instance SM.IsStubsMemoryModel DMS.LLVMMemory SAA.AArch32 where
type instance PtrType DMS.LLVMMemory SAA.AArch32 = LCLM.LLVMPointerType (DMC.ArchAddrWidth SAA.AArch32)
type instance MemType DMS.LLVMMemory SAA.AArch32 = LCLM.Mem
type instance BVToPtrTy w DMS.LLVMMemory SAA.AArch32 = LCLM.LLVMPointerType w
type instance MemTable sym DMS.LLVMMemory SAA.AArch32 = AEM.MemPtrTable sym SAA.AArch32
type instance MemMap sym SAA.AArch32 = DMSMO.GlobalMap sym LCLM.Mem (DMC.ArchAddrWidth SAA.AArch32)

type instance VerifierState sym DMS.LLVMMemory SAA.AArch32 = (SE.AmbientSimulatorState sym SAA.AArch32)
type instance VerifierState sym DMS.LLVMMemory SAA.AArch32 = (SE.AmbientSimulatorState sym SAA.AArch32)

bvToPtr :: LCT.TypeRepr tp-> LCT.TypeRepr (SM.ToPtrTy tp DMS.LLVMMemory SAA.AArch32)
bvToPtr (LCT.BVRepr n) = LCLM.LLVMPointerRepr n
bvToPtr ty = case ty of
bvToPtr :: LCT.TypeRepr tp -> LCT.TypeRepr (SM.ToPtrTy tp DMS.LLVMMemory SAA.AArch32)
bvToPtr ty = case ty of
-- Map BVRepr to LLVMPointerRepr...
LCT.BVRepr n -> LCLM.LLVMPointerRepr n

-- ...and map all other TypeReprs to themselves.
LCT.AnyRepr -> LCT.AnyRepr
LCT.UnitRepr -> LCT.UnitRepr
LCT.BoolRepr -> LCT.BoolRepr
Expand Down Expand Up @@ -99,11 +103,13 @@ instance SM.IsStubsMemoryModel DMS.LLVMMemory SAA.AArch32 where
memPtrSize :: PN.NatRepr (DMC.ArchAddrWidth SAA.AArch32)
memPtrSize = WI.knownRepr

genStackPtr :: (Monad m, MonadIO m) => LCLM.LLVMPtr sym 32 -> WI.SymBV sym 32 -> SC.Sym sym -> m (LCLM.LLVMPtr sym 32)
genStackPtr baseptr offset (SC.Sym sym _) = liftIO $ LCLM.ptrAdd sym WI.knownRepr baseptr offset

initMem (SC.Sym sym bak) archInfo stackSize binConf halloc = do
initMem :: SC.Sym sym -> DMA.ArchitectureInfo SAA.AArch32 -> Integer -> SLB.BinaryConfig SAA.AArch32 binfmt -> LCF.HandleAllocator -> (Monad m, MonadIO m) => m (SM.InitialMemory sym DMS.LLVMMemory SAA.AArch32)
initMem (SC.Sym sym bak) archInfo stackSize binConf halloc = do
let endian = DMSM.toCrucibleEndian (DMA.archEndianness archInfo)

let mems = fmap (DMB.memoryImage . SLB.lbpBinary) (SLB.bcBinaries binConf)
let ?ptrWidth = SM.memPtrSize @DMS.LLVMMemory @SAA.AArch32
(recordFn, _) <- liftIO SM.buildRecordLLVMAnnotation
Expand All @@ -119,7 +125,7 @@ instance SM.IsStubsMemoryModel DMS.LLVMMemory SAA.AArch32 where
mem2 <- liftIO $ LCLM.doArrayStore bak mem1 stackBasePtr LCLD.noAlignment stackArrayStorage stackSizeBV

(mem3, globals0) <- liftIO $ aarch32LinuxInitGlobals tlsvar (SC.Sym sym bak) mem2
memVar <- liftIO $ LCLM.mkMemVar (DT.pack "ambient-verifier::memory") halloc
memVar <- liftIO $ LCLM.mkMemVar (DT.pack "stubs::memory") halloc
let globals1 = LCSG.insertGlobal memVar mem3 globals0
let globalMap = AEM.mapRegionPointers memPtrTbl

Expand Down
12 changes: 9 additions & 3 deletions stubs-common/src/Stubs/Memory/PPC/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import qualified What4.Symbol as WSym

import qualified Stubs.Memory as AM
import qualified Stubs.Common as SC
import qualified Lang.Crucible.FunctionHandle as LCF
import qualified Lang.Crucible.Types as LCT
import qualified Data.Macaw.Symbolic.Memory as DMSM
import qualified Data.Macaw.Architecture.Info as DMA
Expand All @@ -56,9 +57,12 @@ instance (DMS.SymArchConstraints (DMP.AnyPPC v), 16 WI.<= SAP.AddrWidth v) =>

type instance VerifierState sym DMS.LLVMMemory (DMP.AnyPPC v) = SE.AmbientSimulatorState sym (DMP.AnyPPC v)

bvToPtr :: LCT.TypeRepr tp-> LCT.TypeRepr (SM.ToPtrTy tp DMS.LLVMMemory (DMP.AnyPPC v))
bvToPtr (LCT.BVRepr n) = LCLM.LLVMPointerRepr n
bvToPtr :: LCT.TypeRepr tp -> LCT.TypeRepr (SM.ToPtrTy tp DMS.LLVMMemory (DMP.AnyPPC v))
bvToPtr ty = case ty of
-- Map BVRepr to LLVMPointerRepr...
LCT.BVRepr n -> LCLM.LLVMPointerRepr n

-- ...and map all other TypeReprs to themselves.
LCT.AnyRepr -> LCT.AnyRepr
LCT.UnitRepr -> LCT.UnitRepr
LCT.BoolRepr -> LCT.BoolRepr
Expand Down Expand Up @@ -87,8 +91,10 @@ instance (DMS.SymArchConstraints (DMP.AnyPPC v), 16 WI.<= SAP.AddrWidth v) =>
memPtrSize :: PN.NatRepr (SAP.AddrWidth v)
memPtrSize = WI.knownRepr

genStackPtr :: (Monad m, MonadIO m) => LCLM.LLVMPtr sym (SAP.AddrWidth v) -> WI.SymBV sym (SAP.AddrWidth v) -> SC.Sym sym -> m (LCLM.LLVMPtr sym (SAP.AddrWidth v))
genStackPtr baseptr offset (SC.Sym sym _) = liftIO $ LCLM.ptrAdd sym WI.knownRepr baseptr offset

initMem :: SC.Sym sym -> DMA.ArchitectureInfo (DMP.AnyPPC v) -> Integer -> SLB.BinaryConfig (DMP.AnyPPC v) binfmt -> LCF.HandleAllocator -> (Monad m, MonadIO m) => m (SM.InitialMemory sym DMS.LLVMMemory (DMP.AnyPPC v))
initMem (SC.Sym sym bak) archInfo stackSize binConf halloc = do
let endian = DMSM.toCrucibleEndian (DMA.archEndianness archInfo)

Expand All @@ -105,7 +111,7 @@ instance (DMS.SymArchConstraints (DMP.AnyPPC v), 16 WI.<= SAP.AddrWidth v) =>
stackArrayStorage <- liftIO $ WI.freshConstant sym (WSym.safeSymbol "stack_array") WI.knownRepr
mem2 <- liftIO $ LCLM.doArrayStore bak mem1 stackBasePtr LCLD.noAlignment stackArrayStorage stackSizeBV

memVar <- liftIO $ LCLM.mkMemVar (DT.pack "ambient-verifier::memory") halloc
memVar <- liftIO $ LCLM.mkMemVar (DT.pack "stubs::memory") halloc
let globals = LCSG.insertGlobal memVar mem2 LCSG.emptyGlobals
let globalMap = AEM.mapRegionPointers memPtrTbl

Expand Down
14 changes: 11 additions & 3 deletions stubs-common/src/Stubs/Memory/X86_64/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,12 @@ instance SM.IsStubsMemoryModel DMS.LLVMMemory DMX.X86_64 where
}
return $ SE.ambientExtensions @sym @DMX.X86_64 bak f initialMem mmConf mempty

bvToPtr :: LCT.TypeRepr tp-> LCT.TypeRepr (SM.ToPtrTy tp DMS.LLVMMemory DMX.X86_64)
bvToPtr (LCT.BVRepr n) = LCLM.LLVMPointerRepr n
bvToPtr :: LCT.TypeRepr tp -> LCT.TypeRepr (SM.ToPtrTy tp DMS.LLVMMemory DMX.X86_64)
bvToPtr ty = case ty of
-- Map BVRepr to LLVMPointerRepr...
LCT.BVRepr n -> LCLM.LLVMPointerRepr n

-- ...and map all other TypeReprs to themselves.
LCT.AnyRepr -> LCT.AnyRepr
LCT.UnitRepr -> LCT.UnitRepr
LCT.BoolRepr -> LCT.BoolRepr
Expand All @@ -152,12 +155,17 @@ instance SM.IsStubsMemoryModel DMS.LLVMMemory DMX.X86_64 where
LCT.SymbolicStructRepr r -> LCT.SymbolicStructRepr r
LCT.ReferenceRepr r -> LCT.ReferenceRepr r

genStackPtr :: (Monad m, MonadIO m) => LCLM.LLVMPtr sym 64 -> WI.SymBV sym 64 -> SC.Sym sym -> m (LCLM.LLVMPtr sym 64)
genStackPtr baseptr offset (SC.Sym sym _) = liftIO $ LCLM.ptrAdd sym WI.knownRepr baseptr offset

insertStackPtr :: (WI.IsExprBuilder sym, LCB.IsSymInterface sym) => DMS.GenArchVals DMS.LLVMMemory DMX.X86_64 -> LCLM.LLVMPtr sym 64 -> LCS.RegEntry sym (LCT.StructType (DMS.CtxToCrucibleType (DMS.ArchRegContext DMX.X86_64))) -> LCS.RegEntry sym (LCT.StructType (DMS.CtxToCrucibleType (DMS.ArchRegContext DMX.X86_64)))
insertStackPtr archVals sp initialRegsEntry= DMS.updateReg archVals initialRegsEntry DMC.sp_reg sp


memPtrSize :: PN.NatRepr (DMC.ArchAddrWidth DMX.X86_64)
memPtrSize = WI.knownRepr

initMem :: SC.Sym sym -> DMA.ArchitectureInfo DMX.X86_64 -> Integer -> SLB.BinaryConfig DMX.X86_64 binfmt -> LCF.HandleAllocator -> (Monad m, MonadIO m) => m (SM.InitialMemory sym DMS.LLVMMemory DMX.X86_64)
initMem (SC.Sym sym bak) archInfo stackSize binConf halloc = do

let mems = fmap (DMB.memoryImage . SLB.lbpBinary) (SLB.bcBinaries binConf)
Expand All @@ -177,7 +185,7 @@ instance SM.IsStubsMemoryModel DMS.LLVMMemory DMX.X86_64 where
stackArrayStorage <- liftIO $ WI.freshConstant sym (WSym.safeSymbol "stack_array") WI.knownRepr
mem2 <- liftIO $ LCLM.doArrayStore bak mem1 stackBasePtr LCLD.noAlignment stackArrayStorage stackSizeBV
(mem3, globals0) <- liftIO $ x86_64LinuxInitGlobals fsvar gsvar (SC.Sym sym bak) mem2
memVar <- liftIO $ LCLM.mkMemVar (DT.pack "ambient-verifier::memory") halloc
memVar <- liftIO $ LCLM.mkMemVar (DT.pack "stubs::memory") halloc
let globals1 = LCSG.insertGlobal memVar mem3 globals0

let globalMap = AEM.mapRegionPointers memPtrTbl
Expand Down
6 changes: 2 additions & 4 deletions stubs-common/src/Stubs/Syscall/Names/AArch32/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
-- the information that's contained within
-- syscalls_arm.tbl.
module Stubs.Syscall.Names.AArch32.Linux
(
syscallMap
)
where
( syscallMap
) where

import qualified Data.IntMap.Strict as IM
import qualified Data.Text as DT
Expand Down
6 changes: 2 additions & 4 deletions stubs-common/src/Stubs/Syscall/Names/PPC32/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
-- the information that's contained within
-- syscalls_powerpc.tbl.
module Stubs.Syscall.Names.PPC32.Linux
(
syscallMap
)
where
( syscallMap
) where

import qualified Data.IntMap.Strict as IM
import qualified Data.Text as DT
Expand Down
6 changes: 2 additions & 4 deletions stubs-common/src/Stubs/Syscall/Names/PPC64/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
-- the information that's contained within
-- syscalls_powerpc.tbl.
module Stubs.Syscall.Names.PPC64.Linux
(
syscallMap
)
where
( syscallMap
) where

import qualified Data.IntMap.Strict as IM
import qualified Data.Text as DT
Expand Down
6 changes: 2 additions & 4 deletions stubs-common/src/Stubs/Syscall/Names/X86_64/Linux.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
-- the information that's contained within
-- syscalls_x86_64.tbl.
module Stubs.Syscall.Names.X86_64.Linux
(
syscallMap
)
where
( syscallMap
) where

import qualified Data.IntMap.Strict as IM
import qualified Data.Text as DT
Expand Down
50 changes: 25 additions & 25 deletions stubs-translator/src/Stubs/Arch/AArch32.hs
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wno-orphans #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

{-|
Description: Preamble Instance for AArch32
Description: 'SPR.Preamble' Instance for AArch32
-}
module Stubs.Arch.AArch32() where
import qualified Stubs.AST as SA
Expand All @@ -33,12 +33,12 @@ import qualified Data.Parameterized.Map as MapF
import qualified Stubs.Translate.Intrinsic as STI
import qualified Lang.Crucible.LLVM.MemModel as LCLM

instance STC.StubsArch SAA.AArch32 where
instance STC.StubsArch SAA.AArch32 where

type instance ArchIntSize SAA.AArch32 = 32
type instance ArchShortSize SAA.AArch32 =16
type instance ArchLongSize SAA.AArch32 = 64

toCrucibleTy tyrepr = do
case tyrepr of
SA.StubsIntRepr -> return $ LCT.BVRepr (PN.knownNat @32)
Expand All @@ -52,28 +52,28 @@ instance STC.StubsArch SAA.AArch32 where
SA.StubsUShortRepr -> return $ LCT.BVRepr (PN.knownNat @16)
SA.StubsCharRepr -> pure $ LCT.BVRepr (PN.knownNat @8)
SA.StubsUCharRepr -> pure $ LCT.BVRepr (PN.knownNat @8)
SA.StubsAliasRepr s -> do
env <- STC.getStubEnv
SA.StubsAliasRepr s -> do
env <- STC.getStubEnv
let tymap = STC.stTyMap env
case MapF.lookup s tymap of
case MapF.lookup s tymap of
Just (STC.WrappedStubsTypeAliasRepr _ t) -> STC.toCrucibleTy t
Nothing -> error $ "missing type alias: " ++ show s
SA.StubsIntrinsicRepr s -> do
env <- STC.getStubEnv
let intrinsicMap = STC.stIntrinsicMap env
case MapF.lookup s intrinsicMap of
Just (STC.WrappedIntrinsicRepr _ t) -> return t
SA.StubsIntrinsicRepr s -> do
env <- STC.getStubEnv
let intrinsicMap = STC.stIntrinsicMap env
case MapF.lookup s intrinsicMap of
Just (STC.WrappedIntrinsicRepr _ t) -> return t
Nothing -> error $ "Missing intrinsic: " ++ show s
SA.StubsTupleRepr t -> do
SA.StubsTupleRepr t -> do
internal <- STC.toCrucibleTyCtx @_ @SAA.AArch32 t
return (LCT.StructRepr internal)

translateLit lit = do
translateLit lit = do
let n = PN.knownNat @32
let ln = PN.knownNat @64
let sn = PN.knownNat @16
let sc = PN.knownNat @8
case lit of
case lit of
SA.BoolLit b -> LCCR.App $ LCCE.BoolLit b
SA.UnitLit -> LCCR.App LCCE.EmptyApp
SA.IntLit i -> LCCR.App (LCCE.IntegerToBV n $ LCCR.App $ LCCE.IntLit i)
Expand Down Expand Up @@ -101,10 +101,10 @@ instance SPR.Preamble SAA.AArch32 where
preambleMap SA.StubsSignature{SA.sigFnName="ushort",SA.sigFnArgTys=(Ctx.Empty Ctx.:> SA.StubsShortRepr), SA.sigFnRetTy=SA.StubsUShortRepr} = bvIdOverride @SAA.AArch32 "ushort"
preambleMap SA.StubsSignature{SA.sigFnName="long",SA.sigFnArgTys=(Ctx.Empty Ctx.:> SA.StubsULongRepr), SA.sigFnRetTy=SA.StubsLongRepr} = bvIdOverride @SAA.AArch32 "long"
preambleMap SA.StubsSignature{SA.sigFnName="ulong",SA.sigFnArgTys=(Ctx.Empty Ctx.:> SA.StubsLongRepr), SA.sigFnRetTy=SA.StubsULongRepr} = bvIdOverride @SAA.AArch32 "ulong"
preambleMap SA.StubsSignature{SA.sigFnName="uint_s",SA.sigFnArgTys=(Ctx.Empty Ctx.:> SA.StubsUShortRepr), SA.sigFnRetTy=SA.StubsUIntRepr} = bvExtendOverride @SAA.AArch32 "uint_s" False
preambleMap SA.StubsSignature{SA.sigFnName="uint_s",SA.sigFnArgTys=(Ctx.Empty Ctx.:> SA.StubsUShortRepr), SA.sigFnRetTy=SA.StubsUIntRepr} = bvExtendOverride @SAA.AArch32 "uint_s" False
preambleMap SA.StubsSignature{SA.sigFnName="ulong_i",SA.sigFnArgTys=(Ctx.Empty Ctx.:> SA.StubsUIntRepr), SA.sigFnRetTy=SA.StubsULongRepr} = bvExtendOverride @SAA.AArch32 "ulong_i" False
preambleMap sig = error ("Missing implementation for preamble function:"++SA.sigFnName sig)

instance STI.OverrideArch SAA.AArch32 where
instance STI.OverrideArch SAA.AArch32 where
buildOverrides = pure []

18 changes: 9 additions & 9 deletions stubs-translator/src/Stubs/Arch/PPC32.hs
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wno-orphans #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

{-|
Description: Preamble Instance for PPC32
Description: 'SPR.Preamble' Instance for PPC32
-}
module Stubs.Arch.PPC32() where
import qualified Stubs.AST as SA
Expand Down
19 changes: 10 additions & 9 deletions stubs-translator/src/Stubs/Arch/PPC64.hs
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wno-orphans #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

{-|
Description: Preamble Instance for PPC64
Description: 'SPR.Preamble' Instance for PPC64
-}
module Stubs.Arch.PPC64() where
import qualified Stubs.AST as SA
Expand Down
Loading

0 comments on commit d978319

Please sign in to comment.