Skip to content
Snippets Groups Projects
  1. Oct 16, 2018
  2. Oct 03, 2018
    • Alessandro Di Federico's avatar
      Make stack analysis' output more deterministic · 8348766b
      Alessandro Di Federico authored
      In stack analysis' output, the list of basic blocks composing a function
      was not sorted. This lead a test to fail due to the presence of the
      `--order` flag when comparing the output.
      
      This commit ensures that this list is ordered, by basic block name.
      8348766b
    • Alessandro Di Federico's avatar
      Abandon argparse in favor of LLVM's `CommandLine` · cc02713f
      Alessandro Di Federico authored
      This commit dismisses the `argparse` library (the only non-runtime C
      component of rev.ng) in favor of LLVM's CommandLine library, which
      offers several benefits. Among others, now command line arguments can be
      easily specified as a global variable, decentralizing their management
      and avoiding the long list of arguments in the constructor of singleton
      objects such as `CodeGenerator`.
      cc02713f
    • Alessandro Di Federico's avatar
      Introduce `revng_log` and abandon `DBG(...)` · 43cf36bf
      Alessandro Di Federico authored
      This commit introduces `revng_log`, a macro analagous to `revng_assert`,
      which basically allows to have the benefit of the `Logger` class without
      having to compute the expression to log if the logger is disabled.
      
      This commit also completely dismisses the `DBG` macro, converting all
      the old code to `Logger` + `revng_log`.
      43cf36bf
    • Alessandro Di Federico's avatar
      Move and rename all files · 076aeac7
      Alessandro Di Federico authored
      This commit moves around most files. The new directory structure is as
      follows:
      
      * `lib/$LIBRARY/`: contains a library, i.e., a set of `.cpp` files used
        by multiple libraries/tools.
      * `include/revng/$LIBRARY/`: contains the public headers associated to
        the library in `lib/$LIBRARY/`.
      * `tools/$TOOL/`: directory where all the `.cpp` files (and private
        headers) for a tool reside. Currently we have two tools: `revamb` and
        `revamb-dump`.
      
      On top of this, all file names are now in camel case.
      076aeac7
  3. Sep 29, 2018
    • Alessandro Di Federico's avatar
      Drop some unused variables · fea049ad
      Alessandro Di Federico authored
      fea049ad
    • Alessandro Di Federico's avatar
      Switch to new assertion system globally · f8199625
      Alessandro Di Federico authored
      This commit enforces on the whole project the usage of our own assertion
      system. This means all calls to `abort`, `assert` and `llvm_unreachable`
      have been replaced with calls to `revng_abort`, `revng_assert` and
      `revng_unreachable`, respectively.
      
      The error messages, usually expressed as `assert(Condition &&
      "Message")` have now been replaced using the second (optional) argument
      of `revng_assert`.
      
      Additionally, all the `assert(false)` statements have been replaced with
      calls to `revng_abort`. Apart from readibility, this ensures the
      compilers is aware of the fact that call will never return.
      
      This change will enable us to drop many statements whose sole purpose
      was marking a variable employed in an assertion as used in release
      mode. In fact, with the new assertion system this is no longer
      necessary.
      f8199625
  4. Sep 26, 2018
  5. Sep 21, 2018
  6. Sep 18, 2018
    • Alessandro Di Federico's avatar
      Rewrite the stack and introduce the ABI analyses · 7fe00c08
      Alessandro Di Federico authored
      This is a very large commit importing the reviewed (and heavily
      simplified) stack analysis and the new ABI analysis, which provides
      information on the calling convention of each function and so on.
      
      For an overview of the new analyses please consult OVERVIEW.md.
      7fe00c08
Loading