From: Eric Beckmann Date: Fri, 30 Jun 2017 18:16:35 +0000 (+0000) Subject: Fix bug in symbol generation for resource COFF X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f16503af2bfbe968dc60ae27bfa10ad617dcb6d4;p=llvm Fix bug in symbol generation for resource COFF Symbols in the resource COFF file should be for .rsrc$02, where the actual resource data is, not .rsrc$01, which contains the directory tree. Differential Revision: https://reviews.llvm.org/D34832 Patch by Joe Ranieri. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306853 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Object/WindowsResource.cpp b/lib/Object/WindowsResource.cpp index 35d5dd4ac47..539c8100716 100644 --- a/lib/Object/WindowsResource.cpp +++ b/lib/Object/WindowsResource.cpp @@ -572,7 +572,7 @@ void WindowsResourceCOFFWriter::writeSymbolTable() { Symbol = reinterpret_cast(BufferStart + CurrentOffset); strncpy(Symbol->Name.ShortName, RelocationName, (size_t)COFF::NameSize); Symbol->Value = DataOffsets[i]; - Symbol->SectionNumber = 1; + Symbol->SectionNumber = 2; Symbol->Type = COFF::IMAGE_SYM_DTYPE_NULL; Symbol->StorageClass = COFF::IMAGE_SYM_CLASS_STATIC; Symbol->NumberOfAuxSymbols = 0; diff --git a/test/tools/llvm-cvtres/symbols.test b/test/tools/llvm-cvtres/symbols.test new file mode 100644 index 00000000000..2ca3a193ac4 --- /dev/null +++ b/test/tools/llvm-cvtres/symbols.test @@ -0,0 +1,33 @@ +// Check COFF emission of cvtres +// The input was generated with the following command, using the original Windows +// rc.exe: +// > rc /fo test_resource.res /nologo test_resource.rc +// The object file we are comparing against was generated with this command using +// the original Windows cvtres.exe. +// > cvtres /machine:X86 /readonly /nologo /out:test_resource.obj.coff \ +// test_resource.res + +RUN: llvm-cvtres /verbose /out:%t %p/Inputs/test_resource.res +RUN: llvm-readobj -symbols %t | FileCheck %s + +CHECK: Name: $R000000 +CHECK-NEXT: Value: 0 +CHECK-NEXT: Section: .rsrc$02 +CHECK: Name: $R000018 +CHECK-NEXT: Value: 24 +CHECK-NEXT: Section: .rsrc$02 +CHECK: Name: $R000340 +CHECK-NEXT: Value: 832 +CHECK-NEXT: Section: .rsrc$02 +CHECK: Name: $R000668 +CHECK-NEXT: Value: 1640 +CHECK-NEXT: Section: .rsrc$02 +CHECK: Name: $R000698 +CHECK-NEXT: Value: 1688 +CHECK-NEXT: Section: .rsrc$02 +CHECK: Name: $R000720 +CHECK-NEXT: Value: 1824 +CHECK-NEXT: Section: .rsrc$02 +CHECK: Name: $R000750 +CHECK-NEXT: Value: 1872 +CHECK-NEXT: Section: .rsrc$02