hdis86-0.2: hdis86.cabal
name: hdis86
version: 0.2
license: BSD3
license-file: LICENSE
synopsis: Interface to the udis86 disassembler for x86 and x86-64 / AMD64
category: Disassembler, Language, Foreign, Reverse Engineering
author: Keegan McAllister <mcallister.keegan@gmail.com>
maintainer: Keegan McAllister <mcallister.keegan@gmail.com>
homepage: https://github.com/kmcallister/hdis86
build-type: Simple
cabal-version: >=1.6
description:
@hdis86@ is an interface to the @udis86@ disassembler, which decodes machine
code for 16-, 32-, and 64-bit x86 and x86-64 / AMD64 processors. @hdis86@
provides an instruction stream as a Haskell algebraic data type, suitable for
inspection by pattern matching. It also provides metadata such as assembly
syntax in Intel or AT&T flavors.
.
This library exposes three layers of wrapping:
.
* The @Pure@ module has the simplest interface, effectively
@ByteString -> [Instruction]@.
.
* The @IO@ module exposes an imperative API closely matching the @udis86@
state machine, while providing Haskellish types and automatic resource
management.
.
* The @C@ module is a direct import of the @udis86@ library, with C types
and conventions.
.
Many users can simply import @Hdis86@.
.
The @Incremental@ module provides disassembly of lazy @ByteString@s, and a
function for building other incremental operations.
.
By default, @hdis86@ will statically link a built-in copy of @udis86-1.7@,
which is provided by its author under a similar BSD license. See inside the
tarball for more information. If you have @udis86@ installed on your system,
you can instead link dynamically using
@cabal configure --flags=external-udis86@. In that case see also @doc/customizing.txt@.
.
This code is available on GitHub at <https://github.com/kmcallister/hdis86>.
.
The @udis86@ project website is located at <http://udis86.sourceforge.net/>.
.
New in version 0.2:
.
* Disassembly of lazy @ByteString@s
.
* A function for building other incremental operations
.
* Record selectors on @Instruction@
.
* QuickCheck @Arbitrary@ instances for @Instruction@ and related types
extra-source-files:
tools/hdcli.hs
, tools/gen_opcode.sh
, tools/test_lazy_bytestring.hs
, udis86-1.7/libudis86/decode.h
, udis86-1.7/libudis86/input.h
, udis86-1.7/libudis86/syn.h
, udis86-1.7/libudis86/extern.h
, udis86-1.7/libudis86/itab.h
, udis86-1.7/libudis86/types.h
, udis86-1.7/udis86.h
, udis86-1.7/LICENSE
, udis86-1.7/README
, README
, doc/customizing.txt
flag external-udis86
default: False
description: Dynamically link to the system's copy of udis86.
library
exposed-modules:
Hdis86
, Hdis86.Types
, Hdis86.Pure
, Hdis86.Incremental
, Hdis86.IO
, Hdis86.C
, Hdis86.Internal.Map
other-modules:
Hdis86.Internal.Opcode
ghc-options: -Wall
build-depends:
base >= 3 && < 5
, containers >= 0.3
, bytestring >= 0.9
, QuickCheck >= 2.4
if flag(external-udis86)
extra-libraries: udis86
else
include-dirs: udis86-1.7
c-sources:
udis86-1.7/libudis86/udis86.c
udis86-1.7/libudis86/decode.c
udis86-1.7/libudis86/input.c
udis86-1.7/libudis86/itab.c
udis86-1.7/libudis86/syn.c
udis86-1.7/libudis86/syn-att.c
udis86-1.7/libudis86/syn-intel.c
other-extensions:
DeriveDataTypeable
, RecordWildCards
, NamedFieldPuns
, ViewPatterns
, ForeignFunctionInterface
, EmptyDataDecls
, ScopedTypeVariables
source-repository head
type: git
location: git://github.com/kmcallister/hdis86.git