diff options
Diffstat (limited to 'gdb/testsuite/gdb.python/py-section-script.c')
-rw-r--r-- | gdb/testsuite/gdb.python/py-section-script.c | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/gdb/testsuite/gdb.python/py-section-script.c b/gdb/testsuite/gdb.python/py-section-script.c index 2cb606bc87..53af8cb846 100644 --- a/gdb/testsuite/gdb.python/py-section-script.c +++ b/gdb/testsuite/gdb.python/py-section-script.c @@ -15,18 +15,55 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "symcat.h" +#include "gdb/section-scripts.h" + /* Put the path to the pretty-printer script in .debug_gdb_scripts so - gdb will automagically loaded it. */ + gdb will automagically loaded it. + Normally "MS" would appear here, as in + .pushsection ".debug_gdb_scripts", "MS",@progbits,1 + but we remove it to test files appearing twice in the section. */ -#define DEFINE_GDB_SCRIPT(script_name) \ +#define DEFINE_GDB_SCRIPT_FILE(script_name) \ asm("\ -.pushsection \".debug_gdb_scripts\", \"MS\",@progbits,1\n\ -.byte 1\n\ +.pushsection \".debug_gdb_scripts\", \"S\",@progbits\n\ +.byte " XSTRING (SECTION_SCRIPT_ID_PYTHON_FILE) "\n\ .asciz \"" script_name "\"\n\ -.popsection \n\ +.popsection\n\ "); -DEFINE_GDB_SCRIPT (SCRIPT_FILE) +#ifndef SCRIPT_FILE +#error "SCRIPT_FILE not defined" +#endif + +/* Specify it twice to verify the file is only loaded once. */ +DEFINE_GDB_SCRIPT_FILE (SCRIPT_FILE) +DEFINE_GDB_SCRIPT_FILE (SCRIPT_FILE) + +/* Inlined scripts are harder to create in the same way as + DEFINE_GDB_SCRIPT_FILE. Keep things simple and just define it here. + Normally "MS" would appear here, as in + .pushsection ".debug_gdb_scripts", "MS",@progbits,1 + but we remove it to test scripts appearing twice in the section. */ + +#define DEFINE_GDB_SCRIPT_TEXT \ +asm( \ +".pushsection \".debug_gdb_scripts\", \"S\",@progbits\n" \ +".byte " XSTRING (SECTION_SCRIPT_ID_PYTHON_TEXT) "\n" \ +".ascii \"gdb.inlined-script\\n\"\n" \ +".ascii \"class test_cmd (gdb.Command):\\n\"\n" \ +".ascii \" def __init__ (self):\\n\"\n" \ +".ascii \" super (test_cmd, self).__init__ (\\\"test-cmd\\\", gdb.COMMAND_OBSCURE)\\n\"\n" \ +".ascii \" def invoke (self, arg, from_tty):\\n\"\n" \ +".ascii \" print (\\\"test-cmd output, arg = %s\\\" % arg)\\n\"\n" \ +".ascii \"test_cmd ()\\n\"\n" \ +".byte 0\n" \ +".popsection\n" \ +); + +/* Specify it twice to verify the script is only executed once. */ +DEFINE_GDB_SCRIPT_TEXT +DEFINE_GDB_SCRIPT_TEXT struct ss { |