aboutsummaryrefslogtreecommitdiff
path: root/gdb/README
AgeCommit message (Collapse)AuthorFilesLines
2023-02-02gdb: initial support for ROCm platform (AMDGPU) debuggingSimon Marchi1-0/+15
This patch adds the foundation for GDB to be able to debug programs offloaded to AMD GPUs using the AMD ROCm platform [1]. The latest public release of the ROCm release at the time of writing is 5.4, so this is what this patch targets. The ROCm platform allows host programs to schedule bits of code for execution on GPUs or similar accelerators. The programs running on GPUs are typically referred to as `kernels` (not related to operating system kernels). Programs offloaded with the AMD ROCm platform can be written in the HIP language [2], OpenCL and OpenMP, but we're going to focus on HIP here. The HIP language consists of a C++ Runtime API and kernel language. Here's an example of a very simple HIP program: #include "hip/hip_runtime.h" #include <cassert> __global__ void do_an_addition (int a, int b, int *out) { *out = a + b; } int main () { int *result_ptr, result; /* Allocate memory for the device to write the result to. */ hipError_t error = hipMalloc (&result_ptr, sizeof (int)); assert (error == hipSuccess); /* Run `do_an_addition` on one workgroup containing one work item. */ do_an_addition<<<dim3(1), dim3(1), 0, 0>>> (1, 2, result_ptr); /* Copy result from device to host. Note that this acts as a synchronization point, waiting for the kernel dispatch to complete. */ error = hipMemcpyDtoH (&result, result_ptr, sizeof (int)); assert (error == hipSuccess); printf ("result is %d\n", result); assert (result == 3); return 0; } This program can be compiled with: $ hipcc simple.cpp -g -O0 -o simple ... where `hipcc` is the HIP compiler, shipped with ROCm releases. This generates an ELF binary for the host architecture, containing another ELF binary with the device code. The ELF for the device can be inspected with: $ roc-obj-ls simple 1 host-x86_64-unknown-linux file://simple#offset=8192&size=0 1 hipv4-amdgcn-amd-amdhsa--gfx906 file://simple#offset=8192&size=34216 $ roc-obj-extract 'file://simple#offset=8192&size=34216' $ file simple-offset8192-size34216.co simple-offset8192-size34216.co: ELF 64-bit LSB shared object, *unknown arch 0xe0* version 1, dynamically linked, with debug_info, not stripped ^ amcgcn architecture that my `file` doesn't know about ----ยด Running the program gives the very unimpressive result: $ ./simple result is 3 While running, this host program has copied the device program into the GPU's memory and spawned an execution thread on it. The goal of this GDB port is to let the user debug host threads and these GPU threads simultaneously. Here's a sample session using a GDB with this patch applied: $ ./gdb -q -nx --data-directory=data-directory ./simple Reading symbols from ./simple... (gdb) break do_an_addition Function "do_an_addition" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (do_an_addition) pending. (gdb) r Starting program: /home/smarchi/build/binutils-gdb-amdgpu/gdb/simple [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7ffff5db7640 (LWP 1082911)] [New Thread 0x7ffef53ff640 (LWP 1082913)] [Thread 0x7ffef53ff640 (LWP 1082913) exited] [New Thread 0x7ffdecb53640 (LWP 1083185)] [New Thread 0x7ffff54bf640 (LWP 1083186)] [Thread 0x7ffdecb53640 (LWP 1083185) exited] [Switching to AMDGPU Wave 2:2:1:1 (0,0,0)/0] Thread 6 hit Breakpoint 1, do_an_addition (a=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>, b=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>, out=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>) at simple.cpp:24 24 *out = a + b; (gdb) info inferiors Num Description Connection Executable * 1 process 1082907 1 (native) /home/smarchi/build/binutils-gdb-amdgpu/gdb/simple (gdb) info threads Id Target Id Frame 1 Thread 0x7ffff5dc9240 (LWP 1082907) "simple" 0x00007ffff5e9410b in ?? () from /opt/rocm-5.4.0/lib/libhsa-runtime64.so.1 2 Thread 0x7ffff5db7640 (LWP 1082911) "simple" __GI___ioctl (fd=3, request=3222817548) at ../sysdeps/unix/sysv/linux/ioctl.c:36 5 Thread 0x7ffff54bf640 (LWP 1083186) "simple" __GI___ioctl (fd=3, request=3222817548) at ../sysdeps/unix/sysv/linux/ioctl.c:36 * 6 AMDGPU Wave 2:2:1:1 (0,0,0)/0 do_an_addition ( a=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>, b=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>, out=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>) at simple.cpp:24 (gdb) bt Python Exception <class 'gdb.error'>: Unhandled dwarf expression opcode 0xe1 #0 do_an_addition (a=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>, b=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>, out=<error reading variable: DWARF-2 expression error: `DW_OP_regx' operations must be used either alone or in conjunction with DW_OP_piece or DW_OP_bit_piece.>) at simple.cpp:24 (gdb) continue Continuing. result is 3 warning: Temporarily disabling breakpoints for unloaded shared library "file:///home/smarchi/build/binutils-gdb-amdgpu/gdb/simple#offset=8192&size=67208" [Thread 0x7ffff54bf640 (LWP 1083186) exited] [Thread 0x7ffff5db7640 (LWP 1082911) exited] [Inferior 1 (process 1082907) exited normally] One thing to notice is the host and GPU threads appearing under the same inferior. This is a design goal for us, as programmers tend to think of the threads running on the GPU as part of the same program as the host threads, so showing them in the same inferior in GDB seems natural. Also, the host and GPU threads share a global memory space, which fits the inferior model. Another thing to notice is the error messages when trying to read variables or printing a backtrace. This is expected for the moment, since the AMD GPU compiler produces some DWARF that uses some non-standard extensions: https://llvm.org/docs/AMDGPUDwarfExtensionsForHeterogeneousDebugging.html There were already some patches posted by Zoran Zaric earlier to make GDB support these extensions: https://inbox.sourceware.org/gdb-patches/20211105113849.118800-1-zoran.zaric@amd.com/ We think it's better to get the basic support for AMD GPU in first, which will then give a better justification for GDB to support these extensions. GPU threads are named `AMDGPU Wave`: a wave is essentially a hardware thread using the SIMT (single-instruction, multiple-threads) [3] execution model. GDB uses the amd-dbgapi library [4], included in the ROCm platform, for a few things related to AMD GPU threads debugging. Different components talk to the library, as show on the following diagram: +---------------------------+ +-------------+ +------------------+ | GDB | amd-dbgapi target | <-> | AMD | | Linux kernel | | +-------------------+ | Debugger | +--------+ | | | amdgcn gdbarch | <-> | API | <=> | AMDGPU | | | +-------------------+ | | | driver | | | | solib-rocm | <-> | (dbgapi.so) | +--------+---------+ +---------------------------+ +-------------+ - The amd-dbgapi target is a target_ops implementation used to control execution of GPU threads. While the debugging of host threads works by using the ptrace / wait Linux kernel interface (as usual), control of GPU threads is done through a special interface (dubbed `kfd`) exposed by the `amdgpu` Linux kernel module. GDB doesn't interact directly with `kfd`, but instead goes through the amd-dbgapi library (AMD Debugger API on the diagram). Since it provides execution control, the amd-dbgapi target should normally be a process_stratum_target, not just a target_ops. More on that later. - The amdgcn gdbarch (describing the hardware architecture of the GPU execution units) offloads some requests to the amd-dbgapi library, so that knowledge about the various architectures doesn't need to be duplicated and baked in GDB. This is for example for things like the list of registers. - The solib-rocm component is an solib provider that fetches the list of code objects loaded on the device from the amd-dbgapi library, and makes GDB read their symbols. This is very similar to other solib providers that handle shared libraries, except that here the shared libraries are the pieces of code loaded on the device. Given that Linux host threads are managed by the linux-nat target, and the GPU threads are managed by the amd-dbgapi target, having all threads appear in the same inferior requires the two targets to be in that inferior's target stack. However, there can only be one process_stratum_target in a given target stack, since there can be only one target per slot. To achieve it, we therefore resort the hack^W solution of placing the amd-dbgapi target in the arch_stratum slot of the target stack, on top of the linux-nat target. Doing so allows the amd-dbgapi target to intercept target calls and handle them if they concern GPU threads, and offload to beneath otherwise. See amd_dbgapi_target::fetch_registers for a simple example: void amd_dbgapi_target::fetch_registers (struct regcache *regcache, int regno) { if (!ptid_is_gpu (regcache->ptid ())) { beneath ()->fetch_registers (regcache, regno); return; } // handle it } ptids of GPU threads are crafted with the following pattern: (pid, 1, wave id) Where pid is the inferior's pid and "wave id" is the wave handle handed to us by the amd-dbgapi library (in practice, a monotonically incrementing integer). The idea is that on Linux systems, the combination (pid != 1, lwp == 1) is not possible. lwp == 1 would always belong to the init process, which would also have pid == 1 (and it's improbable for the init process to offload work to the GPU and much less for the user to debug it). We can therefore differentiate GPU and non-GPU ptids this way. See ptid_is_gpu for more details. Note that we believe that this scheme could break down in the context of containers, where the initial process executed in a container has pid 1 (in its own pid namespace). For instance, if you were to execute a ROCm program in a container, then spawn a GDB in that container and attach to the process, it will likely not work. This is a known limitation. A workaround for this is to have a dummy process (like a shell) fork and execute the program of interest. The amd-dbgapi target watches native inferiors, and "attaches" to them using amd_dbgapi_process_attach, which gives it a notifier fd that is registered in the event loop (see enable_amd_dbgapi). Note that this isn't the same "attach" as in PTRACE_ATTACH, but being ptrace-attached is a precondition for amd_dbgapi_process_attach to work. When the debugged process enables the ROCm runtime, the amd-dbgapi target gets notified through that fd, and pushes itself on the target stack of the inferior. The amd-dbgapi target is then able to intercept target_ops calls. If the debugged process disables the ROCm runtime, the amd-dbgapi target unpushes itself from the target stack. This way, the amd-dbgapi target's footprint stays minimal when debugging a process that doesn't use the AMD ROCm platform, it does not intercept target calls. The amd-dbgapi library is found using pkg-config. Since enabling support for the amdgpu architecture (amdgpu-tdep.c) depends on the amd-dbgapi library being present, we have the following logic for the interaction with --target and --enable-targets: - if the user explicitly asks for amdgcn support with --target=amdgcn-*-* or --enable-targets=amdgcn-*-*, we probe for the amd-dbgapi and fail if not found - if the user uses --enable-targets=all, we probe for amd-dbgapi, enable amdgcn support if found, disable amdgcn support if not found - if the user uses --enable-targets=all and --with-amd-dbgapi=yes, we probe for amd-dbgapi, enable amdgcn if found and fail if not found - if the user uses --enable-targets=all and --with-amd-dbgapi=no, we do not probe for amd-dbgapi, disable amdgcn support - otherwise, amd-dbgapi is not probed for and support for amdgcn is not enabled Finally, a simple test is included. It only tests hitting a breakpoint in device code and resuming execution, pretty much like the example shown above. [1] https://docs.amd.com/category/ROCm_v5.4 [2] https://docs.amd.com/bundle/HIP-Programming-Guide-v5.4 [3] https://en.wikipedia.org/wiki/Single_instruction,_multiple_threads [4] https://docs.amd.com/bundle/ROCDebugger-API-Guide-v5.4 Change-Id: I591edca98b8927b1e49e4b0abe4e304765fed9ee Co-Authored-By: Zoran Zaric <zoran.zaric@amd.com> Co-Authored-By: Laurent Morichetti <laurent.morichetti@amd.com> Co-Authored-By: Tony Tye <Tony.Tye@amd.com> Co-Authored-By: Lancelot SIX <lancelot.six@amd.com> Co-Authored-By: Pedro Alves <pedro@palves.net>
2022-12-21Use toplevel configure for GMP and MPFR for gdbAndrew Pinski1-9/+19
This patch uses the toplevel configure parts for GMP/MPFR for gdb. The only thing is that gdb now requires MPFR for building. Before it was a recommended but not required library. Also this allows building of GMP and MPFR with the toplevel directory just like how it is done for GCC. We now error out in the toplevel configure of the version of GMP and MPFR that is wrong. OK after GDB 13 branches? Build gdb 3 ways: with GMP and MPFR in the toplevel (static library used at that point for both) With only MPFR in the toplevel (GMP distro library used and MPFR built from source) With neither GMP and MPFR in the toplevel (distro libraries used) Changes from v1: * Updated gdb/README and gdb/doc/gdb.texinfo. * Regenerated using unmodified autoconf-2.69 Thanks, Andrew Pinski ChangeLog: * Makefile.def: Add configure-gdb dependencies on all-gmp and all-mpfr. * configure.ac: Split out MPC checking from MPFR. Require GMP and MPFR if the gdb directory exist. * Makefile.in: Regenerate. * configure: Regenerate. gdb/ChangeLog: PR bug/28500 * configure.ac: Remove AC_LIB_HAVE_LINKFLAGS for gmp and mpfr. Use GMPLIBS and GMPINC which is provided by the toplevel configure. * Makefile.in (LIBGMP, LIBMPFR): Remove. (GMPLIBS, GMPINC): Add definition. (INTERNAL_CFLAGS_BASE): Add GMPINC. (CLIBS): Exchange LIBMPFR and LIBGMP for GMPLIBS. * target-float.c: Make the code conditional on HAVE_LIBMPFR unconditional. * top.c: Remove code checking HAVE_LIBMPFR. * configure: Regenerate. * config.in: Regenerate. * README: Update GMP/MPFR section of the config options. * doc/gdb.texinfo: Likewise. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28500
2022-09-28gdb: remove trailing spaces in READMESimon Marchi1-4/+4
Change-Id: Ic7f8e415acd1bff6194cf08ed646bff45571f165
2022-03-23gdb/python: remove Python 2 supportSimon Marchi1-1/+1
New in this version: - Add a PY_MAJOR_VERSION check in configure.ac / AC_TRY_LIBPYTHON. If the user passes --with-python=python2, this will cause a configure failure saying that GDB only supports Python 3. Support for Python 2 is a maintenance burden for any patches touching Python support. Among others, the differences between Python 2 and 3 string and integer types are subtle. It requires a lot of effort and thinking to get something that behaves correctly on both. And that's if the author and reviewer of the patch even remember to test with Python 2. See this thread for an example: https://sourceware.org/pipermail/gdb-patches/2021-December/184260.html So, remove Python 2 support. Update the documentation to state that GDB can be built against Python 3 (as opposed to Python 2 or 3). Update all the spots that use: - sys.version_info - IS_PY3K - PY_MAJOR_VERSION - gdb_py_is_py3k ... to only keep the Python 3 portions and drop the use of some now-removed compatibility macros. I did not update the configure script more than just removing the explicit references to Python 2. We could maybe do more there, like check the Python version and reject it if that version is not supported. Otherwise (with this patch), things will only fail at compile time, so it won't really be clear to the user that they are trying to use an unsupported Python version. But I'm a bit lost in the configure code that checks for Python, so I kept that for later. Change-Id: I75b0f79c148afbe3c07ac664cfa9cade052c0c62
2020-11-24gdb/README: Fix the URL of the MPFR website (now https).Joel Brobecker1-1/+1
gdb/ChangeLog: * README: Fix the URL of the MPFR library.
2020-11-24gdb/README: Document the --with-libgmp-prefix configure optionJoel Brobecker1-0/+5
gdb/ChangeLog: * README: Document the --with-libgmp-prefix configure option.
2020-02-26Add debuginfod support to GDBAaron Merey1-0/+9
debuginfod is a lightweight web service that indexes ELF/DWARF debugging resources by build-id and serves them over HTTP. This patch enables GDB to query debuginfod servers for separate debug files and source code when it is otherwise not able to find them. GDB can be built with debuginfod using the --with-debuginfod configure option. This requires that libdebuginfod be installed and found at configure time. debuginfod is packaged with elfutils, starting with version 0.178. For more information see https://sourceware.org/elfutils/. Tested on x86_64 Fedora 31. gdb/ChangeLog: 2020-02-26 Aaron Merey <amerey@redhat.com> * Makefile.in: Handle optional debuginfod support. * NEWS: Update. * README: Add --with-debuginfod summary. * config.in: Regenerate. * configure: Regenerate. * configure.ac: Handle optional debuginfod support. * debuginfod-support.c: debuginfod helper functions. * debuginfod-support.h: Ditto. * doc/gdb.texinfo: Add --with-debuginfod to configure options summary. * dwarf2/read.c (dwarf2_get_dwz_file): Query debuginfod servers when a dwz file cannot be found. * elfread.c (elf_symfile_read): Query debuginfod servers when a debuginfo file cannot be found. * source.c (open_source_file): Query debuginfod servers when a source file cannot be found. * top.c (print_gdb_configuration): Include --{with,without}-debuginfod in the output. gdb/testsuite/ChangeLog: 2020-02-26 Aaron Merey <amerey@redhat.com> * gdb.debuginfod: New directory for debuginfod tests. * gdb.debuginfod/main.c: New test file. * gdb.debuginfod/fetch_src_and_symbols.exp: New tests.
2020-02-07Move gdbserver to top levelTom Tromey1-4/+3
This patch moves gdbserver to the top level. This patch is as close to a pure move as possible -- gdbserver still builds its own variant of gnulib and gdbsupport. Changing this will be done in a separate patch. [v2] Note that, per Simon's review comment, this patch changes the tree so that gdbserver is not built for or1k or score. This makes sense, because there is apparently not actually a gdbserver port here. [v3] This version of the patch also splits out some configury into a new file, gdbserver/configure.host, so that the top-level configure script can simply rely on it in order to decide whether gdbserver should be built. [v4] This version adds documentation and removes some unnecessary top-level dependencies. [v5] Update docs to mention "make all-gdbserver" and change how top-level configure decides whether to build gdbserver, switching to a single, shared script. Tested by the buildbot. ChangeLog 2020-02-07 Tom Tromey <tom@tromey.com> Pedro Alves <palves@redhat.com> * src-release.sh (GDB_SUPPORT_DIRS): Add gdbserver. * gdbserver: New directory, moved from gdb/gdbserver. * configure.ac (host_tools): Add gdbserver. Only build gdbserver on certain systems. * Makefile.in, configure: Rebuild. * Makefile.def (host_modules, dependencies): Add gdbserver. * MAINTAINERS: Add gdbserver. gdb/ChangeLog 2020-02-07 Tom Tromey <tom@tromey.com> * README: Update gdbserver documentation. * gdbserver: Move to top level. * configure.tgt (build_gdbserver): Remove. * configure.ac: Remove --enable-gdbserver. * configure: Rebuild. * Makefile.in (distclean): Don't mention gdbserver. Change-Id: I826b7565b54604711dc7a11edea0499cd51ff39e
2019-11-14Update READMEChristian Biesinger1-1/+20
Adds descriptions for some recent-ish configure options to README. Also updates the minimum Python version per commit 6c28e44a359e9f6cf455ddff0009ca99406f7224. 2019-11-14 Christian Biesinger <cbiesinger@google.com> * README (`configure' options): Update. Change-Id: I8ce8ca6935afbd130295e143802c585cf1e735f9
2019-08-12Require readline 7 or newerTom Tromey1-1/+2
This changes gdb to require readline 7 or newer at build time. gdb/ChangeLog 2019-08-12 Tom Tromey <tom@tromey.com> * configure: Rebuild. * configure.ac: Check for readline 7. * NEWS: Mention readline 7 requirement. * README: Update. gdb/doc/ChangeLog 2019-08-12 Tom Tromey <tom@tromey.com> * gdb.texinfo (Configure Options): Document minimum version of readline.
2018-10-10Add parameter to allow enabling/disabling selftests via configureSergio Durigan Junior1-0/+6
This is a follow-up of: https://sourceware.org/ml/gdb-patches/2018-08/msg00347.html Instead of going throttle and always enabling our selftests (even in non-development builds), this patch is a bit more conservative and introduces a configure option ("--enable-unit-tests") that allows the user to choose whether she wants unit tests in the build or not. Note that the current behaviour is retained: if no option is provided, GDB will have selftests included in a development build, and will *not* have selftests included in a non-development build. The rationale for having this option is still the same: due to the many racy testcases and random failures we see when running the GDB testsuite, it is unfortunately not possible to perform a full test when one is building a downstream package. As the Fedora GDB maintainer and one of the Debian GDB uploaders, I feel like this situation could be improved by, at least, executing our selftests after the package has been built. This patch introduces no regressions to our build. OK? gdb/ChangeLog: 2018-10-10 Sergio Durigan Junior <sergiodj@redhat.com> Simon Marchi <simark@simark.ca> * README (`configure' options): Add documentation for new "--enable-unit-tests" option. * acinclude.m4: Include "selftest.m4". * configure: Regenerate. * configure.ac: Use "GDB_AC_SELFTEST". * maint.c (maintenance_selftest): Update message informing that selftests have been disabled. (maintenance_info_selftests): Likewise. * selftest.m4: New file. gdb/gdbserver/ChangeLog: 2018-10-10 Sergio Durigan Junior <sergiodj@redhat.com> Simon Marchi <simark@simark.ca> * acinclude.m4: Include "../selftest.m4". * configure: Regenerate. * configure.ac: Use "GDB_AC_SELFTEST". * configure.srv: Use "$enable_unittests" instead of "$development" when checking whether unit tests have been enabled. * server.c (captured_main): Update message informing that selftests have been disabled. gdb/testsuite/ChangeLog: 2018-10-10 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.gdb/unittest.exp: Update expected message informing that selftests have been disabled. * gdb.server/unittest.exp: Likewise. squash! Add parameter to allow enabling/disabling selftests via configure
2018-10-03Add --enable-ubsanTom Tromey1-0/+7
This adds --enable-ubsan to gdb's configure. By default it is enabled in development mode, and disabled otherwise. This passes both -fsanitize=undefined and -fno-sanitize-recover=undefined to compilations, so that undefined behavior violations will be sure to cause test failures. gdb/ChangeLog 2018-10-03 Tom Tromey <tom@tromey.com> * README: Mention --enable-ubsan. * NEWS: Mention --enable-ubsan. * acinclude.m4: Include sanitize.m4. * configure: Rebuild. * configure.ac: Call AM_GDB_UBSAN. * sanitize.m4: New file. gdb/doc/ChangeLog 2018-10-03 Tom Tromey <tom@tromey.com> * gdb.texinfo (Configure Options): Document --enable-ubsan.
2018-10-01Copy configure option documentation to gdb.texinfoTom Tromey1-2/+2
I realized that while I'd updated the README, I didn't update gdb.texinfo to document the options to configure. This patch copies the text from README into gdb.texinfo, adding Texinfo markup. gdb/ChangeLog 2018-10-01 Tom Tromey <tom@tromey.com> * README: Minor change. gdb/doc/ChangeLog 2018-10-01 Tom Tromey <tom@tromey.com> * gdb.texinfo (Configure Options): Document configure options.
2018-09-29Remove some leftover text in gdb/READMETom Tromey1-3/+0
I accidentally left some stray text in gdb/README. This removes it. I'm checking this in as obvious. gdb/ChangeLog 2018-09-29 Tom Tromey <tom@tromey.com> * README: Remove some leftover text.
2018-09-29Update gdb's configure instructionsTom Tromey1-104/+116
gdb's README and configure instructions in the manual are quite out of date. They mention options that haven't existed for many years, among other things. This patch attempts to modernize the instructions somewhat. It is not exhaustive, just an improvement -- more could be done. Perhaps even a couple of the nodes should simply be removed and replaced by references to the Autoconf manual. The README file seems to have been generated from the Texinfo at some point in the past. I did not continue this, but instead edited it separately. gdb/ChangeLog 2018-09-29 Tom Tromey <tom@tromey.com> * PROBLEMS: Rewrite. * README: Update. gdb/doc/ChangeLog 2018-09-29 Tom Tromey <tom@tromey.com> * gdb.texinfo (Requirements): Mention C++, GNU make. (Requirements): Sort the table. Add more libraries. (Running Configure): Remove obsolete text. (Separate Objdir): Likewise. (Configure Options): Likewise.
2017-11-22Target FP: Make use of MPFR if availableUlrich Weigand1-0/+17
This second patch introduces mfpr_float_ops, an new implementation of target_float_ops. This implements precise emulation of target floating-point formats using the MPFR library. This is then used to perform operations on types that do not match any host type. Note that use of MPFR is still not required. The patch adds a configure option --with-mpfr similar to --with-expat. If use of MPFR is disabled via the option or MPFR is not available, code will fall back to current behavior. This means that operations on types that do not match any host type will be implemented on the host long double type instead. A new test case verifies that we can correctly print the largest __float128 value now. gdb/ChangeLog: 2017-11-22 Ulrich Weigand <uweigand@de.ibm.com> * NEWS: Document use of GNU MPFR. * README: Likewise. * Makefile.in (LIBMPFR): Add define. (CLIBS): Add $(LIBMPFR). * configure.ac: Add --with-mpfr configure option. * configure: Regenerate. * config.in: Regenerate. * target-float.c [HAVE_LIBMPFR]: Include <mpfr.h>. (class mpfr_float_ops): New type. (mpfr_float_ops::from_target): Two new overloaded functions. (mpfr_float_ops::to_target): Likewise. (mpfr_float_ops::to_string): New function. (mpfr_float_ops::from_string): Likewise. (mpfr_float_ops::to_longest): Likewise. (mpfr_float_ops::from_longest): Likewise. (mpfr_float_ops::from_ulongest): Likewise. (mpfr_float_ops::to_host_double): Likewise. (mpfr_float_ops::from_host_double): Likewise. (mpfr_float_ops::convert): Likewise. (mpfr_float_ops::binop): Likewise. (mpfr_float_ops::compare): Likewise. (get_target_float_ops): Use mpfr_float_ops if available. gdb/doc/ChangeLog: 2017-11-22 Ulrich Weigand <uweigand@de.ibm.com> * gdb.texinfo (Requirements): Document use of GNU MPFR. gdb/testsuite/ChangeLog: 2017-11-22 Ulrich Weigand <uweigand@de.ibm.com> * gdb.base/float128.c (large128): New variable. * gdb.base/float128.exp: Add test to print largest __float128 value.
2013-09-16 * README: Update references to writing code for GDB.Stan Shebs1-7/+8
* configure.ac (build_warnings): Remove obsolete comment. * configure: Regenerate. * gdbarch.sh: Remove references to gdbint.texinfo. * gdbarch.h: Regenerate. * gdbtypes.c (objfile_type): Remove comments referencing internals manual and D10V. [gdb/doc] Remove the internals manual gdbint.texinfo. * Makefile.in (INFO_DEPS): Remove gdbint.info. (PDFFILES): Remove gdbint.pdf. (HTMLFILES): Remove gdbint/index.html. (HTMLFILES_INSTALL): Remove gdbint. (GDBINT_DOC_FILES): Remove. (dvi): Remove gdbint.dvi. (ps): Remove gdbint.ps. * gdbint.texinfo: Remove file. * gdb.texinfo (Maintenance Commands): Remove reference to gdbint.
2012-03-08gdb/Jan Kratochvil1-4/+4
* libunwind-frame.c: Rename to ... * ia64-libunwind-tdep.c: ... here. * libunwind-frame.h: Rename to ... * ia64-libunwind-tdep.h: ... here. * Makefile.in (HFILES_NO_SRCDIR): Rename libunwind-frame.h to ia64-libunwind-tdep.h. (ALLDEPFILES): Rename libunwind-frame.c to ia64-libunwind-tdep.c. * README (--with-libunwind): Rename to ... (--with-libunwind-ia64): ... here, note it is ia64 specific now. * config.in: Regenerate. * configure: Regenerate. * configure.ac: New option --with-libunwind-ia64, make the AS_HELP_STRING ia64 specific. Deprecate option --with-libunwind. Remove AC_DEFINE for HAVE_LIBUNWIND. * ia64-libunwind-tdep.c: Make the file top comment ia64 specific. Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. Rename libunwind-frame in the general comment. * ia64-libunwind-tdep.h: Make the file top comment ia64 specific. Rename symbol LIBUNWIND_FRAME_H to IA64_TDEP_LIBUNWIND_FRAME_H. Move forward declarations inside #ifndef. Rename libunwind-frame in the general comment. * ia64-tdep.c: Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. (ia64_gdb2uw_regnum, ia64_uw2gdb_regnum, ia64_is_fpreg) (ia64_libunwind_descr): Rename libunwind-frame to ia64-libunwind-tdep in these function comments. * ia64-tdep.h: Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. * ia64-vms-tdep.c (ia64_vms_libunwind_descr): Rename libunwind-frame to ia64-libunwind-tdep in that data comment.
2012-01-04[README] Add note about copyright and license noticesJoel Brobecker1-0/+20
Also explain the use of year ranges in copyright notices. gdb/ChangeLog: * README (Copyright and License Notices): New section.
2011-04-19gdbTom Tromey1-1/+1
* windows-tdep.c (windows_xfer_shared_library): * windows-nat.c (get_module_name, windows_make_so): * v850-tdep.c (v850_handle_pushm): * utils.c (null_cleanup, gdb_realpath): * ui-out.c (get_next_header): * tracepoint.c (clear_traceframe_info): * symtab.c (lookup_symtab): * serial.h (struct serial_ops): * mipsread.c (read_alphacoff_dynamic_symtab): * infcmd.c (print_return_value): * ia64-linux-tdep.c (ia64_linux_sigcontext_register_address): * f-exp.y (parse_number): * exceptions.c (catch_exceptions): * dummy-frame.c (dummy_frame_this_id): * defs.h (struct cleanup): * breakpoint.c (disable_breakpoints_in_unloaded_shlib): * arm-tdep.c (arm_push_dummy_call): * amd64-tdep.h (amd64_collect_xsave): * amd64-tdep.c (amd64_collect_xsave): * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): * README (typing): Remove duplicate words. * cli/cli-decode.c (lookup_cmd_composition): Add comma. * infrun.c (siginfo_value_read): Fix typo. * solib-frv.c (frv_fdpic_find_global_pointer): Likewise. * top.c (source_line_number): Add comma. gdb/doc * gdbint.texinfo (Register Information Functions): Remove duplicate "the". * gdb.texinfo (Emacs): Remove duplicate "to". (GDB/MI Variable Objects): Remove duplicate "the". (General Query Packets): Likewise. gdb/testsuite * gdb.mi/mi-nsmoribund.exp: * gdb.hp/gdb.objdbg/objdbg01.exp: * gdb.base/structs.exp (test_struct_returns): * gdb.base/call-sc.exp (test_scalar_returns): * gdb.base/bigcore.exp: Remove duplicate words. gdb/gdbserver * win32-low.c (handle_load_dll): Remove duplicate "the".
2010-06-07 * README: Make version-agnostic.Nathan Sidwell1-77/+53
2010-05-02 gdb/Pedro Alves1-9/+9
* README: Use consistent `GDB' and `GDBserver' spellings. gdb/gdbserver/ * README: Use consistent `GDB' and `GDBserver' spellings.
2009-06-29gdbTom Tromey1-0/+14
* README: Mention parallel check. gdb/testsuite * dg-extract-results.sh: New file. * Makefile.in (FORCE_PARALLEL): New variable. (CHECK_TARGET): New conditional variable. (check): Use CHECK_TARGET. (DO_RUNTEST): New variable. (check-single): New target. (TEST_DIRS): New variable. (TEST_TARGETS): Likewise. (check-parallel): New target. (check-gdb.%): New pattern. (BASE1_FILES): New variable. (BASE2_FILES): Likewise. (check-gdb.base%): New pattern. (%/.dir): New pattern. * configure: Rebuild. * aclocal.m4 (AM_CONDITIONAL): New defun. * configure.ac: Check whether user is using GNU make. (GMAKE): New conditional.
2009-05-23 * README (`configure' options): Document GDB-specific options toEli Zaretskii1-10/+100
`configure'.
2009-04-23gdbTom Tromey1-0/+5
2009-04-23 Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com> Tom Tromey <tromey@redhat.com> * configure, config.in: Regenerate. * configure.ac: Support for relocatable GDB datadir. Use GDB_AC_WITH_DIR. Always define TARGET_SYSTEM_ROOT_RELOCATABLE. * acinclude.m4 (GDB_AC_WITH_DIR): New defun. * top.c (init_main): Add "set data-directory". * defs.h (gdb_datadir): Declare. * main.c (gdb_datadir): New global. (captured_main): Initialize gdb_datadir. Use relocate_directory. (relocate_path): New function. (relocate_directory): Likewise. (get_init_files): Use relocate_path. (README): Mention --with-gdb-datadir. gdb/doc 2009-04-23 Tom Tromey <tromey@redhat.com> * gdb.texinfo (Data Files): New node. (GDB Files): Update menu.
2008-01-17* README: Mention gdbserver/README.Jim Blandy1-0/+4
2007-04-13 * mips-mdebug-tdep.c, mips-mdebug-tdep.h, ocd.c, ocd.h, ppc-bdm.c,Daniel Jacobowitz1-3/+0
remote-e7000.c, remote-hms.c, remote-utils.c, remote-utils.h, scm-exp.c, scm-lang.c, scm-lang.h, scm-tags.h, scm-valprint.c, ser-e7kpc.c, sh3-rom.c, stop-gdb.c: Delete. * Makefile.in: Remove references to deleted files. * README: Do not mention deleted ROM monitor interfaces. * defs.h (enum language): Delete language_scm. * expprint.c (print_subexp_standard): Do not handle OP_EXPRSTRING. (dump_subexp_body_standard): Likewise. * parse.c (operator_length_standard): Likewise. * expression.h (enum exp_opcode): Delete OP_EXPRSTRING. * remote-mips.c: Do not include remote-utils.h. * remote-sim.c: Likewise. Use remote_debug instead of sr_get_debug throughout. * value.c: Do not include scm-lang.h. (unpack_long): Delete scm_unpack call. * config/h8300/h8300.mt, config/mips/embed.mt, config/powerpc/ppc-eabi.mt, config/powerpc/ppc-sim.mt, config/sh/embed.mt, config/sh/linux.mt: Remove references to deleted files. * NEWS: Mention removed files. * gdb.texinfo (Memory): Reference Remote Debugging chapter. (Character Sets, Caching Data of Remote Targets): Likewise. (Targets): Delete Remote node. Move its text... (Debugging Remote Programs): ...to here. Delete description of the "remote" command. (Remote configuration): Delete description of "set remotedevice" and "show remotedevice". (Embedded Processors): Delete H8/300, H8/500, and SH nodes.
2007-03-30 * README: Mention ISO C library requirement.Daniel Jacobowitz1-1/+3
2007-03-30 * Makefile.in (SFILES): Remove nlmread.c.Daniel Jacobowitz1-1/+0
(COMMON_OBS): Remove nlmread.o. (nlmread.o): Delete rule. * README: Delete reference to remote-st.c. * acinclude.m4 (CY_AC_TCL_LYNX_POSIX): Delete. * defs.h (enum gdb_osabi): Delete GDB_OSABI_NETWARE and GDB_OSABI_LYNXOS. * i386-tdep.c (i386_nw_init_abi, i386_nlm_osabi_sniffer): Delete. (_initialize_i386_tdep): Do not reference them. * nlmread.c: Delete file. * osabi.c (gdb_osabi_names): Remove NetWare and LynxOS. * target.c: Doc update. * thread.c: Delete commented include. * config/alpha/tm-alpha.h: Doc update. * gdb.texinfo (Startup): Delete references to some alternate names for .gdbinit. (Thread): Remove LynxOS reference. (Tandem ST2000): Delete target-specific documentation. * gdbint.texinfo (Symbol Handling): Remove mention of NLM. (Target Architecture Definition): Remove mention of GDB_OSABI_NETWARE and GDB_OSABI_LYNXOS. * config/netware.exp: Delete file.
2006-11-21 * README: Remove obsolete information.Joel Brobecker1-7/+1
2006-08-08gdb/Daniel Jacobowitz1-0/+5
* configure.ac: Check for expat. * acinclude.m4: Include AC_LIB_HAVE_LINKFLAGS dependencies. * Makefile.in (LIBEXPAT): New. (CLIBS): Include $(LIBEXPAT). * README: Mention expat. * configure, config.in: Regenerated. gdb/doc/ * gdb.texinfo (Installing GDB): Update menu. Move text to... (Running Configure): ...here. (Requirements): New node. Mention expat.
2006-05-17 * remote-rdp.c: Deleted.Daniel Jacobowitz1-1/+0
* NEWS: Mention removal of remote-rdp.c. * Makefile.in (ALLDEPFILES): Remove remote-rdp.c. (remote-rdp.o): Delete. * README: Remove description of remote-rdp.c. * arm-tdep.c (arm_breakpoint_from_pc): Remove obsolete comment. * config/arm/embed.mt (TDEPFILES): Remove remote-rdp.o.
2006-01-21 * Makefile.in (remote-rdi.o): Remove.Mark Mitchell1-1/+0
(rdi-share/libangsd.a): Likewise. * README: Don't mention remote-rdi.c. * NEWS: Mention removal of rdi-share. * configure.ac: Don't configure rdi-share subdirectory. * remote-rdi.c: Remove. * config/arm/embed.mt (TDEPFILES): Remove remote-rdi.o. (TDEPLIBS): Remove rdi-share/libangsd.a. * rdi-share/Makefile.am: Remove. * rdi-share/Makefile.in: Likewise. * rdi-share/README.CYGNUS: Likewise. * rdi-share/aclocal.m4: Likewise. * rdi-share/adp.h: Likewise. * rdi-share/adperr.h: Likewise. * rdi-share/angel.h: Likewise. * rdi-share/angel_bytesex.c: Likewise. * rdi-share/angel_bytesex.h: Likewise. * rdi-share/angel_endian.h: Likewise. * rdi-share/ardi.c: Likewise. * rdi-share/ardi.h: Likewise. * rdi-share/armdbg.h: Likewise. * rdi-share/buffers.h: Likewise. * rdi-share/chandefs.h: Likewise. * rdi-share/channels.h: Likewise. * rdi-share/chanpriv.h: Likewise. * rdi-share/configure: Likewise. * rdi-share/configure.in: Likewise. * rdi-share/crc.c: Likewise. * rdi-share/crc.h: Likewise. * rdi-share/dbg_conf.h: Likewise. * rdi-share/dbg_cp.h: Likewise. * rdi-share/dbg_hif.h: Likewise. * rdi-share/dbg_rdi.h: Likewise. * rdi-share/devclnt.h: Likewise. * rdi-share/devices.h: Likewise. * rdi-share/devsw.c: Likewise. * rdi-share/devsw.h: Likewise. * rdi-share/drivers.c: Likewise. * rdi-share/drivers.h: Likewise. * rdi-share/etherdrv.c: Likewise. * rdi-share/ethernet.h: Likewise. * rdi-share/host.h: Likewise. * rdi-share/hostchan.c: Likewise. * rdi-share/hostchan.h: Likewise. * rdi-share/hsys.c: Likewise. * rdi-share/hsys.h: Likewise. * rdi-share/logging.c: Likewise. * rdi-share/logging.h: Likewise. * rdi-share/msgbuild.c: Likewise. * rdi-share/msgbuild.h: Likewise. * rdi-share/params.c: Likewise. * rdi-share/params.h: Likewise. * rdi-share/rx.c: Likewise. * rdi-share/rxtx.h: Likewise. * rdi-share/serdrv.c: Likewise. * rdi-share/serpardr.c: Likewise. * rdi-share/sys.h: Likewise. * rdi-share/tx.c: Likewise. * rdi-share/unixcomm.c: Likewise. * rdi-share/unixcomm.h: Likewise.
2004-12-03Remove config.if.Richard Sandiford1-8/+8
2004-11-082004-11-08 Andrew Cagney <cagney@gnu.org>Andrew Cagney1-65/+53
* README: Refer to 6.3, not 6.2, update directory listing droppng references to intl/ and mmalloc/. * PROBLEMS: Refer to 6.3 not 6.2.
2004-07-172004-07-17 Andrew Cagney <cagney@gnu.org>Andrew Cagney1-48/+48
* README: Update to 6.2.
2004-02-29Fix tipo.Andrew Cagney1-1/+1
2004-02-292004-02-28 Andrew Cagney <cagney@redhat.com>Andrew Cagney1-48/+48
* NEWS: Refer to GDB 6.1. * README: Refer to GDB 6.1. * PROBLEMS: Refer to GDB 6.1. Index: doc/ChangeLog 2004-02-28 Andrew Cagney <cagney@redhat.com> * gdb.texinfo (Contributors): Mention GDB 6.1 release engineer.
2003-10-102003-10-10 Kei Sakamoto <sakamoto.kei@renesas.com>Kazuhiro Inaoka1-2/+2
* NEWS: Replace "Hitachi" and "Mitsubishi" with "Renesas". * README: Ditto. * d10v-tdep.c: Ditto. * h8300-tdep.c: Ditto. * remote-e7000.c: Ditto. * remote-hms.c: Ditto. * ser-e7kpc.c: Ditto. * sh-stub.c: Ditto. * sh-tdep.c: Ditto. * sh-tdep.h: Ditto. * sh3-rom.c: Ditto. * sh64-tdep.c: Ditto. * top.c: Ditto. * wince.c: Ditto. * config/d10v/d10v.mt: Ditto. * config/sh/embed.mt: Ditto. * config/sh/linux.mt: Ditto. * config/sh/tm-linux.h: Ditto. * config/sh/tm-sh.h: Ditto. * config/sh/wince.mt: Ditto.
2003-06-232003-06-22 Andrew Cagney <cagney@redhat.com>Andrew Cagney1-48/+48
GDB 6.0 branch created. * README: Update. * PROBLEMS: Update. Empty. * NEWS: Update. Index: doc/ChangeLog 2003-06-22 Andrew Cagney <cagney@redhat.com> * gdb.texinfo (Contributors): Mention 6.0 release engineer.
2003-06-142003-06-14 Andrew Cagney <cagney@redhat.com>Andrew Cagney1-1/+0
* config/mips/embedl64.mt (TDEPFILES): Delete "remote-array.o". * config/mips/embedl.mt (TDEPFILES): Delete "remote-array.o". * config/mips/embed64.mt (TDEPFILES): Delete "remote-array.o". * config/djgpp/fnchange.lst: Delete "remote-array.c". * README: Delete reference to remote-array. * Makefile.in (ALLDEPFILES): Remove "remote-array.c". (remote-array.o): Delete target. * config/mips/embed.mt (TDEPFILES): Delete "remote-array.o". * remote-array.c: Delete file.
2003-01-312003-01-31 Andrew Cagney <ac131313@redhat.com>Andrew Cagney1-1/+0
* README: Remove reference to Ericsson 1800 monitor. * Makefile.in (remote-es.o): Delete rule. (ALLDEPFILES): Delete remote-es.c. * remote-es.c: Delete file. * config/m68k/es1800.mt: Delete file. * config/djgpp/fnchange.lst: Update. * configure.tgt: Delete m68*-ericsson-* target.
2003-01-182003-01-16 Michael Chastain <mec@shout.net>Michael Chastain1-1/+14
* README (Unpacking and Installation -- quick overview): Warn against ".../gdb-5.3/gdb/configure".
2003-01-132003-01-13 Andrew Cagney <ac131313@redhat.com>Andrew Cagney1-1/+1
* README (Graphical interface to GDB): Update URL. Point at gdb/links/.
2003-01-052003-01-05 Michael Chastain <mec@shout.net>Michael Chastain1-15/+0
* README: Remove references to deleted remote-*.c files: remote-adapt.c, remote-eb.c, remote-mm.c, remote-nindy.c, remote-nrom.c, remote-os9k.c, remote-udi.c.
2002-09-052002-09-05 Andrew Cagney <ac131313@redhat.com>Andrew Cagney1-44/+44
* NEWS: Update for 5.3. Add new section ``Changes since 5.3''. * README: Update. Index: doc/ChangeLog 2002-09-05 Andrew Cagney <ac131313@redhat.com> * gdb.texinfo (Contributors): Mention 5.2 and 5.3 release engineer.
2002-07-24Obsolete m88k.Andrew Cagney1-1/+0
2002-07-23Mention 5.2.1 on mainline.Andrew Cagney1-44/+44
2002-04-25* README: Update to GDB 5.2.Andrew Cagney1-46/+46
2002-04-07* README (Reporting Bugs in GDB): Document the bug web page as theAndrew Cagney1-14/+23
prefered way of submitting bugs. Fix PR gdb/402. * gdb.texinfo (Bug Reporting): Document that the web is the prefered way of submitting bug reports. (Bug Reporting): Delete the s-mail address as the last resort.