Skip to content
  1. Dec 21, 2018
  2. Dec 18, 2018
  3. Dec 17, 2018
  4. Dec 14, 2018
  5. Dec 13, 2018
  6. Dec 12, 2018
  7. Dec 11, 2018
  8. Dec 06, 2018
  9. Dec 05, 2018
    • Alessandro Di Federico's avatar
      Handle [p_filesz, p_memsz] segment portion · 350a671d
      Alessandro Di Federico authored
      `BinaryFile::readRawValue` scans the segment list to identify which
      segment contains a certain address. However, it was failing if the
      target address was in `.bss`, i.e., the portion of a segment after
      `p_filesz` but `before `p_memsz`.
      
      This commit lets `BinaryFile::readRawValue` return 0 in that situation.
      350a671d
    • Andrea Gussoni's avatar
      Exception runtime fixes · b55420fc
      Andrea Gussoni authored
      Fixes for the following things that caused errors in the translated
      module due to changes introduced in the `prune-eh` optimization pass:
      
      - `Support.c` is now compiled with support for exceptions, to avoid
        marking the `raise_exception_helper` function to be marked `unwind`
        during the link phase.
      - Added a fake `ret` at the end of the `catchblock` to avoid
        optimizations.
      - Marked the `invoke` instructions not as candidate for function
      inlining.
      b55420fc
  10. Nov 30, 2018
  11. Nov 29, 2018
  12. Nov 15, 2018
    • Alessandro Di Federico's avatar
      e2fdee15
    • Alessandro Di Federico's avatar
      Tag `function_call` targeting external symbols · e21eed11
      Alessandro Di Federico authored
      This commit uses SET, information about canonical values and labels to
      detect if an indirect function call is targeting an external symbol.
      
      The strings used for the name of external symbols are uniqued global
      variables. This commit also uses this approach for the disassembly of
      original instructions, which used to be metadata.
      e21eed11
    • Alessandro Di Federico's avatar
      Minor changes · abb47bb9
      Alessandro Di Federico authored
      abb47bb9
    • Alessandro Di Federico's avatar
      Introduce labels, relocation and canonical values · cc4dfbce
      Alessandro Di Federico authored
      So far we've been tracking only base-relative relocations in an ad-hoc
      fashion. This commit introduces a data structure that can describe the
      most common relocations, including those for `.got`, `.got.plt`,
      base-relative and `R_*_COPY`.
      
      A label describes a range of the binary. A label can be generated from a
      symbol (basically assigning a name to range of the binary) or from a
      relocation, describing the content of a certain range.
      
      This commit generates labels from symbols and relocations, including
      MIPS implicit relocations.
      
      This commit also introduces canonical values.
      
      A register can have a canonical value, i.e., a value that register will
      assume when the analyzed module is being run. This is typically useful
      for the value of the global pointer, which is different from one module
      to another but, within a module, is stable.
      
      This commit registers the canonical value of `gp` (in MIPS), if
      available.
      cc4dfbce
  13. Nov 14, 2018