Wolfgang Thallergcc16 merge934c3885 months agoHistory
572 lines · 25.0 KB · C++
RawDownload
/* Copyright (C) 2021-2026 Free Software Foundation, Inc.   Contributed by Oracle.    This file is part of GNU Binutils.    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, 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, write to the Free Software   Foundation, 51 Franklin Street - Fifth Floor, Boston,   MA 02110-1301, USA.  */ #include "config.h"#include <string.h>#include <stdlib.h>#include <sys/param.h> #include "gp-defs.h"#include "Command.h"#include "DbeSession.h"#include "MemorySpace.h"#include "i18n.h"#include "StringBuilder.h" const char *Command::DEFAULT_CMD = "default";   // token for defaultconst char *Command::ALL_CMD     = "all";       // token for allconst char *Command::ANY_CMD     = "any";       // token for anyconst char *Command::NONE_CMD    = "none";      // token for noneconst char *Command::HWC_CMD     = "hwc";       // token for all HWCconst char *Command::BIT_CMD     = "bit";  // token for any bit-generated metricconst char *Command::DEFAULT_METRICS = "ei.user:name";  // if no .rc files readconst char *Command::DEFAULT_SORT    = "e.user:name";   // if no .rc files read static char *fhdr, *cchdr, *lahdr, *iohdr, *sdhdr, *lsthdr, *lohdr;static char *methdr, *othdr, *mischdr, *deflthdr, *andeflthdr;static char *selhdr, *filthdr, *outhdr, *exphdr, *obj_allhdr;static char *unsuphdr, *indxobjhdr;static char *helphdr, *rahdr, *ddhdr, *typehdr, *typehdr2; //  This is the list of commands, which governs the parser scan, as//	well as the help command.//  A line with the tag NO_CMD is skipped in parsing, but is used//	to provide subheadings for the help//  The HELP line must be the last one in the list of commands//	to be shown by "-help"; The HHELP line must be the//	last one to be shown by "-xhelp"//  The LAST_CMD line must be the last one recognized by the parser////  The ordering of this list should match the ordering in the man//	page, and the subheader lines should match the subheadings in//	the man page. static char *desc[LAST_CMD]; static Cmdtable cmd_lst[] = {   // list of commands  // User Commands  { NO_CMD, "", NULL, NULL, 0, &fhdr},  { FUNCS, "functions", NULL, NULL, 0, &desc[FUNCS]},  { METRICS, "metrics", NULL, "metric_spec", 1, &desc[METRICS]},  { SORT, "sort", NULL, "metric_spec", 1, &desc[SORT]},  { FDETAIL, "fsummary", NULL, NULL, 0, &desc[FDETAIL]},  { FSINGLE, "fsingle", NULL, "function_name #", 2, &desc[FSINGLE]},   { NO_CMD, "", NULL, NULL, 0, &cchdr},  { GPROF, "callers-callees", "gprof", NULL, 0, &desc[GPROF]},  { CSINGLE, "csingle", NULL, "function_name #", 2, &desc[CSINGLE]},  { CPREPEND, "cprepend", NULL, "function_name #", 2, &desc[CPREPEND]},  { CAPPEND, "cappend", NULL, "function_name #", 2, &desc[CAPPEND]},  { CRMFIRST, "crmfirst", NULL, NULL, 0, &desc[CRMFIRST]},  { CRMLAST, "crmlast", NULL, NULL, 0, &desc[CRMLAST]},  { CALLTREE, "calltree", "ctree", NULL, 0, &desc[CALLTREE]},   { NO_CMD, "", NULL, NULL, 0, &lahdr},  { LEAKS, "leaks", NULL, NULL, 0, &desc[LEAKS]},  { ALLOCS, "allocs", NULL, NULL, 0, &desc[ALLOCS]},  { HEAP, "heap", NULL, NULL, 0, &desc[HEAP]},  { HEAPSTAT, "heapstat", NULL, NULL, 0, &desc[HEAPSTAT]},   { NO_CMD, "", NULL, NULL, 0, &iohdr},  { IOACTIVITY, "ioactivity", NULL, NULL, 0, &desc[IOACTIVITY]},  { IOVFD, "iodetail", NULL, NULL, 0, &desc[IOVFD]},  { IOCALLSTACK, "iocallstack", NULL, NULL, 0, &desc[IOCALLSTACK]},  { IOSTAT, "iostat", NULL, NULL, 0, &desc[IOSTAT]},   // PC, line, source and dissassembly commands  { NO_CMD, "", NULL, NULL, 0, &sdhdr},  { HOTPCS, "pcs", NULL, NULL, 0, &desc[HOTPCS]},  { PDETAIL, "psummary", NULL, NULL, 0, &desc[PDETAIL]},  { HOTLINES, "lines", NULL, NULL, 0, &desc[HOTLINES]},  { LDETAIL, "lsummary", NULL, NULL, 0, &desc[LDETAIL]},  { SOURCE, "source", NULL, "func/file #", 2, &desc[SOURCE]},  { DISASM, "disasm", NULL, "func/file #", 2, &desc[DISASM]},  { SCOMPCOM, "scc", NULL, "com_spec", 1, &desc[SCOMPCOM]},  { STHRESH, "sthresh", NULL, "value", 1, &desc[STHRESH]},  { DCOMPCOM, "dcc", NULL, "com_spec", 1, &desc[DCOMPCOM]},  { COMPCOM, "cc", NULL, "com_spec", 1, &desc[COMPCOM]},  { DTHRESH, "dthresh", NULL, "value", 1, &desc[DTHRESH]},  { SETPATH, "setpath", NULL, "path_list", 1, &desc[SETPATH]},  { ADDPATH, "addpath", NULL, "path_list", 1, &desc[ADDPATH]},  { PATHMAP, "pathmap", NULL, "old_prefix new_prefix", 2, &desc[PATHMAP]},  { LIBDIRS, "preload_libdirs", NULL, NULL, 1, &desc[PATHMAP]},   // Index Object commands  { NO_CMD, "", NULL, NULL, 0, &indxobjhdr},  { INDXOBJ, "indxobj", NULL, "type", 1, &desc[INDXOBJ]},  { INDXOBJLIST, "indxobj_list", NULL, NULL, 0, &desc[INDXOBJLIST]},  { INDXOBJDEF, "indxobj_define", NULL, "type \"index-expr\"", 2, &desc[INDXOBJDEF]},   // Deadlock detection commands  { NO_CMD, "", NULL, NULL, 0, &ddhdr},  { DEADLOCK_EVNTS, "deadlocks", NULL, NULL, 0, &desc[DEADLOCK_EVNTS]},  { DEADLOCK_SUM, "dsummary", NULL, "{deadlock_id|all}", 1, &desc[DEADLOCK_SUM]},   { NO_CMD, "", NULL, NULL, 0, &lsthdr},  { EXP_LIST, "experiment_list", "exp_list", NULL, 0, &desc[EXP_LIST]},  { SAMPLE_LIST, "sample_list", NULL, NULL, 0, &desc[SAMPLE_LIST]},  { LWP_LIST, "lwp_list", NULL, NULL, 0, &desc[LWP_LIST]},  { THREAD_LIST, "thread_list", NULL, NULL, 0, &desc[THREAD_LIST]},  { CPU_LIST, "cpu_list", NULL, NULL, 0, &desc[CPU_LIST]},   { NO_CMD, "", NULL, NULL, 0, &filthdr},  { FILTERS, "filters", NULL, "filter-specification", 1, &desc[FILTERS]},  { DESCRIBE, "describe", NULL, NULL, 0, &desc[DESCRIBE]},   { NO_CMD, "", NULL, NULL, 0, &selhdr},  { SAMPLE_SELECT, "sample_select", NULL, "sample_spec", 1, &desc[SAMPLE_SELECT]},  { LWP_SELECT, "lwp_select", NULL, "lwp_spec", 1, &desc[LWP_SELECT]},  { THREAD_SELECT, "thread_select", NULL, "thread_spec", 1, &desc[THREAD_SELECT]},  { CPU_SELECT, "cpu_select", NULL, "cpu_spec", 1, &desc[CPU_SELECT]},   { NO_CMD, "", NULL, NULL, 0, &lohdr},  { OBJECT_LIST, "object_list", NULL, NULL, 0, &desc[OBJECT_LIST]},  { OBJECT_SHOW, "object_show", NULL, "obj1,...", 1, &desc[OBJECT_SHOW]},  { OBJECT_HIDE, "object_hide", NULL, "obj1,...", 1, &desc[OBJECT_HIDE]},  { OBJECT_API, "object_api", NULL, "obj1,...", 1, &desc[OBJECT_API]},  { DUMMY_CMD, " ", NULL, NULL, 0, &obj_allhdr},  { OBJECTS_DEFAULT, "objects_default", NULL, NULL, 1, &desc[OBJECTS_DEFAULT]},   { OBJECT_SELECT, "object_select", NULL, "obj1,...", 1, &desc[OBJECT_SELECT]},   { NO_CMD, "", NULL, NULL, 0, &methdr},  { METRIC_LIST, "metric_list", NULL, NULL, 0, &desc[METRIC_LIST]},  { GMETRIC_LIST, "cmetric_list", "gmetric_list", NULL, 0, &desc[GMETRIC_LIST]},  { INDX_METRIC_LIST, "indx_metric_list", NULL, NULL, 1, &desc[INDX_METRIC_LIST]},   { NO_CMD, "", NULL, NULL, 0, &outhdr},  { OUTFILE, "outfile", NULL, "filename", 1, &desc[OUTFILE]},  { APPENDFILE, "appendfile", NULL, "filename", 1, &desc[APPENDFILE]},  { LIMIT, "limit", NULL, "n", 1, &desc[LIMIT]},  { NAMEFMT, "name", NULL, "{long|short|mangled}[:{soname|nosoname}]", 1, &desc[NAMEFMT]},  { VIEWMODE, "viewmode", NULL, "{user|expert|machine}", 1, &desc[VIEWMODE]},  { COMPARE, "compare", NULL, "{on|off|delta|ratio}", 1, &desc[COMPARE]},  { PRINTMODE, "printmode", NULL, "string", 1, &desc[PRINTMODE]},   { NO_CMD, "", NULL, NULL, 0, &othdr},  { HEADER, "header", NULL, "exp_id", 1, &desc[HEADER]},  { OBJECTS, "objects", NULL, NULL, 0, &desc[OBJECTS]},  { OVERVIEW_NEW, "overview", NULL, NULL, 0, &desc[OVERVIEW_NEW]},  { SAMPLE_DETAIL, "sample_detail", NULL, "exp_id", 1, &desc[SAMPLE_DETAIL]},  { STATISTICS, "statistics", NULL, "exp_id", 1, &desc[STATISTICS]},   { NO_CMD, "", NULL, NULL, 0, &exphdr},  { OPEN_EXP, "open_exp", NULL, "experiment", 1, &desc[OPEN_EXP]},  { ADD_EXP, "add_exp", NULL, "experiment", 1, &desc[ADD_EXP]},  { DROP_EXP, "drop_exp", NULL, "experiment", 1, &desc[DROP_EXP]},   { NO_CMD, "", NULL, NULL, 0, &deflthdr},  { DMETRICS, "dmetrics", NULL, "metric_spec", 1, &desc[DMETRICS]},  { DSORT, "dsort", NULL, "metric_spec", 1, &desc[DSORT]},  { EN_DESC, "en_desc", NULL, "{on|off|=<regex>}", 1, &desc[EN_DESC]},   { NO_CMD, "", NULL, NULL, 0, &andeflthdr},  { TLMODE, "tlmode", NULL, "tl_mode", 1, &desc[TLMODE]},  { TLDATA, "tldata", NULL, "tl_data", 1, &desc[TLDATA]},  { TABS, "tabs", NULL, "tablist", 1, &desc[TABS]},  { CALLFLAME, "callflame", NULL, NULL, 0, &desc[CALLFLAME]},  { TIMELINE, "timeline", NULL, NULL, 0, &desc[TIMELINE]},  { DUALSOURCE, "dsrc", NULL, NULL, 0, &desc[DUALSOURCE]},  { SOURCEDISAM, "srcdis", NULL, NULL, 0, &desc[SOURCEDISAM]},   { NO_CMD, "", NULL, NULL, 0, &mischdr},  { DUMMY_CMD, "<type>", NULL, NULL, 0, &typehdr},  { DUMMY_CMD, " ", NULL, NULL, 0, &typehdr2},   { IFREQ, "ifreq", NULL, NULL, 0, &desc[IFREQ]},  { PROCSTATS, "procstats", NULL, NULL, 0, &desc[PROCSTATS]},  { SCRIPT, "script", NULL, "file", 1, &desc[SCRIPT]},  { VERSION_cmd, "version", NULL, NULL, 0, &desc[VERSION_cmd]},  { QUIT, "quit", "exit", NULL, 0, &desc[QUIT]},   { NO_CMD, "", NULL, NULL, 0, &helphdr},  { HELP, "help", NULL, NULL, 0, &desc[HELP]},   { NO_CMD, "", NULL, NULL, 0, &unsuphdr},  { HELP, "-help", NULL, NULL, 0, &desc[HELP]},  { DUMPFUNC, "dfuncs", NULL, "string", 1, &desc[DUMPFUNC]},  { DUMPDOBJS, "ddobjs", NULL, "string", 1, &desc[DUMPDOBJS]},  { DUMPNODES, "dnodes", NULL, NULL, 0, &desc[DUMPNODES]},  { DUMPSTACKS, "dstacks", NULL, NULL, 0, &desc[DUMPSTACKS]},  { DUMPUNK, "dunkpc", NULL, NULL, 0, &desc[DUMPUNK]},  { DUMPMAP, "dmap", NULL, NULL, 0, &desc[DUMPMAP]},  { DUMPENTITIES, "dentities", NULL, NULL, 0, &desc[DUMPENTITIES]},  { IGNORE_NO_XHWCPROF, "ignore_no_xhwcprof", NULL, NULL, 0, &desc[IGNORE_NO_XHWCPROF]},  { IGNORE_FS_WARN, "ignore_fs_warn", NULL, NULL, 0, &desc[IGNORE_FS_WARN]},   { DUMP_PROFILE, "dprofile", NULL, NULL, 0, &desc[DUMP_PROFILE]},  { DUMP_SYNC, "dsync", NULL, NULL, 0, &desc[DUMP_SYNC]},  { DUMP_IOTRACE, "diotrace", NULL, NULL, 0, &desc[DUMP_IOTRACE]},  { DUMP_HWC, "dhwc", NULL, NULL, 0, &desc[DUMP_HWC]},  { DUMP_HEAP, "dheap", NULL, NULL, 0, &desc[DUMP_HEAP]},  { RACE_ACCS, "r_accs", NULL, NULL, 0, &desc[RACE_ACCS]},   { DMPI_FUNCS, "dmpi_funcs", NULL, NULL, 0, &desc[DMPI_FUNCS]},  { DMPI_MSGS, "dmpi_msgs", NULL, NULL, 0, &desc[DMPI_MSGS]},  { DMPI_EVENTS, "dmpi_events", NULL, NULL, 0, &desc[DMPI_EVENTS]},   { DMEM, "dmem", NULL, NULL, 1, &desc[DMEM]},  { DUMP_GC, "dumpgc", NULL, NULL, 0, &desc[DUMP_GC]},  { DKILL, "dkill", NULL, NULL, 2, &desc[DKILL]},   { QQUIT, "xquit", NULL, NULL, 0, &desc[QQUIT]},  // use xquit for memory leak detection in dbe; it's  // like quit, but deletes all data loaded   { HHELP, "xhelp", NULL, NULL, 0, &desc[HHELP]},  { WHOAMI, "whoami", NULL, NULL, 0, NULL},   // these are not recognized at this point  { LOADOBJECT, "segments", "pmap", NULL, 0, &desc[LOADOBJECT]},  { LOADOBJECT_LIST, "segment_list", NULL, NULL, 0, &desc[LOADOBJECT_LIST]},  { LOADOBJECT_SELECT, "segment_select", NULL, "seg1,...", 1, &desc[LOADOBJECT_SELECT]},   { LAST_CMD, "xxxx", NULL, NULL, 0, NULL}}; CmdTypeCommand::get_command (char *cmd, int &arg_count, int &cparam){  int i;  int len = (int) strlen (cmd);  bool got = false;  CmdType token = UNKNOWN_CMD;  arg_count = 0;  cparam = -1;  if (*cmd == '\0') // - command    return STDIN;  if (*cmd == '#') // comment    return COMMENT;  if (strcmp (cmd, "V") == 0 || strcmp (cmd, "-version") == 0)    return VERSION_cmd;  if (strcmp (cmd, "-help") == 0)    return HELP;  if (strncmp (cmd, NTXT ("-whoami="), 8) == 0)    {      cparam = 8;      return WHOAMI;    }   if (*cmd == '-')    cmd++;  for (i = 0;; i++)    {      if (cmd_lst[i].token == LAST_CMD)	break;      if (!strncasecmp (cmd, cmd_lst[i].str, len) ||	  (cmd_lst[i].alt && !strncasecmp (cmd, cmd_lst[i].alt, len)))	{	  // Is it unambiguous?	  if (!strcasecmp (cmd, cmd_lst[i].str)	      || (cmd_lst[i].alt && !strcasecmp (cmd, cmd_lst[i].alt)))	    {	      // exact, full-length match	      token = cmd_lst[i].token;	      arg_count = cmd_lst[i].arg_count;	      return token;	    }	  if (got)	    return AMBIGUOUS_CMD;	  got = true;	  token = cmd_lst[i].token;	  arg_count = cmd_lst[i].arg_count;	}    }   // Did we find it?  if (token != UNKNOWN_CMD)    return token;   // See if it's the name of a index object  if (dbeSession)    {      int indxtype = dbeSession->findIndexSpaceByName (cmd);      if (indxtype >= 0)	{	  // found it	  cparam = indxtype;	  return INDXOBJ;	}    }  return token;} const char *Command::get_cmd_str (CmdType type){  for (int i = 0;; i++)    {      if (cmd_lst[i].token == LAST_CMD)	break;      if (type == cmd_lst[i].token)	return cmd_lst[i].str;    }  return "xxxx";} char *Command::get_err_string (Cmd_status err){  switch (err)    {    case CMD_OK:      return NULL;    case CMD_BAD:      return GTXT ("command bad");    case CMD_AMBIGUOUS:      return GTXT ("command ambiguous");    case CMD_BAD_ARG:      return GTXT ("Invalid argument to command");    case CMD_OUTRANGE:      return GTXT ("argument to command is out-of-range");    case CMD_INVALID:      return GTXT ("invalid command");    }  return NULL;} voidCommand::print_help (char *prog_name, bool cmd_line, bool usermode, FILE *outf){  char *fmt, *msg;  int i;  StringBuilder sb;  enum CmdType nc;  init_desc ();  if (usermode)  // show the hidden ones, too    nc = HELP;  else    nc = HHELP;   if (cmd_line)    fprintf (outf, GTXT ("Usage: %s [ -script script | -command | - ] exper_1 ... exper_n\n"),	     prog_name);  fprintf (outf, GTXT ("An alternate spelling for a command is shown in [], where applicable.\n\n"	  "Those commands followed by a * may appear in .rc files.\n\n"	  "Those commands followed by a $ can only appear in .rc files.\n\n"));  fmt = fmt_help (nc, ' ');  for (i = 0;; i++)    {      // check for end of list      if (cmd_lst[i].token == LAST_CMD)	break;      if (cmd_lst[i].token == NO_CMD)   // this is a header line	fprintf (outf, NTXT (" %s\n"), *cmd_lst[i].desc);      else	{	  if (strlen (cmd_lst[i].str) == 0)	    continue;	  // this is a real command line	  sb.setLength (0);	  sb.append (cmd_lst[i].str);	  if (cmd_lst[i].alt)	    {	      sb.append ('[');	      sb.append (cmd_lst[i].alt);	      sb.append (']');	    }	  if (cmd_lst[i].arg)	    {	      sb.append (' ');	      sb.append (cmd_lst[i].arg);	    }	  msg = sb.toString ();	  fprintf (outf, fmt, msg, *cmd_lst[i].desc);	  free (msg);	}      // check for end of list      if (cmd_lst[i].token == nc)	break;    }} //  construct format for printing helpchar *Command::fmt_help (int nc, char head){  int len, max_len, i;  static char fmt[BUFSIZ];   max_len = 0;  for (i = 0; i < nc; i++)    {      len = (int) strlen (cmd_lst[i].str);      if (cmd_lst[i].alt)	len += (int) strlen (cmd_lst[i].alt) + 2;      if (cmd_lst[i].arg)	len += (int) strlen (cmd_lst[i].arg) + 2;      if (max_len < len)	max_len = len;    }  snprintf (fmt, sizeof (fmt), NTXT ("    %c%%-%ds %%s\n"), head, max_len + 1);  return fmt;} voidCommand::init_desc (){  if (desc[0] != NULL)    return;  desc[FUNCS] = GTXT ("display functions with current metrics");  desc[HOTPCS] = GTXT ("display hot PC's with current metrics");  desc[HOTLINES] = GTXT ("display hot lines with current metrics");  desc[FDETAIL] = GTXT ("display summary metrics for each function");  desc[OBJECTS] = GTXT ("display object list with errors or warnings");  desc[COMPARE] = GTXT ("enable comparison mode for experiments *");  desc[PRINTMODE] = GTXT ("set the mode for printing tables *");  desc[LDETAIL] = GTXT ("display summary metrics for each hot line");  desc[PDETAIL] = GTXT ("display summary metrics for each hot PC");  desc[SOURCE] = GTXT ("display annotated source for function/file");  desc[DISASM] = GTXT ("display annotated disassembly for function/file");  desc[SCOMPCOM] = GTXT ("set compiler commentary classes for source *");  desc[STHRESH] = GTXT ("set highlight threshold for source *");  desc[DCOMPCOM] = GTXT ("set compiler commentary classes for disasm *");  desc[COMPCOM] = GTXT ("set compiler commentary classes for both source and disasm *");  desc[DTHRESH] = GTXT ("set highlight threshold for disasm *");  desc[METRIC_LIST] = GTXT ("display the available metrics and dmetrics keywords");  desc[METRICS] = GTXT ("set a new list of metrics");  desc[SORT] = GTXT ("sort tables by the specified metric");  desc[GPROF] = GTXT ("display the callers-callees for each function");  desc[CALLTREE] = GTXT ("display the tree of function calls");  desc[CALLFLAME] = GTXT ("request calltree flame chart -- not a command, but used in the tabs command");  desc[GMETRIC_LIST] = GTXT ("display the available callers-callees metrics");  desc[FSINGLE] = GTXT ("display the summary metrics for specified function");  desc[CSINGLE] = GTXT ("display the callers-callees for the specified function");  desc[CPREPEND] = GTXT ("add specified function to the head of the callstack fragment");  desc[CAPPEND] = GTXT ("add specified function to the end of the callstack fragment");  desc[CRMFIRST] = GTXT ("remove the first function from the callstack fragment");  desc[CRMLAST] = GTXT ("remove the last function from the callstack fragment");  desc[LEAKS] = GTXT ("display memory leaks, aggregated by callstack");  desc[ALLOCS] = GTXT ("display allocations, aggregated by callstack");  desc[HEAP] = GTXT ("display memory allocations and leaks, aggregated by callstack");  desc[HEAPSTAT] = GTXT ("display heap statistics report");  desc[IOACTIVITY] = GTXT ("display I/O activity report, aggregated by file name");  desc[IOVFD] = GTXT ("display I/O activity report, aggregated by file descriptor");  desc[IOCALLSTACK] = GTXT ("display I/O activity report, aggregated by callstack");  desc[IOSTAT] = GTXT ("display I/O statistics report");  desc[RACE_ACCS] = GTXT ("dump race access events");  desc[DMPI_MSGS] = GTXT ("dump mpi messages");  desc[DMPI_FUNCS] = GTXT ("dump mpi function calls");  desc[DMPI_EVENTS] = GTXT ("dump mpi trace events");  desc[DMEM] = GTXT ("debug command for internal use");  desc[DUMP_GC] = GTXT ("dump Java garbage collector events");  desc[DKILL] = GTXT ("send process p signal s");  desc[DEADLOCK_EVNTS] = GTXT ("display deadlock events");  desc[DEADLOCK_SUM] = GTXT ("display summary for the deadlock event");  desc[HEADER] = GTXT ("display information about the experiment");  desc[OVERVIEW_NEW] = GTXT ("display the overview of all loaded experiments");  desc[SAMPLE_DETAIL] = GTXT ("display the current sample list with data");  desc[STATISTICS] = GTXT ("display the execution statistics data");  desc[EXP_LIST] = GTXT ("display the existing experiments");  desc[DESCRIBE] = GTXT ("describe recorded data and tokens available for filtering data");  desc[OBJECT_SHOW] = GTXT ("set load objects to show all functions *");  desc[OBJECT_HIDE] = GTXT ("set load objects to hide functions *");  desc[OBJECT_API] = GTXT ("set load objects to show API (entry point) only *");  desc[OBJECTS_DEFAULT] = GTXT ("reset load objects show to defaults");  desc[OBJECT_LIST] = GTXT ("display load objects, functions-shown flag");  desc[OBJECT_SELECT] = GTXT ("set list of load objects whose functions are shown");  desc[SAMPLE_LIST] = GTXT ("display the list of existing samples");  desc[SAMPLE_SELECT] = GTXT ("set a new list of samples");  desc[THREAD_LIST] = GTXT ("display the list of existing threads");  desc[THREAD_SELECT] = GTXT ("set a new list of threads");  desc[LWP_LIST] = GTXT ("display the list of existing LWPs");  desc[LWP_SELECT] = GTXT ("set a new list of LWPs");  desc[CPU_LIST] = GTXT ("display the list of CPUs");  desc[CPU_SELECT] = GTXT ("set a new list of CPUs");  desc[OUTFILE] = GTXT ("open filename for subsequent output");  desc[APPENDFILE] = GTXT ("open filename for subsequent appended output");  desc[LIMIT] = GTXT ("limit output to the first n entries (n=0 for no limit)");  desc[NAMEFMT] = GTXT ("set long/short/mangled names for functions *");  desc[VIEWMODE] = GTXT ("set viewmode user|expert|machine *");  desc[EN_DESC] = GTXT ("enable descendant processes on|off|regex matches lineage or program name $");  desc[SETPATH] = GTXT ("set search path for annotated src/dis");  desc[ADDPATH] = GTXT ("add search path for annotated src/dis *");

Lines 1–500 of 572.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t