forked from OSchip/llvm-project
[ELF]: --icf: don't fold sections referencing sections with LCDA after D84610
This commit is contained in:
parent
5a0b1472c0
commit
164a02d0fa
|
|
@ -468,9 +468,10 @@ template <class ELFT> void ICF<ELFT>::run() {
|
||||||
//
|
//
|
||||||
// If two .gcc_except_table have identical semantics (usually identical
|
// If two .gcc_except_table have identical semantics (usually identical
|
||||||
// content with PC-relative encoding), we will lose folding opportunity.
|
// content with PC-relative encoding), we will lose folding opportunity.
|
||||||
|
uint32_t uniqueId = 0;
|
||||||
for (Partition &part : partitions)
|
for (Partition &part : partitions)
|
||||||
part.ehFrame->iterateFDEWithLSDA<ELFT>(
|
part.ehFrame->iterateFDEWithLSDA<ELFT>(
|
||||||
[&](InputSection &s) { s.eqClass[0] = 1; });
|
[&](InputSection &s) { s.eqClass[0] = ++uniqueId; });
|
||||||
|
|
||||||
// Collect sections to merge.
|
// Collect sections to merge.
|
||||||
for (InputSectionBase *sec : inputSections) {
|
for (InputSectionBase *sec : inputSections) {
|
||||||
|
|
|
||||||
|
|
@ -41,3 +41,10 @@ _Z1dv:
|
||||||
.section .gcc_except_table,"a",@progbits
|
.section .gcc_except_table,"a",@progbits
|
||||||
## The actual content does not matter.
|
## The actual content does not matter.
|
||||||
.Lexception0:
|
.Lexception0:
|
||||||
|
|
||||||
|
## .rodata.Z1[ab]v reference .text.Z1[ab]v. Dont fold them.
|
||||||
|
.section .rodata.Z1av,"a",@progbits
|
||||||
|
.long .text.Z1av - .
|
||||||
|
|
||||||
|
.section .rodata.Z1bv,"a",@progbits
|
||||||
|
.long .text.Z1bv - .
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue