Add GOFF read/write support - #969
Conversation
|
Thanks for the PR. I probably won't get to review this for a few days or more. You may have noticed I moved the GOFF support to an unstable feature in #962. My plan is to do an However, if there is anywhere that you think it would be beneficial to have a breaking change in the non-GOFF code in order to accommodate GOFF then now is the time to do it. I didn't notice anything from a quick look through this PR. It would be useful to have the fixtures in |
|
Thanks for your consideration
Sounds good, I'll make sure to update this PR to reflect any changes that are made if necessary inbetween this and the next release
Noted, I don't believe we'll require any breaking changes to satisfy our needs. I don't see any issue with leaving
I've opened a PR to add sample testfiles here gimli-rs/object-testfiles#45 . If that lands ahead of time, I'll update this PR to bump the submodule and add my read tests |
philipc
left a comment
There was a problem hiding this comment.
Some comments from a quick read through, I haven't looked at anything in detail yet.
Also, there doesn't appear to be any testing of continuation records, either here or in the object-testfiles additions.
GOFF is still new and foreign to me, so please push back if I make any suggestions that don't make sense to you.
|
I think this is good to merge after a submodule update. I find it easier to become familiar with the code by actually working on it, so I plan to do some followup work myself (in particular implement support in the readobj example), and I'll fix things I notice while doing that. |
Great, submodule has been bumped to main
Feel free to ping me whenever if you need some clarification / have GOFF specific questions. Sorry about my previous delayed response, I just came back from vacation |
This PR adds read and write support for GOFF
Read Support
data()returns an error directing users touncompressed_data(), which assembles the complete section data from all contributing records.name()returns an error in favor ofname_parts(), which returns a vec of raw byte slices that can be assembled by the caller.RelocationFlags::Goff. GenericRelocationKindmapping is best-effort based on relocation flags.Write Support
Testing
tests/round_trip/goff.rsverify write/read consistency for sections, symbols, and basic relocations.tests/round_trip/goff_relocation.rsverify relocation parsing and reconstruction.Note: you can refer to the spec here IBM z/OS GOFF Specification