Commit Graph

2153 Commits

Author SHA1 Message Date
Alessandro Di Federico fff5f989a5 tests: adopt temp 2022-11-23 10:43:33 +01:00
Massimo Fioravanti 497836bb0c Pipeline: only remove targets in the container
This commit ensures that only content that is actually inside a
container is elegible to be removed.
2022-11-23 10:43:33 +01:00
Pietro Fezzardi 4c15f17dcf FunctionType::Layout: introduce argument kind
This commit introduces a `Kind` for arguments described in
`FunctionType::Layout`. We nowe basically have three types of arguments:

* Scalar: a regular scarlar argument;
* ReferenceToAggregate: a reference to an aggregete argument on the
  stack;
* ShadowPointerToAggregateReturnValue: a pointer to the storage for the
  (aggregate) return value allocated by the caller;
2022-11-23 10:41:18 +01:00
Pietro Fezzardi 85397dc3ca PrimitiveType: support for 80 and 96 bits types
This commit completes the support of various rare PrimitiveTypes, that
has been added opportunistically over time and has remained inconsistent
across the codebase:

- float80_t
- float96_t
- generic80_t
- generic96_t

The first two are necessary because on some platforms long double is
either 10 or 12 bytes wide.

The second two are necessary because the Generic PrimitiveType should
allow all non-zero byte sizes allowed by any other PrimitiveType.
2022-11-23 09:26:01 +01:00
Pietro Fezzardi cdaf119b54 QualifiedType::isScalar: true for model::EnumType 2022-11-23 09:26:01 +01:00
Alessandro Di Federico e07d0e2b9e DwarfImporter: set Architecture if Invalid 2022-11-23 09:26:01 +01:00
Ivan Krysak 8a0626e592 Layout: work around vector return value problems 2022-11-23 09:26:01 +01:00
Ivan Krysak 3196e8b371 Layout: add support for multiple return values 2022-11-23 09:26:01 +01:00
Ivan Krysak bf8a212281 ABI: remove MinimumStackArgumentSize value
The architecture-specific pointer (generic register) size is used
instead.

For all the ABIs we support the value of this parameter was already
set to its pointer size. We might need to reintroduce the parameter
in the future if we want to support a super-exotic ABI with different
stack alignment requirements, but that seems highly unlikely.

This also introduces the argument extension helper for one stop all
treating small arguments when they are put into a register or pushed
into the stack.
2022-11-23 09:26:01 +01:00
Ivan Krysak c8ca9ffd77 STLExtras: add constepxr version of find 2022-11-23 09:26:01 +01:00
Ivan Krysak f912ebf9b9 Model: associate a primitive kind to each register 2022-11-23 09:26:01 +01:00
Ivan Krysak d7867e0e7e QualifiedType: add argument-less isPrimitive() 2022-11-23 09:26:01 +01:00
Ivan Krysak 4eced0adc4 Move pointer creation away from model::Binary 2022-11-23 09:26:01 +01:00
Alessandro Di Federico ff95853c1b DetectABI: do not analyze functions with prototype 2022-11-23 09:26:01 +01:00
Alessandro Di Federico 3441c6d136 DwarfImport: fix handling of local functions 2022-11-23 09:26:01 +01:00
Alessandro Di Federico f8ddcdf255 check-conventions: use first byte as diff opcode 2022-11-23 09:26:01 +01:00
Alessandro Di Federico 25f4de006c Minor changes 2022-11-23 08:52:09 +01:00
Massimo Fioravanti 044071435e Fix handling of binaries with no functions
Fix various edge cases when a binary with no functions was analyzed.
2022-11-22 16:19:28 +01:00
Alessandro Di Federico 009c0c2434 flake8: disable R505 (else after return statement) 2022-11-22 15:10:52 +01:00
Massimo Fioravanti 0bfb73fe95 FunctionMetadata: introduce cache
FunctionMetadata was being deserialized every time they were
inspected. This commit introduces a cache structure to prevent this
excessive deserializations.
2022-11-22 14:15:00 +01:00
Alessandro Di Federico 517f33e673 Merge branch 'feature/ptml-c-refactor' 2022-11-22 10:37:26 +01:00
Pietro Fezzardi 764c7efbb8 Make isCallTo accept any llvm::Value * 2022-11-22 10:12:34 +01:00
Pietro Fezzardi fd0914b460 QualifiedType: add isConst method 2022-11-22 10:12:31 +01:00
Pietro Fezzardi 4334481894 UpcastablePointer: upcast with mutable callables 2022-11-15 14:15:20 +01:00
Pietro Fezzardi fb7edef129 Add ptml::scopeTag helper function 2022-11-15 14:15:20 +01:00
Alessandro Di Federico 7db60e68d2 Merge branch 'feature/kinds-expose-locations' 2022-11-11 14:25:31 +01:00
Giacomo Vercesi 7526d72492 Kinds: exposed locations produced
Expose the locations that can be found in each kind
2022-11-11 13:43:55 +01:00
Giacomo Vercesi d185fc80ac Rank: fix RankConvertibleTo with RootRank
RankConvertibleTo would be erroneously fail when used with a RootRank
either in the From or To template parameter.
2022-11-11 13:43:55 +01:00
Alessandro Di Federico ee3a8af90a Merge branch 'feature/avi-performance' 2022-11-10 19:41:56 +01:00
Massimo Fioravanti fa30486ce0 Outliner: create extractor cache once 2022-11-10 19:41:42 +01:00
Massimo Fioravanti ad0f1163b2 AVI: increase performance by caching successors 2022-11-10 19:40:11 +01:00
Alessandro Di Federico 91c4bdcd79 Merge branch 'feature/revng-distributable-revamp' 2022-11-02 11:51:35 +01:00
Giacomo Vercesi 48cd3aad42 revng.cli: init commands_registry once
Only init commands_registry once, this is to avoid commands being
re-registered and allow quicker execution of nested commands.
2022-11-02 11:50:40 +01:00
Giacomo Vercesi dad9dbcec8 getCurrentRoot: improve /proc/self/maps parsing
This fixes a behavior in getCurrentRoot that would lead it to reporting
an incorrect path if revng was installed in a path with spaces.
2022-11-02 11:50:40 +01:00
Giacomo Vercesi 4af389c703 daemon-self-test: fix daemon output
Fix the `fail` function, to properly capture the output of the daemon
process in case of failure.
2022-11-02 11:50:40 +01:00
Giacomo Vercesi 4ae8df0ad2 Yield disassembler: drop support for AMDGPU 2022-11-02 11:50:40 +01:00
Massimo Fioravanti e24fdbd446 revng-artifact: handle binaries with 0 functions
When revng-artifact is requested to produce the functions of a binary
that had 0 functions, it crashed. This commit fixes it by checking if
something has been actually being produced.
2022-11-02 10:47:33 +01:00
Massimo Fioravanti 10ab39664d Runner: postpone logging after checks 2022-10-31 16:47:33 +01:00
Alessandro Di Federico bb2abcc9ea Merge branch 'feature/graphql-invalidations' 2022-10-30 09:14:22 +01:00
Giacomo Vercesi 0b80801b2b TupleTreeDiff: applyDiff uses ErrorList
Change how TupleTreeDiff and Visitor work so they can populate an
ErrorList in case the deserialization/apply of a diff fails.
2022-10-30 09:13:44 +01:00
Giacomo Vercesi 2c4f5d1381 GraphQL: introduce target endpoint 2022-10-30 09:13:34 +01:00
Giacomo Vercesi de76a5239b PipelineC: improve documentation 2022-10-30 09:13:29 +01:00
Giacomo Vercesi a75fc40abe PipelineC: drop rp_manager_create_memory_only
The function was unused, broken and superseded by the other
rp_manager_create with `execution_directory=nullptr`.
2022-10-30 09:13:23 +01:00
Giacomo Vercesi 81d25f9805 PipelineC: expose invalidation logic 2022-10-30 09:13:14 +01:00
Giacomo Vercesi a6a7a09606 daemon-self-test: fix dumping of daemon output
Fix the `fail` function, to properly capture the output of the daemon
process in case of failure.
2022-10-30 09:12:33 +01:00
Giacomo Vercesi a465e796df revng.api: explicitly declare exports 2022-10-30 09:11:53 +01:00
Alessandro Di Federico 7d9a80b0e6 Merge branch 'feature/ttr-caching' 2022-10-30 08:18:34 +01:00
Pietro Fezzardi f371c03e93 Globals.h: evictCachedReferences on clear() 2022-10-29 16:46:19 +02:00
Pietro Fezzardi d520fd5aea Cache TTRs in Model tools 2022-10-29 16:46:19 +02:00
Pietro Fezzardi fff0fbd874 LoadModelPass: cache TTRs on getReadOnlyModel
The cache is evicted on the next call to getWritableModel.
2022-10-29 16:46:19 +02:00