Message ID | CANW4E-1OpfaB=NGO5bNK=X=BZ_91Nywz_OHfLu4f_Hftgc6ung@mail.gmail.com |
---|---|
State | Accepted |
Headers | show |
On 26 September 2013 16:14, Omair Javaid <omair.javaid@linaro.org> wrote: > dw2-case-insensitive.exp: p fuNC_lang fails on arm. The problem occurs > when thumb mode code is generated. On ARM last bit of function pointer > value indicates whether the target function is an ARM (if 0) or Thumb > (if 1) routine. The PC address should refer to actual address in > either case. This patch adds new compile unit and function labels to > code which act as address ranges of compile unit and functions in > debug information. Therefore address ranges will have correct > addresses and not the ones with an incremented least significant bit. > This patch has been tested on x86_64 and arm machines. > > gdb/testsuite/ChangeLog: > > 2013-09-26 Omair Javaid <Omair.Javaid@linaro.org> > > * gdb.dwarf2/dw2-case-insensitive-debug.S: Updated compile unit and > function label names. > * gdb.dwarf2/dw2-case-insensitive.c: Created function and compile > unit labels. > > .../gdb.dwarf2/dw2-case-insensitive-debug.S | 8 ++++---- > gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c | 12 ++++++++++++ > 2 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S > b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S > index db3cce8..22b01f9 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S > +++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S > @@ -29,14 +29,14 @@ > .ascii "file1.txt\0" /* DW_AT_name */ > .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ > .byte 8 /* DW_AT_language (DW_LANG_Fortran90) */ > - .4byte FUNC_lang /* DW_AT_low_pc */ > - .4byte main /* DW_AT_high_pc */ > + .4byte cu_text_start /* DW_AT_low_pc */ > + .4byte cu_text_end /* DW_AT_high_pc */ > > .uleb128 3 /* Abbrev: DW_TAG_subprogram */ > .byte 1 /* DW_AT_external */ > .ascii "FUNC_lang\0" /* DW_AT_name */ > - .4byte FUNC_lang /* DW_AT_low_pc */ > - .4byte main /* DW_AT_high_pc */ > + .4byte FUNC_lang_start /* DW_AT_low_pc */ > + .4byte FUNC_lang_end /* DW_AT_high_pc */ > .byte 1 /* DW_AT_prototyped */ > .4byte .Ltype - .Lcu1_begin /* DW_AT_type */ > > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c > b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c > index 09e9683..4b3ea07 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c > +++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c > @@ -16,12 +16,21 @@ > along with this program. If not, see <http://www.gnu.org/licenses/>. */ > > /* Use DW_LANG_Fortran90 for case insensitive DWARF. */ > +asm (".globl cu_text_start"); > +asm ("cu_text_start:"); > + > +asm (".globl FUNC_lang_start"); > +asm (".p2align 4"); > +asm ("FUNC_lang_start:"); > > void > FUNC_lang (void) > { > } > > +asm (".globl FUNC_lang_end"); > +asm ("FUNC_lang_end:"); > + > /* Symbol is present only in ELF .symtab. */ > > void > @@ -36,3 +45,6 @@ main (void) > FUNC_symtab (); > return 0; > } > + > +asm (".globl cu_text_end"); > +asm ("cu_text_end:"); > -- Ping?
>>>>> "Omair" == Omair Javaid <omair.javaid@linaro.org> writes:
Omair> 2013-09-26 Omair Javaid <Omair.Javaid@linaro.org>
Omair> * gdb.dwarf2/dw2-case-insensitive-debug.S: Updated compile unit and
Omair> function label names.
Omair> * gdb.dwarf2/dw2-case-insensitive.c: Created function and compile
Omair> unit labels.
Ok.
Tom
On Thu 07 Nov 2013 02:05:28 AM PKT, Tom Tromey wrote: >>>>>> "Omair" == Omair Javaid <omair.javaid@linaro.org> writes: > > Omair> 2013-09-26 Omair Javaid <Omair.Javaid@linaro.org> > Omair> * gdb.dwarf2/dw2-case-insensitive-debug.S: Updated compile unit and > Omair> function label names. > Omair> * gdb.dwarf2/dw2-case-insensitive.c: Created function and compile > Omair> unit labels. > > Ok. > > Tom > Hello Tom, I don’t have commit rights can you kindly commit this fix for me. Thanks! -- Omair.
On 11 November 2013 08:25, Omair Javaid <omair.javaid@linaro.org> wrote: > On Thu 07 Nov 2013 02:05:28 AM PKT, Tom Tromey wrote: >>>>>>> >>>>>>> "Omair" == Omair Javaid <omair.javaid@linaro.org> writes: >> >> >> Omair> 2013-09-26 Omair Javaid <Omair.Javaid@linaro.org> >> Omair> * gdb.dwarf2/dw2-case-insensitive-debug.S: Updated compile >> unit and >> Omair> function label names. >> Omair> * gdb.dwarf2/dw2-case-insensitive.c: Created function and >> compile >> Omair> unit labels. >> >> Ok. >> >> Tom >> > > Hello Tom, > > I don’t have commit rights can you kindly commit this fix for me. > > Thanks! I applied this fix on Omair's behalf. (Hopefully I got everything right as there was some whitespace fixing to be done)
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S index db3cce8..22b01f9 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S +++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S @@ -29,14 +29,14 @@ .ascii "file1.txt\0" /* DW_AT_name */ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ .byte 8 /* DW_AT_language (DW_LANG_Fortran90) */ - .4byte FUNC_lang /* DW_AT_low_pc */ - .4byte main /* DW_AT_high_pc */ + .4byte cu_text_start /* DW_AT_low_pc */ + .4byte cu_text_end /* DW_AT_high_pc */ .uleb128 3 /* Abbrev: DW_TAG_subprogram */ .byte 1 /* DW_AT_external */ .ascii "FUNC_lang\0" /* DW_AT_name */ - .4byte FUNC_lang /* DW_AT_low_pc */ - .4byte main /* DW_AT_high_pc */ + .4byte FUNC_lang_start /* DW_AT_low_pc */ + .4byte FUNC_lang_end /* DW_AT_high_pc */ .byte 1 /* DW_AT_prototyped */ .4byte .Ltype - .Lcu1_begin /* DW_AT_type */ diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c index 09e9683..4b3ea07 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c +++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c @@ -16,12 +16,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* Use DW_LANG_Fortran90 for case insensitive DWARF. */ +asm (".globl cu_text_start"); +asm ("cu_text_start:"); + +asm (".globl FUNC_lang_start"); +asm (".p2align 4"); +asm ("FUNC_lang_start:"); void FUNC_lang (void) { } +asm (".globl FUNC_lang_end"); +asm ("FUNC_lang_end:"); + /* Symbol is present only in ELF .symtab. */ void @@ -36,3 +45,6 @@ main (void) FUNC_symtab (); return 0; } + +asm (".globl cu_text_end"); +asm ("cu_text_end:");