This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: [buildsym.c] Turn off unused addr bits in linetable
- To: Fernando Nasser <fnasser at redhat dot com>
- Subject: Re: RFA: [buildsym.c] Turn off unused addr bits in linetable
- From: Michael Snyder <msnyder at cygnus dot com>
- Date: Mon, 12 Mar 2001 16:59:18 -0800
- CC: gdb-patches at sources dot redhat dot com, Nick Clifton <nickc at cygnus dot com>
- Organization: Red Hat
- References: <3AAD70B6.A9C16F36@redhat.com>
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! */