From b8ff982870858c54e09105458b6955b391cc0a11 Mon Sep 17 00:00:00 2001 From: Rahul Chaudhry Date: Fri, 21 Oct 2016 16:34:06 -0700 Subject: gold: make icf respect section alignment requirements. Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=628795 The upstream bug is https://sourceware.org/bugzilla/show_bug.cgi?id=17704 This patch is backported from upstream - commit ac423761af22f7858a1413cda5df3e1d5e88d4e4 Author: Gergely Nagy Date: Fri Oct 21 11:08:20 2016 -0700 Fix PR 17704. This fix keeps the section with the highest alignment when folding sections with ICF. PR gold/17704 * icf.cc (match_sections): Add new parameter section_addraligns. Check section alignment and keep the section with the strictest alignment. (find_identical_sections): New local variable section_addraligns. Store each section's alignment. * testsuite/pr17704a_test.s: New file. * testsuite/Makefile.am (pr17704a_test): New test. * testsuite/Makefile.in: Regenerate. --- binutils-2.25/gold/testsuite/pr17704a_test.s | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 binutils-2.25/gold/testsuite/pr17704a_test.s (limited to 'binutils-2.25/gold/testsuite/pr17704a_test.s') diff --git a/binutils-2.25/gold/testsuite/pr17704a_test.s b/binutils-2.25/gold/testsuite/pr17704a_test.s new file mode 100644 index 00000000..2b39e649 --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr17704a_test.s @@ -0,0 +1,23 @@ +nop + .section .text.foo,"axG",@progbits,foo,comdat +foo: + ret + + .section .text.bar,"axG",@progbits,bar,comdat + .align 2 +bar: + ret + + .section .text._start,"ax",@progbits + .globl _start +_start: + leaq bar(%rip), %rsi + testb $1, %sil + je .L9 + mov $1, %eax + mov $1, %ebx + int $0x80 +.L9: + mov $1, %eax + mov $0, %ebx + int $0x80 -- cgit v1.2.3