|
Replace libdisasm with capstone
Breakpad has a locally-committed version of libdisasm, which is no
longer developed. Capstone ( http://www.capstone-engine.org/) is a
multi-architecture project which is under active development. Using
capstone should provide better support for modern CPU instructions
that may show up in minidumps, as well as bring x86-64 support and
even ARM/AAarch64 support if desired.
This change removes src/third_party/libdisasm, adds capstone's GitHub
repository to DEPS under src/third_party/capstone, fixes the automake
and gyp build systems to build capstone instead of libdisasm, and
fixes the disassembler_x86 and exploitability_win code to use capstone
APIs instead of libdisasm APIs.
The only place where using capstone seems to be less satisfying than
using libdisasm is that capstone lacks the large set of instruction
groups that libdisasm had, such as `libdis::insn_string`. Currently
I have settled for listing out instructions in a switch statement,
which is not terribly satisfying.
Future work could be to support x86-64 in DisassemblerX86 to enable
better exploitability analysis on Windows dumps (easy), replace the
exploitability_linux code that shells out to objdump with
DisassemblerX86 (moderately involved), and build capstone's
ARM/AArch64 backends (easy) and extend the existing
exploitability_linux code to do more thorough analysis of dumps from
those architectures (hard).
R=mark@chromium.org
BUG=
Total comments: 4
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+660 lines, -11616 lines) |
Patch |
|
M |
.gitignore
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
DEPS
|
View
|
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
|
M |
Makefile.am
|
View
|
|
9 chunks |
+33 lines, -35 lines |
0 comments
|
Download
|
|
M |
Makefile.in
|
View
|
|
25 chunks |
+313 lines, -160 lines |
0 comments
|
Download
|
|
M |
src/build/common.gypi
|
View
|
|
2 chunks |
+2 lines, -1 line |
2 comments
|
Download
|
|
M |
src/config.h.in
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/processor/disassembler_x86.h
|
View
|
|
4 chunks |
+33 lines, -19 lines |
0 comments
|
Download
|
|
M |
src/processor/disassembler_x86.cc
|
View
|
|
3 chunks |
+216 lines, -115 lines |
0 comments
|
Download
|
|
M |
src/processor/disassembler_x86_unittest.cc
|
View
|
|
9 chunks |
+21 lines, -24 lines |
0 comments
|
Download
|
|
M |
src/processor/exploitability_win.cc
|
View
|
|
2 chunks |
+6 lines, -10 lines |
0 comments
|
Download
|
|
M |
src/processor/processor.gyp
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
A + |
src/third_party/capstone.gyp
|
View
|
|
2 chunks |
+26 lines, -23 lines |
2 comments
|
Download
|
|
D |
src/third_party/libdisasm/Makefile.am
|
View
|
|
1 chunk |
+0 lines, -43 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/TODO
|
View
|
|
1 chunk |
+0 lines, -43 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_implicit.h
|
View
|
|
1 chunk |
+0 lines, -13 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_implicit.c
|
View
|
|
1 chunk |
+0 lines, -422 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_insn.h
|
View
|
|
1 chunk |
+0 lines, -506 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_insn.c
|
View
|
|
1 chunk |
+0 lines, -623 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_invariant.h
|
View
|
|
1 chunk |
+0 lines, -11 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_invariant.c
|
View
|
|
1 chunk |
+0 lines, -313 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_modrm.h
|
View
|
|
1 chunk |
+0 lines, -13 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_modrm.c
|
View
|
|
1 chunk |
+0 lines, -310 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_opcode_tables.h
|
View
|
|
1 chunk |
+0 lines, -57 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_opcode_tables.c
|
View
|
|
1 chunk |
+0 lines, -2939 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_operand.h
|
View
|
|
1 chunk |
+0 lines, -11 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_operand.c
|
View
|
|
1 chunk |
+0 lines, -425 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_reg.h
|
View
|
|
1 chunk |
+0 lines, -41 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_reg.c
|
View
|
|
1 chunk |
+0 lines, -234 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_settings.h
|
View
|
|
1 chunk |
+0 lines, -27 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/ia32_settings.c
|
View
|
|
1 chunk |
+0 lines, -13 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/libdis.h
|
View
|
|
1 chunk |
+0 lines, -832 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/libdisasm.gyp
|
View
|
|
1 chunk |
+0 lines, -67 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/qword.h
|
View
|
|
1 chunk |
+0 lines, -14 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/Makefile
|
View
|
|
1 chunk |
+0 lines, -70 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/README
|
View
|
|
1 chunk |
+0 lines, -128 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/libdisasm.i
|
View
|
|
1 chunk |
+0 lines, -508 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/libdisasm_oop.i
|
View
|
|
1 chunk |
+0 lines, -1114 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/perl/Makefile.PL
|
View
|
|
1 chunk |
+0 lines, -7 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/perl/Makefile-swig
|
View
|
|
1 chunk |
+0 lines, -65 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/python/Makefile-swig
|
View
|
|
1 chunk |
+0 lines, -64 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/ruby/Makefile-swig
|
View
|
|
1 chunk |
+0 lines, -68 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/ruby/extconf.rb
|
View
|
|
1 chunk |
+0 lines, -4 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/swig/tcl/Makefile-swig
|
View
|
|
1 chunk |
+0 lines, -63 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_disasm.c
|
View
|
|
1 chunk |
+0 lines, -210 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_format.c
|
View
|
|
1 chunk |
+0 lines, -1430 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_imm.h
|
View
|
|
1 chunk |
+0 lines, -18 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_imm.c
|
View
|
|
1 chunk |
+0 lines, -70 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_insn.c
|
View
|
|
1 chunk |
+0 lines, -182 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_misc.c
|
View
|
|
1 chunk |
+0 lines, -71 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_operand_list.h
|
View
|
|
1 chunk |
+0 lines, -8 lines |
0 comments
|
Download
|
|
D |
src/third_party/libdisasm/x86_operand_list.c
|
View
|
|
1 chunk |
+0 lines, -191 lines |
0 comments
|
Download
|
Total messages: 11 (1 generated)
|