binutils-gdb/gdb/python
Philippe Waroquiers e4df087431 Fix leak detected in python.c initialization code.
Valgrind reports the below leak.
Make the variable progname_copy static, so that Valgrind continues
to find a pointer to the memory given to Python.
Note that the comment in do_start_initialization and the Python documentation
indicates that the progname given to Py_SetProgramName cannot be freed.
However, in Python 3.7.4, Py_SetProgramName does:
void
Py_SetProgramName(const wchar_t *program_name)
{
    ...
    PyMem_RawFree(_Py_path_config.program_name);
    _Py_path_config.program_name = _PyMem_RawWcsdup(program_name);

So, it looks like 3.7.4 Python duplicates its argument, which explains
the leak found by Valgrind.
It looks better to respect the doc and not have GDB freeing the string
given to Py_SetProgramName, and avoid the leak error by declaring
the progname_copy static.
This will work with Python versions that really use this string without
duplicating it, and avoids a leak report for Python version that duplicates
it.

==4023== 200 bytes in 1 blocks are definitely lost in loss record 4,545 of 7,116^M
==4023==    at 0x4C29F33: malloc (vg_replace_malloc.c:307)^M
==4023==    by 0x446D27: xmalloc (alloc.c:60)^M
==4023==    by 0x657C77: do_start_initialization (python.c:1610)^M
==4023==    by 0x657C77: _initialize_python() (python.c:1823)^M
==4023==    by 0x75FE24: initialize_all_files() (init.c:231)^M
==4023==    by 0x708A94: gdb_init(char*) (top.c:2242)^M
==4023==    by 0x5E7460: captured_main_1 (main.c:857)^M
==4023==    by 0x5E7460: captured_main (main.c:1161)^M
==4023==    by 0x5E7460: gdb_main(captured_main_args*) (main.c:1186)^M
==4023==    by 0x4122D4: main (gdb.c:32)^M

gdb/ChangeLog
2019-09-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* python/python.c (do_start_initialization): Make progname_copy static,
	to avoid a leak report.
2019-09-09 23:50:37 +02:00
..
lib/gdb Make GDB compile with Python 3 on MinGW 2019-08-22 17:44:58 -05:00
py-all-events.def
py-arch.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-auto-load.c
py-block.c Add block['var'] accessor 2019-08-05 13:06:18 -05:00
py-bpevent.c
py-breakpoint.c "catch catch/throw/rethrow", breakpoint -> catchpoint 2019-07-09 19:34:18 +01:00
py-cmd.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-continueevent.c
py-event-types.def
py-event.c
py-event.h
py-events.h
py-evtregistry.c
py-evts.c
py-exitedevent.c
py-finishbreakpoint.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-frame.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-framefilter.c Make struct frame_arg self-managing 2019-08-07 06:37:21 -06:00
py-function.c
py-gdb-readline.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-inferior.c Fix use-after-move bug in add_thread_object 2019-07-11 09:15:18 -06:00
py-infevents.c
py-infthread.c Reduce manual reference counting in py-inferior.c 2019-07-10 12:24:22 -06:00
py-instruction.c
py-instruction.h
py-lazy-string.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-linetable.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-newobjfileevent.c
py-objfile.c Add Objfile.lookup_{global,static}_symbol functions 2019-07-29 20:44:08 -05:00
py-param.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-prettyprint.c gdb: Introduce 'print max-depth' feature 2019-04-29 22:01:09 +01:00
py-progspace.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-record-btrace.c Don't include gdbarch.h from defs.h 2019-07-10 14:53:53 -06:00
py-record-btrace.h
py-record-full.c
py-record-full.h
py-record.c Rename gdb exception types 2019-04-08 09:05:40 -06:00
py-record.h
py-ref.h Rename common to gdbsupport 2019-07-09 07:45:38 -06:00
py-signalevent.c
py-stopevent.c
py-stopevent.h
py-symbol.c [PR/24474] Add gdb.lookup_static_symbol to the python API 2019-07-30 11:04:37 -05:00
py-symtab.c
py-threadevent.c
py-type.c Rename common to gdbsupport 2019-07-09 07:45:38 -06:00
py-unwind.c Rename internal Python functions to start with an underscore 2019-08-15 14:21:57 -05:00
py-utils.c Make exception handling more efficient 2019-04-25 12:59:35 -06:00
py-value.c Fix indentation in value_has_field 2019-08-19 12:46:03 -06:00
py-varobj.c
py-xmethods.c
python-config.py
python-internal.h [PR/24474] Add gdb.lookup_static_symbol to the python API 2019-07-30 11:04:37 -05:00
python.c Fix leak detected in python.c initialization code. 2019-09-09 23:50:37 +02:00
python.h