Skip to content

Commit 3d23251

Browse files
committed
fixup! [llvm-objcopy] Let --change-section-lma change segments wth filesz=0, memsz>0
1 parent 5e39ac8 commit 3d23251

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,7 @@ static Error handleArgs(const CommonConfig &Config, const ELFConfig &ELFConfig,
824824

825825
if (Config.ChangeSectionLMAValAll != 0) {
826826
for (Segment &Seg : Obj.segments()) {
827-
if (Seg.FileSize > 0 || Seg.MemSize > 0) {
827+
if (Seg.MemSize > 0) {
828828
if (Config.ChangeSectionLMAValAll > 0 &&
829829
Seg.PAddr > std::numeric_limits<uint64_t>::max() -
830830
Config.ChangeSectionLMAValAll) {

llvm/test/tools/llvm-objcopy/ELF/change-section-lma.test

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,21 @@
1313
# RUN: not llvm-objcopy --change-section-lma *+0x100000000 %t 2>&1 | FileCheck %s --check-prefix=ERR-OVERFLOW
1414

1515
# CHECK-PLUS-PROGRAMS: Type Offset VirtAddr PhysAddr FileSiz MemSiz
16-
# CHECK-PLUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x0000000000001122 0x000038 0x000000
17-
# CHECK-PLUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x0000000000001120 0x000290 0x000290
18-
# CHECK-PLUS-PROGRAMS: LOAD 0x000290 0xffffffff00005100 0xffffffff00006120 0x000100 0x000100
19-
# CHECK-PLUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x0000000000001220 0x000010 0x000000
16+
# CHECK-PLUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x0000000000001122 0x000038 0x000038
17+
# CHECK-PLUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x0000000000001120 0x0002c8 0x0002c8
18+
# CHECK-PLUS-PROGRAMS: LOAD 0x0002c8 0xffffffff00005100 0xffffffff00006120 0x000100 0x000100
19+
# CHECK-PLUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x0000000000001220 0x000010 0x000010
2020
# CHECK-PLUS-PROGRAMS: NOTE 0x000368 0x0000000000000000 0x0000000000000000 0x000000 0x000000
21-
# CHECK-PLUS-PROGRAMS: LOAD 0x000390 0x0000000000001300 0x0000000000001320 0x000000 0x000010
21+
# CHECK-PLUS-PROGRAMS: LOAD 0x0003c8 0x0000000000001300 0x0000000000001320 0x000000 0x000010
22+
# CHECK-PLUS-PROGRAMS: NOTE 0x000378 0x0000000000001400 0x0000000000001400 0x000010 0x000000
2223

23-
# CHECK-MINUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x00000000000010d2 0x000038 0x000000
24-
# CHECK-MINUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x00000000000010d0 0x000290 0x000290
25-
# CHECK-MINUS-PROGRAMS: LOAD 0x000290 0xffffffff00005100 0xffffffff000060d0 0x000100 0x000100
26-
# CHECK-MINUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x00000000000011d0 0x000010 0x000000
24+
# CHECK-MINUS-PROGRAMS: PHDR 0x000002 0x0000000000001102 0x00000000000010d2 0x000038 0x000038
25+
# CHECK-MINUS-PROGRAMS: LOAD 0x000000 0x0000000000001100 0x00000000000010d0 0x0002c8 0x0002c8
26+
# CHECK-MINUS-PROGRAMS: LOAD 0x0002c8 0xffffffff00005100 0xffffffff000060d0 0x000100 0x000100
27+
# CHECK-MINUS-PROGRAMS: NOTE 0x000358 0x0000000000001200 0x00000000000011d0 0x000010 0x000010
2728
# CHECK-MINUS-PROGRAMS: NOTE 0x000368 0x0000000000000000 0x0000000000000000 0x000000 0x000000
28-
# CHECK-MINUS-PROGRAMS: LOAD 0x000390 0x0000000000001300 0x00000000000012d0 0x000000 0x000010
29+
# CHECK-MINUS-PROGRAMS: LOAD 0x0003c8 0x0000000000001300 0x00000000000012d0 0x000000 0x000010
30+
# CHECK-MINUS-PROGRAMS: NOTE 0x000378 0x0000000000001400 0x0000000000001400 0x000010 0x000000
2931

3032
# CHECK-PLUS-SECTIONS: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
3133
# CHECK-PLUS-SECTIONS: .text1
@@ -63,6 +65,7 @@ Sections:
6365
ProgramHeaders:
6466
- Type: PT_PHDR
6567
FileSize: 0x38
68+
MemSize: 0x38
6669
Offset: 0x2
6770
VAddr: 0x1102
6871
- Type: PT_LOAD
@@ -77,12 +80,19 @@ ProgramHeaders:
7780
LastSec: .text2
7881
- Type: PT_NOTE
7982
FileSize: 0x10
83+
MemSize: 0x10
8084
VAddr: 0x1200
8185
Offset: 0x358
8286
- Type: PT_NOTE
8387
FileSize: 0x0
88+
MemSize: 0x0
8489
Offset: 0x368
8590
- Type: PT_LOAD
8691
VAddr: 0x1300
8792
FirstSec: .bss1
8893
LastSec: .bss1
94+
- Type: PT_NOTE
95+
FileSize: 0x10
96+
MemSize: 0x0
97+
VAddr: 0x1400
98+
Offset: 0x378

0 commit comments

Comments
 (0)