diff --git a/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp b/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp index 9c78f7433ad33..1a31bfa2e0db3 100644 --- a/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp +++ b/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp @@ -824,7 +824,7 @@ static Error handleArgs(const CommonConfig &Config, const ELFConfig &ELFConfig, if (Config.ChangeSectionLMAValAll != 0) { for (Segment &Seg : Obj.segments()) { - if (Seg.FileSize > 0) { + if (Seg.MemSize > 0) { if (Config.ChangeSectionLMAValAll > 0 && Seg.PAddr > std::numeric_limits::max() - Config.ChangeSectionLMAValAll) { diff --git a/llvm/test/tools/llvm-objcopy/ELF/change-section-lma.test b/llvm/test/tools/llvm-objcopy/ELF/change-section-lma.test index c1cd1eb46d949..ee4648dc7aa81 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/change-section-lma.test +++ b/llvm/test/tools/llvm-objcopy/ELF/change-section-lma.test @@ -13,17 +13,21 @@ # RUN: not llvm-objcopy --change-section-lma *+0x100000000 %t 2>&1 | FileCheck %s --check-prefix=ERR-OVERFLOW # CHECK-PLUS-PROGRAMS: Type Offset VirtAddr PhysAddr FileSiz MemSiz -# CHECK-PLUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x0000000000001122 0x000038 0x000000 -# CHECK-PLUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x0000000000001120 0x000258 0x000258 -# CHECK-PLUS-PROGRAMS: LOAD 0x000258 0xffffffff00005100 0xffffffff00006120 0x000100 0x000100 -# CHECK-PLUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x0000000000001220 0x000010 0x000000 +# CHECK-PLUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x0000000000001122 0x000038 0x000038 +# CHECK-PLUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x0000000000001120 0x0002c8 0x0002c8 +# CHECK-PLUS-PROGRAMS: LOAD 0x0002c8 0xffffffff00005100 0xffffffff00006120 0x000100 0x000100 +# CHECK-PLUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x0000000000001220 0x000010 0x000010 # CHECK-PLUS-PROGRAMS: NOTE 0x000368 0x0000000000000000 0x0000000000000000 0x000000 0x000000 +# CHECK-PLUS-PROGRAMS: LOAD 0x0003c8 0x0000000000001300 0x0000000000001320 0x000000 0x000010 +# CHECK-PLUS-PROGRAMS: NOTE 0x000378 0x0000000000000000 0x0000000000000000 0x000010 0x000000 -# CHECK-MINUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x00000000000010d2 0x000038 0x000000 -# CHECK-MINUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x00000000000010d0 0x000258 0x000258 -# CHECK-MINUS-PROGRAMS: LOAD 0x000258 0xffffffff00005100 0xffffffff000060d0 0x000100 0x000100 -# CHECK-MINUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x00000000000011d0 0x000010 0x000000 +# CHECK-MINUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x00000000000010d2 0x000038 0x000038 +# CHECK-MINUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x00000000000010d0 0x0002c8 0x0002c8 +# CHECK-MINUS-PROGRAMS: LOAD 0x0002c8 0xffffffff00005100 0xffffffff000060d0 0x000100 0x000100 +# CHECK-MINUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x00000000000011d0 0x000010 0x000010 # CHECK-MINUS-PROGRAMS: NOTE 0x000368 0x0000000000000000 0x0000000000000000 0x000000 0x000000 +# CHECK-MINUS-PROGRAMS: LOAD 0x0003c8 0x0000000000001300 0x00000000000012d0 0x000000 0x000010 +# CHECK-MINUS-PROGRAMS: NOTE 0x000378 0x0000000000000000 0x0000000000000000 0x000010 0x000000 # CHECK-PLUS-SECTIONS: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # CHECK-PLUS-SECTIONS: .text1 @@ -55,9 +59,13 @@ Sections: - Name: .text2 Type: SHT_PROGBITS Size: 0x100 + - Name: .bss1 + Type: SHT_NOBITS + Size: 0x10 ProgramHeaders: - Type: PT_PHDR FileSize: 0x38 + MemSize: 0x38 Offset: 0x2 VAddr: 0x1102 - Type: PT_LOAD @@ -72,8 +80,18 @@ ProgramHeaders: LastSec: .text2 - Type: PT_NOTE FileSize: 0x10 + MemSize: 0x10 VAddr: 0x1200 Offset: 0x358 - Type: PT_NOTE FileSize: 0x0 + MemSize: 0x0 Offset: 0x368 + - Type: PT_LOAD + VAddr: 0x1300 + FirstSec: .bss1 + LastSec: .bss1 + - Type: PT_NOTE + FileSize: 0x10 + MemSize: 0x0 + Offset: 0x378