OSDN Git Service

py-inferior.exp: Make sure local var is allocated on the stack.
authorbrobecke <brobecke>
Wed, 8 Jun 2011 16:56:11 +0000 (16:56 +0000)
committerbrobecke <brobecke>
Wed, 8 Jun 2011 16:56:11 +0000 (16:56 +0000)
commit13cd44c7f306359ce4e9048aaed6ef4c2834efea
treeac19706ebda8c5f4e227a800f3525eca86b7ea94
parent7d597ec927050e1a8b9eb567742add120fc8300e
py-inferior.exp: Make sure local var is allocated on the stack.

The testcase, at some point, is trying to change the contents
of a string that was defined as follow:

    char *str = "hello, testsuite";

The problem is that the string is constant, and str is never used
to change the contents of the string in the program, so the compiler
is free to allocate it in a read-only section.  This is what happens
on x86-windows, for instance.

As a result, trying to change the contents of the string during
the `python gdb.inferiors()[0].write_memory (addr, str)' results
in the following error:

    (gdb) python gdb.inferiors()[0].write_memory (addr, str)
    gdb: write target memory, 5 bytes at 0x00403064
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    gdb.MemoryError: Cannot access memory at address 0x403064
    Error while executing Python code.

This patch prevents this from happening by declaring str as an
array rather than a pointer.

gdb/testsuite/ChangeLog:

        * gdb.python/py-inferior.c (f2): Make str an array rather
        than a pointer.
        * gdb.python/py-inferior.exp: Adjust testcase accordingly.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.python/py-inferior.c
gdb/testsuite/gdb.python/py-inferior.exp