Skip to content

Commit 6c705d1

Browse files
authored
[lld][elf] Skip BP ordering input sections with null data (#149265)
1 parent de95956 commit 6c705d1

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

lld/ELF/BPSectionOrderer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,10 @@ DenseMap<const InputSectionBase *, int> elf::runBalancedPartitioning(
7676
if (!d)
7777
return;
7878
auto *sec = dyn_cast_or_null<InputSection>(d->section);
79-
// Skip empty, discarded, ICF folded sections. Skipping ICF folded sections
80-
// reduces duplicate detection work in BPSectionOrderer.
79+
// Skip empty, discarded, ICF folded sections, .bss. Skipping ICF folded
80+
// sections reduces duplicate detection work in BPSectionOrderer.
8181
if (!sec || sec->size == 0 || !sec->isLive() || sec->repl != sec ||
82-
!orderer.secToSym.try_emplace(sec, d).second)
82+
!sec->content().data() || !orderer.secToSym.try_emplace(sec, d).second)
8383
return;
8484
rootSymbolToSectionIdxs[CachedHashStringRef(
8585
lld::utils::getRootSymbol(sym.getName()))]

lld/test/ELF/bp-section-orderer.s

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,28 @@
2626

2727
# RUN: ld.lld -o out.s a.o --irpgo-profile=a.profdata --bp-startup-sort=function
2828
# RUN: llvm-nm -jn out.s | tr '\n' , | FileCheck %s --check-prefix=STARTUP
29-
# STARTUP: s5,s4,s3,s2,s1,A,B,C,F,E,D,merged1,merged2,_start,d4,d3,d2,d1,{{$}}
29+
# STARTUP: s5,s4,s3,s2,s1,A,B,C,F,E,D,merged1,merged2,_start,d4,d3,d2,d1,g1,{{$}}
3030

3131
# RUN: ld.lld -o out.os a.o --irpgo-profile=a.profdata --bp-startup-sort=function --symbol-ordering-file a.txt
3232
# RUN: llvm-nm -jn out.os | tr '\n' , | FileCheck %s --check-prefix=ORDER-STARTUP
33-
# ORDER-STARTUP: s2,s1,s5,s4,s3,A,F,E,D,B,C,merged1,merged2,_start,d3,d2,d4,d1,{{$}}
33+
# ORDER-STARTUP: s2,s1,s5,s4,s3,A,F,E,D,B,C,merged1,merged2,_start,d3,d2,d4,d1,g1,{{$}}
3434

3535
# RUN: ld.lld -o out.cf a.o --verbose-bp-section-orderer --bp-compression-sort=function 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-FUNC
3636
# RUN: ld.lld -o out.cf.icf a.o --verbose-bp-section-orderer --bp-compression-sort=function --icf=all --gc-sections 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-ICF-FUNC
3737
# RUN: llvm-nm -jn out.cf | tr '\n' , | FileCheck %s --check-prefix=CFUNC
38-
# CFUNC: s5,s4,s3,s2,s1,A,F,merged1,merged2,C,E,D,B,_start,d4,d3,d2,d1,{{$}}
38+
# CFUNC: s5,s4,s3,s2,s1,A,F,merged1,merged2,C,E,D,B,_start,d4,d3,d2,d1,g1,{{$}}
3939

4040
# RUN: ld.lld -o out.cd a.o --verbose-bp-section-orderer --bp-compression-sort=data 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-DATA
4141
# RUN: llvm-nm -jn out.cd | tr '\n' , | FileCheck %s --check-prefix=CDATA
42-
# CDATA: s5,s3,s4,s2,s1,F,C,E,D,B,A,merged1,merged2,_start,d4,d1,d3,d2,{{$}}
42+
# CDATA: s5,s3,s4,s2,s1,F,C,E,D,B,A,merged1,merged2,_start,d4,d1,d3,d2,g1,{{$}}
4343

4444
# RUN: ld.lld -o out.cb a.o --verbose-bp-section-orderer --bp-compression-sort=both 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-BOTH
4545
# RUN: llvm-nm -jn out.cb | tr '\n' , | FileCheck %s --check-prefix=CBOTH
46-
# CBOTH: s5,s3,s4,s2,s1,A,F,merged1,merged2,C,E,D,B,_start,d4,d1,d3,d2,{{$}}
46+
# CBOTH: s5,s3,s4,s2,s1,A,F,merged1,merged2,C,E,D,B,_start,d4,d1,d3,d2,g1,{{$}}
4747

4848
# RUN: ld.lld -o out.cbs a.o --verbose-bp-section-orderer --bp-compression-sort=both --irpgo-profile=a.profdata --bp-startup-sort=function 2>&1 | FileCheck %s --check-prefix=BP-COMPRESSION-BOTH
4949
# RUN: llvm-nm -jn out.cbs | tr '\n' , | FileCheck %s --check-prefix=CBOTH-STARTUP
50-
# CBOTH-STARTUP: s5,s3,s4,s2,s1,A,B,C,F,E,D,merged1,merged2,_start,d4,d1,d3,d2,{{$}}
50+
# CBOTH-STARTUP: s5,s3,s4,s2,s1,A,B,C,F,E,D,merged1,merged2,_start,d4,d1,d3,d2,g1,{{$}}
5151

5252
# BP-COMPRESSION-FUNC: Ordered 9 sections ([[#]] bytes) using balanced partitioning
5353
# BP-COMPRESSION-ICF-FUNC: Ordered 8 sections ([[#]] bytes) using balanced partitioning
@@ -108,6 +108,7 @@ d3
108108
d2
109109

110110
#--- a.c
111+
int g1;
111112
const char s5[] = "engineering";
112113
const char s4[] = "computer program";
113114
const char s3[] = "hardware engineer";
@@ -377,6 +378,14 @@ d1:
377378
.word 6 // 0x6
378379
.size d1, 16
379380

381+
.type g1,@object // @g1
382+
.section .bss.g1,"aw",@nobits
383+
.globl g1
384+
.p2align 2, 0x0
385+
g1:
386+
.word 0 // 0x0
387+
.size g1, 4
388+
380389
.section ".note.GNU-stack","",@progbits
381390
.addrsig
382391
.addrsig_sym F

0 commit comments

Comments
 (0)