compile: objfiles lifetime UI

Jan Kratochvil <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hi,

posting first for an approval CLI UI for managing objfiles currently in
inferior for the 'compile' command.

With each injected code is associated:
 * infcall dummy frame - deleted when the code returns or when user interrupts
   the code and 'return's from it in CLI.
 * objfile - deleted when the dummy frame is deleted
 * inferior mmap()ped memory - currently leaked in inferior forever
   - prepared in a local patchset: deleted when the objfile is deleted
 * inferior malloc()ed memory - only from the posted 'compile print' command
   - in the posted 'compile print' command: deleted when the objfile is deleted

The mmap leak was intentional so that one can do for example:
inferior:
	char *str = "foo";
GDB:
	(gdb) compile code str = "bar";

Now there should be a way to delete everything by default (so that a loop with
'compile print' command will not run the inferior out of memory) but to have
a way to keep the memory alive (so that for example strings can be set) or
even to keep the objfile alive (so that for example a callback function can be
set which may crash so that we want to keep DWARF loaded for the callback
function).

What CLI should be there for it?

(gdB) info compile-files
Num Address Range                           Frame Name
1   0x00007ffff7ff3000 - 0x00007ffff7ff5000 -     file test.c
2   0x00007ffff7ff9000 - 0x00007ffff7ffb000 #0    code puts("hello wor...
(gdb) delete compile-file 1
(gdb) delete compile-file 2
compile-file #2 dummy frame is still valid, use 'return' command to delete it.
(gdb) bt
#0  0x00007ffff7ff9021 in _gdb_expr (__regs=0x7ffff7ff7000) at gdb command line:1
#1  <function called from gdb>
#2  main () at ./gdb.compile/compile-print.c:31
(gdB) info compile-files
Num Address Range                           Frame Name
2   0x0000003834603da0 - 0x0000003834603dc0 #0    code puts("hello wor...


Jan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.