The testcase was generating DW_AT_high_pc and DW_AT_low_pc entries
authorLuis Machado <lgustavo@codesourcery.com>
Thu, 19 Jun 2014 06:07:48 +0000 (07:07 +0100)
committerLuis Machado <lgustavo@codesourcery.com>
Thu, 19 Jun 2014 06:07:48 +0000 (07:07 +0100)
commit45371d0ceec9e0771306060c49f378eea01b1269
treeb6d309048c2c3cd28bd9ecc79441289dd7539932
parentda58fb67f2f9fa8ff22591a0eede8804eb59743e
The testcase was generating DW_AT_high_pc and DW_AT_low_pc entries
with type DW_FORM_string, which is wrong.

GDB was using that information to load data as strings, and then
proceeded to use the string pointers as addresses.

Even then, the test was passing just fine, because we were lucky
enough to have the low_pc string pointer smaller than the high_pc
string pointer.

Two issues are fixed.  The first one is the DW_FORM_string type. The
second one is adjusting the addresses so that they are non-zero,
since GDB doesn't like seeing 0 in these fields due to a check
contained in dwarf2_get_pc_bounds:

  if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
    return 0;

With both fixes, the testcase passes deterministically.

2014-06-19  Luis Machado  <lgustavo@codesourcery.com>

* gdb.cp/nsalias.exp: Set type of low_pc and high_pc entries
to DW_FORM_addr and use non-zero addresses.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/nsalias.exp
This page took 0.025813 seconds and 4 git commands to generate.