Index: llvm/test/tools/llvm-objcopy/COFF/set-flags-on-setion-added.test =================================================================== --- /dev/null +++ llvm/test/tools/llvm-objcopy/COFF/set-flags-on-setion-added.test @@ -0,0 +1,23 @@ +# RUN: yaml2obj %s -o %t + +## Test that llvm-objcopy can add sections and set its flags in the same +## call. +# RUN: echo DEADBEEF > %t.sec +# RUN: llvm-objcopy --set-section-flags=.test.section1=code --add-section=.test.section1=%t.sec --set-section-flags=.test.section2=data --add-section=.test.section2=%t.sec %t %t1 +# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefixes=CHECK-ADD + +# CHECK-ADD: Name: .test.section1 +# CHECK-ADD-NEXT: VirtualSize: 0x9 +# CHECK-ADD-NEXT: VirtualAddress: 0x0 +# CHECK-ADD: Name: .test.section2 +# CHECK-ADD-NEXT: VirtualSize: 0x9 +# CHECK-ADD-NEXT: VirtualAddress: 0x9 + + +--- !COFF +header: + Machine: IMAGE_FILE_MACHINE_AMD64 + Characteristics: [ ] +sections: +symbols: +... Index: llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp =================================================================== --- llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp +++ llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp @@ -242,7 +242,7 @@ const auto It = Config.SetSectionFlags.find(SecName); if (It != Config.SetSectionFlags.end()) Characteristics = - flagsToCharacteristics(It->second.NewFlags, Characteristics); + flagsToCharacteristics(It->second.NewFlags, 0); else Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_1BYTES;