Page MenuHomeFreeBSD

Implement support for "/SYM64/" archives in ar

Authored by on Jan 9 2019, 5:01 PM.



Changes to ar and libarchive to support 64-bit archives

Allows archives greater than 4GB to be created.

PR: 234454

Test Plan

Created 10 object files of 512M (using a global array of 512 million chars) and created an archive.

Also combined a 5 of these files to ensure regular archives still work.

Diff Detail

rS FreeBSD src repository
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

emaste added a subscriber: imp.Jan 9 2019, 5:36 PM
emaste added a comment.Jan 9 2019, 7:12 PM

We can submit the libarchive changes directly upstream at

We can submit the libarchive changes directly upstream at

Gerald submitted

GitHub pull request 1116 has been merged, and I'm hopeful it will come back into a libarchive update in the near future. edited the test plan for this revision. (Show Details)

Rebase changes to reflect upstream update to libarchive

imp accepted this revision.Apr 9 2019, 5:28 PM

Couple of minor style nits, but the code looks good to my brain.

710 ↗(On Diff #56004)

Any chance you could snug the w_sz onto the prior line? Then the line break is at an operator with a lower order of precedence which is more natural.

937 ↗(On Diff #56004)

This may be too wide.

This revision is now accepted and ready to land.Apr 9 2019, 5:28 PM
emaste added inline comments.Apr 9 2019, 7:37 PM
678 ↗(On Diff #56004)

this line is > 80 cols but is hard to wrap at fewer...


if (w_sz == sizeof(uint32_t))
        *(bsdar->s_so + i) = 
            (uint64_t)htobe32((uint32_t)(*(bsdar->s_so +
            i)) + pm_sz);
        *(bsdar->s_so + i) = 
            htobe64(*(bsdar->s_so + i) + pm_sz);
681 ↗(On Diff #56004)

the final + here is col 81

723 ↗(On Diff #56004)

, is col 81

713 ↗(On Diff #56004)

style(9) nit here, space between if and (

emaste added inline comments.Apr 10 2019, 1:04 PM
936 ↗(On Diff #56004)

Also these casts are not necessary.

This revision was automatically updated to reflect the committed changes.