From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: Fernando Nasser Cc: gdb-patches@sources.redhat.com, Nick Clifton Subject: Re: RFA: [buildsym.c] Turn off unused addr bits in linetable Date: Mon, 12 Mar 2001 17:11:00 -0000 Message-id: <3AAD70E6.D8E1A97C@cygnus.com> References: <3AAD70B6.A9C16F36@redhat.com> X-SW-Source: 2001-03/msg00184.html Fernando Nasser wrote: > > Some systems like ARM may have extra bits set in the address to indicate > a mode or something else (the LSB=1 means thumb mode for ARM). > > So, before storing line number addresses we may need to turn this bits > off as they may be passed to gdb with the bits on as result of > relocation (ld has no way of knowing it is for a line table entry). > > The following patch passes the line addresses through the target > dependent macro ADDR_BITS_REMOVE() before storing it on the table. > > OK to commit? It seems in general like the right thing -- but I can't speak to every target that uses this macro. Certainly it will not hurt any target that doesn't define the macro (which defaults to identity). > > ChangeLog: > > * buildsym.c (record_line): Turn off unused addr bits. > > -- > Fernando Nasser > Red Hat Canada Ltd. E-Mail: fnasser@redhat.com > 2323 Yonge Street, Suite #300 > Toronto, Ontario M4P 2C9 > > ---------------------------------------------------------------------------------------------------- > Index: gdb/buildsym.c > =================================================================== > RCS file: /cvs/cvsfiles/devo/gdb/buildsym.c,v > retrieving revision 2.104 > diff -c -p -r2.104 buildsym.c > *** buildsym.c 2000/02/21 10:02:58 2.104 > --- buildsym.c 2001/03/12 23:50:04 > *************** record_line (register struct subfile *su > *** 725,731 **** > > e = subfile->line_vector->item + subfile->line_vector->nitems++; > e->line = line; > ! e->pc = pc; > } > > /* Needed in order to sort line tables from IBM xcoff files. Sigh! */ > --- 725,731 ---- > > e = subfile->line_vector->item + subfile->line_vector->nitems++; > e->line = line; > ! e->pc = ADDR_BITS_REMOVE(pc); > } > > /* Needed in order to sort line tables from IBM xcoff files. Sigh! */