mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
268a13a5a3
This is the next patch in the ongoing series to move gdbsever to the top level. This patch just renames the "common" directory. The idea is to do this move in two parts: first rename the directory (this patch), then move the directory to the top. This approach makes the patches a bit more tractable. I chose the name "gdbsupport" for the directory. However, as this patch was largely written by sed, we could pick a new name without too much difficulty. Tested by the buildbot. gdb/ChangeLog 2019-07-09 Tom Tromey <tom@tromey.com> * contrib/ari/gdb_ari.sh: Change common to gdbsupport. * configure: Rebuild. * configure.ac: Change common to gdbsupport. * gdbsupport: Rename from common. * acinclude.m4: Change common to gdbsupport. * Makefile.in (CONFIG_SRC_SUBDIR, COMMON_SFILES) (HFILES_NO_SRCDIR, stamp-version, ALLDEPFILES): Change common to gdbsupport. * aarch64-tdep.c, ada-lang.c, ada-lang.h, agent.c, alloc.c, amd64-darwin-tdep.c, amd64-dicos-tdep.c, amd64-fbsd-nat.c, amd64-fbsd-tdep.c, amd64-linux-nat.c, amd64-linux-tdep.c, amd64-nbsd-tdep.c, amd64-obsd-tdep.c, amd64-sol2-tdep.c, amd64-tdep.c, amd64-windows-tdep.c, arch-utils.c, arch/aarch64-insn.c, arch/aarch64.c, arch/aarch64.h, arch/amd64.c, arch/amd64.h, arch/arm-get-next-pcs.c, arch/arm-linux.c, arch/arm.c, arch/i386.c, arch/i386.h, arch/ppc-linux-common.c, arch/riscv.c, arch/riscv.h, arch/tic6x.c, arm-tdep.c, auto-load.c, auxv.c, ax-gdb.c, ax-general.c, ax.h, breakpoint.c, breakpoint.h, btrace.c, btrace.h, build-id.c, build-id.h, c-lang.h, charset.c, charset.h, cli/cli-cmds.c, cli/cli-cmds.h, cli/cli-decode.c, cli/cli-dump.c, cli/cli-option.h, cli/cli-script.c, coff-pe-read.c, command.h, compile/compile-c-support.c, compile/compile-c.h, compile/compile-cplus-symbols.c, compile/compile-cplus-types.c, compile/compile-cplus.h, compile/compile-loc2c.c, compile/compile.c, completer.c, completer.h, contrib/ari/gdb_ari.sh, corefile.c, corelow.c, cp-support.c, cp-support.h, cp-valprint.c, csky-tdep.c, ctf.c, darwin-nat.c, debug.c, defs.h, disasm-selftests.c, disasm.c, disasm.h, dtrace-probe.c, dwarf-index-cache.c, dwarf-index-cache.h, dwarf-index-write.c, dwarf2-frame.c, dwarf2expr.c, dwarf2loc.c, dwarf2read.c, event-loop.c, event-top.c, exceptions.c, exec.c, extension.h, fbsd-nat.c, features/aarch64-core.c, features/aarch64-fpu.c, features/aarch64-pauth.c, features/aarch64-sve.c, features/i386/32bit-avx.c, features/i386/32bit-avx512.c, features/i386/32bit-core.c, features/i386/32bit-linux.c, features/i386/32bit-mpx.c, features/i386/32bit-pkeys.c, features/i386/32bit-segments.c, features/i386/32bit-sse.c, features/i386/64bit-avx.c, features/i386/64bit-avx512.c, features/i386/64bit-core.c, features/i386/64bit-linux.c, features/i386/64bit-mpx.c, features/i386/64bit-pkeys.c, features/i386/64bit-segments.c, features/i386/64bit-sse.c, features/i386/x32-core.c, features/riscv/32bit-cpu.c, features/riscv/32bit-csr.c, features/riscv/32bit-fpu.c, features/riscv/64bit-cpu.c, features/riscv/64bit-csr.c, features/riscv/64bit-fpu.c, features/tic6x-c6xp.c, features/tic6x-core.c, features/tic6x-gp.c, filename-seen-cache.h, findcmd.c, findvar.c, fork-child.c, gcore.c, gdb_bfd.c, gdb_bfd.h, gdb_proc_service.h, gdb_regex.c, gdb_select.h, gdb_usleep.c, gdbarch-selftests.c, gdbthread.h, gdbtypes.h, gnu-nat.c, go32-nat.c, guile/guile.c, guile/scm-ports.c, guile/scm-safe-call.c, guile/scm-type.c, i386-fbsd-nat.c, i386-fbsd-tdep.c, i386-go32-tdep.c, i386-linux-nat.c, i386-linux-tdep.c, i386-tdep.c, i387-tdep.c, ia64-libunwind-tdep.c, ia64-linux-nat.c, inf-child.c, inf-ptrace.c, infcall.c, infcall.h, infcmd.c, inferior-iter.h, inferior.c, inferior.h, inflow.c, inflow.h, infrun.c, infrun.h, inline-frame.c, language.h, linespec.c, linux-fork.c, linux-nat.c, linux-tdep.c, linux-thread-db.c, location.c, machoread.c, macrotab.h, main.c, maint.c, maint.h, memattr.c, memrange.h, mi/mi-cmd-break.h, mi/mi-cmd-env.c, mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-interp.c, mi/mi-main.c, mi/mi-parse.h, minsyms.c, mips-linux-tdep.c, namespace.h, nat/aarch64-linux-hw-point.c, nat/aarch64-linux-hw-point.h, nat/aarch64-linux.c, nat/aarch64-sve-linux-ptrace.c, nat/amd64-linux-siginfo.c, nat/fork-inferior.c, nat/linux-btrace.c, nat/linux-btrace.h, nat/linux-namespaces.c, nat/linux-nat.h, nat/linux-osdata.c, nat/linux-personality.c, nat/linux-procfs.c, nat/linux-ptrace.c, nat/linux-ptrace.h, nat/linux-waitpid.c, nat/mips-linux-watch.c, nat/mips-linux-watch.h, nat/ppc-linux.c, nat/x86-dregs.c, nat/x86-dregs.h, nat/x86-linux-dregs.c, nat/x86-linux.c, nto-procfs.c, nto-tdep.c, objfile-flags.h, objfiles.c, objfiles.h, obsd-nat.c, observable.h, osdata.c, p-valprint.c, parse.c, parser-defs.h, ppc-linux-nat.c, printcmd.c, probe.c, proc-api.c, procfs.c, producer.c, progspace.h, psymtab.h, python/py-framefilter.c, python/py-inferior.c, python/py-ref.h, python/py-type.c, python/python.c, record-btrace.c, record-full.c, record.c, record.h, regcache-dump.c, regcache.c, regcache.h, remote-fileio.c, remote-fileio.h, remote-sim.c, remote.c, riscv-tdep.c, rs6000-aix-tdep.c, rust-exp.y, s12z-tdep.c, selftest-arch.c, ser-base.c, ser-event.c, ser-pipe.c, ser-tcp.c, ser-unix.c, skip.c, solib-aix.c, solib-target.c, solib.c, source-cache.c, source.c, source.h, sparc-nat.c, spu-linux-nat.c, stack.c, stap-probe.c, symfile-add-flags.h, symfile.c, symfile.h, symtab.c, symtab.h, target-descriptions.c, target-descriptions.h, target-memory.c, target.c, target.h, target/waitstatus.c, target/waitstatus.h, thread-iter.h, thread.c, tilegx-tdep.c, top.c, top.h, tracefile-tfile.c, tracefile.c, tracepoint.c, tracepoint.h, tui/tui-io.c, ui-file.c, ui-out.h, unittests/array-view-selftests.c, unittests/child-path-selftests.c, unittests/cli-utils-selftests.c, unittests/common-utils-selftests.c, unittests/copy_bitwise-selftests.c, unittests/environ-selftests.c, unittests/format_pieces-selftests.c, unittests/function-view-selftests.c, unittests/lookup_name_info-selftests.c, unittests/memory-map-selftests.c, unittests/memrange-selftests.c, unittests/mkdir-recursive-selftests.c, unittests/observable-selftests.c, unittests/offset-type-selftests.c, unittests/optional-selftests.c, unittests/parse-connection-spec-selftests.c, unittests/ptid-selftests.c, unittests/rsp-low-selftests.c, unittests/scoped_fd-selftests.c, unittests/scoped_mmap-selftests.c, unittests/scoped_restore-selftests.c, unittests/string_view-selftests.c, unittests/style-selftests.c, unittests/tracepoint-selftests.c, unittests/unpack-selftests.c, unittests/utils-selftests.c, unittests/xml-utils-selftests.c, utils.c, utils.h, valarith.c, valops.c, valprint.c, value.c, value.h, varobj.c, varobj.h, windows-nat.c, x86-linux-nat.c, xml-support.c, xml-support.h, xml-tdesc.h, xstormy16-tdep.c, xtensa-linux-nat.c, dwarf2read.h: Change common to gdbsupport. gdb/gdbserver/ChangeLog 2019-07-09 Tom Tromey <tom@tromey.com> * configure: Rebuild. * configure.ac: Change common to gdbsupport. * acinclude.m4: Change common to gdbsupport. * Makefile.in (SFILES, OBS, GDBREPLAY_OBS, IPA_OBJS) (version-generated.c, gdbsupport/%-ipa.o, gdbsupport/%.o): Change common to gdbsupport. * ax.c, event-loop.c, fork-child.c, gdb_proc_service.h, gdbreplay.c, gdbthread.h, hostio-errno.c, hostio.c, i387-fp.c, inferiors.c, inferiors.h, linux-aarch64-tdesc-selftest.c, linux-amd64-ipa.c, linux-i386-ipa.c, linux-low.c, linux-tic6x-low.c, linux-x86-low.c, linux-x86-tdesc-selftest.c, linux-x86-tdesc.c, lynx-i386-low.c, lynx-low.c, mem-break.h, nto-x86-low.c, regcache.c, regcache.h, remote-utils.c, server.c, server.h, spu-low.c, symbol.c, target.h, tdesc.c, tdesc.h, thread-db.c, tracepoint.c, win32-i386-low.c, win32-low.c: Change common to gdbsupport.
154 lines
5.8 KiB
C
154 lines
5.8 KiB
C
/* Self tests for ptid_t for GDB, the GNU debugger.
|
|
|
|
Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#include "defs.h"
|
|
#include "gdbsupport/ptid.h"
|
|
#include <type_traits>
|
|
|
|
namespace selftests {
|
|
namespace ptid {
|
|
|
|
/* Check that the ptid_t class is POD.
|
|
|
|
This is a requirement for as long as we have ptids embedded in
|
|
structures allocated with malloc. */
|
|
|
|
static_assert (std::is_pod<ptid_t>::value, "ptid_t is POD");
|
|
|
|
/* We want to avoid implicit conversion from int to ptid_t. */
|
|
|
|
static_assert (!std::is_convertible<int, ptid_t>::value,
|
|
"constructor is explicit");
|
|
|
|
/* Build some useful ptids. */
|
|
|
|
static constexpr ptid_t pid = ptid_t (1);
|
|
static constexpr ptid_t lwp = ptid_t (1, 2, 0);
|
|
static constexpr ptid_t tid = ptid_t (1, 0, 2);
|
|
static constexpr ptid_t both = ptid_t (1, 2, 2);
|
|
|
|
/* Build some constexpr version of null_ptid and minus_one_ptid to use in
|
|
static_assert. Once the real ones are made constexpr, we can get rid of
|
|
these. */
|
|
|
|
static constexpr ptid_t null = ptid_t::make_null ();
|
|
static constexpr ptid_t minus_one = ptid_t::make_minus_one ();
|
|
|
|
/* Verify pid. */
|
|
|
|
static_assert (pid.pid () == 1, "pid's pid is right");
|
|
static_assert (lwp.pid () == 1, "lwp's pid is right");
|
|
static_assert (tid.pid () == 1, "tid's pid is right");
|
|
static_assert (both.pid () == 1, "both's pid is right");
|
|
|
|
/* Verify lwp_p. */
|
|
|
|
static_assert (!pid.lwp_p (), "pid's lwp_p is right");
|
|
static_assert (lwp.lwp_p (), "lwp's lwp_p is right");
|
|
static_assert (!tid.lwp_p (), "tid's lwp_p is right");
|
|
static_assert (both.lwp_p (), "both's lwp_p is right");
|
|
|
|
/* Verify lwp. */
|
|
|
|
static_assert (pid.lwp () == 0, "pid's lwp is right");
|
|
static_assert (lwp.lwp () == 2, "lwp's lwp is right");
|
|
static_assert (tid.lwp () == 0, "tid's lwp is right");
|
|
static_assert (both.lwp () == 2, "both's lwp is right");
|
|
|
|
/* Verify tid_p. */
|
|
|
|
static_assert (!pid.tid_p (), "pid's tid_p is right");
|
|
static_assert (!lwp.tid_p (), "lwp's tid_p is right");
|
|
static_assert (tid.tid_p (), "tid's tid_p is right");
|
|
static_assert (both.tid_p (), "both's tid_p is right");
|
|
|
|
/* Verify tid. */
|
|
|
|
static_assert (pid.tid () == 0, "pid's tid is right");
|
|
static_assert (lwp.tid () == 0, "lwp's tid is right");
|
|
static_assert (tid.tid () == 2, "tid's tid is right");
|
|
static_assert (both.tid () == 2, "both's tid is right");
|
|
|
|
/* Verify is_pid. */
|
|
|
|
static_assert (pid.is_pid (), "pid is a pid");
|
|
static_assert (!lwp.is_pid (), "lwp isn't a pid");
|
|
static_assert (!tid.is_pid (), "tid isn't a pid");
|
|
static_assert (!both.is_pid (), "both isn't a pid");
|
|
static_assert (!null.is_pid (), "null ptid isn't a pid");
|
|
static_assert (!minus_one.is_pid (), "minus one ptid isn't a pid");
|
|
|
|
/* Verify operator ==. */
|
|
|
|
static_assert (pid == ptid_t (1, 0, 0), "pid operator== is right");
|
|
static_assert (lwp == ptid_t (1, 2, 0), "lwp operator== is right");
|
|
static_assert (tid == ptid_t (1, 0, 2), "tid operator== is right");
|
|
static_assert (both == ptid_t (1, 2, 2), "both operator== is right");
|
|
|
|
/* Verify operator !=. */
|
|
|
|
static_assert (pid != ptid_t (2, 0, 0), "pid isn't equal to a different pid");
|
|
static_assert (pid != lwp, "pid isn't equal to one of its thread");
|
|
static_assert (lwp != tid, "lwp isn't equal to tid");
|
|
static_assert (both != lwp, "both isn't equal to lwp");
|
|
static_assert (both != tid, "both isn't equal to tid");
|
|
|
|
/* Verify matches against minus_one. */
|
|
|
|
static_assert (pid.matches (minus_one), "pid matches minus one");
|
|
static_assert (lwp.matches (minus_one), "lwp matches minus one");
|
|
static_assert (tid.matches (minus_one), "tid matches minus one");
|
|
static_assert (both.matches (minus_one), "both matches minus one");
|
|
|
|
/* Verify matches against pid. */
|
|
|
|
static_assert (pid.matches (pid), "pid matches pid");
|
|
static_assert (lwp.matches (pid), "lwp matches pid");
|
|
static_assert (tid.matches (pid), "tid matches pid");
|
|
static_assert (both.matches (pid), "both matches pid");
|
|
static_assert (!ptid_t (2, 0, 0).matches (pid), "other pid doesn't match pid");
|
|
static_assert (!ptid_t (2, 2, 0).matches (pid), "other lwp doesn't match pid");
|
|
static_assert (!ptid_t (2, 0, 2).matches (pid), "other tid doesn't match pid");
|
|
static_assert (!ptid_t (2, 2, 2).matches (pid), "other both doesn't match pid");
|
|
|
|
/* Verify matches against exact matches. */
|
|
|
|
static_assert (!pid.matches (lwp), "pid doesn't match lwp");
|
|
static_assert (lwp.matches (lwp), "lwp matches lwp");
|
|
static_assert (!tid.matches (lwp), "tid doesn't match lwp");
|
|
static_assert (!both.matches (lwp), "both doesn't match lwp");
|
|
static_assert (!ptid_t (2, 2, 0).matches (lwp), "other lwp doesn't match lwp");
|
|
|
|
static_assert (!pid.matches (tid), "pid doesn't match tid");
|
|
static_assert (!lwp.matches (tid), "lwp doesn't match tid");
|
|
static_assert (tid.matches (tid), "tid matches tid");
|
|
static_assert (!both.matches (tid), "both doesn't match tid");
|
|
static_assert (!ptid_t (2, 0, 2).matches (tid), "other tid doesn't match tid");
|
|
|
|
static_assert (!pid.matches (both), "pid doesn't match both");
|
|
static_assert (!lwp.matches (both), "lwp doesn't match both");
|
|
static_assert (!tid.matches (both), "tid doesn't match both");
|
|
static_assert (both.matches (both), "both matches both");
|
|
static_assert (!ptid_t (2, 2, 2).matches (both),
|
|
"other both doesn't match both");
|
|
|
|
|
|
} /* namespace ptid */
|
|
} /* namespace selftests */
|