Index: lib/Object/WindowsResource.cpp =================================================================== --- lib/Object/WindowsResource.cpp +++ lib/Object/WindowsResource.cpp @@ -572,7 +572,7 @@ 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; Index: test/tools/llvm-cvtres/symbols.test =================================================================== --- /dev/null +++ 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