summaryrefslogtreecommitdiff
path: root/gprofng/src/Settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/Settings.h')
-rw-r--r--gprofng/src/Settings.h425
1 files changed, 425 insertions, 0 deletions
diff --git a/gprofng/src/Settings.h b/gprofng/src/Settings.h
new file mode 100644
index 00000000000..fc696e8f845
--- /dev/null
+++ b/gprofng/src/Settings.h
@@ -0,0 +1,425 @@
+/* Copyright (C) 2021 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. */
+
+#ifndef _SETTINGS_H
+#define _SETTINGS_H
+
+#include <stdio.h>
+#include <regex.h>
+
+#include "gp-defs.h"
+#include "Histable.h"
+#include "MemorySpace.h"
+#include "Metric.h"
+#include "dbe_types.h"
+#include "dbe_structs.h"
+#include "enums.h"
+#include "vec.h"
+
+class Emsgqueue;
+class Application;
+
+struct DispTab;
+
+// Settings object
+
+class Settings
+{
+public:
+ friend class DbeView;
+ friend class DbeSession;
+
+ Settings (Application *_app);
+ Settings (Settings *_settings);
+ virtual ~Settings ();
+ void read_rc (bool ipc_or_rdt_mode); // read all rc files
+ char *read_rc (char *path); // read rc file
+ void buildMasterTabList (); // build list of Tabs that can be invoked
+ void updateTabAvailability (); // update for datamode, leaklist
+ Cmd_status set_name_format (char *str); // from a string
+
+ Vector<DispTab*> *
+ get_TabList () // Get the list of tabs for this view
+ {
+ return tab_list;
+ }
+
+ Vector<bool> *
+ get_MemTabState () // Get the list and order of memory tabs for this view
+ {
+ return mem_tab_state;
+ }
+
+ Vector<int> *
+ get_MemTabOrder ()
+ {
+ return mem_tab_order;
+ }
+
+ // Set the list of memory tabs for this view
+ void set_MemTabState (Vector<bool>*sel);
+
+ // add a newly-defined memory object tab
+ void mobj_define (MemObjType_t *, bool state);
+
+ // add a newly-defined index object tab
+ void indxobj_define (int type, bool state);
+
+ Vector<bool> *
+ get_IndxTabState () // Get the list and order of index tabs for this view
+ {
+ return indx_tab_state;
+ }
+
+ Vector<int> *
+ get_IndxTabOrder ()
+ {
+ return indx_tab_order;
+ }
+
+ // Set the list of index tabs for this view
+ void set_IndxTabState (Vector<bool>*sel);
+
+ void
+ set_name_format (int fname_fmt, bool soname_fmt)
+ {
+ name_format = Histable::make_fmt (fname_fmt, soname_fmt);
+ }
+
+ Histable::NameFormat
+ get_name_format ()
+ {
+ return name_format;
+ }
+
+ // public methods for setting and accessing the settings
+ Cmd_status set_view_mode (char *str, bool rc); // from a string
+
+ void
+ set_view_mode (VMode mode)
+ {
+ view_mode = mode;
+ }
+
+ VMode
+ get_view_mode ()
+ {
+ return view_mode;
+ }
+
+ // set the en_desc expression/on/off
+ Cmd_status set_en_desc (char *str, bool rc); // from a string
+ // check if the lineage or the target name matches the en_desc expression
+ bool check_en_desc (const char *lineage, const char *targname);
+
+ char *set_limit (char *str, bool rc); // from a string
+
+ char *
+ set_limit (int _limit)
+ {
+ limit = _limit;
+ return NULL;
+ }
+
+ int
+ get_limit ()
+ {
+ return limit;
+ }
+
+ char *set_printmode (char *_pmode);
+
+ // processing compiler commentary visibility bits
+ Cmd_status proc_compcom (const char *cmd, bool isSrc, bool rc);
+
+ // return any error string from processing visibility settings
+ char *get_compcom_errstr (Cmd_status status, const char *cmd);
+
+ // methods for setting and getting strings, and individual settings
+
+ char *
+ get_str_scompcom ()
+ {
+ return str_scompcom;
+ }
+
+ char *
+ get_str_dcompcom ()
+ {
+ return str_dcompcom;
+ }
+
+ int
+ get_src_compcom ()
+ {
+ return src_compcom;
+ }
+
+ int
+ get_dis_compcom ()
+ {
+ return dis_compcom;
+ }
+
+ void
+ set_cmpline_visible (bool v)
+ {
+ cmpline_visible = v;
+ }
+
+ void
+ set_funcline_visible (bool v)
+ {
+ funcline_visible = v;
+ }
+
+ void
+ set_src_visible (int v)
+ {
+ src_visible = v;
+ }
+
+ int
+ get_src_visible ()
+ {
+ return src_visible;
+ }
+
+ void
+ set_srcmetric_visible (bool v)
+ {
+ srcmetric_visible = v;
+ }
+
+ bool
+ get_srcmetric_visible ()
+ {
+ return srcmetric_visible;
+ }
+
+ void
+ set_hex_visible (bool v)
+ {
+ hex_visible = v;
+ }
+
+ bool
+ get_hex_visible ()
+ {
+ return hex_visible;
+ }
+
+ // processing and accessing the threshold settings
+ Cmd_status proc_thresh (char *cmd, bool isSrc, bool rc);
+
+ int
+ get_thresh_src ()
+ {
+ return threshold_src;
+ }
+
+ int
+ get_thresh_dis ()
+ {
+ return threshold_dis;
+ }
+
+ // process a tlmode setting
+ Cmd_status proc_tlmode (char *cmd, bool rc);
+
+ void
+ set_tlmode (int _tlmode)
+ {
+ tlmode = _tlmode;
+ }
+
+ int
+ get_tlmode ()
+ {
+ return tlmode;
+ }
+
+ void
+ set_stack_align (int _stack_align)
+ {
+ stack_align = _stack_align;
+ }
+
+ int
+ get_stack_align ()
+ {
+ return stack_align;
+ }
+
+ void
+ set_stack_depth (int _stack_depth)
+ {
+ stack_depth = _stack_depth;
+ }
+
+ int
+ get_stack_depth ()
+ {
+ return stack_depth;
+ }
+
+ // process a tabs setting: called when the tab list is requested
+ Cmd_status proc_tabs (bool _rdtMode);
+
+ Cmd_status proc_tldata (const char *cmd, bool rc); // process a tldata setting
+ void set_tldata (const char* tldata_string);
+ char *get_tldata ();
+
+ char *
+ get_default_metrics ()
+ {
+ return str_dmetrics;
+ }
+
+ char *
+ get_default_sort ()
+ {
+ return str_dsort;
+ }
+
+ void
+ set_ignore_no_xhwcprof (bool v) // ignore no xhwcprof errors for dataspace
+ {
+ ignore_no_xhwcprof = v;
+ }
+
+ bool
+ get_ignore_no_xhwcprof ()
+ {
+ return ignore_no_xhwcprof;
+ }
+
+ void
+ set_ignore_fs_warn (bool v) // ignore filesystem warnings in experiments
+ {
+ ignore_fs_warn = v;
+ }
+
+ bool
+ get_ignore_fs_warn ()
+ {
+ return ignore_fs_warn;
+ }
+
+ // add a pathmap
+ static char *add_pathmap (Vector<pathmap_t*> *v, const char *from, const char *to);
+ void set_pathmaps (Vector<pathmap_t*> *newPathMap);
+
+ // add a LoadObject expansion setting
+ bool set_libexpand (char *, enum LibExpand, bool);
+ enum LibExpand get_lo_setting (char *);
+
+ // set LoadObject expansion defaults back to .rc specifications
+ bool set_libdefaults ();
+
+ void
+ set_compare_mode (int mode)
+ {
+ compare_mode = mode;
+ }
+
+ int
+ get_compare_mode ()
+ {
+ return compare_mode;
+ }
+
+ char *
+ get_machinemodel ()
+ {
+ return dbe_strdup (machinemodel);
+ }
+
+ char *preload_libdirs;
+
+protected: // data
+ Application *app;
+
+ // default strings from .rc file
+ char *str_vmode;
+ char *str_en_desc;
+ char *str_datamode;
+ char *str_scompcom;
+ char *str_sthresh;
+ char *str_dcompcom;
+ char *str_dthresh;
+ char *str_dmetrics;
+ char *str_dsort;
+ char *str_tlmode;
+ char *str_tldata;
+ char *str_tabs;
+ char *str_rtabs;
+ char *str_search_path;
+ char *str_name_format;
+ char *str_limit;
+ char *str_printmode;
+ char *str_compare;
+
+ bool tabs_processed;
+
+ // Processed settings
+ bool en_desc; // controls for reading descendant processes
+ char * en_desc_usr; // selective descendants: user specificaton
+ regex_t * en_desc_cmp; // selective descendants: compiled specification
+ Histable::NameFormat name_format; // long/short/mangled naming for C++/Java
+ VMode view_mode; // Java mode
+ int src_compcom; // compiler commentary visibility for anno-src
+ int dis_compcom; // compiler commentary visibility for anno-dis
+ int threshold_src; // threshold for anno-src
+ int threshold_dis; // threshold for anno-dis
+ int cmpline_visible; // show compile-line flags
+ int funcline_visible; // show compile-line flags
+ int src_visible; // show source in disasm
+ bool srcmetric_visible; // show metrics for source in disasm
+ bool hex_visible; // show hex code in disasm
+ char* tldata; // timeline data type string
+ int tlmode; // timeline mode for bars
+ int stack_align; // timeline stack alignment
+ int stack_depth; // timeline stack depth
+ int limit; // print limit
+ enum PrintMode print_mode;// print mode
+ char print_delim; // the delimiter, if print mode = PM_DELIM_SEP_LIST
+ int compare_mode; // compare mode
+
+ char *machinemodel; // machine model for Memory Objects
+
+ bool ignore_no_xhwcprof; // ignore no -xhwcprof data in dataspace
+ bool ignore_fs_warn; // ignore file-system recording warning
+
+ void set_rc (const char *path, bool msg, Emsgqueue *commentq,
+ bool override, bool ipc_or_rdt_mode = false);
+
+ Vector<DispTab*> *tab_list;
+ Vector<pathmap_t*> *pathmaps;
+ Vector<lo_expand_t*> *lo_expands;
+ enum LibExpand lo_expand_default;
+ bool is_loexpand_default;
+ Vector<bool> *mem_tab_state;
+ Vector<int> *mem_tab_order;
+ Vector<bool> *indx_tab_state;
+ Vector<int> *indx_tab_order;
+};
+
+#endif /* ! _SETTINGS_H */