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] |
Hi, this patch corrects the PC-relative case in write.c:fixup_segment() where the location of the fix seems to incorrectly use fx_dot_value + fx_frag->fr_address, rather than fx_where + fx_frag->fr_address. fx_dot_value actually seems to work most of the time, however in cases I'm encountering under the nios2 port, the calling of frag_more() before creating a new fix during assembly sometimes creates a new frag, thus causing mismatch of fx_dot_value vs. the intra-frag position. The behavior seems to depend on the point of frag obstack exhaustion, so I'm afraid I don't have a way to reproduce the error consistently. My current failing case is pthread_create.c from NPTL, which triggers in our internal binutils branch, but doesn't happen on a clean binutils trunk checkout... So how does this (one liner) patch look, does the change look sensible? Thanks, Chung-Lin 2013-03-01 Chung-Lin Tang <cltang@codesourcery.com> gas/ * write.c (fixup_segment): Use fx_where instead of fx_dot_value in computing fx_offset for the pc-relative case.
Attachment:
gas.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |