Ivan Krysak
9af0200b90
test-model-diff: fix temporary directory usage
2024-03-18 13:27:53 +00:00
Ivan Krysak
a58ccd159e
ImportPE: fix the filters
2024-03-15 19:05:10 +01:00
Ivan Krysak
1b52530531
ABI-tests: turn temporary directory into "output"
2024-03-15 19:05:10 +01:00
Ivan Krysak
d71fd7a1ad
ABI-tests: strip model of irrelevant functions
2024-03-15 19:05:10 +01:00
Ivan Krysak
6feb9aa001
ABI-tests: rename replace-abi script
2024-03-15 19:05:10 +01:00
Ivan Krysak
5407c11a8f
ABI: do not touch ABIs of unrelated functions
2024-03-15 19:05:10 +01:00
Ivan Krysak
b0b1f10e72
ABI: move ToCABIFunctionType analysis to revng
2024-02-09 16:24:44 +01:00
Ivan Krysak
e708a3655b
ABI: drop incomplete clrcall support
2024-02-09 15:09:37 +00:00
Ivan Krysak
e62d4f79ef
ABI: remove an obsolete definition parameter
...
Since pointer to copy system got straightenned up, the old way of
marking them (`abi::Definition::UsePointerToCopyForStackArguments`)
is no longer needed.
2024-02-09 15:09:37 +00:00
Ivan Krysak
5a36d8fccf
ABI-tests: update documentation
2024-02-09 15:09:37 +00:00
Ivan Krysak
94b6be25ae
ABI-tests: check equivalence after compatibility
...
This does not change anything about the "successful" tests, but does
make "failing" ones slightly easier to debug - since "compatibility"
failures are generally easier to work with (they provide more explicit
information about the failure) that "equivalence" ones.
2024-02-09 15:09:37 +00:00
Ivan Krysak
27491410d6
ABI: introduce a way to disable vector registers
2024-02-09 15:09:37 +00:00
Ivan Krysak
4e81a34cd7
ABI: separate 'gcc' editions of microsoft ABIs
2024-02-09 15:09:37 +00:00
Ivan Krysak
3fdd7d8e8a
ABI: introduce a way to set stack argument offset
2024-02-09 15:09:37 +00:00
Ivan Krysak
3efd08b07a
ABI: fix microsoft x64 abi definitions
2024-02-09 15:09:37 +00:00
Ivan Krysak
af6f9367b2
ImportPE: remove i386-specific values
2024-02-09 15:09:37 +00:00
Djordje Todorovic
79460c6933
PDBImport: Handle forward referenced types
...
A class or a struct type A can be a forward declaration and refer
to another type B in PDB, so we need to follow the references.
We pre-create type for B, when we face type A, and then, when we
visit type B, we populate the fields for the model::type we
pre-created.
In addition, this patch fixes some minor/side bugs:
- Handle SHORT/Int16Short simple type
- Do not delete model::Function if Prototype is invalid.
2024-02-09 15:09:37 +00:00
Ivan Krysak
e16cf87106
ABI-tests: specify the default PDB location
2024-02-09 15:09:37 +00:00
Alessandro Di Federico
aaa1b26468
AAPCS ABI: drop support for int128_t
2024-02-09 10:04:26 +01:00
Alessandro Di Federico
6cacb56c96
Reorganize test suite
2024-02-09 10:04:25 +01:00
Alessandro Di Federico
346b367c19
Drop revng efa-extractcfg
2024-02-09 10:04:25 +01:00
Alessandro Di Federico
d9367954a4
Convert all public strings to kebab-case
2024-02-09 10:04:24 +01:00
Giacomo Vercesi
5978300476
codespell: ignore CSS files
2024-02-09 10:04:24 +01:00
Alessandro Di Federico
54025b48ff
s/ConvertToRawFunctionType/ConvertFunctionsToRaw/g
2024-02-09 10:04:23 +01:00
Alessandro Di Federico
a9aaa8ced4
s/ToCABIFunctionType/FunctionsToCABI/s
2024-02-09 10:04:23 +01:00
Alessandro Di Federico
2bdca8ab03
Rename steps and analyses
2024-02-09 10:04:22 +01:00
Alessandro Di Federico
b4817a4f14
Rename pipelines file
2024-02-09 10:04:22 +01:00
Alessandro Di Federico
b34031f828
Import sections into segment's struct
...
Each model::Segment is associated to a model::StructType. Now we also
create sub-`structs` for sections, if available.
2024-02-08 16:57:40 +01:00
Ivan Krysak
4cb38a722c
ABI: disallow ABI flags to be optional
2024-01-29 11:57:54 +02:00
Ivan Krysak
386cb26f6d
ABI: introduce a new ABI configuration option
...
It's called `AllowUnnaturallyAlignedTypesInRegisters` and explicitly
allows weirdly aligned structs in registers.
2024-01-29 11:57:54 +02:00
Massimo Fioravanti
f6ff8e544d
Add tracking debug infrastructure
...
Add a mechanism to make the program crash when a given element of the
model is read or written.
2024-01-02 11:14:56 +01:00
Massimo Fioravanti
e5347b2910
Remove llvm pipeline
2024-01-02 11:14:55 +01:00
Alessandro Di Federico
a3a549be48
EnforceABI step: reduce work done by InlineHelpers
...
InlineHelpers often inlines functions that contain a switch on an
argument that is constant on the call site. Specifically, this is true
for the `cc_compute_c` and `cc_compute_all` helpers of x86
architectures. The LLVM inliner, in such situations, is smart and
inlines a reduced amount of code, significantly reducing the maximum
size of the modules we work with.
However, before this commit, we couldn't capture this fact due to
`newpc` preventing constant propagation of the values of CSV set in an
instruction into their usage in the next instruction.
Running `PromoteCSV` before `InlineHelpers`, along with `mem2reg`
enables us to capture this behavior effectively.
2023-12-12 12:04:33 +01:00
Alessandro Di Federico
0e7d3a9a71
Pass PlainMetaAddress by pointer
2023-12-12 10:20:51 +01:00
Alessandro Di Federico
2e283fdf2a
raise_exception_helper -> _abort and _unreachable
2023-12-12 10:20:35 +01:00
Alessandro Di Federico
f2977128fa
ABIs: mark link registers as callee-saved
2023-12-11 16:29:13 +01:00
Pietro Fezzardi
48b27af795
Make Segment::Type a TupleTreeReference
...
This is homogeneous with all other nullable reference to types in the
model, like the StackFrameType in model::Function, and others.
2023-12-05 16:19:38 +01:00
Massimo Fioravanti
aa1a3e6764
Unify pipeline pipes files
...
Pipeline files are now a single file where the decompilation pipeline is
the main branch
2023-12-05 15:47:52 +01:00
Giacomo Vercesi
046612f11c
revng.graphql: enforce index consistency
...
Force clients to provide the current index to run `produce` or
`runAnalysis`. Requests that do not provide the correct index return an
IndexError object.
2023-11-03 14:51:31 +01:00
Giacomo Vercesi
56af9c1f9d
Propagate errors from Analysis/Pipes to daemon
...
Leverage the `rp_error` mechanism to propagate errors from analyses and
pipes to the GraphQL schema.
2023-11-03 12:13:58 +01:00
Giacomo Vercesi
4f94988a4d
Add Globals Analyses
...
Add analyses that allow the modification of globals via the analysis
mechanism of Pipeline.
2023-11-03 12:13:58 +01:00
Ivan Krysak
fc7d9841bf
ABI-testing: simplify script structure
2023-11-02 17:10:04 +01:00
Ivan Krysak
f3acdcdef3
ABI: rewrite the testing suite documentation
2023-11-02 17:10:04 +01:00
Ivan Krysak
e9824977dd
ABI: switch to the new testing toolchain
2023-11-02 17:10:04 +01:00
Ivan Krysak
fdd3234e4f
ABI: fix stdcall return value location
2023-11-02 17:10:04 +01:00
Ivan Krysak
e4cbcaa520
ABI: remove an unnecessary repeat-for array
2023-11-02 17:10:04 +01:00
Ivan Krysak
99748a5cbc
ABI: make microsoft ABIs more regparm-like
...
32-bit microsoft ABIs that allow using registers for accepting arguments
behave the same way `regparm` ABIs do, but weren't marked as such.
2023-11-02 17:10:04 +01:00
Ivan Krysak
f4557f1353
ABI: fix alignment of scalars in 32-bit microsoft
2023-11-02 17:10:04 +01:00
Giacomo Vercesi
0cb3e497a4
Fix typos
2023-11-02 16:48:33 +01:00
Alessandro Di Federico
6e3b7322ff
support.c: drop AT_HWCAP2
...
AT_HWCAP2 is not supported by old kernels.
2023-11-02 16:48:33 +01:00