30#include <sys/socket.h>
81#define FBSD_SI_USER 0x10001
82#define FBSD_SI_QUEUE 0x10002
83#define FBSD_SI_TIMER 0x10003
84#define FBSD_SI_ASYNCIO 0x10004
85#define FBSD_SI_MESGQ 0x10005
86#define FBSD_SI_KERNEL 0x10006
87#define FBSD_SI_LWP 0x10007
89#define FBSD_ILL_ILLOPC 1
90#define FBSD_ILL_ILLOPN 2
91#define FBSD_ILL_ILLADR 3
92#define FBSD_ILL_ILLTRP 4
93#define FBSD_ILL_PRVOPC 5
94#define FBSD_ILL_PRVREG 6
95#define FBSD_ILL_COPROC 7
96#define FBSD_ILL_BADSTK 8
98#define FBSD_BUS_ADRALN 1
99#define FBSD_BUS_ADRERR 2
100#define FBSD_BUS_OBJERR 3
101#define FBSD_BUS_OOMERR 100
103#define FBSD_SEGV_MAPERR 1
104#define FBSD_SEGV_ACCERR 2
105#define FBSD_SEGV_PKUERR 100
107#define FBSD_FPE_INTOVF 1
108#define FBSD_FPE_INTDIV 2
109#define FBSD_FPE_FLTDIV 3
110#define FBSD_FPE_FLTOVF 4
111#define FBSD_FPE_FLTUND 5
112#define FBSD_FPE_FLTRES 6
113#define FBSD_FPE_FLTINV 7
114#define FBSD_FPE_FLTSUB 8
116#define FBSD_TRAP_BRKPT 1
117#define FBSD_TRAP_TRACE 2
118#define FBSD_TRAP_DTRACE 3
119#define FBSD_TRAP_CAP 4
121#define FBSD_CLD_EXITED 1
122#define FBSD_CLD_KILLED 2
123#define FBSD_CLD_DUMPED 3
124#define FBSD_CLD_TRAPPED 4
125#define FBSD_CLD_STOPPED 5
126#define FBSD_CLD_CONTINUED 6
128#define FBSD_POLL_IN 1
129#define FBSD_POLL_OUT 2
130#define FBSD_POLL_MSG 3
131#define FBSD_POLL_ERR 4
132#define FBSD_POLL_PRI 5
133#define FBSD_POLL_HUP 6
143#define LWPINFO_OFFSET 0x4
146#define LWPINFO_PL_FLAGS 0x8
147#define LWPINFO64_PL_SIGINFO 0x30
148#define LWPINFO32_PL_SIGINFO 0x2c
151#define PL_FLAG_SI 0x20
154#define SIZE64_SIGINFO_T 80
155#define SIZE32_SIGINFO_T 64
168#define KVE_STRUCTSIZE 0x0
171#define KVE_OFFSET 0x18
172#define KVE_FLAGS 0x2c
173#define KVE_PROTECTION 0x38
179#define KINFO_VME_PROT_READ 0x00000001
180#define KINFO_VME_PROT_WRITE 0x00000002
181#define KINFO_VME_PROT_EXEC 0x00000004
186#define KINFO_VME_FLAG_COW 0x00000001
187#define KINFO_VME_FLAG_NEEDS_COPY 0x00000002
188#define KINFO_VME_FLAG_NOCOREDUMP 0x00000004
189#define KINFO_VME_FLAG_SUPER 0x00000008
190#define KINFO_VME_FLAG_GROWS_UP 0x00000010
191#define KINFO_VME_FLAG_GROWS_DOWN 0x00000020
203#define KF_STRUCTSIZE 0x0
207#define KF_OFFSET 0x18
208#define KF_VNODE_TYPE 0x20
209#define KF_SOCK_DOMAIN 0x24
210#define KF_SOCK_TYPE 0x28
211#define KF_SOCK_PROTOCOL 0x2c
212#define KF_SA_LOCAL 0x30
213#define KF_SA_PEER 0xb0
219#define KINFO_FILE_TYPE_VNODE 1
220#define KINFO_FILE_TYPE_SOCKET 2
221#define KINFO_FILE_TYPE_PIPE 3
222#define KINFO_FILE_TYPE_FIFO 4
223#define KINFO_FILE_TYPE_KQUEUE 5
224#define KINFO_FILE_TYPE_CRYPTO 6
225#define KINFO_FILE_TYPE_MQUEUE 7
226#define KINFO_FILE_TYPE_SHM 8
227#define KINFO_FILE_TYPE_SEM 9
228#define KINFO_FILE_TYPE_PTS 10
229#define KINFO_FILE_TYPE_PROCDESC 11
234#define KINFO_FILE_FD_TYPE_CWD -1
235#define KINFO_FILE_FD_TYPE_ROOT -2
236#define KINFO_FILE_FD_TYPE_JAIL -3
237#define KINFO_FILE_FD_TYPE_TRACE -4
238#define KINFO_FILE_FD_TYPE_TEXT -5
239#define KINFO_FILE_FD_TYPE_CTTY -6
244#define KINFO_FILE_FLAG_READ 0x00000001
245#define KINFO_FILE_FLAG_WRITE 0x00000002
246#define KINFO_FILE_FLAG_APPEND 0x00000004
247#define KINFO_FILE_FLAG_ASYNC 0x00000008
248#define KINFO_FILE_FLAG_FSYNC 0x00000010
249#define KINFO_FILE_FLAG_NONBLOCK 0x00000020
250#define KINFO_FILE_FLAG_DIRECT 0x00000040
251#define KINFO_FILE_FLAG_HASLOCK 0x00000080
252#define KINFO_FILE_FLAG_EXEC 0x00004000
257#define KINFO_FILE_VTYPE_VREG 1
258#define KINFO_FILE_VTYPE_VDIR 2
259#define KINFO_FILE_VTYPE_VCHR 4
260#define KINFO_FILE_VTYPE_VLNK 5
261#define KINFO_FILE_VTYPE_VSOCK 6
262#define KINFO_FILE_VTYPE_VFIFO 7
267#define FBSD_AF_UNIX 1
268#define FBSD_AF_INET 2
269#define FBSD_AF_INET6 28
274#define FBSD_SOCK_STREAM 1
275#define FBSD_SOCK_DGRAM 2
276#define FBSD_SOCK_SEQPACKET 5
281#define FBSD_IPPROTO_ICMP 1
282#define FBSD_IPPROTO_TCP 6
283#define FBSD_IPPROTO_UDP 17
284#define FBSD_IPPROTO_SCTP 132
384 .ki_tdev_freebsd11 = 0x44,
385 .ki_sigignore = 0x68,
404 .ki_rusage_ch = 0x278,
421 .ki_tdev_freebsd11 = 0x44,
422 .ki_sigignore = 0x68,
441 .ki_rusage_ch = 0x258,
458 .ki_tdev_freebsd11 = 0x64,
459 .ki_sigignore = 0x88,
478 .ki_rusage_ch = 0x2f0,
499 if (result ==
nullptr)
540 if (ptid.lwp () != 0)
541 return string_printf (
"LWP %ld", ptid.lwp ());
553 struct bfd_section *section;
556 if (thr->
ptid.lwp () != 0)
567 section = bfd_get_section_by_name (
core_bfd, section_name.
c_str ());
568 if (section != NULL && bfd_section_size (section) > 0)
571 size = bfd_section_size (section);
572 if (
size >
sizeof buf - 1)
573 size =
sizeof buf - 1;
574 if (bfd_get_section_contents (
core_bfd, section, buf, (file_ptr) 0,
584 if (strcmp (buf, elf_tdata (
core_bfd)->core->program) != 0)
597 ULONGEST offset, ULONGEST len)
605 if (offset > siginfo_size)
609 asection *section = bfd_get_section_by_name (
core_bfd, section_name.
c_str ());
614 if (!bfd_get_section_contents (
core_bfd, section, buf,
622 if (offset + len > siginfo_size)
623 len = siginfo_size - offset;
625 ULONGEST siginfo_offset;
631 if (!bfd_get_section_contents (
core_bfd, section, readbuf,
632 siginfo_offset + offset, len))
641 if (info->stop_signal () != GDB_SIGNAL_0
653static gdb::optional<gdb::byte_vector>
656 gdb::optional<gdb::byte_vector> buf =
658 if (!buf || buf->empty ())
664 gdb::byte_vector desc (
sizeof (structsize) + buf->size ());
665 memcpy (desc.data (), &structsize, sizeof (structsize));
666 std::copy (buf->begin (), buf->end (), desc.data () + sizeof (structsize));
673static gdb::unique_xmalloc_ptr<char>
676 gdb::unique_xmalloc_ptr<char> note_data;
677 Elf_Internal_Ehdr *i_ehdrp;
681 i_ehdrp = elf_elfheader (
obfd);
682 i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
689 std::string psargs = fname;
692 if (!infargs.empty ())
693 psargs +=
' ' + infargs;
695 note_data.reset (elfcore_write_prpsinfo (
obfd, note_data.release (),
705 catch (
const gdb_exception_error &e)
716 signalled_thr = curr_thr;
720 if (signalled_thr == NULL)
721 signalled_thr = curr_thr;
724 enum gdb_signal stop_signal = signalled_thr->
stop_signal ();
729 if (thr == signalled_thr)
738 gdb::optional<gdb::byte_vector> note_desc =
740 if (note_desc && !note_desc->empty ())
742 note_data.reset (elfcore_write_note (
obfd, note_data.release (),
744 NT_FREEBSD_PROCSTAT_AUXV,
746 note_desc->size ()));
753 if (note_desc && !note_desc->empty ())
755 note_data.reset (elfcore_write_note (
obfd, note_data.release (),
757 NT_FREEBSD_PROCSTAT_VMMAP,
759 note_desc->size ()));
765 if (note_desc && !note_desc->empty ())
767 note_data.reset (elfcore_write_note (
obfd, note_data.release (),
769 NT_FREEBSD_PROCSTAT_PSSTRINGS,
771 note_desc->size ()));
807 return int_string (kf_fd, 10, 1, 0, 0);
820 switch (kf_vnode_type)
836 char *str = get_print_cell ();
838 xsnprintf (str, PRINT_CELL_SIZE,
"vn:%d", kf_vnode_type);
863 return int_string (kf_type, 10, 1, 0, 0);
873 static char file_flags[10];
884 file_flags[9] =
'\0';
906 char *str = get_print_cell ();
908 xsnprintf (str, PRINT_CELL_SIZE,
"ip<%d>", protocol);
921 char buf[INET_ADDRSTRLEN];
923 if (inet_ntop (AF_INET, sin->
sin_addr, buf,
sizeof buf) ==
nullptr)
924 error (_(
"Failed to format IPv4 address"));
936 char buf[INET6_ADDRSTRLEN];
938 if (inet_ntop (AF_INET6, sin6->
sin6_addr, buf,
sizeof buf) ==
nullptr)
939 error (_(
"Failed to format IPv6 address"));
951 "FD",
"Type",
"Offset",
"Flags ",
"Name");
958 LONGEST kf_offset,
int kf_vnode_type,
959 int kf_sock_domain,
int kf_sock_type,
960 int kf_sock_protocol,
const void *kf_sa_local,
961 const void *kf_sa_peer,
const void *kf_path)
966 kf_offset > -1 ? hex_string (kf_offset) :
"-",
970 switch (kf_sock_domain)
974 switch (kf_sock_type)
1015 gdb_printf (
"%s",
reinterpret_cast<const char *
> (kf_path));
1025 = bfd_get_section_by_name (
core_bfd,
".note.freebsdcore.files");
1026 if (section == NULL)
1028 warning (_(
"unable to find open files in core file"));
1032 size_t note_size = bfd_section_size (section);
1034 error (_(
"malformed core note - too short for header"));
1036 gdb::def_vector<unsigned char> contents (
note_size);
1037 if (!bfd_get_section_contents (
core_bfd, section, contents.data (),
1039 error (_(
"could not get core note contents"));
1041 unsigned char *descdata = contents.data ();
1042 unsigned char *descend = descdata +
note_size;
1049 while (descdata +
KF_PATH < descend)
1053 error (_(
"malformed core note - file structure too small"));
1056 LONGEST fd = bfd_get_signed_32 (
core_bfd, descdata +
KF_FD);
1059 LONGEST vnode_type = bfd_get_signed_32 (
core_bfd,
1061 LONGEST sock_domain = bfd_get_signed_32 (
core_bfd,
1064 LONGEST sock_protocol = bfd_get_signed_32 (
core_bfd,
1067 sock_domain, sock_type, sock_protocol,
1071 descdata += structsize;
1081 static char vm_flags[9];
1102 gdb_printf (_(
"Mapped address spaces:\n\n"));
1108 " Size",
" Offset",
"Flags ",
"File");
1112 gdb_printf (
"\t%10s %10s %10s %10s %9s %s\n",
1115 " Size",
" Offset",
"Flags ",
"File");
1123 ULONGEST kve_end, ULONGEST kve_offset,
1124 int kve_flags,
int kve_protection,
1125 const void *kve_path)
1130 hex_string (kve_start),
1131 hex_string (kve_end),
1132 hex_string (kve_end - kve_start),
1133 hex_string (kve_offset),
1135 reinterpret_cast<const char *
> (kve_path));
1139 gdb_printf (
"\t%10s %10s %10s %10s %9s %s\n",
1140 hex_string (kve_start),
1141 hex_string (kve_end),
1142 hex_string (kve_end - kve_start),
1143 hex_string (kve_offset),
1145 reinterpret_cast<const char *
> (kve_path));
1155 unsigned char *descdata, *descend;
1158 section = bfd_get_section_by_name (
core_bfd,
".note.freebsdcore.vmmap");
1159 if (section == NULL)
1161 warning (_(
"unable to find mappings in core file"));
1167 error (_(
"malformed core note - too short for header"));
1169 gdb::def_vector<unsigned char> contents (
note_size);
1170 if (!bfd_get_section_contents (
core_bfd, section, contents.data (),
1172 error (_(
"could not get core note contents"));
1174 descdata = contents.data ();
1181 while (descdata +
KVE_PATH < descend)
1185 error (_(
"malformed core note - vmmap entry too small"));
1195 descdata += structsize;
1202static gdb::unique_xmalloc_ptr<char>
1206 unsigned char *descdata, *descend;
1209 section = bfd_get_section_by_name (
core_bfd,
".note.freebsdcore.files");
1210 if (section == NULL)
1215 error (_(
"malformed core note - too short for header"));
1217 gdb::def_vector<unsigned char> contents (
note_size);
1218 if (!bfd_get_section_contents (
core_bfd, section, contents.data (),
1220 error (_(
"could not get core note contents"));
1222 descdata = contents.data ();
1228 while (descdata +
KF_PATH < descend)
1230 ULONGEST structsize;
1234 error (_(
"malformed core note - file structure too small"));
1239 char *path = (
char *) descdata +
KF_PATH;
1240 return make_unique_xstrdup (path);
1243 descdata += structsize;
1252 LONGEST &sec, ULONGEST &usec)
1256 sec = bfd_get_signed_64 (
core_bfd, data);
1257 usec = bfd_get_64 (
core_bfd, data + 8);
1259 else if (bfd_get_arch (
core_bfd) == bfd_arch_i386)
1261 sec = bfd_get_signed_32 (
core_bfd, data);
1262 usec = bfd_get_32 (
core_bfd, data + 4);
1266 sec = bfd_get_signed_64 (
core_bfd, data);
1267 usec = bfd_get_32 (
core_bfd, data + 8);
1279 (
unsigned int) bfd_get_32 (
core_bfd, sigset + i * 4));
1290 unsigned char *descdata;
1291 int addr_bit, long_bit;
1296 section = bfd_get_section_by_name (
core_bfd,
".note.freebsdcore.proc");
1297 if (section == NULL)
1299 warning (_(
"unable to find process info in core file"));
1306 else if (bfd_get_arch (
core_bfd) == bfd_arch_i386)
1320 + long_bit / TARGET_CHAR_BIT))
1321 error (_(
"malformed core note - too short"));
1323 gdb::def_vector<unsigned char> contents (
note_size);
1324 if (!bfd_get_section_contents (
core_bfd, section, contents.data (),
1326 error (_(
"could not get core note contents"));
1328 descdata = contents.data ();
1336 warning (_(
"unsupported process information in core file"));
1362 gdb_printf (
"User IDs (real, effective, saved): %s %s %s\n",
1366 gdb_printf (
"Group IDs (real, effective, saved): %s %s %s\n",
1372 for (
int i = 0; i < ngroups; i++)
1379 gdb_printf (
"Minor faults (no memory page): %s\n", pulongest (
value));
1385 gdb_printf (
"Major faults (memory page faults): %s\n",
1401 gdb_printf (
"utime, children: %s.%06d\n", plongest (sec), (
int)
value);
1405 gdb_printf (
"stime, children: %s.%06d\n", plongest (sec), (
int)
value);
1411 pulongest (bfd_get (addr_bit,
core_bfd,
1412 descdata + kp->
ki_size) / 1024));
1414 pulongest (bfd_get (addr_bit,
core_bfd,
1417 pulongest (bfd_get (addr_bit,
core_bfd,
1420 pulongest (bfd_get (addr_bit,
core_bfd,
1423 pulongest (bfd_get (addr_bit,
core_bfd,
1426 pulongest (bfd_get (long_bit,
core_bfd,
1439 bool do_cmdline =
false;
1440 bool do_cwd =
false;
1441 bool do_exe =
false;
1442 bool do_files =
false;
1443 bool do_mappings =
false;
1444 bool do_status =
false;
1491 const char *cmdline;
1493 cmdline = bfd_core_file_failing_command (
core_bfd);
1497 warning (_(
"Command line unavailable"));
1501 gdb::unique_xmalloc_ptr<char> cwd =
1506 warning (_(
"unable to read current working directory"));
1510 gdb::unique_xmalloc_ptr<char> exe =
1515 warning (_(
"unable to read executable path name"));
1529 CORE_ADDR
type, CORE_ADDR val)
1531 const char *
name =
"???";
1532 const char *description =
"";
1554#define _TAGNAME(tag) #tag
1555#define TAGNAME(tag) _TAGNAME(AT_##tag)
1556#define TAG(tag, text, kind) \
1557 case AT_FREEBSD_##tag: name = TAGNAME(tag); description = text; format = kind; break
1591 struct type *int_type, *int32_type, *uint32_type, *long_type, *void_ptr_type;
1592 struct type *uid_type, *pid_type;
1593 struct type *sigval_type, *reason_type;
1594 struct type *siginfo_type;
1612 sigval_type->
set_name (xstrdup (
"sigval"));
1617 pid_type = alloc.
new_type (TYPE_CODE_TYPEDEF,
1618 int32_type->
length () * TARGET_CHAR_BIT,
1624 uid_type = alloc.
new_type (TYPE_CODE_TYPEDEF,
1625 uint32_type->
length () * TARGET_CHAR_BIT,
1663 siginfo_type->
set_name (xstrdup (
"siginfo"));
1676 return siginfo_type;
1681static enum gdb_signal
1687 return GDB_SIGNAL_0;
1690 return GDB_SIGNAL_HUP;
1693 return GDB_SIGNAL_INT;
1696 return GDB_SIGNAL_QUIT;
1699 return GDB_SIGNAL_ILL;
1702 return GDB_SIGNAL_TRAP;
1705 return GDB_SIGNAL_ABRT;
1708 return GDB_SIGNAL_EMT;
1711 return GDB_SIGNAL_FPE;
1714 return GDB_SIGNAL_KILL;
1717 return GDB_SIGNAL_BUS;
1720 return GDB_SIGNAL_SEGV;
1723 return GDB_SIGNAL_SYS;
1726 return GDB_SIGNAL_PIPE;
1729 return GDB_SIGNAL_ALRM;
1732 return GDB_SIGNAL_TERM;
1735 return GDB_SIGNAL_URG;
1738 return GDB_SIGNAL_STOP;
1741 return GDB_SIGNAL_TSTP;
1744 return GDB_SIGNAL_CONT;
1747 return GDB_SIGNAL_CHLD;
1750 return GDB_SIGNAL_TTIN;
1753 return GDB_SIGNAL_TTOU;
1756 return GDB_SIGNAL_IO;
1759 return GDB_SIGNAL_XCPU;
1762 return GDB_SIGNAL_XFSZ;
1765 return GDB_SIGNAL_VTALRM;
1768 return GDB_SIGNAL_PROF;
1771 return GDB_SIGNAL_WINCH;
1774 return GDB_SIGNAL_INFO;
1777 return GDB_SIGNAL_USR1;
1780 return GDB_SIGNAL_USR2;
1784 return GDB_SIGNAL_LWP;
1787 return GDB_SIGNAL_LIBRT;
1794 return (
enum gdb_signal) ((int) GDB_SIGNAL_REALTIME_65 + offset);
1797 return GDB_SIGNAL_UNKNOWN;
1804 enum gdb_signal signal)
1811 case GDB_SIGNAL_HUP:
1814 case GDB_SIGNAL_INT:
1817 case GDB_SIGNAL_QUIT:
1820 case GDB_SIGNAL_ILL:
1823 case GDB_SIGNAL_TRAP:
1826 case GDB_SIGNAL_ABRT:
1829 case GDB_SIGNAL_EMT:
1832 case GDB_SIGNAL_FPE:
1835 case GDB_SIGNAL_KILL:
1838 case GDB_SIGNAL_BUS:
1841 case GDB_SIGNAL_SEGV:
1844 case GDB_SIGNAL_SYS:
1847 case GDB_SIGNAL_PIPE:
1850 case GDB_SIGNAL_ALRM:
1853 case GDB_SIGNAL_TERM:
1856 case GDB_SIGNAL_URG:
1859 case GDB_SIGNAL_STOP:
1862 case GDB_SIGNAL_TSTP:
1865 case GDB_SIGNAL_CONT:
1868 case GDB_SIGNAL_CHLD:
1871 case GDB_SIGNAL_TTIN:
1874 case GDB_SIGNAL_TTOU:
1880 case GDB_SIGNAL_XCPU:
1883 case GDB_SIGNAL_XFSZ:
1886 case GDB_SIGNAL_VTALRM:
1889 case GDB_SIGNAL_PROF:
1892 case GDB_SIGNAL_WINCH:
1895 case GDB_SIGNAL_INFO:
1898 case GDB_SIGNAL_USR1:
1901 case GDB_SIGNAL_USR2:
1904 case GDB_SIGNAL_LWP:
1907 case GDB_SIGNAL_LIBRT:
1911 if (signal >= GDB_SIGNAL_REALTIME_65
1912 && signal <= GDB_SIGNAL_REALTIME_126)
1914 int offset = signal - GDB_SIGNAL_REALTIME_65;
1934 internal_error (_(
"fbsd_get_sycall_number called"));
1944 error (_(
"Unable to resolve symbol '%s'"),
name);
1948 error (_(
"Unable to read value of '%s'"),
name);
1962 struct symbol *obj_entry_sym
1965 if (obj_entry_sym == NULL)
1966 error (_(
"Unable to find Struct_Obj_Entry symbol"));
1968 "linkmap", 0).
offset / 8;
1970 "tlsindex", 0).
offset / 8;
1971 data->rtld_offsets_valid =
true;
1974 catch (
const gdb_exception_error &e)
1976 data->off_linkmap = -1;
1985 "_thread_off_linkmap");
1987 "_thread_off_tlsindex");
1988 data->rtld_offsets_valid =
true;
1991 catch (
const gdb_exception_error &e)
1993 data->off_linkmap = -1;
2005 if (!data->rtld_offsets_valid)
2008 if (data->off_linkmap == -1)
2009 throw_error (TLS_GENERIC_ERROR,
2010 _(
"Cannot fetch runtime linker structure offsets"));
2014 CORE_ADDR tlsindex_addr =
lm_addr - data->off_linkmap + data->off_tlsindex;
2018 throw_error (TLS_GENERIC_ERROR,
2019 _(
"Cannot find thread-local variables on this target"));
2028 CORE_ADDR
lm_addr, CORE_ADDR offset)
2034 throw_error (TLS_GENERIC_ERROR,
2035 _(
"Cannot find thread-local variables on this target"));
2043 throw_error (TLS_GENERIC_ERROR,
2044 _(
"Cannot find thread-local variables on this target"));
2047 return addr + offset;
2071 return _(
"Sent by kill()");
2073 return _(
"Sent by sigqueue()");
2075 return _(
"Timer expired");
2077 return _(
"Asynchronous I/O request completed");
2079 return _(
"Message arrived on empty message queue");
2081 return _(
"Sent by kernel");
2083 return _(
"Sent by thr_kill()");
2088 case GDB_SIGNAL_ILL:
2092 return _(
"Illegal opcode");
2094 return _(
"Illegal operand");
2096 return _(
"Illegal addressing mode");
2098 return _(
"Illegal trap");
2100 return _(
"Privileged opcode");
2102 return _(
"Privileged register");
2104 return _(
"Coprocessor error");
2106 return _(
"Internal stack error");
2109 case GDB_SIGNAL_BUS:
2113 return _(
"Invalid address alignment");
2115 return _(
"Address not present");
2117 return _(
"Object-specific hardware error");
2119 return _(
"Out of memory");
2122 case GDB_SIGNAL_SEGV:
2126 return _(
"Address not mapped to object");
2128 return _(
"Invalid permissions for mapped object");
2130 return _(
"PKU violation");
2133 case GDB_SIGNAL_FPE:
2137 return _(
"Integer overflow");
2139 return _(
"Integer divide by zero");
2141 return _(
"Floating point divide by zero");
2143 return _(
"Floating point overflow");
2145 return _(
"Floating point underflow");
2147 return _(
"Floating point inexact result");
2149 return _(
"Invalid floating point operation");
2151 return _(
"Subscript out of range");
2154 case GDB_SIGNAL_TRAP:
2158 return _(
"Breakpoint");
2160 return _(
"Trace trap");
2162 return _(
"DTrace-induced trap");
2164 return _(
"Capability violation");
2167 case GDB_SIGNAL_CHLD:
2171 return _(
"Child has exited");
2173 return _(
"Child has terminated abnormally");
2175 return _(
"Child has dumped core");
2177 return _(
"Traced child has trapped");
2179 return _(
"Child has stopped");
2181 return _(
"Stopped child has continued");
2184 case GDB_SIGNAL_POLL:
2188 return _(
"Data input available");
2190 return _(
"Output buffers available");
2192 return _(
"Input message available");
2194 return _(
"I/O error");
2196 return _(
"High priority input available");
2198 return _(
"Device disconnected");
2210 enum gdb_signal siggnal)
2223 catch (
const gdb_exception_error &e)
2229 if (meaning ==
nullptr)
2232 uiout->
text (
".\n");
2240 uiout->
text (
" from pid ");
2242 uiout->
text (
" and user ");
2246 uiout->
text (
": timerid ");
2250 uiout->
text (
": message queue ");
2257 if (siggnal == GDB_SIGNAL_CHLD)
2259 uiout->
text (
": pid ");
2261 uiout->
text (
", uid ");
2265 uiout->
text (
", exit status ");
2270 uiout->
text (
", signal ");
2285 unsigned char *descdata = entries;
2286 unsigned char *descend = descdata + len;
2291 while (descdata +
KVE_PATH < descend)
2306 descdata += structsize;
2323 asection *section = bfd_get_section_by_name (
core_bfd,
2324 ".note.freebsdcore.vmmap");
2325 if (section ==
nullptr)
2328 size_t note_size = bfd_section_size (section);
2332 gdb::def_vector<unsigned char> contents (
note_size);
2333 if (!bfd_get_section_contents (
core_bfd, section, contents.data (),
2343 gdb::optional<gdb::byte_vector> buf =
2346 if (!buf || buf->empty ())
2362 if (data->vdso_range_p == 0)
2365 data->vdso_range_p = 1;
2367 data->vdso_range_p = -1;
2370 if (data->vdso_range_p < 0)
2373 *
range = data->vdso_range;
int target_auxv_search(const gdb::byte_vector &auxv, target_ops *ops, gdbarch *gdbarch, CORE_ADDR match, CORE_ADDR *valp)
void fprint_auxv_entry(struct ui_file *file, const char *name, const char *description, enum auxv_format format, CORE_ADDR type, CORE_ADDR val)
void default_print_auxv_entry(struct gdbarch *gdbarch, struct ui_file *file, CORE_ADDR type, CORE_ADDR val)
const std::string & args() const
inf_non_exited_threads_range non_exited_threads()
gdb_signal stop_signal() const
const char * c_str() const
void field_string(const char *fldname, const char *string, const ui_file_style &style=ui_file_style())
void text(const char *string)
const char * get_exec_file(int err)
static LONGEST extract_signed_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
static ULONGEST extract_unsigned_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
LONGEST parse_and_eval_long(const char *exp)
void exception_print(struct ui_file *file, const struct gdb_exception &e)
#define KINFO_FILE_TYPE_PROCDESC
static void fbsd_fetch_rtld_offsets(struct gdbarch *gdbarch, struct fbsd_pspace_data *data)
#define LWPINFO32_PL_SIGINFO
#define KINFO_VME_FLAG_SUPER
#define KINFO_VME_PROT_EXEC
static const char * fbsd_vm_map_entry_flags(int kve_flags, int kve_protection)
static void fbsd_core_info_proc(struct gdbarch *gdbarch, const char *args, enum info_proc_what what)
const struct kinfo_proc_layout kinfo_proc_layout_i386
#define KINFO_VME_FLAG_GROWS_UP
static void fbsd_core_info_proc_status(struct gdbarch *gdbarch)
static struct type * fbsd_get_siginfo_type(struct gdbarch *gdbarch)
#define KINFO_FILE_VTYPE_VFIFO
#define KINFO_FILE_TYPE_SOCKET
const struct kinfo_proc_layout kinfo_proc_layout_32
static const char * fbsd_file_flags(int kf_flags)
CORE_ADDR fbsd_get_thread_local_address(struct gdbarch *gdbarch, CORE_ADDR dtv_addr, CORE_ADDR lm_addr, CORE_ADDR offset)
static void fbsd_core_info_proc_mappings(struct gdbarch *gdbarch)
#define KINFO_FILE_FD_TYPE_TRACE
static LONGEST fbsd_get_syscall_number(struct gdbarch *gdbarch, thread_info *thread)
#define KINFO_FILE_FLAG_FSYNC
#define KINFO_FILE_VTYPE_VLNK
static gdb::unique_xmalloc_ptr< char > fbsd_core_vnode_path(struct gdbarch *gdbarch, int fd)
void fbsd_info_proc_files_entry(int kf_type, int kf_fd, int kf_flags, LONGEST kf_offset, int kf_vnode_type, int kf_sock_domain, int kf_sock_type, int kf_sock_protocol, const void *kf_sa_local, const void *kf_sa_peer, const void *kf_path)
static gdb::unique_xmalloc_ptr< char > fbsd_make_corefile_notes(struct gdbarch *gdbarch, bfd *obfd, int *note_size)
#define FBSD_SOCK_SEQPACKET
CORE_ADDR fbsd_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
static LONGEST fbsd_read_integer_by_name(struct gdbarch *gdbarch, const char *name)
#define KINFO_FILE_FD_TYPE_TEXT
static const char * fbsd_signal_cause(enum gdb_signal siggnal, int code)
#define KINFO_FILE_TYPE_PIPE
#define TAG(tag, text, kind)
#define KINFO_FILE_VTYPE_VCHR
static const char * fbsd_core_thread_name(struct gdbarch *gdbarch, struct thread_info *thr)
static LONGEST fbsd_get_tls_index(struct gdbarch *gdbarch, CORE_ADDR lm_addr)
static int fbsd_gdb_signal_to_target(struct gdbarch *gdbarch, enum gdb_signal signal)
#define KINFO_FILE_FLAG_WRITE
static enum gdb_signal fbsd_gdb_signal_from_target(struct gdbarch *gdbarch, int signal)
static void fbsd_report_signal_info(struct gdbarch *gdbarch, struct ui_out *uiout, enum gdb_signal siggnal)
static const char * fbsd_file_fd(int kf_fd)
static void fbsd_print_sigset(const char *descr, unsigned char *sigset)
static ULONGEST fbsd_vmmap_length(struct gdbarch *gdbarch, unsigned char *entries, size_t len, CORE_ADDR addr)
#define KINFO_FILE_FLAG_ASYNC
#define KINFO_FILE_VTYPE_VSOCK
#define KINFO_FILE_FD_TYPE_JAIL
static struct fbsd_gdbarch_data * get_fbsd_gdbarch_data(struct gdbarch *gdbarch)
void fbsd_info_proc_mappings_entry(int addr_bit, ULONGEST kve_start, ULONGEST kve_end, ULONGEST kve_offset, int kve_flags, int kve_protection, const void *kve_path)
#define KINFO_FILE_VTYPE_VREG
#define FBSD_IPPROTO_ICMP
#define KINFO_FILE_TYPE_CRYPTO
static bool fbsd_vdso_range(struct gdbarch *gdbarch, struct mem_range *range)
#define FBSD_CLD_CONTINUED
#define KINFO_FILE_TYPE_SEM
static gdb::optional< gdb::byte_vector > fbsd_make_note_desc(enum target_object object, uint32_t structsize)
#define KINFO_VME_FLAG_COW
#define KINFO_FILE_TYPE_PTS
static struct fbsd_pspace_data * get_fbsd_pspace_data(struct program_space *pspace)
void fbsd_info_proc_mappings_header(int addr_bit)
static void fbsd_core_fetch_timeval(struct gdbarch *gdbarch, unsigned char *data, LONGEST &sec, ULONGEST &usec)
#define KINFO_FILE_FD_TYPE_CTTY
#define KINFO_FILE_FD_TYPE_CWD
#define FBSD_IPPROTO_SCTP
#define KINFO_VME_PROT_READ
const struct kinfo_proc_layout kinfo_proc_layout_64
#define KINFO_FILE_FD_TYPE_ROOT
#define KINFO_VME_FLAG_GROWS_DOWN
#define KINFO_VME_PROT_WRITE
#define KINFO_FILE_TYPE_KQUEUE
#define KINFO_FILE_FLAG_DIRECT
void fbsd_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static int fbsd_vsyscall_range(struct gdbarch *gdbarch, struct mem_range *range)
static const registry< gdbarch >::key< fbsd_gdbarch_data > fbsd_gdbarch_data_handle
#define KINFO_FILE_FLAG_NONBLOCK
#define KINFO_VME_FLAG_NEEDS_COPY
#define KINFO_FILE_FLAG_HASLOCK
#define KINFO_FILE_TYPE_VNODE
static void fbsd_print_sockaddr_in6(const void *sockaddr)
#define KINFO_FILE_VTYPE_VDIR
void fbsd_info_proc_files_header()
#define KINFO_FILE_FLAG_READ
static const registry< program_space >::key< fbsd_pspace_data > fbsd_pspace_data_handle
#define KINFO_FILE_FLAG_APPEND
static void fbsd_print_sockaddr_in(const void *sockaddr)
static int find_signalled_thread(struct thread_info *info, void *data)
static void fbsd_print_auxv_entry(struct gdbarch *gdbarch, struct ui_file *file, CORE_ADDR type, CORE_ADDR val)
#define KINFO_FILE_TYPE_SHM
static const char * fbsd_file_type(int kf_type, int kf_vnode_type)
static LONGEST fbsd_core_xfer_siginfo(struct gdbarch *gdbarch, gdb_byte *readbuf, ULONGEST offset, ULONGEST len)
static const char * fbsd_ipproto(int protocol)
static void fbsd_core_info_proc_files(struct gdbarch *gdbarch)
#define LWPINFO64_PL_SIGINFO
#define KINFO_FILE_FLAG_EXEC
#define KINFO_FILE_TYPE_FIFO
static std::string fbsd_core_pid_to_str(struct gdbarch *gdbarch, ptid_t ptid)
#define KINFO_FILE_TYPE_MQUEUE
CORE_ADDR frame_unwind_caller_pc(frame_info_ptr this_frame)
frame_info_ptr get_current_frame(void)
void gcore_elf_make_tdesc_note(struct gdbarch *gdbarch, bfd *obfd, gdb::unique_xmalloc_ptr< char > *note_data, int *note_size)
void gcore_elf_build_thread_register_notes(struct gdbarch *gdbarch, struct thread_info *info, gdb_signal stop_signal, bfd *obfd, gdb::unique_xmalloc_ptr< char > *note_data, int *note_size)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
CORE_ADDR gdbarch_pointer_to_address(struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf)
int gdbarch_addr_bit(struct gdbarch *gdbarch)
void set_gdbarch_core_info_proc(struct gdbarch *gdbarch, gdbarch_core_info_proc_ftype *core_info_proc)
void set_gdbarch_get_syscall_number(struct gdbarch *gdbarch, gdbarch_get_syscall_number_ftype *get_syscall_number)
void set_gdbarch_core_xfer_siginfo(struct gdbarch *gdbarch, gdbarch_core_xfer_siginfo_ftype *core_xfer_siginfo)
void set_gdbarch_vsyscall_range(struct gdbarch *gdbarch, gdbarch_vsyscall_range_ftype *vsyscall_range)
void set_gdbarch_get_siginfo_type(struct gdbarch *gdbarch, gdbarch_get_siginfo_type_ftype *get_siginfo_type)
int gdbarch_int_bit(struct gdbarch *gdbarch)
void set_gdbarch_gdb_signal_from_target(struct gdbarch *gdbarch, gdbarch_gdb_signal_from_target_ftype *gdb_signal_from_target)
void set_gdbarch_core_pid_to_str(struct gdbarch *gdbarch, gdbarch_core_pid_to_str_ftype *core_pid_to_str)
void set_gdbarch_core_thread_name(struct gdbarch *gdbarch, gdbarch_core_thread_name_ftype *core_thread_name)
void set_gdbarch_report_signal_info(struct gdbarch *gdbarch, gdbarch_report_signal_info_ftype *report_signal_info)
void set_gdbarch_gdb_signal_to_target(struct gdbarch *gdbarch, gdbarch_gdb_signal_to_target_ftype *gdb_signal_to_target)
bool gdbarch_iterate_over_regset_sections_p(struct gdbarch *gdbarch)
void set_gdbarch_make_corefile_notes(struct gdbarch *gdbarch, gdbarch_make_corefile_notes_ftype *make_corefile_notes)
void set_gdbarch_print_auxv_entry(struct gdbarch *gdbarch, gdbarch_print_auxv_entry_ftype *print_auxv_entry)
int gdbarch_long_bit(struct gdbarch *gdbarch)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver)
void update_thread_list(void)
struct thread_info * inferior_thread(void)
struct thread_info * iterate_over_threads(thread_callback_func, void *)
struct type * lookup_pointer_type(struct type *type)
struct type * init_integer_type(type_allocator &alloc, int bit, int unsigned_p, const char *name)
struct_elt lookup_struct_elt(struct type *type, const char *name, int noerr)
struct type * arch_composite_type(struct gdbarch *gdbarch, const char *name, enum type_code code)
struct type * init_vector_type(struct type *elt_type, int n)
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
void append_composite_type_field(struct type *t, const char *name, struct type *field)
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
struct inferior * current_inferior(void)
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
struct bound_minimal_symbol lookup_bound_minimal_symbol(const char *name)
static CORE_ADDR lm_addr(struct so_list *so)
struct program_space * current_program_space
CORE_ADDR value_address() const
struct minimal_symbol * minsym
struct type * builtin_data_ptr
struct type * siginfo_type
struct type * type() const
void set_target_type(struct type *target_type)
void set_name(const char *name)
void set_target_is_stub(bool target_is_stub)
struct block_symbol lookup_symbol_in_language(const char *name, const struct block *block, const domain_enum domain, enum language lang, struct field_of_this_result *is_a_field_of_this)
gdbarch * target_thread_architecture(ptid_t ptid)
bool target_has_execution(inferior *inf)
gdb::optional< gdb::byte_vector > target_read_alloc(struct target_ops *ops, enum target_object object, const char *annex)
std::string normal_pid_to_str(ptid_t ptid)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
@ TARGET_OBJECT_FREEBSD_PS_STRINGS
@ TARGET_OBJECT_FREEBSD_VMMAP
void gdb_printf(struct ui_file *stream, const char *format,...)
void set_xml_syscall_file_name(struct gdbarch *gdbarch, const char *name)