This add a reset method for WinCOFFObjectWriter, like other MC* classes.
authorYaron Keren <yaron.keren@gmail.com>
Tue, 16 Sep 2014 21:31:04 +0000 (21:31 +0000)
committerYaron Keren <yaron.keren@gmail.com>
Tue, 16 Sep 2014 21:31:04 +0000 (21:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217907 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/WinCOFFObjectWriter.cpp

index a6b7a081bdb989340ff0c6640ea93731b59e8493..f40e1abb048e03b4786f186628b7119cba845821 100644 (file)
@@ -113,6 +113,11 @@ public:
   StringTable();
   size_t size() const;
   size_t insert(StringRef String);
+  void clear() {
+    Map.clear();
+    Data.resize(4);
+    update_length();
+  }  
 };
 
 class WinCOFFObjectWriter : public MCObjectWriter {
@@ -139,6 +144,17 @@ public:
   bool UseBigObj;
 
   WinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW, raw_ostream &OS);
+  
+  void reset() override {
+    memset(&Header, 0, sizeof(Header));
+    Header.Machine = TargetObjectWriter->getMachine();
+    Sections.clear();
+    Symbols.clear();
+    Strings.clear();
+    SectionMap.clear();
+    SymbolMap.clear();
+    MCObjectWriter::reset();
+  }
 
   COFFSymbol *createSymbol(StringRef Name);
   COFFSymbol *GetOrCreateCOFFSymbol(const MCSymbol * Symbol);