Age | Commit message (Collapse) | Author |
|
Reduced test cases FTW \o/
|
|
Move `self` into `ir::BindgenContext::gen`
Small clean up. See each commit for details.
r? @pepyakin
|
|
`bindgen` follows a pipeline architecture, and we only ever generate bindings
once. By taking ownership of `self`, we can enforce this. We can also remove
checks inside `gen` for whether we have resolved type refs or not, since we now
know that we haven't because it is guaranteed to only be called the one time.
|
|
`parse_one` was never supposed to be public and it uses a bunch of non-public
types as a parameters, so downstream crates wouldn't be able to call it anyways.
|
|
Rename `bitfield` to `bitfield_width`
Its more clear what the methods/fields are returning/storing when we add "width"
to the name.
r? @pepyakin
|
|
Its more clear what the methods/fields are returning/storing when we add "width"
to the name.
|
|
Update clang-sys to 0.21 and bump version
|
|
|
|
Use `repr(packed)` If struct requires explicit alignment of 1.
Fixes #1034
|
|
|
|
|
|
Make the default target for expectation files as x86_64-unknown-linux
Solves https://github.com/rust-lang-nursery/rust-bindgen/issues/1067
I didn't check it on macos because I don't have one, but it will be a surprise if it doesn't work.
|
|
|
|
|
|
Emit hex bitfield masks
r? @fitzgen
|
|
|
|
Factor out a general purpose predicate script from the `csmith` driver
This allows it to be used by both fuzzers and when using `creduce`. See each commit for details.
r? @pepyakin
|
|
Add support for the thiscall ABI
Fixes https://github.com/rust-lang-nursery/rust-bindgen/issues/541
The thiscall ABI is experimental, so in order to use it nightly is required and also the following statement:
`#![feature(abi_thiscall)]`
That's a problem because the `tests_expectations` crate (in the tests folder) tries to compile it (and stable is required).
|
|
It is a lot more streamlined than writing a big nasty ol' bash script.
|
|
reimplementation
|
|
header
First, `bindgen` is run on the input header. Then the emitted bindings are
compiled with `rustc`. Finally, the compiled bindings' layout tests are run.
By default, this script will exit zero if all of the above steps are successful,
and non-zero if any of them fail. This is appropriate for determining if some
test case (perhaps generated with `csmith` or another fuzzer) uncovers any bugs
in `bindgen`.
However, this script can also be used when reducing (perhaps with `creduce`) a
known-bad test case into a new, smaller test case that exhibits the same bad
behavior. In this mode, you might expect that the emitted bindings fail to
compile with `rustc`, and want to exit non-zero early if that is not the
case. See the "reducing arguments" section for details and what knobs are
available.
|
|
Bitfields in unions
Fixes #744
I think it is WIP for the moment as I didn't run tests locally.
|
|
|
|
|
|
|
|
liranringel:disable-mangling-if-link-name-is-specified, r=emilio
Tell LLVM to not mangle names if they're already mangled
LLVM mangles the name by default but functions are already mangled because the `link_name` attribute's value is mangled.
Prefixing the name with `\u{1}` should tell LLVM to not mangle it.
I originally thought it's a bug in rustc, but it was clarified here: https://github.com/rust-lang/rust/issues/45073
|
|
attribute
|
|
r=pepyakin
Point to `csmith` instructions from CONTRIBUTING.md
r? @pepyakin
|
|
Generate bitfield accessor names eagerly
@fitzgen r?
I'm not sure about `deanonymize_fields`, as we now assign names to data members and also generate names for the bitfield accessors, but can't come up with a better name.
|
|
|
|
|
|
And link to the csmith-fuzzing/README.md file for more details.
Fixes #1038
|
|
|
|
|
|
|
|
|
|
Also make impl_partialeq test to also cover impl_debug case.
|
|
|
|
Also clean a bit.
|
|
Make bitfields larger than type opaque
@fitzgen r?
Fixes #1007 by ensuring that bitfields larger than type will be opaque, ensuring the layout is correct.
|
|
|
|
Remove early anonymous bitfield filtering and consolidate name method
This PR is some changes to early bitfield filtering to help fix (#1007) This does not close (#1007), but allows for checking if the bitfield is too large during a later stage.
@fitzgen r?
|
|
|
|
Derive partialeq "manually" when possible
Fixes #879
r? @fitzgen
|
|
|
|
|
|
|
|
Remove derive-partialeq-template-inst test.
Add comments.
Don't implement PartialEq for incomplete arrays
Handle opaque bases and template instantiations
Extract constrain_type.
Extract `is whitelisted?` check
Add failing partialeq-anonfield
join for comps
Fix: return insert if not whitelisted
Delegate TypeRefs and alias to constrain_join.
Delegate Template instantiations to constrain_join
Add derive-partialeq-pointer.hpp test
Update comment.
Fix layout alignment larger that array limit
Add missing test for derive-partialeq-anonfield.rs
Clean
Clean
Fix typo in opaque-template-inst-member test
Remove redudant stmt
Add comment on can_supersede.
Format impl_partialeq and leave a comment
Extract requires_storage into it's own function.
Clean
|
|
Strongly type ids
* [X] `TypeId`
* [X] `ModuleId`
* [x] `VarId`
* [x] `FunctionId`
|
|
Its not just item ids now, and that name was pretty long...
|