| diff -up Python-2.7.3/Lib/test/test_gdb.py.gdb-autoload-safepath Python-2.7.3/Lib/test/test_gdb.py |
| |
| |
| @@ -54,6 +54,19 @@ def gdb_has_frame_select(): |
| |
| HAS_PYUP_PYDOWN = gdb_has_frame_select() |
| |
| +def gdb_has_autoload_safepath(): |
| + # Recent GDBs will only auto-load scripts from certain safe |
| + # locations, so we will need to turn off this protection. |
| + # However, if the GDB doesn't have it, then the following |
| + # command will generate noise on stderr (rhbz#817072): |
| + cmd = "--eval-command=set auto-load safe-path /" |
| + p = subprocess.Popen(["gdb", "--batch", cmd], |
| + stderr=subprocess.PIPE) |
| + _, stderr = p.communicate() |
| + return '"on" or "off" expected.' not in stderr |
| + |
| +HAS_AUTOLOAD_SAFEPATH = gdb_has_autoload_safepath() |
| + |
| class DebuggerTests(unittest.TestCase): |
| |
| """Test that the debugger can debug Python.""" |
| diff -up Python-2.7.10/Lib/test/test_gdb.py.ms Python-2.7.10/Lib/test/test_gdb.py |
| |
| |
| @@ -153,6 +153,17 @@ class DebuggerTests(unittest.TestCase): |
| |
| 'run'] |
| |
| + if HAS_AUTOLOAD_SAFEPATH: |
| + # Recent GDBs will only auto-load scripts from certain safe |
| + # locations. |
| + # Where necessary, turn off this protection to ensure that |
| + # our -gdb.py script can be loaded - but not on earlier gdb builds |
| + # as this would generate noise on stderr (rhbz#817072): |
| + init_commands = ['set auto-load safe-path /'] |
| + else: |
| + init_commands = [] |
| + |
| + |
| # GDB as of 7.4 onwards can distinguish between the |
| # value of a variable at entry vs current value: |
| # http://sourceware.org/gdb/onlinedocs/gdb/Variables.html |
| @@ -167,10 +178,11 @@ class DebuggerTests(unittest.TestCase): |
| else: |
| commands += ['backtrace'] |
| |
| - # print commands |
| + # print init_commands |
| |
| # Use "commands" to generate the arguments with which to invoke "gdb": |
| args = ["gdb", "--batch", "-nx"] |
| + args += ['--init-eval-command=%s' % cmd for cmd in init_commands] |
| args += ['--eval-command=%s' % cmd for cmd in commands] |
| args += ["--args", |
| sys.executable] |