Skip to content
Snippets Groups Projects
  1. Nov 14, 2018
  2. Nov 13, 2018
    • Pietro Fezzardi's avatar
      Update to LLVM 7 · b9273210
      Pietro Fezzardi authored
      Updating to LLVM 7 mainly involved the following steps:
      
      * Upgrade APIs for folding ConstantExpr.
      * Upgrade APIs for GraphTraits.
      * Upgrade APIs for DominatorTreeBase.
      * Upgrade APIs for BinaryFormat to parse ELFs.
      * Fix the LLVM Linker to properly link the QEMU helpers.
      * Disable the new optnone attribute even with optimization -O0. This is
        necessary to allow SROA to do its job properly.
      * Upgrade APIs to delete Instructions.
      * Properly cleaning up orphaned metadata still referring to Instructions
        that have been destroyed. Recent versions of LLVM are more strict in
        this respect, and will assert when compiled in debug.
      * Avoid using LLVM `getGlobalContext` which has been removed from newer
        versions of LLVM.
      * Upgrade tests to use the new APIs.
      * Upgrade APIs for instruction iterators and reverse iterators.
      b9273210
  3. Oct 24, 2018
  4. Oct 16, 2018
  5. Oct 03, 2018
    • Alessandro Di Federico's avatar
    • Alessandro Di Federico's avatar
      Use MDBuilder to create `alias.scope` · 81c003d9
      Alessandro Di Federico authored
      This commit also fixes a bug due to some problem in how we were building
      the self-referencing metadata associated to `alias.scope`.
      81c003d9
    • Alessandro Di Federico's avatar
      Add argument to `InlineAsm` function · 9dcefc81
      Alessandro Di Federico authored
      `InlineAsm` instructions resemble function calls. You also have to
      provide the prototype of the called function. Before this commit, we
      were employing `void(void)`, which was wrong since we were passing in a
      CSV.
      
      In this commit we add a pointer argument to this prototype, which
      prevents an assertion in LLVM from being triggered.
      9dcefc81
    • 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
      Fix assertion in function isolation · 648e4e59
      Alessandro Di Federico authored
      Update an assertion trying to enforce the fact that `alloca`s copied
      from `root` where in the original entry block, while they should be in
      the `dummy` entry block.
      
      Additionally, an improvement has been introduced which ensures only one
      `alloca` is copied per-function, while, before, we were creating a new
      `alloca` for each use in that function.
      648e4e59
    • 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
      cf8d6d53
    • Alessandro Di Federico's avatar
      Declare `arch_prctl` prototype in `support.c` · d3f04247
      Alessandro Di Federico authored
      In `support.c`, we employ `arch_prctl` to set the value of segment
      registers. However glibc, despite providing that function, doesn't
      provide its prototype in any header file. This commit declares it,
      according to the declaration provided in the man page.
      d3f04247
    • Alessandro Di Federico's avatar
    • 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
  6. Sep 29, 2018
Loading