On Fri, 18 Oct 2019 09:26:51 -0700 Cy Schubert <cy.schub...@cschubert.com> wrote:
> On October 18, 2019 8:54:06 AM PDT, "Hartmann, O." > <ohartm...@walstatt.org> wrote: > >On Fri, 18 Oct 2019 07:24:12 -0700 > >Cy Schubert <cy.schub...@cschubert.com> wrote: > > > >> In message <20191018160935.7dda6...@hermann.fritz.box>, "Hartmann, > >> O." writes: > >> > --Sig_/QDD9BZgeMM6.TJkOIciNb32 > >> > Content-Type: text/plain; charset=US-ASCII > >> > Content-Transfer-Encoding: quoted-printable > >> > > >> > On Fri, 18 Oct 2019 14:00:45 +0200 > >> > Gary Jennejohn <gljennj...@gmail.com> wrote: > >> > > >> > > On Fri, 18 Oct 2019 12:21:04 +0200 > >> > > "Hartmann, O." <ohartm...@walstatt.org> wrote: > >> > >=20 > >> > > > On Thu, 17 Oct 2019 21:33:01 +0000 (UTC) > >> > > > Conrad Meyer <c...@freebsd.org> wrote: > >> > > > =20 > >> > > > > Author: cem > >> > > > > Date: Thu Oct 17 21:33:01 2019 > >> > > > > New Revision: 353700 > >> > > > > URL: https://svnweb.freebsd.org/changeset/base/353700 > >> > > > >=20 > >> > > > > Log: > >> > > > > Implement NetGDB(4) > >> > > > > =20 > >> > > > > NetGDB(4) is a component of a system using a panic-time > >> > > > > network stack to remotely debug crashed FreeBSD kernels > >> > > > > over the network, instead of traditional serial interfaces. > >> > > > > =20 > >> > > > > There are three pieces in the complete NetGDB system. > >> > > > > =20 > >> > > > > First, a dedicated proxy server must be running to accept > >> > > > > connections from both NetGDB and gdb(1), and pass > >> > > > > bidirectional traffic between the two protocols. > >> > > > > =20 > >> > > > > Second, the NetGDB client is activated much like ordinary > >> > > > > 'gdb' and similarly to 'netdump' in ddb(4) after a panic. > >> > > > > Like other debugnet(4) clients (netdump(4)), the network > >> > > > > interface on the route to the proxy server must be online > >> > > > > and support debugnet(4). =20 > >> > > > > Finally, the remote (k)gdb(1) uses 'target remote > >> > > > > <proxy>:<port>' (like any other TCP remote) to connect to > >> > > > > the proxy server.=20 > >> > > > > The NetGDB v1 protocol speaks the literal GDB remote > >> > > > > serial protocol, and uses a 1:1 relationship between GDB > >> > > > > packets and sequences of debugnet packets (fragmented by > >> > > > > MTU). There is no encryption utilized to keep debugging > >> > > > > sessions private, so this is only appropriate for local > >> > > > > segments or trusted networks. =20 > >> > > > > Submitted by: John Reimer <john.reimer AT emc.com> > >> > > > > (earlier version) Discussed some with: emaste, markj > >> > > > > Relnotes: sure > >> > > > > Differential Revision: > >> > > > > https://reviews.freebsd.org/D21568 > >> > > > >=20 > >> > > > > Added: > >> > > > > head/share/man/man4/netgdb.4 (contents, props changed) > >> > > > > head/sys/gdb/netgdb.c (contents, props changed) > >> > > > > head/sys/gdb/netgdb.h (contents, props changed) > >> > > > > Modified: > >> > > > > head/share/man/man4/Makefile > >> > > > > head/share/man/man4/ddb.4 > >> > > > > head/sys/amd64/conf/GENERIC > >> > > > > head/sys/conf/NOTES > >> > > > > head/sys/conf/files > >> > > > > head/sys/conf/options > >> > > > > head/sys/gdb/gdb.h > >> > > > > head/sys/gdb/gdb_int.h > >> > > > > head/sys/gdb/gdb_main.c > >> > > > > head/sys/gdb/gdb_packet.c > >> > > > > head/sys/i386/conf/GENERIC > >> > > > > head/sys/kern/subr_kdb.c > >> > > > > head/sys/net/debugnet.c > >> > > > > head/sys/net/debugnet.h > >> > > > > head/sys/net/debugnet_inet.c > >> > > > > head/sys/net/debugnet_int.h > >> > > > > head/sys/sys/kdb.h > >> > > > > head/sys/sys/param.h > >> > > > >=20 > >> > > > > Modified: head/share/man/man4/Makefile > >> > > > > > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= > > > >> > > > > > >> > > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= > > > >> > > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= > > > >> > =3D=3D=3D=3D=3D > >> > > > > --- head/share/man/man4/Makefile Thu Oct 17 21:25:50 > >> > > > > 2019 (r353699) +++ head/share/man/man4/Makefile > >> > > > > Thu Oct 17 21:33:01 2019 (r353700) @@ -307,6 +307,7 > >> > > > > @@ MAN=3D aac.4 \ net80211.4 \ > >> > > > > netdump.4 \ > >> > > > > netfpga10g_nf10bmac.4 \ > >> > > > > + netgdb.4 \ > >> > > > > netgraph.4 \ > >> > > > > netintro.4 \ > >> > > > > netmap.4 \ > >> > > > > =20 > >> > > > [...] > >> > > >=20 > >> > > >=20 > >> > > > Having "nooptions NETGDB # netgdb(4) client > >> > > > support" defined in my kernel config file, buildkernel fails > >> > > > with the error shown below. > >> > > >=20 > >> > > > [...] > >> > > > --- debugnet.o --- > >> > > > /usr/src/sys/net/debugnet.c:662:4: error: implicit > >> > > > declaration of function 'db_printf' is invalid in C99 > >> > > > [-Werror,-Wimplicit-function-declaration] db_printf("%s: > >> > > > Could not get route for that server.\n", ^ > >> > > > /usr/src/sys/net/debugnet.c:662:4: note: did you mean > >> > > > 'if_printf'? /usr/src/sys/net/if_var.h:679:5: note: > >> > > > 'if_printf' declared here int if_printf(struct ifnet *, > >> > > > const char *, ...) __printflike(2, 3); ^ 1 error generated. > >> > > > =20 > >> > >=20 > >> > > And I also had to add "nooptions NETDUMP" to get the kernel to > >> > > compile and link. > >> > >=20 > >> > > >> > I already had "nooptions NETDUMP" defined. > >> > >> > >> This will fix it. > >> > >> Index: sys/net/debugnet.c > >> =================================================================== > >> --- sys/net/debugnet.c (revision 353717) > >> +++ sys/net/debugnet.c (working copy) > >> @@ -659,8 +659,10 @@ > >> CURVNET_RESTORE(); > >> > >> if (dest_rt == NULL) { > >> +#ifdef DDB > >> db_printf("%s: Could not get route for > >> that server.\n", __func__); > >> +#endif > >> error = ENOENT; > >> goto cleanup; > >> } > >> > >> > >> > > > >Doesn't work, either. > >The kernel config in question doesn't have any debugging features > >enabled, so nooptions DDB is alos part of the configuration. > >buildkernel still fails. > > Hmm. Fixed my firewall build. My non-test firewall kernel config has > the same nooption. > > What other options/nooptions and patches are applied to your tree? > > I use the vanilla CURRENT tree without any extra pachtes. There are lots of other nooptions, especially for drivers I do not need and debugging is completely turned off. Having "nooptions DDB" commeted out fixes the build for me. Anticipating the correct portion of my config file, here are those nooptions I deem relevant. The nooptions are kept in a file added to GENERIC afterwards: [... sorry for the line wrap] nooptions DDB_CTF # Kernel ELF linker loads CTF data nooptions INCLUDE_CONFIG_FILE # Include this file in kernel #options RACCT # Resource accounting framework #options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default #options RCTL # Resource limits # Debugging support. Always need this: #options KDB # Enable kernel debugger support. #options KDB_TRACE # Print a stack trace for a panic. # For full debugger support use (turn off in stable branch): nooptions BUF_TRACKING # Track buffer history nooptions DDB # Support DDB. nooptions FULL_BUF_TRACKING # Track more buffer history nooptions GDB # Support remote GDB. nooptions DEADLKRES # Enable the deadlock resolver nooptions INVARIANTS # Enable calls of extra sanity checking nooptions INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS nooptions WITNESS # Enable checks to detect deadlocks and cycles nooptions WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed nooptions MALLOC_DEBUG_MAXZONES # Separate malloc(9) zones nooptions VERBOSE_SYSINIT # Support debug.verbose_sysinit, off by default # Kernel Sanitizers #options COVERAGE # Generic kernel coverage. Used by KCOV #options KCOV # Kernel Coverage Sanitizer # Warning: KUBSAN can result in a kernel too large for loader to load #options KUBSAN # Kernel Undefined Behavior Sanitizer # Kernel dump features. #options EKCD # Support for encrypted kernel dumps #options GZIO # gzip-compressed kernel and user dumps #options ZSTDIO # zstd-compressed kernel and user dumps nooptions NETDUMP # netdump(4) client support nooptions NETGDB # netgdb(4) client support # Make an SMP-capable kernel by default #options SMP # Symmetric MultiProcessor Kernel #options EARLY_AP_STARTUP
pgphmyzu51BzW.pgp
Description: OpenPGP digital signature