diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2014-03-20 06:29:02 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2014-03-20 06:29:02 +0000 |
| commit | 798e548955556eef47820910174118abbfa933e3 (patch) | |
| tree | b2336f9c8ba1fc7188027a37c84dd1f4874b57e5 /llvm | |
| parent | ed98b68ed841abe6a7de08402a84f76d2cf29a89 (diff) | |
| download | bcm5719-llvm-798e548955556eef47820910174118abbfa933e3.tar.gz bcm5719-llvm-798e548955556eef47820910174118abbfa933e3.zip | |
Object: Output .file symbols properly
obj2yaml would emit the NUL bytes padding the auxiliary file symbol
records. Trimming them looks nicer.
llvm-svn: 204314
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/Object/Inputs/COFF/long-file-symbol.yaml | 14 | ||||
| -rw-r--r-- | llvm/test/Object/obj2yaml-coff-long-file-symbol.test | 3 | ||||
| -rw-r--r-- | llvm/tools/obj2yaml/coff2yaml.cpp | 3 |
3 files changed, 19 insertions, 1 deletions
diff --git a/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml b/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml new file mode 100644 index 00000000000..37caad79620 --- /dev/null +++ b/llvm/test/Object/Inputs/COFF/long-file-symbol.yaml @@ -0,0 +1,14 @@ +--- +header: + Machine: IMAGE_FILE_MACHINE_AMD64 + Characteristics: [ IMAGE_FILE_RELOCS_STRIPPED, IMAGE_FILE_LINE_NUMS_STRIPPED ] +sections: +symbols: + - Name: .file + Value: 0 + SectionNumber: 65534 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_FILE + File: filename_with_22_chars +... diff --git a/llvm/test/Object/obj2yaml-coff-long-file-symbol.test b/llvm/test/Object/obj2yaml-coff-long-file-symbol.test new file mode 100644 index 00000000000..3a4d380bd8e --- /dev/null +++ b/llvm/test/Object/obj2yaml-coff-long-file-symbol.test @@ -0,0 +1,3 @@ +RUN: yaml2obj %p/Inputs/COFF/long-file-symbol.yaml | obj2yaml | FileCheck %s --check-prefix COFF-I386 + +COFF-I386: File: filename_with_22_chars diff --git a/llvm/tools/obj2yaml/coff2yaml.cpp b/llvm/tools/obj2yaml/coff2yaml.cpp index 1542506e5f9..ef709222a17 100644 --- a/llvm/tools/obj2yaml/coff2yaml.cpp +++ b/llvm/tools/obj2yaml/coff2yaml.cpp @@ -178,7 +178,8 @@ void COFFDumper::dumpSymbols(unsigned NumSymbols) { } else if (Symbol->isFileRecord()) { // This symbol represents a file record. Sym.File = StringRef(reinterpret_cast<const char *>(AuxData.data()), - Symbol->NumberOfAuxSymbols * COFF::SymbolSize); + Symbol->NumberOfAuxSymbols * COFF::SymbolSize) + .rtrim(StringRef("\0", /*length=*/1)); } else if (Symbol->isSectionDefinition()) { // This symbol represents a section definition. assert(Symbol->NumberOfAuxSymbols == 1 && |

