Add a RAW mode to StringTableBuilder.
In this mode it just tries to tail merge the strings without imposing any other
format constrains. It will not, for example, add a null byte between them.
Also add support for keeping a tentative size and offset if we decide to
not optimize after all.
This will be used shortly in lld for merging SHF_STRINGS sections.
llvm-svn: 251153
diff --git a/llvm/unittests/MC/StringTableBuilderTest.cpp b/llvm/unittests/MC/StringTableBuilderTest.cpp
index 716b9c7..4cc0bda 100644
--- a/llvm/unittests/MC/StringTableBuilderTest.cpp
+++ b/llvm/unittests/MC/StringTableBuilderTest.cpp
@@ -17,13 +17,13 @@
namespace {
TEST(StringTableBuilderTest, BasicELF) {
- StringTableBuilder B;
+ StringTableBuilder B(StringTableBuilder::ELF);
B.add("foo");
B.add("bar");
B.add("foobar");
- B.finalize(StringTableBuilder::ELF);
+ B.finalize();
std::string Expected;
Expected += '\x00';
@@ -39,14 +39,14 @@
}
TEST(StringTableBuilderTest, BasicWinCOFF) {
- StringTableBuilder B;
+ StringTableBuilder B(StringTableBuilder::WinCOFF);
// Strings must be 9 chars or longer to go in the table.
B.add("hippopotamus");
B.add("pygmy hippopotamus");
B.add("river horse");
- B.finalize(StringTableBuilder::WinCOFF);
+ B.finalize();
// size_field + "pygmy hippopotamus\0" + "river horse\0"
uint32_t ExpectedSize = 4 + 19 + 12;