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;