Commit Graph

79 Commits

Author SHA1 Message Date
Jake Hillion
a95d6f2187 add support for std::optional in treebuilder v2 2023-08-31 20:07:32 +02:00
Thierry Treyer
2699b4a665 Implement Container V2 for std::unique_ptr 2023-08-31 20:07:32 +02:00
Thierry Treyer
deb7dcdf1c Implement Container V2 for std::unordered_multiset 2023-08-30 18:45:00 +02:00
Thierry Treyer
54e01cfe27 Implement Container V2 for std::unordered_multimap 2023-08-30 18:45:00 +02:00
Thierry Treyer
7bdf72ec58 Implement Container V2 for std::unordered_map 2023-08-30 18:45:00 +02:00
Thierry Treyer
c1f322dc42 Implement Container V2 for std::unordered_set 2023-08-30 18:45:00 +02:00
Thierry Treyer
1459433a50 Implement Container V2 for std::multiset 2023-08-25 16:07:10 +02:00
Thierry Treyer
f9b4d65cd8 Implement Container V2 for std::multimap 2023-08-25 16:07:10 +02:00
Thierry Treyer
19222a4fe2 Implement Container V2 for std::map 2023-08-25 15:13:55 +02:00
Thierry Treyer
b8cb81e366 std::set implementation for Container V2 2023-08-24 13:57:27 +02:00
Jake Hillion
5071519e45 oil v2 2023-08-23 15:59:53 +01:00
Alastair Robertson
373dbe8f6c TypeGraph: Add option to record enumerator names 2023-08-17 15:47:23 +01:00
Alastair Robertson
99462b2132 Types: Fix folly::small_vector and folly::sorted_vector_map
folly::sorted_vector_map's results are not completely accurate, but at
least CodeGen v2 matches CodeGen v1 for it now.
2023-07-26 10:07:30 +01:00
Jake Hillion
325837c61b test: cycles: add test where oid sees the initial raw pointer
OID hides the initial raw pointer in the `cycles.raw_ptr` test. Add a
second test which wraps this pointer so OID sees the entirety of the
cycle.
2023-07-24 15:32:38 +01:00
Jake Hillion
323daed329 googletest: change to FetchContent 2023-07-21 17:18:06 +01:00
Alastair Robertson
fd54d0ea83 Integration tests: Add tests for alignment of unions 2023-07-19 16:29:05 +01:00
Alastair Robertson
c3fec2624b Integration tests: Add tests for unrestricted unions
i.e. unions with non-POD members

We can't examine untagged unions, but we should be able to support
looking inside tagged unions at some point in the future.
2023-07-14 15:48:01 +01:00
Jake Hillion
032c28c0ea type checking: add description of data segment type 2023-07-13 16:05:24 +01:00
Alastair Robertson
9f9d1eb568 TypeGraph: Better handling for anonymous types
- Assign names to anonymous types
- Deduplicate all enums (anonymous or not)
- Add tests
2023-07-12 17:44:38 +01:00
arsarwade
28b813c6db
Stop stubbing tuple (#224)
Summary:

Stubbing tuple without alignment info can cause failures. I added a test
case for this which failed before this fix but works now.

Test Plan:

Ran the test.
2023-07-11 09:10:40 -07:00
Jake Hillion
17633983b5 create strict mode and enable it for tests 2023-07-07 16:09:46 +01:00
Alastair Robertson
e86ebb7aff TypeGraph: Support bitfields
- Change member and parent offsets to work in bits, not bytes
- Printer still displays offsets in bytes, with decimals when using
  bitfields
- AddPadding: Don't pad bitfields
- CodeGen: Emit code for bitfields
2023-07-05 13:23:23 +01:00
Alastair Robertson
31050735d6 CodeGen: Add support for capturing Thrift isset data 2023-07-04 15:36:27 +01:00
Jake Hillion
8e48c6ca52 ci: enable testing for typed data segment 2023-06-29 17:31:29 +01:00
Jake Hillion
5c3bb261c8 integration: add GLOB with CONFIGURE_DEPENDS to pick up files 2023-06-29 15:47:06 +01:00
Alastair Robertson
4dc9007166 Integration tests: Set up CI testing for TypeGraph
CTest can't forward command line arguments to the test runner, so add
the option to using an environment variable to enable features instead.

CMake issue tracking the feature that would have been needed:
  https://gitlab.kitware.com/cmake/cmake/-/issues/20470

Tests which aren't passing yet have been disabled in CI.
2023-06-27 16:40:54 +01:00
Alastair Robertson
4bfa932b9b DrgnParser: Handle enum values in template params
We want to use the fully qualified name for scoped enums to keep the C++
compiler happy. When a parameter expects an enum value, we must supply
an enum value and not its underlying integer value.

Before:
  isset_bitset<1, 0>

After:
  isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked>
2023-06-26 15:13:21 +01:00
Jake Hillion
40c7a9afb7 features: clean up old flags 2023-06-23 11:25:43 +01:00
Jake Hillion
77667e5741 tests: add polymorphic class tests with no extra features 2023-06-19 19:06:04 +01:00
Alastair Robertson
2d28b20d46 TypeGraph: Fix multi dimensional arrays
Multi dimensional arrays are not flattened into 1-D arrays when using
TypeGraph. Update TreeBuilder to account for this.

By not flattening arrays, we are able to produce more descriptive
results.

The disadvantage is that we must now recurse inside arrays
containing only primitives. A better solution to requiring flattening
would be the planned work to not recurse into any static types (not just
primitives). This would also apply to multi-dimensional arrays of
primtivies.
2023-05-31 16:53:38 +01:00
Jake Hillion
008e519cd7 tomlplusplus: compile header once 2023-05-30 16:43:10 +02:00
Alastair Robertson
bd919ae4e4 TypeGraph: Add core code
This code mostly works, but is obviously not complete. This commit just
adds the code and tests, but does not enable it in OID or OIL.
2023-05-30 13:27:23 +01:00
Alastair Robertson
8a19246c81 Integration tests: Add alignment tests 2023-05-24 15:42:26 +01:00
Alastair Robertson
cd836bad62 Integration tests: Assume dynamicSize of 0 in OIL tests if it is not set
This just makes it a little easier to write tests for purely static
types.
2023-05-24 15:42:26 +01:00
Alastair Robertson
280f663eb5 Only pass "-no-pie" to the linker
This fixes an "argument unused during compilation" warning from Clang
2023-05-23 10:36:42 +01:00
Alastair Robertson
dbf6dbc71c Fix warnings in test code 2023-05-23 10:36:42 +01:00
Alastair Robertson
d71a497df5 Fix compiler warnings in folly_shims.cpp 2023-05-23 10:36:42 +01:00
Alastair Robertson
66a171eedc Integration test README: Document "skip" and "oil_disable" 2023-05-18 15:04:22 +01:00
Alastair Robertson
939256030c Integration test: Add "target_function" option 2023-05-18 14:34:08 +01:00
Jon Haslam
d4891e98d4
move src directory to oi (#134) 2023-04-26 16:20:53 +01:00
Jake Hillion
4a64fc5c9c clang-format: set BinPackParameters=false 2023-04-24 11:28:22 +02:00
Jake Hillion
789fb7ef6e add feature addition to the integration test runner 2023-04-21 19:02:44 +02:00
Jake Hillion
641a128b39 add command line feature addition/removal 2023-04-21 19:02:44 +02:00
Alastair Robertson
9755688d1c Add folly shims to avoid linking against folly
This fixes linker errors in debug builds.

When building in debug mode (-DCMAKE_BUILD_TYPE=Debug), folly requires
the function "safe_assert_terminate" to be defined. To avoid building
and linking against folly, we define our own no-op version of this
function.
2023-04-21 12:56:54 +01:00
Jake Hillion
cd2fa8c9ef remove treebuilder pointer validation 2023-04-18 16:04:47 +02:00
Jake Hillion
f47628ae2d add test for folly::fbstring 2023-04-06 15:11:09 +01:00
Alastair Robertson
10f47510d1 Integration tests: Remove typedefs from cycles.toml
uint64_t is a typedef. int is a primitive.

The cycles tests are going to be re-used to underpin some type-graph
unit tests. The patch removes unnecessary typedefs and makes the unit
tests simpler.
2023-04-03 13:02:03 +01:00
Jay Kamat
e27f725a85 Avoid following weak_ptrs
Previously, we treated weak_ptrs as normal types and we recursed
within them, following the internal data pointer and possibly causing
crashes. We really shouldn't be following them, so I added a custom
type to simply abort processing. If we want to handle them (ie: check
if they are valid, and follow them if so), that should be fairly easy
with the work there is here so far.
2023-03-28 14:10:27 -07:00
Alastair Robertson
fb58ccebac Integration tests: Have target process print its pid
This makes it easier to work with when running multiple instances of it
manually, outside of the integration testing framework.
2023-03-28 16:42:14 +01:00
Alastair Robertson
bab21166f2 Integration tests: Remove redundant "array" from std_array.toml test names 2023-03-28 16:42:14 +01:00