Giacomo Vercesi
8a61d7c2b9
Model/ABI.h: make doc fields multiline
2022-05-09 13:35:10 +02:00
Ivan Krysak
282b4e238d
Add yield-assembly pipeline
2022-05-06 18:51:47 +02:00
Ivan Krysak
cf3845b78d
Add a way to output assembly as plain text
2022-05-06 18:51:47 +02:00
Ivan Krysak
1adc74e660
Import an assembly to html converter from caliban
2022-05-06 18:51:47 +02:00
Ivan Krysak
6e81dbe06c
Add a disassembly helper
2022-05-06 18:51:47 +02:00
Ivan Krysak
36c63c1bb9
Implement the disassembler interface
2022-05-06 18:51:47 +02:00
Ivan Krysak
6125ad4a71
Define internal assembly representation
2022-05-06 18:51:47 +02:00
Ivan Krysak
cfc9915b39
Add ModelInModule::getModule.
2022-05-06 18:51:47 +02:00
Ivan Krysak
42c1461b9f
Add MetaAddressType::getLLVMCPUFeatures
2022-05-06 18:51:47 +02:00
Ivan Krysak
20ccb79dd1
Add constant module tag-based filters
2022-05-06 18:51:47 +02:00
Ivan Krysak
4737efd763
Add a non-pass binary loader
2022-05-06 18:51:47 +02:00
Ivan Krysak
6ba8010507
Add a missing include
2022-05-06 18:51:47 +02:00
Ivan Krysak
2a6a7943f4
Fix a couple of minor typos
2022-05-06 18:51:47 +02:00
Alessandro Di Federico
92d3b95fba
Model: make more things optional
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
291ed672b4
Introduce FunctionType::Layout::dump
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
83f08249d7
Introduce Layout::Argument::StackSpan::operator+
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
9e46d4fdcc
Introduce getLLVMTypeForScalar(QualifiedType)
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
0f3c29fa1b
Split moveToNewFunctionType off changeFunctionType
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
a355a90c7e
model::Binary::getPointerTo(model::QualifiedType)
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
85e031c218
FunctionType::Layout: construct from model::Type
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
4904f8cbe1
GeneratorIterator: simplify iterators
2022-04-29 17:57:49 +02:00
Massimo Fioravanti
016a9464b8
Model diff: handle UpcastablePointer correctly
2022-04-29 17:57:49 +02:00
Alessandro Di Federico
e6f6010cfd
Build with -fvisibility-inlines-hidden
...
`-fvisibility-inlines-hidden` ensures that each dynamic library uses its
own version of each `inline` function.
This reduces the number of exported symbols and resolves issues related
to picking a version of a weak symbol that has already been deleted upon
`dlclose`.
The downside of this flag is that the address of `inline` functions can
be different across different libraries. This commit drops certain
assertions that were relying on this behavior.
2022-04-29 16:40:24 +02:00
Giacomo Vercesi
168eab6cc5
Use /proc/self/maps to determine root
...
Use the path of the mapped librevngSupport.so to determine the root
directory.
2022-04-28 22:18:08 +02:00
Pietro Fezzardi
e9470d031d
Add std::map-like methods to StringMapContainer
2022-04-27 17:40:21 +02:00
Pietro Fezzardi
de0398754d
Add makeStringMapContainerFactory
2022-04-27 17:09:28 +02:00
Giacomo Vercesi
4445a841b2
revng-pipeline: introduce artifacts
...
Add a new key to a Step, named Artifacts. If present, it indicates that
the step has a "default" Kind and Container that can be easily retrieved
without explicitly specifying either when producing an artifact.
2022-04-26 15:59:35 +02:00
Giacomo Vercesi
99ae9c98e0
Add MIMEType to container
...
Add additional field MIMEType to Container.
This allows API consumers to know at runtime how to treat the data
within a container without any prior knowledge.
2022-04-26 15:59:35 +02:00
Giacomo Vercesi
f4d63759de
PipelineC: expose kinds, ranks and more
...
Adds missing API functions to PipelineC that will be needed by the
GraphQL API:
* Kinds enumeration
* Get Rank and parent of a Kind
* Enumerate and inspect Ranks
* Get a Step's parent
Included are some docstring fixes
2022-04-26 15:05:30 +02:00
Giacomo Vercesi
87b09fd401
PipelineC: Refactor headers
...
Split PipelineC.h in 4 separate header, this is due to cffi not
being able to interpret `#ifdef`s so C++ declarations need to be
in a separate file.
2022-04-26 15:05:30 +02:00
Giacomo Vercesi
a831fa8e74
ContainerSet: add isContainerRegistered
...
This function allows to check if a container is registered,
irrespective of its initialization status
2022-04-26 15:05:30 +02:00
Filippo Cremonese
1af425c730
Minor changes
2022-04-26 15:05:30 +02:00
Pietro Fezzardi
0ff8a6933b
Add StringMapContainer
2022-04-20 17:39:59 +02:00
Alvise de Faveri
a3110c0b59
Add QualifiedType::is(TypeKind)
2022-04-20 11:25:46 +02:00
Giacomo Vercesi
d81dc49809
revng-check-conventions: license check
2022-04-20 09:55:18 +02:00
Ivan Krysak
66c96fb128
ABI: improve RegisterStateDeductions
...
Split the interface into two functions: `enforce.*` returning the map by
value and `tryApply.*` returning an `std::optional`.
Improve non-positional single deduction function to better reflect
some corner cases (for example how a required `NoOrDead` register
argument is handled).
Enforce a position-based deduction corner case where it's impossible to
deduce whether the argument is passed in the GPR or the vector one -
now GPR takes precedence in those cases.
2022-04-15 18:25:11 +02:00
Ivan Krysak
c374f8013a
ABI: separate mips and mipsel ABIs
2022-04-15 18:25:11 +02:00
Ivan Krysak
ddd2968faa
ABI: make abi::RegisterState::Map assignable
2022-04-15 18:25:11 +02:00
Antonio Frighetto
c2815949c7
Adopt std::same_as of libcxx
2022-04-15 18:25:08 +02:00
Massimo Fioravanti
ea02b4080a
PipelineC: introduce rp_apply_model_diff
...
This exposes the invalidation to users of the C API.
2022-04-15 15:18:56 +02:00
Massimo Fioravanti
3d752f6c7f
Introduce revng pipeline --invalidate-all
2022-04-15 15:18:28 +02:00
Massimo Fioravanti
eef9ba74da
Introduce ModelInvalidationEvent
2022-04-15 15:17:58 +02:00
Massimo Fioravanti
60fd53b1fb
Introduce Kind::verify
2022-04-15 15:17:37 +02:00
Massimo Fioravanti
df2413962b
Introduce TupleTreePath::isPrefixOf(Other)
2022-04-15 15:16:02 +02:00
Massimo Fioravanti
c4aa92694c
Introduce revng model apply
2022-04-15 15:15:41 +02:00
Massimo Fioravanti
44720eedbd
Redesign TupleTreeDiff
...
`TupleTreeDiff` is now type-safe and owns the changes.
2022-04-15 15:14:13 +02:00
Massimo Fioravanti
38a3c5a086
Introduce TupleTree::deserialize
2022-04-15 15:14:02 +02:00
Massimo Fioravanti
a75eaae66a
Introduce Logger::getAsLLVMStream
2022-04-15 15:13:43 +02:00
Pietro Fezzardi
7f65b1117a
New AddPrimitiveTypesPipe
...
This pipe is executed during the Lift step and populates the model with
all the required primitive types.
2022-04-12 16:40:27 +02:00
Pietro Fezzardi
6b2b2e8ada
Make model::Type::edges() method const
2022-04-08 18:58:58 +02:00