- Sep 29, 2018
-
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
This commit enforces, through `scripts/check-conventions.sh`, the absence of `assert(false)` and direct calls to `assert`, `abort` and `llvm_unreachable`.
-
Alessandro Di Federico authored
Certain non-`static` functions were missing prototype declarations, triggering a compiler warning. This was due to a missing header or due to a bug in boost. This commit resolves this situation.
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
We'd switch to C++17, but we currently aim at supporting building revamb with Ubuntu 16.04, whose default version of GCC doesn't support C++17.
-
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.
-
- Sep 26, 2018
-
-
Alessandro Di Federico authored
We used to have a `_` prefix for include guards macros, however, according to the standard, macros starting with an underscore are reserved. This commit drops them all.
-
- Sep 21, 2018
-
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
This commit applies our `clang-format` rules globally. From now on, all commits should respect our configuration file. Pretty large change.
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
Include directives are groups by library, the groups should be sorted from the most general (i.e., the STL) to the most specific (the local includes). This commit ensures that Boost includes are before LLVM includes.
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
This commit introduces `using` statements and `constexpr` functions to increase readibility of various types.
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
Sometimes the true-branch of an `if` statement was using braces but the false-branch was not. This commit fixes this.
-
Alessandro Di Federico authored
This commit introduces an additional check in `check-conventions.sh` to detect lines in source files exceeding 80 columns.
-
Alessandro Di Federico authored
This commit introduces a check in `check-conventions.sh` to prevent committing code denoted by a `// WIP` comment, that are supposed to be used to remind the developer something has to be changed before submitting a pull request.
-
Alessandro Di Federico authored
For a long time we had an issue on ARM: the linker would use as the first page 0x10000. However, on many distros, that matches the first page that can be mapped (see `/proc/sys/vm/mmap_min_addr`). Therefore, this shouldn't be a problem, except the fact that the translated program also needs the preceeding page for the (outer) ELF header. We used to suggest users to run: echo 4096 | sudo tee /proc/sys/vm/mmap_min_addr Now in our tests, we force the text segment page to be at 0x20000, therefore, this will no longer be necessary.
-
- Sep 20, 2018
-
-
Andrea Gussoni authored
The symbol handling has been extended to register whether a symbol represents a function or not. This information is then used to register, during the global data harvesting phase, all the function symbols and explicitly mark them through the "FunctionSymbol" `JTReason`. We use this information during the CFEP harvesting phase to integrate the information produced by the function boundaries detection with potential unidentified CFEPs. This option can be enabled with the `--use-debug-symbols`, which supersedes `--use-sections`.
-
Pietro Fezzardi authored
From version 0.25 pyelftools changed the API for ENUM_P_TYPE. This commit wraps the import in a try-except block to handle older and newer versions gracefully.
-
- Sep 19, 2018
-
-
Alessandro Di Federico authored
-
- Sep 18, 2018
-
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
This problem has been fixed backporting the proper patches on LLVM.
-
Alessandro Di Federico authored
-
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.
-
- Sep 17, 2018
-
-
Alessandro Di Federico authored
This commit fixes a bug triggered by the fact that the constructor of the `FilePortion` class was not initializing fields featuring a "native" type (which are therefore not automatically zero-initialized). In particular, this bug was triggered when dealing with a dynamic binary lacking the sections for dynamic relocations.
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
`StreamWrapper` is a class that wraps a stream of any type. It has a `flush` method, that, when called with a `std::stringstream` copies all of its content in the wrapped stream. The main reason for having `StreamWrapper` is being able to have a `dumpInternal` method in a `.cpp` file while preserving a stream-agnostic `dump` method in the header.
-
Alessandro Di Federico authored
`Twine`s are very cool but very subtle objects. You basically have to use them as `const Twine &` arguments only. In fact, a Twine keeps a reference to objects whose lifetime corresponds to the current statament. Therefore, a `Twine` can easily end up holding a reference to invalid objects. This commit fixes a bug in function isolation (which would show up only if optimizations are enabled) due to a misusage of `Twine`. Additionally, it reduces its usage to safe places in `statistics.h`. Finally, we added an assertion in `check-conventions.sh` to ensure that no variables of type `Twine` are ever declared.
-
Alessandro Di Federico authored
revamb-dump was missing the `-T` option.
-
Alessandro Di Federico authored
-
Alessandro Di Federico authored
-
- Aug 31, 2018
-
-
Alessandro Di Federico authored
-