[ELF] --icf: don't fold text sections with LSDA
Fix PR36272 and PR46835 A .eh_frame FDE references a text section and (optionally) a LSDA (in .gcc_except_table). Even if two text sections have identical content and relocations (e.g. a() and b()), we cannot fold them if their LSDA are different. ``` void foo(); void a() { try { foo(); } catch (int) { } } void b() { try { foo(); } catch (float) { } } ``` Scan .eh_frame pieces with LSDA and disallow referenced text sections to be folded. If two .gcc_except_table have identical semantics (usually identical content with PC-relative encoding), we will lose folding opportunity. For ClickHouse (an exception-heavy application), this can reduce --icf=all efficiency from 9% to 5%. There may be some percentage we can reclaim without affecting correctness, if we analyze .eh_frame and .gcc_except_table sections. gold 2.24 implemented a more complex fix (resolution to https://sourceware.org/bugzilla/show_bug.cgi?id=21066) which combines the checksum of .eh_frame CIE/FDE pieces. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D84610
Loading
Please sign in to comment