From 5c2a4a552048863014743471f24dfdc3c838b633 Mon Sep 17 00:00:00 2001 From: Ramiro Polla Date: Fri, 9 Aug 2024 02:48:54 +0200 Subject: gdbstub: add -debugger_host option (#12610) * This allows setting the host to 0.0.0.0 to accept connections from outside of localhost. --- src/osd/modules/debugger/debuggdbstub.cpp | 9 ++++++--- src/osd/modules/lib/osdobj_common.cpp | 1 + src/osd/modules/lib/osdobj_common.h | 2 ++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/osd/modules/debugger/debuggdbstub.cpp b/src/osd/modules/debugger/debuggdbstub.cpp index 3c053abd327..ca042aa807f 100644 --- a/src/osd/modules/debugger/debuggdbstub.cpp +++ b/src/osd/modules/debugger/debuggdbstub.cpp @@ -506,6 +506,7 @@ public: m_address_space(nullptr), m_debugger_cpu(nullptr), m_debugger_console(nullptr), + m_debugger_host(nullptr), m_debugger_port(0), m_socket(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE), m_is_be(false), @@ -600,6 +601,7 @@ private: address_space *m_address_space; debugger_cpu *m_debugger_cpu; debugger_console *m_debugger_console; + const char *m_debugger_host; int m_debugger_port; emu_file m_socket; bool m_is_be; @@ -642,6 +644,7 @@ private: //------------------------------------------------------------------------- int debug_gdbstub::init(osd_interface &osd, const osd_options &options) { + m_debugger_host = options.debugger_host(); m_debugger_port = options.debugger_port(); return 0; } @@ -789,11 +792,11 @@ void debug_gdbstub::wait_for_debugger(device_t &device, bool firststop) osd_printf_info(" %3d (%d) %d %d [%s]\n", reg.gdb_regnum, reg.state_index, reg.gdb_bitsize, reg.gdb_type, reg.gdb_name); #endif - std::string socket_name = string_format("socket.localhost:%d", m_debugger_port); + std::string socket_name = string_format("socket.%s:%d", m_debugger_host, m_debugger_port); std::error_condition const filerr = m_socket.open(socket_name); if ( filerr ) - fatalerror("gdbstub: failed to start listening on port %d\n", m_debugger_port); - osd_printf_info("gdbstub: listening on port %d\n", m_debugger_port); + fatalerror("gdbstub: failed to start listening on host %s port %d\n", m_debugger_host, m_debugger_port); + osd_printf_info("gdbstub: listening on host %s port %d\n", m_debugger_host, m_debugger_port); m_initialized = true; } diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp index 12ba7cb8042..e2217df6ae4 100644 --- a/src/osd/modules/lib/osdobj_common.cpp +++ b/src/osd/modules/lib/osdobj_common.cpp @@ -58,6 +58,7 @@ const options_entry osd_options::s_option_entries[] = { nullptr, nullptr, core_options::option_type::HEADER, "OSD DEBUGGING OPTIONS" }, { OSDOPTION_DEBUGGER, OSDOPTVAL_AUTO, core_options::option_type::STRING, "debugger used: " }, + { OSDOPTION_DEBUGGER_HOST, "localhost", core_options::option_type::STRING, "host to use for gdbstub debugger" }, { OSDOPTION_DEBUGGER_PORT, "23946", core_options::option_type::INTEGER, "port to use for gdbstub debugger" }, { OSDOPTION_DEBUGGER_FONT ";dfont", OSDOPTVAL_AUTO, core_options::option_type::STRING, "font to use for debugger views" }, { OSDOPTION_DEBUGGER_FONT_SIZE ";dfontsize", "0", core_options::option_type::FLOAT, "font size to use for debugger views" }, diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h index 1bcebb5afa9..3f044d9d718 100644 --- a/src/osd/modules/lib/osdobj_common.h +++ b/src/osd/modules/lib/osdobj_common.h @@ -43,6 +43,7 @@ #define OSDCOMMAND_LIST_NETWORK_ADAPTERS "listnetwork" #define OSDOPTION_DEBUGGER "debugger" +#define OSDOPTION_DEBUGGER_HOST "debugger_host" #define OSDOPTION_DEBUGGER_PORT "debugger_port" #define OSDOPTION_DEBUGGER_FONT "debugger_font" #define OSDOPTION_DEBUGGER_FONT_SIZE "debugger_font_size" @@ -119,6 +120,7 @@ public: // debugging options const char *debugger() const { return value(OSDOPTION_DEBUGGER); } + const char *debugger_host() const { return value(OSDOPTION_DEBUGGER_HOST); } int debugger_port() const { return int_value(OSDOPTION_DEBUGGER_PORT); } const char *debugger_font() const { return value(OSDOPTION_DEBUGGER_FONT); } float debugger_font_size() const { return float_value(OSDOPTION_DEBUGGER_FONT_SIZE); } -- cgit v1.2.3