Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint64_t>::max() -
Config.ChangeSectionLMAValAll) {
Expand Down
35 changes: 27 additions & 8 deletions llvm/test/tools/llvm-objcopy/ELF/change-section-lma.test
Original file line number Diff line number Diff line change
Expand Up @@ -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 0x0000000000001400 0x0000000000001400 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 0x0000000000001400 0x0000000000001400 0x000010 0x000000

# CHECK-PLUS-SECTIONS: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
# CHECK-PLUS-SECTIONS: .text1
Expand Down Expand Up @@ -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
Expand All @@ -72,8 +80,19 @@ 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
VAddr: 0x1400
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I don't think a VAddr makes sense for a segment that is not loaded.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed

Offset: 0x378