This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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]

Re: MIPS exception handling is broken...


David Daney wrote:
Has anyone else noticed that the mipsel-linux-gnu target is generating bad .eh_frame data lately?

I am running mipsel-linux-gcc (GCC) 4.2.0 20060914 (experimental) which is svn r116953

I also notice that

http://gcc.gnu.org/ml/gcc-testresults/2006-09/msg00922.html

Shows similar results. So I don't think it is just my problem.

A month ago everything was working well, so I don't know what happened.

I have tracked the problem down to the fact that GCC is generating unwind data with absolute addressing, but when ld links the runtime libraries, it is trying to convert to PC relative addressing and screwing up the .eh_frame data in the process.

I posted a message to the binutils list showing the problem:

http://sourceware.org/ml/binutils/2006-09/msg00131.html

In the next few days I may try to track down the offending patches, but if anyone has any pointers they are of course welcome.


svn r116604 is the culprit:


2006-08-31 Roger Sayle <roger@eyesopen.com>

	PR other/22313
	* dwarf2out.c (add_fde_cfi): Use a set_loc if the current label is
	NULL, otherwise use an advance_loc4 to adjust relative to the
	current label.
	(output_cfi) <DW_CFA_set_loc>: Update the current label.
	(dwarf2out_switch_text_section): Reset the current label to avoid
	using advance_loc4 over section boundaries.


I just posted a reply to Roger on gcc-patches.


David Daney.


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