[PATCH] testsuite/gdb.dwarf2: Fix for dw2-dos-drive failure on ARM

Omair Javaid omair.javaid@linaro.org
Thu Sep 19 15:23:00 GMT 2013


Thanks everyone for the feedback.

I am getting following problem with 1byte text section in the dw2-dos-drive.exp

(gdb) PASS: gdb.dwarf2/dw2-dos-drive.exp: set breakpoint pending off
break 'z:file.c':func
Cannot access memory at address 0x0

When I change this to 4bytes the problem gets fixed. That is why I
thought this could be an unaligned illegal memory access but I accept
that the above comments verify that its not a alignment issue.

Can anyone help me figure out what could be the cause of this problem?

Thanks!


--
Omair.

On 30 July 2013 16:38, Pedro Alves <palves@redhat.com> wrote:
> On 07/15/2013 11:26 AM, Omair Javaid wrote:
>> A test-case in gdb.dwarf2/dw2-dos-drive.exp fails on ARM. Problem occurs
>> due to an unaligned access of text section. This patch correctly aligns
>> text section to 4 bytes. This patch has been tested on armv7 and x86_64.
>
> #1 - What exactly is unaligned?  You're reserving 4 bytes instead
> of 1 for pc_start.  Does that really influence alignment of text ?
> It doesn't for me, with an arm-linux toolchain:
>
> $ arm-linux-gcc dw2-dos-drive.S -o a.out -c
> $ arm-gp2x-linux-objdump -h a.out
> ...
>   Sections:
>   Idx Name          Size      VMA       LMA       File off  Algn
>     0 .text         00000001  00000000  00000000  00000034  2**0
>                     CONTENTS, ALLOC, LOAD, READONLY, CODE
> ...
>
>  vs
>
> ...
>   Sections:
>   Idx Name          Size      VMA       LMA       File off  Algn
>     0 .text         00000004  00000000  00000000  00000034  2**0
>                    CONTENTS, ALLOC, LOAD, READONLY, CODE
> ...
>
> IOW, size increases, but alignment stays the same.
>
> #2 - Where's the actual access/fault?  AFAICS, the test doesn't
> even execute the compiled object's code.
>
> #3 - How come these other tests aren't likewise affected?
>
> $ grep "\.byte 0$" * -B 4
> dw2-canonicalize-type.S-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
> dw2-canonicalize-type.S-
> dw2-canonicalize-type.S-        .text
> dw2-canonicalize-type.S-        .globl main
> dw2-canonicalize-type.S:main:   .byte 0
> --
> pr11465.S-      .text
> pr11465.S-text_start:
> pr11465.S-_ZN1N1cE:
> pr11465.S-      /* Valid function must have non-empty PC range.  */
> pr11465.S:      .byte 0
>
>>
>> gdb/testsuite/ChangeLog:
>>
>> 2013-07-15  Omair Javaid  <Omair.Javaid@linaro.org>
>>
>>       * gdb.dwarf2/dw2-dos-drive.S: Corrected text section alignment
>
> Missing period at end of sentence.  That's a "why".  You should say
> a "what" instead:
>
>         * gdb.dwarf2/dw2-dos-drive.S (pc_start): Use .4byte instead of
>         .byte.
>
>>
>> ===================================================================
>> RCS file: /cvs/src/src/gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S,v
>> retrieving revision 1.1
>> diff -u -p -r1.1 dw2-dos-drive.S
>> --- gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S    17 Jan 2013 20:40:44
>> -0000      1.1
>> +++ gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S    19 Jun 2013 19:43:32 -0000
>> @@ -15,7 +15,7 @@
>>
>>         .text
>>  pc_start:
>> -       .byte   0
>> +       .4byte  0
>>  pc_end:
>>
>>         .section        .debug_info
>>
>
> --
> Pedro Alves



More information about the Gdb-patches mailing list