This should fix https://bugs.llvm.org//show_bug.cgi?id=34189
This change makes it so that if writing a K_GNU style archive, you need to output a > 32-bit offset it should output in K_GNU64 style instead.
Paths
| Differential D36812
Add support for writing 64-bit symbol tables for archives when offsets become too large for 32-bit ClosedPublic Authored by jakehehrlich on Aug 16 2017, 5:39 PM.
Details
Summary This should fix https://bugs.llvm.org//show_bug.cgi?id=34189 This change makes it so that if writing a K_GNU style archive, you need to output a > 32-bit offset it should output in K_GNU64 style instead.
Diff Detail
Event TimelineComment Actions You have a bunch of changes here to support individual members >=4G, but I'm not sure there is any need for that.
Comment Actions
option 1) seems the least invasive to me personally. Comment Actions I agree with Rafael's comment. K_MIPS64 is now K_GNU64 and printNBits now uses Kind to determine the size. Comment Actions
Comment Actions With r314844 in place it should now be much easier to check if a 64 bit symbol table is needed or not. Comment Actions I updated this to use the new changes that rafael made. Much clearner. Thanks Rafael! Comment Actions This change adds --print-armap to the test. After https://reviews.llvm.org/D39379 lands this test will work. If the wrong index is used for "main" then the correct file is unlikely to show up making so this test should check that "main" is being looked up in the correct place. Closed by commit rL316805: Add support for writing 64-bit symbol tables for archives when offsets become… (authored by jakehehrlich). · Explain WhyOct 27 2017, 3:27 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 116040 lib/Object/ArchiveWriter.cpp
test/Object/archive-SYM64-write.test
|
This function is exactly the same as print32 except for the Val type, couldn't you use a single templated function and avoid the printNBits altogether?