summaryrefslogtreecommitdiff
path: root/tools/obj2yaml
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-05-31 20:26:44 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-05-31 20:26:44 +0000
commit05bc4a6f20fb4bad971dc6ebb86b9ee29307bd3d (patch)
tree689fc46d860140b2305957bac56bfc2073fdeb3b /tools/obj2yaml
parent47afc19625e97a3716d813f014a3a48468e591ca (diff)
downloadllvm-05bc4a6f20fb4bad971dc6ebb86b9ee29307bd3d.tar.gz
llvm-05bc4a6f20fb4bad971dc6ebb86b9ee29307bd3d.tar.bz2
llvm-05bc4a6f20fb4bad971dc6ebb86b9ee29307bd3d.tar.xz
Don't allocate temporary string for section data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183040 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/obj2yaml')
-rw-r--r--tools/obj2yaml/coff2yaml.cpp20
1 files changed, 2 insertions, 18 deletions
diff --git a/tools/obj2yaml/coff2yaml.cpp b/tools/obj2yaml/coff2yaml.cpp
index 0bb3e24c3c..b41edc1e8a 100644
--- a/tools/obj2yaml/coff2yaml.cpp
+++ b/tools/obj2yaml/coff2yaml.cpp
@@ -13,8 +13,6 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/YAMLTraits.h"
-#include <list>
-
using namespace llvm;
namespace {
@@ -25,8 +23,6 @@ class COFFDumper {
void dumpHeader(const object::coff_file_header *Header);
void dumpSections(unsigned numSections);
void dumpSymbols(unsigned numSymbols);
- StringRef getHexString(ArrayRef<uint8_t> Data);
- std::list<std::string> Strings;
public:
COFFDumper(const object::COFFObjectFile &Obj);
@@ -68,7 +64,7 @@ void COFFDumper::dumpSections(unsigned NumSections) {
ArrayRef<uint8_t> sectionData;
Obj.getSectionContents(Sect, sectionData);
- Sec.SectionData = getHexString(sectionData);
+ Sec.SectionData = COFFYAML::BinaryRef(sectionData);
std::vector<COFF::relocation> Relocations;
for (object::relocation_iterator rIter = iter->begin_relocations();
@@ -100,23 +96,11 @@ void COFFDumper::dumpSymbols(unsigned NumSymbols) {
Sym.Header.Value = Symbol->Value;
Sym.Header.SectionNumber = Symbol->SectionNumber;
Sym.Header.NumberOfAuxSymbols = Symbol->NumberOfAuxSymbols;
- Sym.AuxiliaryData = getHexString(Obj.getSymbolAuxData(Symbol));
+ Sym.AuxiliaryData = COFFYAML::BinaryRef(Obj.getSymbolAuxData(Symbol));
Symbols.push_back(Sym);
}
}
-StringRef COFFDumper::getHexString(ArrayRef<uint8_t> Data) {
- std::string S;
- for (ArrayRef<uint8_t>::iterator I = Data.begin(), E = Data.end(); I != E;
- ++I) {
- uint8_t Byte = *I;
- S.push_back(hexdigit(Byte >> 4));
- S.push_back(hexdigit(Byte & 0xf));
- }
- Strings.push_back(S);
- return Strings.back();
-}
-
COFFYAML::Object &COFFDumper::getYAMLObj() {
return YAMLObj;
}