Fix testsuite/gdb.dwarf2/dw2-dos-drive.exp on ARM.
authorOmair Javaid <omair.javaid@linaro.org>
Thu, 16 Jan 2014 11:00:00 +0000 (11:00 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 16 Jan 2014 10:09:34 +0000 (10:09 +0000)
commit93a360cc5d11a18572239b30d5bae63703012086
tree80edbcf0bdbc2783a287c87fb76aeb23580eb62d
parentf6f6c6790a0f3704575b9e9c87cf55baf215eef3
Fix testsuite/gdb.dwarf2/dw2-dos-drive.exp on ARM.

This test currently fails on ARM:

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

The error is GDB trying to read the prologue at the breakpoint's
address, and failing:

  38 throw_error() exceptions.c:444 0x0016728c
  37 memory_error() corefile.c:204 0x001d1fcc
  36 read_memory() corefile.c:223 0x001d201a
  35 read_memory_unsigned_integer() corefile.c:312 0x001d2166
  34 arm_skip_prologue() arm-tdep.c:1452 0x00054270

  static CORE_ADDR
  arm_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
  {
  ...
    for (skip_pc = pc; skip_pc < limit_pc; skip_pc += 4)
      {
        inst = read_memory_unsigned_integer (skip_pc, 4, byte_order_for_code);

The test doesn't execute the compiled object's code, so GDB will try
to read memory from the binary's sections.  Instructions on ARM are
4-byte wide, and thus ARM's prologue scanner reads in 4-byte chunks.
As the section 'func' is put at is only 1 byte long, and no other
section is allocated contiguously:

  ...
  Sections:
  Idx Name          Size      VMA       LMA       File off  Algn
    0 .text         00000001  00000000  00000000  00000034  2**0
                    CONTENTS, ALLOC, LOAD, READONLY, CODE
  ...

... the exec target fails the read the 4 bytes.

Fix this by increasing the function's size.

gdb/testsuite/ChangeLog:
2014-01-16  Omair Javaid  <Omair.Javaid@linaro.org>

* gdb.dwarf2/dw2-dos-drive.S: Increase text section size to 4
bytes.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S