sstsimulator / sst-elements

SST Architectural Simulation Components and Libraries
http://www.sst-simulator.org
Other
93 stars 121 forks source link

First attempt at implementing gdb for Vanadis #2397

Open jfustos opened 2 months ago

jfustos commented 2 months ago

First attempt at implementing gdb for Vanadis

This feature implements a GDB server within Vanadis. This feature is turned off and on by options in the sst python script. Breakpoints are detected and halted between the front and backends of the pipeline. Once a breakpoint is halted it first waits for the backend to clear, ensuring that it is not a speculative breakpoint. Once it is not speculative, the server takes over. A socket is opened that a client can communicate with a.k.a. the GDB client we all know and love. GDB request, like register dumps, are fulfilled by injecting instructions into the pipeline. Breakpoints are tracked within the GDB module. Execution is restored simply by letting the breaked instructions flow through until the address of the instruction changes. Testing has been done only on a few small programs. Each individual simulated core has its own GDB server, which needs to be connected to over a different port and from a different client, so you can single step two cores at the same time, but you will need 2 windows to do that.

sst-autotester commented 2 months ago

Status Flag 'Pre-Test Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging NO INSPECTION HAS BEEN PERFORMED ON THIS PULL REQUEST! - This PR must be inspected by setting label 'AT: PRE-TEST INSPECTED'.

sst-autotester commented 1 month ago

Status Flag 'Pre-Test Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED by label AT: PRE-TEST INSPECTED! Autotester is Removing Label; this inspection will remain valid until a new commit to source branch is performed.

sst-autotester commented 1 month ago

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements

  • Build Num: 1617
  • Status: STARTED

Build Information

Test Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_Make-Dist

  • Build Num: 1060
  • Status: STARTED

Build Information

Test Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MT-2

  • Build Num: 1598
  • Status: STARTED

Build Information

Test Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MR-2

  • Build Num: 1598
  • Status: STARTED

Build Information

Test Name: SST__AutotestGen2_NewFW_OSX-14-XC15-ARM2_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 176
  • Status: STARTED
## Using Repos:
Repo: ELEMENTS (jfustos/sst-elements-features)
  • Branch: add-gdb
  • SHA: 56c2f2a2ad2cc9e9bdb5e892edfc2027f840f773
  • Mode: TEST_REPO
Repo: SQE (sstsimulator/sst-sqe)
  • Branch: devel
  • SHA: 2574c98896598820227190149834172b962dc3fc
  • Mode: SUPPORT_REPO
Repo: CORE (sstsimulator/sst-core)
  • Branch: devel
  • SHA: 1cc35cc85ae17a2f9a38c669bf7f00d2ed7f9a93
  • Mode: SUPPORT_REPO
Repo: MACRO (sstsimulator/sst-macro)
  • Branch: devel
  • SHA: 50a62170b3681ea20cc2f56abd2eb3911053f1fc
  • Mode: SUPPORT_REPO
Pull Request Author: jfustos

sst-autotester commented 1 month ago

Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED

Note: Testing will normally be attempted again in approx. 4 Hrs. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run.

Pull Request Auto Testing has FAILED (click to expand)

Job: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements

  • Result: PASSED
  • Build #: 1617
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements/1617/consoleFull

Job: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_Make-Dist

  • Result: FAILED
  • Build #: 1060
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_Make-Dist/1060/consoleFull
  • Job: - Status: FAILURE

Job: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MT-2

  • Result: PASSED
  • Build #: 1598
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MT-2/1598/consoleFull

Job: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MR-2

  • Result: PASSED
  • Build #: 1598
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MR-2/1598/consoleFull

Job: SST__AutotestGen2_NewFW_OSX-14-XC15-ARM2_OMPI-4.1.6_PY3.10_sst-elements

  • Result: FAILED
  • Build #: 176
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__AutotestGen2_NewFW_OSX-14-XC15-ARM2_OMPI-4.1.6_PY3.10_sst-elements/176/consoleFull
  • Job: - Status: FAILURE
hughes-c commented 1 month ago

@jfustos These are the errors: osx

./decoder/vriscv64gdb.h:1129:51: error: use of undeclared identifier 'SOCK_CLOEXEC'
         listen_fd = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP);

makedist

decoder/vriscv64decoder.cc:19:10: fatal error: decoder/vriscv64gdb.h: No such file or directory
 #include "decoder/vriscv64gdb.h"
          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[5]: *** [Makefile:1327: decoder/vriscv64decoder.lo] Error 1
make[5]: *** Waiting for unfinished jobs....
In file included from vanadis.cc:19:
inst/vinstall.h:88:10: fatal error: inst/vgetregcallable.h: No such file or directory
 #include "inst/vgetregcallable.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[5]: *** [Makefile:1327: vanadis.lo] Error 1
In file included from ./decoder/vmipsdecoder.h:22,
                 from decoder/vmipsdecoder.cc:19:
./inst/vinstall.h:88:10: fatal error: inst/vgetregcallable.h: No such file or directory
 #include "inst/vgetregcallable.h"