summaryrefslogtreecommitdiffstats
path: root/courgette/disassembler_elf_32.cc
Commit message (Collapse)AuthorAgeFilesLines
* This patch uses single BytesInstruction Courgette ops to point to long ↵paulgazz@chromium.org2013-08-131-6/+6
| | | | | | | | | | stretches of the binary file, instead of using one ByteInstruction op, which copies one byte at a time. This reduces memory usages for very large files, since less data is copied, and fewer Instruction classes are constructed. BUG=266068 Review URL: https://chromiumcodereview.appspot.com/22728002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217138 0039d316-1c4b-4281-b951-d872f2087c98
* Support for ARM 32-bit ELF binaries in Courgettepaulgazz@chromium.org2013-08-011-2/+2
| | | | | | | | | | | | Notes for reviewers: dgarrett: courgette correctness, ARM benchan: style, correctness BUG=258640,258645,258653 Review URL: https://chromiumcodereview.appspot.com/20099004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214873 0039d316-1c4b-4281-b951-d872f2087c98
* Added a TypedRVA to track what kind of branch instruction is used forpaulgazz@chromium.org2013-07-231-21/+38
| | | | | | | | | | | | the jump and compute the target RVA accordingly. Also updated the unit test to use TypedRVA and check that only X86 RVAs are found by the X86 "disassembler". BUG=258645 Review URL: https://chromiumcodereview.appspot.com/18055007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213220 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed Courgette to correctly regenerate the ELF relocation table forpaulgazz@chromium.org2013-07-181-1/+28
| | | | | | | | | | | | | | ARM binaries. Note for reviewers: Don: general courgette correctness Ben: style, correctness BUG=258648 Review URL: https://chromiumcodereview.appspot.com/19022007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212449 0039d316-1c4b-4281-b951-d872f2087c98
* Factored out common ELF processing into a common superclass, an x86 ↵paulgazz@chromium.org2013-06-201-0/+462
subclass, and an initial ARM subclass. Created a new disassembler virtual class, DisassemblerElf32, that implements the common functions for processing ELF 32-bit files. This class is defined in disassembler_elf_32.{h|cc}, and has nearly all of the methods and data that used to be in disassembler_elf_32_x86.{h|cc}. This class has two subclasses, one for x86 and one for arm, which implement the architecture-specific parts for generating courgette patches, namely extracting relative and absolute addresses. The ARM subclass is just a shell, but still yields correct courgette patches. The rest of the files add new enums for ARM and use the ARM subclasses for the courgette command-line tool. BUG= Review URL: https://chromiumcodereview.appspot.com/17325003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207388 0039d316-1c4b-4281-b951-d872f2087c98