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)
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

index df8678e35f931e04488e5125279cd2e0a961cf02..4d2fe91b6f4c94572656125fffe2c16a6efce0f2 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-16  Omair Javaid  <Omair.Javaid@linaro.org>
+
+       * gdb.dwarf2/dw2-dos-drive.S: Increase text section size to 4
+       bytes.
+
 2014-01-15  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * gdb.base/float.exp: Handle "aarch64*-*-*" targets.
index 6e9d360d4caa062bbdceb24da59b491c53c17ae0..84006f7b6859a22de7a3005a037a7e1ee23ebd63 100644 (file)
@@ -15,7 +15,8 @@
 
        .text
 pc_start:
-       .byte   0
+        /* Enough space to fit at least one instruction.  */
+       .4byte  0
 pc_end:
 
        .section        .debug_info