Follow-up to the C bitfield support added in #6439 (#1240, #314): the PDB type parser dropped struct/union bitfield members because an LF_BITFIELD member type resolved to NULL in pdb_type_parse(), so "tc"/"ts"/"tp" on a PDB-loaded type lost every bitfield field. member_parse() now detects a TpiKind_BITFIELD field type, resolves the member to the bitfield's underlying integer (base_type) and reports the bit width (length) via an out-parameter. class_member_parse() and union_member_parse() store it in RzTypeStructMember.size / RzTypeUnionMember.size (the bitfield width in bits, 0 if not a bitfield), matching the convention used by the C and DWARF member paths. Update the PDB type expectations that previously asserted bitfield_typedef had no members: db/cmd/cmd_idp (idpij) and db/tools/rz_bin (rz-bin -Pj) now expect the three resolved "unsigned char" members of minimal.pdb. Co-authored-by: Anton Kochkov <anton.kochkov@gmail.com> |
||
|---|---|---|
| .. | ||
| arch | ||
| bin | ||
| config | ||
| cons | ||
| core | ||
| crypto | ||
| debug | ||
| demangler | ||
| diff | ||
| egg | ||
| flag | ||
| hash | ||
| il | ||
| include | ||
| io | ||
| lang | ||
| magic | ||
| main | ||
| mark | ||
| reg | ||
| search | ||
| sign | ||
| socket | ||
| syscall | ||
| type | ||
| util | ||
| meson.build | ||
| plugins.h.in | ||
| README.md | ||
| RizinConfig.cmake.in | ||
| RzModulesConfig.cmake.in | ||
Rizin Libs (librz)
The Rizin framework is composed of several pieces that work together to provide a reverse-engineering framework useful for a variety of use-cases and tasks. All tools present in binrz are based on the libraries present in this directory, so getting a general idea of what these libraries are and do is key to navigate the codebase.