diff --git a/src/arch/arm/fs_workload.hh b/src/arch/arm/fs_workload.hh index 547bbf1e70..0811f3d6c7 100644 --- a/src/arch/arm/fs_workload.hh +++ b/src/arch/arm/fs_workload.hh @@ -153,7 +153,8 @@ class FsWorkload : public KernelWorkload setSystem(System *sys) override { KernelWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } Addr diff --git a/src/arch/arm/se_workload.hh b/src/arch/arm/se_workload.hh index deb5d3b906..f0bf0eb7d9 100644 --- a/src/arch/arm/se_workload.hh +++ b/src/arch/arm/se_workload.hh @@ -42,7 +42,7 @@ namespace ArmISA class SEWorkload : public gem5::SEWorkload { public: - using Params = ArmSEWorkloadParams; + PARAMS(ArmSEWorkload); SEWorkload(const Params &p, Addr page_shift) : gem5::SEWorkload(p, page_shift) @@ -52,7 +52,8 @@ class SEWorkload : public gem5::SEWorkload setSystem(System *sys) override { gem5::SEWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } loader::Arch getArch() const override { return loader::Arm64; } diff --git a/src/arch/mips/se_workload.hh b/src/arch/mips/se_workload.hh index d5184dd708..dc6f1dd5e3 100644 --- a/src/arch/mips/se_workload.hh +++ b/src/arch/mips/se_workload.hh @@ -44,7 +44,7 @@ namespace MipsISA class SEWorkload : public gem5::SEWorkload { public: - using Params = MipsSEWorkloadParams; + PARAMS(MipsSEWorkload); SEWorkload(const Params &p, Addr page_shift) : gem5::SEWorkload(p, page_shift) @@ -54,7 +54,8 @@ class SEWorkload : public gem5::SEWorkload setSystem(System *sys) override { gem5::SEWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } loader::Arch getArch() const override { return loader::Mips; } diff --git a/src/arch/power/se_workload.hh b/src/arch/power/se_workload.hh index f3c7b3523b..d041c45728 100644 --- a/src/arch/power/se_workload.hh +++ b/src/arch/power/se_workload.hh @@ -45,7 +45,7 @@ namespace PowerISA class SEWorkload : public gem5::SEWorkload { public: - using Params = PowerSEWorkloadParams; + PARAMS(PowerSEWorkload); SEWorkload(const Params &p, Addr page_shift) : gem5::SEWorkload(p, page_shift) {} @@ -54,7 +54,8 @@ class SEWorkload : public gem5::SEWorkload setSystem(System *sys) override { gem5::SEWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } loader::Arch getArch() const override { return loader::Power; } diff --git a/src/arch/riscv/bare_metal/fs_workload.hh b/src/arch/riscv/bare_metal/fs_workload.hh index e10c0a0433..35f42555df 100644 --- a/src/arch/riscv/bare_metal/fs_workload.hh +++ b/src/arch/riscv/bare_metal/fs_workload.hh @@ -60,7 +60,8 @@ class BareMetal : public Workload setSystem(System *sys) override { Workload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } loader::Arch getArch() const override { return bootloader->getArch(); } diff --git a/src/arch/riscv/linux/fs_workload.hh b/src/arch/riscv/linux/fs_workload.hh index cb29beeafc..1dc704d906 100644 --- a/src/arch/riscv/linux/fs_workload.hh +++ b/src/arch/riscv/linux/fs_workload.hh @@ -51,7 +51,8 @@ class FsLinux : public KernelWorkload setSystem(System *sys) override { KernelWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } ByteOrder byteOrder() const override { return ByteOrder::little; } diff --git a/src/arch/riscv/se_workload.hh b/src/arch/riscv/se_workload.hh index 02ba6e8724..6f7c2edb70 100644 --- a/src/arch/riscv/se_workload.hh +++ b/src/arch/riscv/se_workload.hh @@ -44,7 +44,7 @@ namespace RiscvISA class SEWorkload : public gem5::SEWorkload { public: - using Params = RiscvSEWorkloadParams; + PARAMS(RiscvSEWorkload); SEWorkload(const Params &p, Addr page_shift) : gem5::SEWorkload(p, page_shift) @@ -54,7 +54,8 @@ class SEWorkload : public gem5::SEWorkload setSystem(System *sys) override { gem5::SEWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } loader::Arch getArch() const override { return loader::Riscv64; } diff --git a/src/arch/sparc/fs_workload.hh b/src/arch/sparc/fs_workload.hh index 90d5131a21..3e901a4465 100644 --- a/src/arch/sparc/fs_workload.hh +++ b/src/arch/sparc/fs_workload.hh @@ -46,6 +46,7 @@ class FsWorkload : public Workload loader::SymbolTable defaultSymtab; public: + PARAMS(SparcFsWorkload); FsWorkload(const SparcFsWorkloadParams ¶ms) : Workload(params) {} void initState() override; @@ -53,7 +54,8 @@ class FsWorkload : public Workload setSystem(System *sys) override { Workload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } Addr diff --git a/src/arch/sparc/se_workload.hh b/src/arch/sparc/se_workload.hh index f30f193882..8cb373ac90 100644 --- a/src/arch/sparc/se_workload.hh +++ b/src/arch/sparc/se_workload.hh @@ -35,6 +35,7 @@ #include "arch/sparc/remote_gdb.hh" #include "base/loader/object_file.hh" #include "cpu/thread_context.hh" +#include "params/SparcSEWorkload.hh" #include "sim/se_workload.hh" #include "sim/syscall_abi.hh" @@ -47,13 +48,15 @@ namespace SparcISA class SEWorkload : public gem5::SEWorkload { public: + PARAMS(SparcSEWorkload); using gem5::SEWorkload::SEWorkload; void setSystem(System *sys) override { gem5::SEWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } virtual void handleTrap(ThreadContext *tc, int trapNum); diff --git a/src/arch/x86/fs_workload.hh b/src/arch/x86/fs_workload.hh index 5edadaed87..b40b69b3c4 100644 --- a/src/arch/x86/fs_workload.hh +++ b/src/arch/x86/fs_workload.hh @@ -78,7 +78,7 @@ void installSegDesc(ThreadContext *tc, int seg, SegDescriptor desc, class FsWorkload : public KernelWorkload { public: - using Params = X86FsWorkloadParams; + PARAMS(X86FsWorkload); FsWorkload(const Params &p); public: @@ -88,7 +88,8 @@ class FsWorkload : public KernelWorkload setSystem(System *sys) override { KernelWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } ByteOrder byteOrder() const override { return ByteOrder::little; } diff --git a/src/arch/x86/linux/se_workload.hh b/src/arch/x86/linux/se_workload.hh index d1e613f1e9..f170776d82 100644 --- a/src/arch/x86/linux/se_workload.hh +++ b/src/arch/x86/linux/se_workload.hh @@ -57,7 +57,7 @@ namespace X86ISA class EmuLinux : public SEWorkload { public: - using Params = X86EmuLinuxParams; + PARAMS(X86EmuLinux); EmuLinux(const Params &p); @@ -65,7 +65,8 @@ class EmuLinux : public SEWorkload setSystem(System *sys) override { SEWorkload::setSystem(sys); - gdb = BaseRemoteGDB::build(system); + gdb = BaseRemoteGDB::build( + params().remote_gdb_port, system); } loader::Arch getArch() const override { return loader::X86_64; } diff --git a/src/base/remote_gdb.hh b/src/base/remote_gdb.hh index d4a8a5b296..ad64bc721c 100644 --- a/src/base/remote_gdb.hh +++ b/src/base/remote_gdb.hh @@ -180,9 +180,8 @@ class BaseRemoteGDB template static BaseRemoteGDB * - build(Args... args) + build(int port, Args... args) { - int port = getRemoteGDBPort(); if (port) return new GDBStub(args..., port); else diff --git a/src/python/m5/debug.py b/src/python/m5/debug.py index f5a9d4dbcb..70af2e0f3a 100644 --- a/src/python/m5/debug.py +++ b/src/python/m5/debug.py @@ -28,7 +28,7 @@ from collections.abc import Mapping import _m5.debug from _m5.debug import SimpleFlag, CompoundFlag -from _m5.debug import schedBreak, setRemoteGDBPort +from _m5.debug import schedBreak from m5.util import printList diff --git a/src/python/m5/main.py b/src/python/m5/main.py index 205f3f1340..458e143a53 100644 --- a/src/python/m5/main.py +++ b/src/python/m5/main.py @@ -519,8 +519,6 @@ def main(): if not options.allow_remote_connections: m5.listenersLoopbackOnly() - # set debugging options - debug.setRemoteGDBPort(options.remote_gdb_port) for when in options.debug_break: debug.schedBreak(int(when)) diff --git a/src/python/pybind11/debug.cc b/src/python/pybind11/debug.cc index 9ac87246f2..313ca81e6e 100644 --- a/src/python/pybind11/debug.cc +++ b/src/python/pybind11/debug.cc @@ -86,7 +86,6 @@ pybind_init_debug(py::module_ &m_native) .def("allFlags", &debug::allFlags, py::return_value_policy::reference) .def("schedBreak", &schedBreak) - .def("setRemoteGDBPort", &setRemoteGDBPort) ; py::class_ c_flag(m_debug, "Flag"); diff --git a/src/sim/Workload.py b/src/sim/Workload.py index b46c32fb48..f5139e1dd8 100644 --- a/src/sim/Workload.py +++ b/src/sim/Workload.py @@ -36,6 +36,9 @@ class Workload(SimObject): abstract = True wait_for_remote_gdb = Param.Bool(False, "Wait for a remote GDB connection") + remote_gdb_port = Param.Int( + 7000, "Default port number used for remote GDB connection" + ) @cxxMethod def sendToGdb(self, message): diff --git a/src/sim/debug.cc b/src/sim/debug.cc index 85bfb97ab3..55b28f7d6e 100644 --- a/src/sim/debug.cc +++ b/src/sim/debug.cc @@ -114,20 +114,4 @@ eventqDump() } } -int remote_gdb_base_port = 7000; - -int -getRemoteGDBPort() -{ - return remote_gdb_base_port; -} - -// Set remote GDB base port. 0 means disable remote GDB. -// Callable from python. -void -setRemoteGDBPort(int port) -{ - remote_gdb_base_port = port; -} - } // namespace gem5 diff --git a/src/sim/debug.hh b/src/sim/debug.hh index ed593040c8..e1c537dc86 100644 --- a/src/sim/debug.hh +++ b/src/sim/debug.hh @@ -60,10 +60,6 @@ void takeCheckpoint(Tick when); */ void eventqDump(); -int getRemoteGDBPort(); -// Remote gdb base port. 0 disables remote gdb. -void setRemoteGDBPort(int port); - } // namespace gem5 #endif // __SIM_DEBUG_HH__ diff --git a/util/systemc/gem5_within_systemc/sc_gem5_control.cc b/util/systemc/gem5_within_systemc/sc_gem5_control.cc index db2f00f407..a9b9fd5f83 100644 --- a/util/systemc/gem5_within_systemc/sc_gem5_control.cc +++ b/util/systemc/gem5_within_systemc/sc_gem5_control.cc @@ -174,12 +174,6 @@ Gem5Control::clearDebugFlag(const char *flag) ::gem5::clearDebugFlag(flag); } -void -Gem5Control::setRemoteGDBPort(unsigned int port) -{ - ::gem5::setRemoteGDBPort(port); -} - Gem5System * Gem5Control::makeSystem(const std::string &system_name, const std::string &instance_name) diff --git a/util/systemc/gem5_within_systemc/sc_gem5_control.hh b/util/systemc/gem5_within_systemc/sc_gem5_control.hh index f74e001fc8..2959ba2e04 100644 --- a/util/systemc/gem5_within_systemc/sc_gem5_control.hh +++ b/util/systemc/gem5_within_systemc/sc_gem5_control.hh @@ -142,10 +142,6 @@ class Gem5Control virtual void setDebugFlag(const char *flag); virtual void clearDebugFlag(const char *flag); - /** Choose a base port number for GDB to connect to the model - * (0 disables connections) */ - virtual void setRemoteGDBPort(unsigned int port); - /* Register an action to happen at the end of elaboration */ virtual void registerEndOfElaboration(void (*func)());