This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC][GOLD] ARM: Add cantunwind when unwind info does not match start of section


Hi all!

I want to add one more condition to fix_exidx_coverage. This will wix PR gold/19611.
I have a question about condition itself, I need to compare start address of
first unwind entry (first_word) to actual start of the section. In bfd I
compared it to vma. But as I understand vma of input sections is always zero.
So the question is: is it correct to compare first_word to zero (as done
in attached patch)?


This bug was initially found in rtld
(https://sourceware.org/ml/libc-alpha/2015-12/msg00501.html) and already fixed
in bfd (https://sourceware.org/ml/binutils/2015-12/msg00367.html)

It happens when two sections are merged into one. First section should have
non-cantunwind last unwind entry and in second section first unwind entry
should not match start of section.

In this situation initial sections are correct (if unwinder hits start of
section without unwind info it stops). But merged section has a gap in unwind
info, which can cause problems.

BR,
Yury Usishchev


gold/
2016-02-11 Yury Usishchev <y.usishchev@samsung.com>

	PR gold/19611
	* arm.cc (fix_exidx_coverage): Insert cantunwind when address in
	first unwind entry does not match start of section.
	* testsuite/Makefile.am (arm_exidx_test.stdout): Add dump of unwind info
	* testsuite/Makefile.in: Regenerate
	* testsuite/arm_exidx_test.c: Add sections to test unwind info merging
	* testsuite/arm_exidx_test.sh: Add check for correct unwind info merging


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]