aboutsummaryrefslogtreecommitdiff
path: root/gprofng/src
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src')
-rw-r--r--gprofng/src/Application.cc2
-rw-r--r--gprofng/src/BaseMetric.cc6
-rw-r--r--gprofng/src/CallStack.cc6
-rw-r--r--gprofng/src/ClassFile.cc14
-rw-r--r--gprofng/src/Data_window.cc4
-rw-r--r--gprofng/src/Dbe.cc28
-rw-r--r--gprofng/src/DbeJarFile.cc6
-rw-r--r--gprofng/src/DbeSession.cc2
-rw-r--r--gprofng/src/DbeView.cc4
-rw-r--r--gprofng/src/DerivedMetrics.cc4
-rw-r--r--gprofng/src/DwarfLib.cc6
-rw-r--r--gprofng/src/Elf.cc6
-rw-r--r--gprofng/src/Emsg.cc6
-rw-r--r--gprofng/src/Experiment.cc41
-rw-r--r--gprofng/src/Function.cc6
-rw-r--r--gprofng/src/Makefile.am1
-rw-r--r--gprofng/src/Makefile.in4
-rw-r--r--gprofng/src/Module.cc26
-rw-r--r--gprofng/src/Print.cc8
-rw-r--r--gprofng/src/QLParser.yy6
-rw-r--r--gprofng/src/SAXParserFactory.cc12
-rw-r--r--gprofng/src/Settings.cc4
-rw-r--r--gprofng/src/SourceFile.cc2
-rw-r--r--gprofng/src/StringBuilder.cc11
-rw-r--r--gprofng/src/StringMap.h2
-rw-r--r--gprofng/src/Table.cc18
-rw-r--r--gprofng/src/checks.cc12
-rw-r--r--gprofng/src/collctrl.cc335
-rw-r--r--gprofng/src/comp_com.c5
-rw-r--r--gprofng/src/count.cc7
-rw-r--r--gprofng/src/dbe_hwc.h6
-rw-r--r--gprofng/src/dbe_memmgr.c118
-rw-r--r--gprofng/src/envsets.cc6
-rw-r--r--gprofng/src/gp-archive.cc7
-rw-r--r--gprofng/src/gp-collect-app.cc1
-rw-r--r--gprofng/src/gp-display-src.cc5
-rw-r--r--gprofng/src/gp-display-text.cc15
-rw-r--r--gprofng/src/gprofng.cc3
-rw-r--r--gprofng/src/ipc.cc3
-rw-r--r--gprofng/src/ipcio.cc4
-rw-r--r--gprofng/src/util.cc80
-rw-r--r--gprofng/src/util.h4
-rw-r--r--gprofng/src/vec.h7
43 files changed, 356 insertions, 497 deletions
diff --git a/gprofng/src/Application.cc b/gprofng/src/Application.cc
index 98caeba..ee461b3 100644
--- a/gprofng/src/Application.cc
+++ b/gprofng/src/Application.cc
@@ -112,7 +112,7 @@ Application::get_realpath (const char *_name)
path = s + 1;
}
}
- return strdup (_name);
+ return xstrdup (_name);
}
// Set the directory where all binaries are found
diff --git a/gprofng/src/BaseMetric.cc b/gprofng/src/BaseMetric.cc
index ae0ee32..b7475e2 100644
--- a/gprofng/src/BaseMetric.cc
+++ b/gprofng/src/BaseMetric.cc
@@ -238,7 +238,7 @@ BaseMetric::BaseMetric (const BaseMetric& m)
default_visbits[ii] = m.default_visbits[ii];
if (m.cond_spec)
{
- cond_spec = strdup (m.cond_spec);
+ cond_spec = xstrdup (m.cond_spec);
cond = m.cond->copy ();
}
else
@@ -248,7 +248,7 @@ BaseMetric::BaseMetric (const BaseMetric& m)
}
if (m.val_spec)
{
- val_spec = strdup (m.val_spec);
+ val_spec = xstrdup (m.val_spec);
val = m.val->copy ();
}
else
@@ -258,7 +258,7 @@ BaseMetric::BaseMetric (const BaseMetric& m)
}
if (m.expr_spec)
{
- expr_spec = strdup (m.expr_spec);
+ expr_spec = xstrdup (m.expr_spec);
expr = m.expr->copy ();
}
else
diff --git a/gprofng/src/CallStack.cc b/gprofng/src/CallStack.cc
index 5bfafb7..15594a2 100644
--- a/gprofng/src/CallStack.cc
+++ b/gprofng/src/CallStack.cc
@@ -89,7 +89,7 @@ Descendants::insert (int ind, CallStackNode* item)
if (old_cnt + 1 >= limit)
{
int new_limit = (limit == 0) ? DELTA : limit * 2;
- CallStackNode **new_data = (CallStackNode **) malloc (new_limit * sizeof (CallStackNode *));
+ CallStackNode **new_data = (CallStackNode **) xmalloc (new_limit * sizeof (CallStackNode *));
for (int i = 0; i < ind; i++)
new_data[i] = old_data[i];
new_data[ind] = item;
@@ -204,12 +204,12 @@ CallStackP::new_Node (CallStackNode *anc, Histable *pcval)
nchunks++;
// Reallocate Node chunk array
- chunks = (CallStackNode **) malloc (nchunks * sizeof (CallStackNode *));
+ chunks = (CallStackNode **) xmalloc (nchunks * sizeof (CallStackNode *));
for (int i = 0; i < nchunks - 1; i++)
chunks[i] = old_chunks[i];
free (old_chunks);
// Allocate new chunk for nodes.
- chunks[nchunks - 1] = (CallStackNode *) malloc (CHUNKSZ * sizeof (CallStackNode));
+ chunks[nchunks - 1] = (CallStackNode *) xmalloc (CHUNKSZ * sizeof (CallStackNode));
}
nodes++;
CallStackNode *node = get_node (nodes - 1);
diff --git a/gprofng/src/ClassFile.cc b/gprofng/src/ClassFile.cc
index 37dd0ff..51bb0c2 100644
--- a/gprofng/src/ClassFile.cc
+++ b/gprofng/src/ClassFile.cc
@@ -957,7 +957,7 @@ BinaryConstantPool::getString (int index)
return NULL;
}
u2 len = input->readUnsignedShort ();
- strings[index] = (char *) malloc (len + 1);
+ strings[index] = (char *) xmalloc (len + 1);
input->copy_bytes (strings[index], len);
return strings[index];
}
@@ -1014,7 +1014,7 @@ ClassFile::openFile (const char *fname)
return;
}
cf_bufsz = stat_buf.st_size;
- cf_buf = (unsigned char *) malloc (cf_bufsz);
+ cf_buf = (unsigned char *) xmalloc (cf_bufsz);
if (cf_bufsz != read_from_file (fd, cf_buf, cf_bufsz))
{
free (cf_buf);
@@ -1409,7 +1409,7 @@ ClassFile::readFile ()
class_filename = dbe_strdup (bcpool->getString (classNameInd));
if (class_filename)
{
- class_name = strdup (class_filename);
+ class_name = xstrdup (class_filename);
convertName (class_name);
}
@@ -1527,7 +1527,7 @@ ClassFile::readFile ()
if (class_filename)
{
if (strcmp (class_filename, get_name ()) != 0)
- set_name (strdup (class_filename));
+ set_name (xstrdup (class_filename));
if (source_name)
{
char *bname = strrchr (class_filename, '/');
@@ -1535,13 +1535,13 @@ ClassFile::readFile ()
fnm = dbe_sprintf (NTXT ("%.*s/%s"), (int) (bname - class_filename),
class_filename, source_name);
else
- fnm = strdup (source_name);
+ fnm = xstrdup (source_name);
}
else
fnm = get_java_file_name (class_filename, false);
}
else if (source_name)
- fnm = strdup (source_name);
+ fnm = xstrdup (source_name);
if (fnm)
{
set_file_name (fnm);
@@ -1631,7 +1631,7 @@ ClassFile::get_java_file_name (char *clname, bool classSuffix)
if (tmp)
len = tmp - clname;
}
- char *clpath = (char *) malloc (len + 10);
+ char *clpath = (char *) xmalloc (len + 10);
for (size_t i = 0; i < len; i++)
clpath[i] = (clname[i] == '.') ? '/' : clname[i];
snprintf (clpath + len, 10, classSuffix ? NTXT (".class") : NTXT (".java"));
diff --git a/gprofng/src/Data_window.cc b/gprofng/src/Data_window.cc
index da142f0..be08559 100644
--- a/gprofng/src/Data_window.cc
+++ b/gprofng/src/Data_window.cc
@@ -149,7 +149,7 @@ Data_window::bind (Span *span, int64_t minSize)
{ // Need to realloc 'base'
free (base);
basesize = wsize;
- base = (void *) malloc (basesize);
+ base = (void *) xmalloc (basesize);
Dprintf (DEBUG_DATA_WINDOW,
NTXT ("Data_window:bind:%d realloc basesize=%llx woffset=%lld \n"),
(int) __LINE__, (long long) basesize, (long long) woffset);
@@ -188,7 +188,7 @@ Data_window::get_data (int64_t offset, int64_t size, void *datap)
return NULL;
if (datap == NULL && !mmap_on_file)
// Can be remmaped or reallocated. Need to make a copy
- datap = (void *) malloc (size);
+ datap = (void *) xmalloc (size);
if (datap)
{
memcpy (datap, buf, (size_t) size);
diff --git a/gprofng/src/Dbe.cc b/gprofng/src/Dbe.cc
index 09b7f94..c46313a 100644
--- a/gprofng/src/Dbe.cc
+++ b/gprofng/src/Dbe.cc
@@ -353,7 +353,7 @@ dbeReadFile (const char *pathname)
{
Vector<char*> *result = new Vector<char*>(2);
int limit = 1024 * 1024; // Temporary limit: 1 MB
- char * contents = (char *) malloc (limit);
+ char * contents = (char *) xmalloc (limit);
StringBuilder sb;
if (NULL == contents)
{
@@ -4960,7 +4960,7 @@ dbeGetFuncList (int dbevindex, int type, int subtype)
// it needs to be
// first, scan all the lines, to get the maximum line number
bufsz = 1024;
- buf = (char *) malloc (bufsz);
+ buf = (char *) xmalloc (bufsz);
int max_lineno = 0;
int hidx;
Hist_data::HistItem *hitem;
@@ -5047,7 +5047,7 @@ dbeGetFuncList (int dbevindex, int type, int subtype)
// Reallocate the buffer
size_t curlen = d - buf;
bufsz += 1024;
- char *buf_new = (char *) malloc (bufsz);
+ char *buf_new = (char *) xmalloc (bufsz);
strncpy (buf_new, buf, curlen);
buf_new[curlen] = '\0';
free (buf);
@@ -5243,7 +5243,7 @@ dbeGetFuncListV2 (int dbevindex, int mtype, Obj sel_obj, int type, int subtype)
// it needs to be
// first, scan all the lines, to get the maximum line number
bufsz = 1024;
- buf = (char *) malloc (bufsz);
+ buf = (char *) xmalloc (bufsz);
int max_lineno = 0;
int hidx;
Hist_data::HistItem *hitem;
@@ -5334,7 +5334,7 @@ dbeGetFuncListV2 (int dbevindex, int mtype, Obj sel_obj, int type, int subtype)
// Reallocate the buffer
size_t curlen = d - buf;
bufsz += 1024;
- char *buf_new = (char *) malloc (bufsz);
+ char *buf_new = (char *) xmalloc (bufsz);
strncpy (buf_new, buf, curlen);
buf_new[curlen] = '\0';
free (buf);
@@ -6089,7 +6089,7 @@ dbeGetStatisList (int dbevindex)
return NULL;
// Get statistics data
- data = (Stats_data **) malloc ((size + 1) * sizeof (Stats_data *));
+ data = (Stats_data **) xmalloc ((size + 1) * sizeof (Stats_data *));
data[0] = new Stats_data ();
for (index = 1; index <= size; index++)
{
@@ -7006,8 +7006,8 @@ dbeGetSummary (int dbevindex, Vector<Obj> *sel_objs, int type, int subtype)
if (map != NULL)
{
int nmetrics = mvec->size ();
- double *evalues = (double *) malloc (nmetrics * sizeof (double));
- double *ivalues = (double *) malloc (nmetrics * sizeof (double));
+ double *evalues = (double *) xmalloc (nmetrics * sizeof (double));
+ double *ivalues = (double *) xmalloc (nmetrics * sizeof (double));
for (index2 = 0; index2 < nmetrics; index2++)
{
evalues[index2] = excl_list->fetch (index2);
@@ -7090,8 +7090,8 @@ dbeGetHwcSets (int /*dbevindex*/, bool forKernel)
Vector<char*> *name = new Vector<char*>(1); // Internal name
if (NULL != defctrs)
{
- i18n->store (0, strdup (defctrs));
- name->store (0, strdup (NTXT ("default")));
+ i18n->store (0, xstrdup (defctrs));
+ name->store (0, xstrdup (NTXT ("default")));
}
list->store (0, i18n);
list->store (1, name);
@@ -8692,8 +8692,8 @@ dbeGetDataDescriptorsV2 (int exp_id)
int data_id = dataDscr->getId ();
int aux_prop_id = (data_id == DATA_HWC) ? PROP_HWCTAG : PROP_NONE;
dataId->append (data_id);
- dataName->append (strdup (dataDscr->getName ()));
- dataUName->append (strdup (dataDscr->getUName ()));
+ dataName->append (xstrdup (dataDscr->getName ()));
+ dataUName->append (xstrdup (dataDscr->getUName ()));
auxProp->append (aux_prop_id);
}
delete ddscr;
@@ -9921,8 +9921,8 @@ dbeGetLineInfo (Obj pc)
if (dbeline != NULL)
snprintf (lineno, sizeof (lineno), NTXT ("%d"), dbeline->lineno);
Vector<char*> *res = new Vector<char*>(2);
- res->store (0, strdup (fname));
- res->store (1, strdup (lineno));
+ res->store (0, xstrdup (fname));
+ res->store (1, xstrdup (lineno));
return res;
}
diff --git a/gprofng/src/DbeJarFile.cc b/gprofng/src/DbeJarFile.cc
index fe3427f..b2bb355 100644
--- a/gprofng/src/DbeJarFile.cc
+++ b/gprofng/src/DbeJarFile.cc
@@ -123,7 +123,7 @@ template<> void Vector<ZipEntry *>::dump (const char *msg)
DbeJarFile::DbeJarFile (const char *jarName)
{
- name = strdup (jarName);
+ name = xstrdup (jarName);
fnames = NULL;
dwin = new Data_window (name);
get_entries ();
@@ -211,7 +211,7 @@ DbeJarFile::get_entries ()
char *nm = (char *) dwin->bind (offset + 46, name_len);
if (nm)
{
- ze->name = (char *) malloc (name_len + 1);
+ ze->name = (char *) xmalloc (name_len + 1);
strncpy (ze->name, nm, name_len);
ze->name[name_len] = 0;
}
@@ -320,7 +320,7 @@ DbeJarFile::copy (char *toFileNname, int fromEntryNum)
strm.avail_in = ze->csize;
strm.next_in = b;
int retval = ze->size;
- unsigned char *buf = (unsigned char *) malloc (ze->size);
+ unsigned char *buf = (unsigned char *) xmalloc (ze->size);
for (;;)
{
strm.next_out = buf;
diff --git a/gprofng/src/DbeSession.cc b/gprofng/src/DbeSession.cc
index 3649357..2a8a6f2 100644
--- a/gprofng/src/DbeSession.cc
+++ b/gprofng/src/DbeSession.cc
@@ -1245,7 +1245,7 @@ DbeSession::open_experiment (Experiment *exp, char *path)
{
if (t_exp_list[j] == NULL) continue;
Experiment *dexp = t_exp_list[j];
- exp_ctx *new_ctx = (exp_ctx*) malloc (sizeof (exp_ctx));
+ exp_ctx *new_ctx = (exp_ctx*) xmalloc (sizeof (exp_ctx));
new_ctx->path = NULL;
new_ctx->exp = dexp;
new_ctx->ds = this;
diff --git a/gprofng/src/DbeView.cc b/gprofng/src/DbeView.cc
index 6b0c3a4..872ebcd 100644
--- a/gprofng/src/DbeView.cc
+++ b/gprofng/src/DbeView.cc
@@ -552,7 +552,7 @@ DbeView::get_metric_list (MetricType mtype)
// set the defaults
if (settings->str_dmetrics == NULL)
- settings->str_dmetrics = strdup (Command::DEFAULT_METRICS);
+ settings->str_dmetrics = xstrdup (Command::DEFAULT_METRICS);
char *status = setMetrics (settings->str_dmetrics, true);
if (status != NULL)
{
@@ -1122,7 +1122,7 @@ DbeView::setSort (char * sort_list, MetricType mtype, bool fromRcFile)
if ((sort_list == NULL) || (strcmp (sort_list, Command::DEFAULT_CMD) == 0))
{
if (settings->str_dsort == NULL)
- settings->str_dsort = strdup (Command::DEFAULT_METRICS);
+ settings->str_dsort = xstrdup (Command::DEFAULT_METRICS);
sort_list = settings->get_default_sort ();
}
mlist = get_metric_list (mtype);
diff --git a/gprofng/src/DerivedMetrics.cc b/gprofng/src/DerivedMetrics.cc
index ee14ea0..14026d6 100644
--- a/gprofng/src/DerivedMetrics.cc
+++ b/gprofng/src/DerivedMetrics.cc
@@ -119,7 +119,7 @@ DerivedMetrics::construct_map (Vector<Metric*> *mitems, BaseMetric::SubType st,
int nmetrics = mitems->size ();
// allocate arrays for the mapping between derived metrics and requested values
- int *map = (int *) malloc (ndm * sizeof (int));
+ int *map = (int *) xmalloc (ndm * sizeof (int));
// map derived metrics to requested metrics // EUGENE explain this more clearly
// 0 means not mapped
@@ -194,7 +194,7 @@ DerivedMetrics::get_dependencies (definition *def)
int n = items->size ();
// zero out a vector representing definitions
- int *vec = (int *) malloc (n * sizeof (int));
+ int *vec = (int *) xmalloc (n * sizeof (int));
for (int i = 0; i < n; i++)
vec[i] = 0;
fill_dependencies (def, vec);
diff --git a/gprofng/src/DwarfLib.cc b/gprofng/src/DwarfLib.cc
index a150c76..3872cc2 100644
--- a/gprofng/src/DwarfLib.cc
+++ b/gprofng/src/DwarfLib.cc
@@ -1523,7 +1523,7 @@ DwrLineRegs::read_file_names_dwarf5 ()
(long long) debug_lineSec->offset, efmt_cnt);
if (efmt_cnt == 0)
return NULL;
- t_entry_fmt *efmt = (t_entry_fmt *) malloc (sizeof (t_entry_fmt) * efmt_cnt);
+ t_entry_fmt *efmt = (t_entry_fmt *) xmalloc (sizeof (t_entry_fmt) * efmt_cnt);
for (int i = 0; i < efmt_cnt; i++)
{
efmt[i].type_code = debug_lineSec->GetULEB128 ();
@@ -2350,8 +2350,8 @@ DwrCU::map_dwarf_lines (Module *mod)
if (isGNU && (inlinedSubrCnt > 0))
{
Function *func = NULL;
- mod->inlinedSubr = (InlinedSubr *) malloc (inlinedSubrCnt
- * sizeof (InlinedSubr));
+ mod->inlinedSubr = (InlinedSubr *) xmalloc (inlinedSubrCnt
+ * sizeof (InlinedSubr));
for (long i = 0; i < inlinedSubrCnt; i++)
{
DwrInlinedSubr *inlinedSubr = dwrInlinedSubrs->get (i);
diff --git a/gprofng/src/Elf.cc b/gprofng/src/Elf.cc
index 45f8893..7c71561 100644
--- a/gprofng/src/Elf.cc
+++ b/gprofng/src/Elf.cc
@@ -405,7 +405,7 @@ Elf::elf_getdata (unsigned int sec)
{
if (data == NULL)
{
- data = (Elf_Data **) malloc (ehdrp->e_shnum * sizeof (Elf_Data *));
+ data = (Elf_Data **) xmalloc (ehdrp->e_shnum * sizeof (Elf_Data *));
for (int i = 0; i < (int) ehdrp->e_shnum; i++)
data[i] = NULL;
}
@@ -744,7 +744,7 @@ Elf::get_bfd_symbols()
bfd_symcnt = bfd_get_symtab_upper_bound (abfd);
if (bfd_symcnt > 0)
{
- bfd_sym = (asymbol **) malloc (bfd_symcnt);
+ bfd_sym = (asymbol **) xmalloc (bfd_symcnt);
bfd_symcnt = bfd_canonicalize_symtab (abfd, bfd_sym);
if (bfd_symcnt < 0)
{
@@ -761,7 +761,7 @@ Elf::get_bfd_symbols()
bfd_dynsymcnt = bfd_get_dynamic_symtab_upper_bound (abfd);
if (bfd_dynsymcnt > 0)
{
- bfd_dynsym = (asymbol **) malloc (bfd_dynsymcnt);
+ bfd_dynsym = (asymbol **) xmalloc (bfd_dynsymcnt);
bfd_dynsymcnt = bfd_canonicalize_dynamic_symtab (abfd, bfd_dynsym);
if (bfd_dynsymcnt < 0)
{
diff --git a/gprofng/src/Emsg.cc b/gprofng/src/Emsg.cc
index 0162059..eada9ae 100644
--- a/gprofng/src/Emsg.cc
+++ b/gprofng/src/Emsg.cc
@@ -39,7 +39,7 @@ Emsg::Emsg (Cmsg_warn w, const char *i18n_text)
warn = w;
flavor = 0;
par = NULL;
- text = strdup (i18n_text);
+ text = xstrdup (i18n_text);
next = NULL;
}
@@ -436,7 +436,7 @@ Emsgqueue::Emsgqueue (char *_qname)
{
first = NULL;
last = NULL;
- qname = strdup (_qname);
+ qname = xstrdup (_qname);
}
Emsgqueue::~Emsgqueue ()
@@ -584,7 +584,7 @@ DbeMessages::append_msg (Cmsg_warn w, const char *fmt, ...)
else
{
va_start (vp, fmt);
- char *buf = (char *) malloc (buf_size);
+ char *buf = (char *) xmalloc (buf_size);
vsnprintf (buf, buf_size, fmt, vp);
va_end (vp);
msg = new Emsg (w, buf);
diff --git a/gprofng/src/Experiment.cc b/gprofng/src/Experiment.cc
index 3e1e1a7..3c63f9f 100644
--- a/gprofng/src/Experiment.cc
+++ b/gprofng/src/Experiment.cc
@@ -252,9 +252,7 @@ Experiment::ExperimentFile::fgets ()
if (bufsz == 0)
{
bufsz = 1024;
- buffer = (char *) malloc (bufsz);
- if (buffer == NULL)
- return NULL;
+ buffer = (char *) xmalloc (bufsz);
buffer[bufsz - 1] = (char) 1; // sentinel
}
char *res = ::fgets (buffer, bufsz, fh);
@@ -263,9 +261,7 @@ Experiment::ExperimentFile::fgets ()
while (buffer[bufsz - 1] == (char) 0)
{
int newsz = bufsz + 1024;
- char *newbuf = (char *) malloc (newsz);
- if (newbuf == NULL)
- return NULL;
+ char *newbuf = (char *) xmalloc (newsz);
memcpy (newbuf, buffer, bufsz);
free (buffer);
buffer = newbuf;
@@ -451,19 +447,19 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
if (str != NULL)
{
found = 1;
- exp->coll_params.start_delay = strdup (str);
+ exp->coll_params.start_delay = xstrdup (str);
}
str = attrs->getValue (SP_JCMD_TERMINATE);
if (str != NULL)
{
found = 1;
- exp->coll_params.terminate = strdup (str);
+ exp->coll_params.terminate = xstrdup (str);
}
str = attrs->getValue (SP_JCMD_PAUSE_SIG);
if (str != NULL)
{
found = 1;
- exp->coll_params.pause_sig = strdup (str);
+ exp->coll_params.pause_sig = xstrdup (str);
}
str = attrs->getValue (SP_JCMD_SAMPLE_PERIOD);
if (str != NULL)
@@ -491,7 +487,7 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
if (str != NULL)
{
found = 1;
- exp->coll_params.linetrace = strdup (str);
+ exp->coll_params.linetrace = xstrdup (str);
}
str = attrs->getValue (SP_JCMD_COLLENV);
@@ -524,11 +520,11 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
pushElem (EL_SYSTEM);
const char *str = attrs->getValue (NTXT ("hostname"));
if (str != NULL)
- exp->hostname = strdup (str);
+ exp->hostname = xstrdup (str);
str = attrs->getValue (NTXT ("os"));
if (str != NULL)
{
- exp->os_version = strdup (str);
+ exp->os_version = xstrdup (str);
/* For Linux experiments expect sparse thread ID's */
if (strncmp (str, NTXT ("SunOS"), 5) != 0)
exp->sparse_threads = true;
@@ -547,7 +543,7 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
exp->platform = Sparc;
exp->need_swap_endian = (DbeSession::platform == Sparc) ?
(exp->platform != Sparc) : (exp->platform == Sparc);
- exp->architecture = strdup (str);
+ exp->architecture = xstrdup (str);
}
str = attrs->getValue (NTXT ("pagesz"));
if (str != NULL)
@@ -624,7 +620,7 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
exp->sid = atoi (str);
str = attrs->getValue (NTXT ("cwd"));
if (str != NULL)
- exp->ucwd = strdup (str);
+ exp->ucwd = xstrdup (str);
str = attrs->getValue (NTXT ("pagesz"));
if (str != NULL)
exp->page_size = atoi (str);
@@ -1061,7 +1057,7 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
exp->has_java = true;
str = attrs->getValue (NTXT ("jversion"));
if (str != NULL)
- exp->jversion = strdup (str);
+ exp->jversion = xstrdup (str);
}
else if (strcmp (str, NTXT ("datarace")) == 0)
{
@@ -1148,7 +1144,7 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
{
fldDscr->vtype = TYPE_DATE;
const char *fmt = attrs->getValue (NTXT ("format"));
- fldDscr->format = strdup (fmt ? fmt : "");
+ fldDscr->format = xstrdup (fmt ? fmt : "");
}
}
propDscr->vtype = fldDscr->vtype;
@@ -1173,7 +1169,7 @@ Experiment::ExperimentHandler::startElement (char*, char*, char *qName, Attribut
str = attrs->getValue (NTXT ("uname"));
if (str)
- propDscr->uname = strdup (PTXT ((char*) str));
+ propDscr->uname = xstrdup (PTXT ((char*) str));
str = attrs->getValue (NTXT ("noshow"));
if (str && atoi (str) != 0)
propDscr->flags |= PRFLAG_NOSHOW;
@@ -4589,7 +4585,7 @@ Experiment::readPacket (Data_window *dwin, Data_window::Span *span)
else
{
// bug 6909545: garbage in 64-bit JAVA_INFO
- char *nstack = (char*) malloc (stack_size);
+ char *nstack = (char*) xmalloc (stack_size);
char *dst = nstack;
char *srcmax = stack + stack_size - sizeof (uint64_t);
for (char *src = stack; src <= srcmax;)
@@ -5845,7 +5841,7 @@ Experiment::checkFileInArchive (const char *fname, bool archiveFile)
DbeFile *df = archiveMap->get (aname);
free (aname);
if (df)
- return strdup (df->get_location ());
+ return xstrdup (df->get_location ());
return NULL;
}
if (founder_exp)
@@ -6591,12 +6587,7 @@ Experiment::copy_file_to_common_archive (const char *name, const char *aname,
fprintf (stderr, GTXT ("gp-archive: Fatal error: pathconf(\".\", _PC_PATH_MAX) failed\n"));
return 1;
}
- char *buf = (char *) malloc ((size_t) size);
- if (buf == NULL)
- {
- fprintf (stderr, GTXT ("gp-archive: Fatal error: unable to allocate memory\n"));
- return 1;
- }
+ char *buf = (char *) xmalloc ((size_t) size);
char *ptr = getcwd (buf, (size_t) size);
if (ptr == NULL)
{
diff --git a/gprofng/src/Function.cc b/gprofng/src/Function.cc
index 1d8ae45..dd9a2c7 100644
--- a/gprofng/src/Function.cc
+++ b/gprofng/src/Function.cc
@@ -129,14 +129,14 @@ Function::get_name (NameFormat nfmt)
bool soname_fmt = Histable::soname_fmt (nfmt);
int fname_fmt = Histable::fname_fmt (nfmt);
if (fname_fmt == Histable::MANGLED)
- name_buf = strdup (mangled_name);
+ name_buf = xstrdup (mangled_name);
else
{
if (module && module->is_fortran ()
&& (streq (name, "MAIN") || streq (name, "MAIN_")))
- name_buf = strdup (match_name);
+ name_buf = xstrdup (match_name);
else
- name_buf = strdup (name);
+ name_buf = xstrdup (name);
if (fname_fmt == Histable::SHORT)
{
diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am
index fb4b8a0..4179507 100644
--- a/gprofng/src/Makefile.am
+++ b/gprofng/src/Makefile.am
@@ -92,7 +92,6 @@ CSOURCES = \
dbe_hwcdrv.c \
dbe_hwcfuncs.c \
dbe_hwctable.c \
- dbe_memmgr.c \
gethrtime.c \
$(NULL)
diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in
index cef4b27..4c25d01 100644
--- a/gprofng/src/Makefile.in
+++ b/gprofng/src/Makefile.in
@@ -178,7 +178,7 @@ am__objects_1 = Application.lo BaseMetric.lo BaseMetricTreeNode.lo \
QLParser.tab.lo dbe_collctrl.lo i18n.lo parse.lo UserLabel.lo \
util.lo Dbe.lo
am__objects_2 = dbe_hwcdrv.lo dbe_hwcfuncs.lo dbe_hwctable.lo \
- dbe_memmgr.lo gethrtime.lo
+ gethrtime.lo
am_libgprofng_la_OBJECTS = $(am__objects_1) $(am__objects_2)
libgprofng_la_OBJECTS = $(am_libgprofng_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
@@ -519,7 +519,6 @@ CSOURCES = \
dbe_hwcdrv.c \
dbe_hwcfuncs.c \
dbe_hwctable.c \
- dbe_memmgr.c \
gethrtime.c \
$(NULL)
@@ -786,7 +785,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbe_hwcdrv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbe_hwcfuncs.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbe_hwctable.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbe_memmgr.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/envsets.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gethrtime.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gp-archive.Po@am__quote@
diff --git a/gprofng/src/Module.cc b/gprofng/src/Module.cc
index d5255dc..064581c 100644
--- a/gprofng/src/Module.cc
+++ b/gprofng/src/Module.cc
@@ -368,7 +368,7 @@ Module::read_ar (int ar, int obj, char *obj_base)
if (!strncmp (hdr.ar_name, NTXT ("//"), 2))
{
longnames_size = get_ar_size (hdr.ar_size, sizeof (hdr.ar_size));
- longnames = (char *) malloc (longnames_size + 1);
+ longnames = (char *) xmalloc (longnames_size + 1);
int64_t cnt = read_from_file (ar, longnames, longnames_size);
if (cnt != (int64_t) longnames_size)
{
@@ -519,8 +519,8 @@ Module::setFile ()
char *path = loadobject->dbeFile->get_location ();
if (path)
{
- disPath = strdup (path);
- disName = strdup (path);
+ disPath = xstrdup (path);
+ disName = xstrdup (path);
disMTime = loadobject->dbeFile->sbuf.st_mtime;
}
@@ -535,7 +535,7 @@ Module::setFile ()
size_t last = strlen (base) - 1;
base[last] = '\0';
stabsTmp = dbeSession->get_tmp_file_name (base, false);
- dbeSession->tmp_files->append (strdup (stabsTmp));
+ dbeSession->tmp_files->append (xstrdup (stabsTmp));
DbeFile *dbf = dbeSession->getDbeFile (namebuf,
DbeFile::F_DOT_A_LIB | DbeFile::F_FILE);
@@ -553,8 +553,8 @@ Module::setFile ()
dbeFile->check_access (stabsTmp); // init 'sbuf'
dbeFile->sbuf.st_mtime = 0; // Don't check timestamps
dbeFile->container = dbf;
- stabsPath = strdup (stabsTmp);
- stabsName = strdup (path);
+ stabsPath = xstrdup (stabsTmp);
+ stabsName = xstrdup (path);
stabsMTime = dbeFile->sbuf.st_mtime;
}
else
@@ -573,8 +573,8 @@ Module::setFile ()
path = dbeFile->get_location ();
if (path != NULL)
{
- stabsPath = strdup (path);
- stabsName = strdup (path);
+ stabsPath = xstrdup (path);
+ stabsName = xstrdup (path);
stabsMTime = hasDwarf ? 0 : dbeFile->sbuf.st_mtime;
}
}
@@ -585,14 +585,14 @@ Module::setFile ()
{
if (disPath == NULL)
return false;
- stabsPath = strdup (disPath);
- stabsName = strdup (disName);
+ stabsPath = xstrdup (disPath);
+ stabsName = xstrdup (disName);
stabsMTime = disMTime;
}
else if (disPath == NULL)
{
- disPath = strdup (stabsPath);
- disName = strdup (stabsName);
+ disPath = xstrdup (stabsPath);
+ disName = xstrdup (stabsName);
disMTime = stabsMTime;
}
}
@@ -1278,7 +1278,7 @@ Module::set_src_data (Function *func, int vis_bits, int cmpline_visible,
{
Hist_data::HistItem *item = src_items->new_hist_item (NULL, AT_EMPTY,
empty);
- item->value[name_idx].l = strdup (NTXT (""));
+ item->value[name_idx].l = xstrdup (NTXT (""));
data_items->append_hist_item (item);
item = src_items->new_hist_item (NULL, AT_COM, empty);
item->value[name_idx].l = dbe_sprintf (GTXT ("Compile flags: %s"),
diff --git a/gprofng/src/Print.cc b/gprofng/src/Print.cc
index 32a5178..76d9fbd 100644
--- a/gprofng/src/Print.cc
+++ b/gprofng/src/Print.cc
@@ -60,7 +60,7 @@ er_print_common_display::open (Print_params *params)
if (params->dest == DEST_PRINTER)
{
tmp_file = dbeSession->get_tmp_file_name (NTXT ("print"), false);
- dbeSession->tmp_files->append (strdup (tmp_file));
+ dbeSession->tmp_files->append (xstrdup (tmp_file));
out_file = fopen (tmp_file, NTXT ("w"));
}
else if (params->dest == DEST_OPEN_FILE)
@@ -128,7 +128,7 @@ er_print_common_display::get_output (int maxsize)
if (f == NULL)
return dbe_sprintf (GTXT ("Error: cannot open temporary file: %s\n"),
tmp_file);
- char *report = (char *) malloc (max);
+ char *report = (char *) xmalloc (max);
if (report)
{
if (1 != fread (report, max - 1, 1, f))
@@ -2382,7 +2382,7 @@ print_html_label (FILE *out_file, MetricList *metrics_list)
ncols++;
if (ncols == 0)
continue;
- char *name = strdup (mitem->get_name ());
+ char *name = xstrdup (mitem->get_name ());
char *name2 = split_metric_name (name);
const char *style = index == metrics_list->get_sort_ref_index () ? "G" : "";
@@ -2608,7 +2608,7 @@ print_delim_label (FILE *out_file, MetricList *metrics_list, char delim)
if (!(mitem->is_visible () || mitem->is_tvisible ()
|| mitem->is_pvisible ()))
continue;
- char *name = strdup (mitem->get_name ());
+ char *name = xstrdup (mitem->get_name ());
char *name2 = split_metric_name (name);
if (mitem->is_tvisible ())
diff --git a/gprofng/src/QLParser.yy b/gprofng/src/QLParser.yy
index c0d7329..1b09980 100644
--- a/gprofng/src/QLParser.yy
+++ b/gprofng/src/QLParser.yy
@@ -26,11 +26,13 @@
%language "C++"
%code top {
+#include "config.h"
#include <stdio.h>
#include <string.h>
#include <string>
}
%code requires {
+#include "libiberty.h"
#include "QLParser.h"
#include "DbeSession.h"
#include "Expression.h"
@@ -274,7 +276,7 @@ namespace QL
case '"':
{
int maxsz = 16;
- char *str = (char *) malloc (maxsz);
+ char *str = (char *) xmalloc (maxsz);
char *ptr = str;
for (;;)
@@ -301,7 +303,7 @@ namespace QL
{
size_t len = ptr - str;
maxsz = maxsz > 8192 ? maxsz + 8192 : maxsz * 2;
- char *new_s = (char *) realloc (str, maxsz);
+ char *new_s = (char *) xrealloc (str, maxsz);
str = new_s;
ptr = str + len;
}
diff --git a/gprofng/src/SAXParserFactory.cc b/gprofng/src/SAXParserFactory.cc
index 1099ca3..eedda26 100644
--- a/gprofng/src/SAXParserFactory.cc
+++ b/gprofng/src/SAXParserFactory.cc
@@ -112,15 +112,15 @@ AttributesP::append (char *qName, char *value)
*/
SAXException::SAXException ()
{
- message = strdup ("null");
+ message = xstrdup ("null");
}
SAXException::SAXException (const char *_message)
{
if (_message == NULL)
- message = strdup ("null");
+ message = xstrdup ("null");
else
- message = strdup (_message);
+ message = xstrdup (_message);
}
SAXException::~SAXException ()
@@ -197,7 +197,7 @@ SAXParserP::SAXParserP ()
{
dh = NULL;
bufsz = 0x2000;
- buffer = (char*) malloc (bufsz);
+ buffer = (char*) xmalloc (bufsz);
cntsz = 0;
idx = 0;
line = 1;
@@ -214,7 +214,7 @@ SAXParserP::reset ()
{
dh = NULL;
bufsz = 8192;
- buffer = (char*) realloc (buffer, bufsz);
+ buffer = (char*) xrealloc (buffer, bufsz);
cntsz = 0;
idx = 0;
line = 1;
@@ -244,7 +244,7 @@ SAXParserP::parse (File *f, DefaultHandler *_dh)
{
int oldbufsz = bufsz;
bufsz = bufsz >= 0x100000 ? bufsz + 0x100000 : bufsz * 2;
- buffer = (char*) realloc (buffer, bufsz);
+ buffer = (char*) xrealloc (buffer, bufsz);
rem = bufsz - oldbufsz;
}
}
diff --git a/gprofng/src/Settings.cc b/gprofng/src/Settings.cc
index 6d1d357..1af0a23 100644
--- a/gprofng/src/Settings.cc
+++ b/gprofng/src/Settings.cc
@@ -1346,13 +1346,13 @@ Settings::proc_tabs (bool _rdtMode)
if (_rdtMode == true)
{
if (str_rtabs == NULL)
- str_rtabs = strdup ("header");
+ str_rtabs = xstrdup ("header");
cmd = str_rtabs;
}
else
{
if (str_tabs == NULL)
- str_tabs = strdup ("header");
+ str_tabs = xstrdup ("header");
cmd = str_tabs;
}
if (strcmp (cmd, NTXT ("none")) == 0)
diff --git a/gprofng/src/SourceFile.cc b/gprofng/src/SourceFile.cc
index b9f4f13..ac14935 100644
--- a/gprofng/src/SourceFile.cc
+++ b/gprofng/src/SourceFile.cc
@@ -101,7 +101,7 @@ SourceFile::readSource ()
status = OS_NOSRC;
return false;
}
- char *srcMap = (char *) malloc (srcLen + 1);
+ char *srcMap = (char *) xmalloc (srcLen + 1);
int64_t sz = read_from_file (fd, srcMap, srcLen);
if (sz != (int64_t) srcLen)
append_msg (CMSG_ERROR, GTXT ("%s: Can read only %lld bytes instead %lld"),
diff --git a/gprofng/src/StringBuilder.cc b/gprofng/src/StringBuilder.cc
index 9901b62..c89afd7 100644
--- a/gprofng/src/StringBuilder.cc
+++ b/gprofng/src/StringBuilder.cc
@@ -26,6 +26,7 @@
#include <stdarg.h>
#include <unistd.h>
+#include "libiberty.h"
#include "gp-defs.h"
#include "StringBuilder.h"
#include "i18n.h"
@@ -34,7 +35,7 @@ StringBuilder::StringBuilder ()
{
count = 0;
maxCapacity = 16;
- value = (char *) malloc (maxCapacity);
+ value = (char *) xmalloc (maxCapacity);
memset (value, 0, maxCapacity);
}
@@ -42,7 +43,7 @@ StringBuilder::StringBuilder (int capacity)
{
count = 0;
maxCapacity = capacity;
- value = (char *) malloc (maxCapacity);
+ value = (char *) xmalloc (maxCapacity);
memset (value, 0, maxCapacity);
}
@@ -66,7 +67,7 @@ StringBuilder::expandCapacity (int minimumCapacity)
newCapacity = MAXINT;
else if (minimumCapacity > newCapacity)
newCapacity = minimumCapacity;
- char *newValue = (char *) malloc (newCapacity);
+ char *newValue = (char *) xmalloc (newCapacity);
maxCapacity = newCapacity;
memcpy (newValue, value, count);
memset (newValue + count, 0, maxCapacity - count);
@@ -79,7 +80,7 @@ StringBuilder::trimToSize ()
{
if (count < maxCapacity)
{
- char *newValue = (char *) malloc (count);
+ char *newValue = (char *) xmalloc (count);
maxCapacity = count;
memcpy (newValue, value, count);
free (value);
@@ -425,7 +426,7 @@ StringBuilder::reverse ()
char *
StringBuilder::toString ()
{
- char *str = (char *) malloc (count + 1);
+ char *str = (char *) xmalloc (count + 1);
memcpy (str, value, count);
str[count] = '\0';
return str;
diff --git a/gprofng/src/StringMap.h b/gprofng/src/StringMap.h
index db949ad..d4702d3 100644
--- a/gprofng/src/StringMap.h
+++ b/gprofng/src/StringMap.h
@@ -154,7 +154,7 @@ StringMap<Value_t>::put (const char *key, Value_t val)
chunks[nchunks - 1] = new Entry[CHUNK_SIZE];
}
entry = &chunks[entries / CHUNK_SIZE][entries % CHUNK_SIZE];
- entry->key = strdup (key);
+ entry->key = xstrdup (key);
entry->val = val;
index->insert (lo, entry);
hashTable[idx] = entry;
diff --git a/gprofng/src/Table.cc b/gprofng/src/Table.cc
index 5e8883e..4ec0a76 100644
--- a/gprofng/src/Table.cc
+++ b/gprofng/src/Table.cc
@@ -85,7 +85,7 @@ int assert_level = 0; // set to 1 to bypass problematic asserts
PropDescr::PropDescr (int _propID, const char *_name)
{
propID = _propID;
- name = strdup (_name ? _name : NTXT (""));
+ name = xstrdup (_name ? _name : NTXT (""));
uname = NULL;
vtype = TYPE_NONE;
flags = 0;
@@ -116,10 +116,10 @@ PropDescr::addState (int value, const char *stname, const char *stuname)
return;
if (stateNames == NULL)
stateNames = new Vector<char*>;
- stateNames->store (value, strdup (stname));
+ stateNames->store (value, xstrdup (stname));
if (stateUNames == NULL)
stateUNames = new Vector<char*>;
- stateUNames->store (value, strdup (stuname));
+ stateUNames->store (value, xstrdup (stuname));
}
char *
@@ -145,7 +145,7 @@ PropDescr::getStateUName (int value)
FieldDescr::FieldDescr (int _propID, const char *_name)
{
propID = _propID;
- name = _name ? strdup (_name) : NULL;
+ name = _name ? xstrdup (_name) : NULL;
offset = 0;
vtype = TYPE_NONE;
format = NULL;
@@ -820,7 +820,7 @@ public:
virtual char *
fetchString (long i)
{
- return strdup (data->fetch (i));
+ return xstrdup (data->fetch (i));
}
virtual double
@@ -1008,8 +1008,8 @@ DataDescriptor::DataDescriptor (int _id, const char *_name, const char *_uname,
{
isMaster = true;
id = _id;
- name = _name ? strdup (_name) : strdup (NTXT (""));
- uname = _uname ? strdup (_uname) : strdup (NTXT (""));
+ name = _name ? xstrdup (_name) : xstrdup (NTXT (""));
+ uname = _uname ? xstrdup (_uname) : xstrdup (NTXT (""));
flags = _flags;
// master data, shared with reference copies:
@@ -1029,8 +1029,8 @@ DataDescriptor::DataDescriptor (int _id, const char *_name, const char *_uname,
{
isMaster = false;
id = _id;
- name = _name ? strdup (_name) : strdup (NTXT (""));
- uname = _uname ? strdup (_uname) : strdup (NTXT (""));
+ name = _name ? xstrdup (_name) : xstrdup (NTXT (""));
+ uname = _uname ? xstrdup (_uname) : xstrdup (NTXT (""));
flags = dDscr->flags;
// references point to master DataDescriptor
diff --git a/gprofng/src/checks.cc b/gprofng/src/checks.cc
index 4fe850d..f6d9b0e 100644
--- a/gprofng/src/checks.cc
+++ b/gprofng/src/checks.cc
@@ -51,7 +51,7 @@ collect::check_target (int argc, char **argv)
{
case EXEC_OK:
njargs = cc->get_java_arg_cnt ();
- arglist = (char **) calloc (nargs + 5 + njargs, sizeof (char *));
+ arglist = (char **) xcalloc (nargs + 5 + njargs, sizeof (char *));
jargs = cc->get_java_args ();
// store the first argument -- target name
@@ -96,7 +96,7 @@ collect::check_target (int argc, char **argv)
exit (1);
}
njargs = cc->get_java_arg_cnt ();
- arglist = (char **) calloc (nargs + 5 + njargs, sizeof (char *));
+ arglist = (char **) xcalloc (nargs + 5 + njargs, sizeof (char *));
jargs = cc->get_java_args ();
a = find_java ();
@@ -140,7 +140,7 @@ collect::check_target (int argc, char **argv)
}
jargs = cc->get_java_args ();
njargs = cc->get_java_arg_cnt ();
- arglist = (char **) calloc (nargs + 4 + njargs, sizeof (char *));
+ arglist = (char **) xcalloc (nargs + 4 + njargs, sizeof (char *));
a = find_java ();
if (a == NULL)
@@ -377,7 +377,7 @@ collect::status_str (Exec_status rv, char *target_name)
case EXEC_OPEN_FAIL:
return dbe_sprintf (GTXT ("Can't open target executable `%s'\n"), target_name);
case EXEC_ELF_LIB:
- return strdup (GTXT ("Internal error: Not a working version of ELF library\n"));
+ return xstrdup (GTXT ("Internal error: Not a working version of ELF library\n"));
case EXEC_ELF_HEADER:
return dbe_sprintf (GTXT ("Target `%s' is not a valid ELF executable\n"), target_name);
case EXEC_ELF_ARCH:
@@ -450,11 +450,11 @@ collect::find_java (void)
switch (rv)
{
case EXEC_OK:
- java_path = strdup (buf);
+ java_path = xstrdup (buf);
if (verbose == 1)
dbe_write (2, GTXT ("Path to `%s' (set from %s) used for Java profiling\n"),
java_path, java_how);
- return ( strdup (buf));
+ return xstrdup (buf);
default:
dbe_write (2, GTXT ("Path to `%s' (set from %s) does not point to a JVM executable\n"),
buf, java_how);
diff --git a/gprofng/src/collctrl.cc b/gprofng/src/collctrl.cc
index 2fa9a88..3dae531 100644
--- a/gprofng/src/collctrl.cc
+++ b/gprofng/src/collctrl.cc
@@ -64,7 +64,7 @@ read_str (char *from, char **to)
{
if (s[i] != '\n' && s[i] != ' ' && s[i] != '\t')
{
- *to = strndup (s, i + 1);
+ *to = xstrndup (s, i + 1);
return;
}
}
@@ -131,7 +131,7 @@ read_cpuinfo ()
}
if (cpu_info.cpu_vendorstr == NULL)
#if defined(__aarch64__)
- cpu_info.cpu_vendorstr = strdup (AARCH64_VENDORSTR_ARM);
+ cpu_info.cpu_vendorstr = xstrdup (AARCH64_VENDORSTR_ARM);
#else
cpu_info.cpu_vendorstr = GTXT ("Unknown processor");
#endif
@@ -149,11 +149,11 @@ Coll_Ctrl::Coll_Ctrl (int _interactive, bool _defHWC, bool _kernelHWC)
/* set this host's parameters */
gethostname (hostname, 1023);
- node_name = strdup (hostname);
+ node_name = xstrdup (hostname);
char *p = strchr (node_name, (int) '.');
if (p != NULL)
*p = 0;
- default_stem = strdup ("test");
+ default_stem = xstrdup ("test");
cpu_info_t *cpu_p = read_cpuinfo ();
ncpus = cpu_p->cpu_cnt;
@@ -186,7 +186,7 @@ Coll_Ctrl::Coll_Ctrl (int _interactive, bool _defHWC, bool _kernelHWC)
follow_spec_usr = NULL;
follow_spec_cmp = NULL;
prof_idle = 1;
- archive_mode = strdup ("on");
+ archive_mode = xstrdup ("on");
pauseresume_sig = 0;
sample_sig = 0;
uinterrupt = 0;
@@ -201,7 +201,7 @@ Coll_Ctrl::Coll_Ctrl (int _interactive, bool _defHWC, bool _kernelHWC)
base_name = NULL;
udir_name = NULL;
store_dir = NULL;
- prev_store_dir = strdup ("");
+ prev_store_dir = xstrdup ("");
store_ptr = NULL;
expt_group = NULL;
target_name = NULL;
@@ -256,8 +256,8 @@ Coll_Ctrl::Coll_Ctrl (Coll_Ctrl * cc)
interactive = cc->interactive;
defHWC = cc->defHWC;
kernelHWC = cc->kernelHWC;
- node_name = strdup (cc->node_name);
- default_stem = strdup (cc->default_stem);
+ node_name = xstrdup (cc->node_name);
+ default_stem = xstrdup (cc->default_stem);
ncpus = cc->ncpus;
cpu_clk_freq = cc->cpu_clk_freq;
npages = cc->npages;
@@ -272,15 +272,15 @@ Coll_Ctrl::Coll_Ctrl (Coll_Ctrl * cc)
follow_default = cc->follow_default;
if (cc->follow_spec_usr)
{
- follow_spec_usr = strdup (cc->follow_spec_usr);
- follow_spec_cmp = strdup (cc->follow_spec_cmp);
+ follow_spec_usr = xstrdup (cc->follow_spec_usr);
+ follow_spec_cmp = xstrdup (cc->follow_spec_cmp);
}
else
{
follow_spec_usr = NULL;
follow_spec_cmp = NULL;
}
- archive_mode = strdup (cc->archive_mode);
+ archive_mode = xstrdup (cc->archive_mode);
pauseresume_sig = cc->pauseresume_sig;
sample_sig = cc->sample_sig;
time_run = cc->time_run;
@@ -295,12 +295,12 @@ Coll_Ctrl::Coll_Ctrl (Coll_Ctrl * cc)
hwcprof_default = cc->hwcprof_default;
hwcprof_enabled_cnt = cc->hwcprof_enabled_cnt;
if (cc->hwc_string != NULL)
- hwc_string = strdup (cc->hwc_string);
+ hwc_string = xstrdup (cc->hwc_string);
else
hwc_string = NULL;
for (int i = 0; i < hwcprof_enabled_cnt; i++)
hwcentry_dup (&hwctr[i], &(cc->hwctr[i]));
- project_home = cc->project_home ? strdup (cc->project_home) : NULL;
+ project_home = cc->project_home ? xstrdup (cc->project_home) : NULL;
synctrace_enabled = cc->synctrace_enabled;
synctrace_thresh = cc->synctrace_thresh;
synctrace_scope = cc->synctrace_scope;
@@ -324,16 +324,16 @@ Coll_Ctrl::Coll_Ctrl (Coll_Ctrl * cc)
// these represent user settings
expt_group = NULL;
if (cc->expt_group != NULL)
- expt_group = strdup (cc->expt_group);
+ expt_group = xstrdup (cc->expt_group);
uexpt_name = NULL;
if (cc->uexpt_name != NULL)
- uexpt_name = strdup (cc->uexpt_name);
+ uexpt_name = xstrdup (cc->uexpt_name);
udir_name = NULL;
if (cc->udir_name != NULL)
- udir_name = strdup (cc->udir_name);
+ udir_name = xstrdup (cc->udir_name);
/* clear the string pointers */
- prev_store_dir = strdup ("");
+ prev_store_dir = xstrdup ("");
store_ptr = NULL;
target_name = NULL;
data_desc = NULL;
@@ -408,11 +408,11 @@ char *
Coll_Ctrl::enable_expt ()
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (cpu_clk_freq == 0)
- return strdup (GTXT ("Can not determine CPU clock frequency.\n"));
+ return xstrdup (GTXT ("Can not determine CPU clock frequency.\n"));
if (sys_resolution == 0)
- return strdup (GTXT ("System clock profile resolution can not be determined.\n"));
+ return xstrdup (GTXT ("System clock profile resolution can not be determined.\n"));
enabled = 1;
return NULL;
}
@@ -450,14 +450,14 @@ Coll_Ctrl::check_consistency ()
{
/* check for Java arguments, but not Java profiling */
if (java_args != NULL && java_mode == 0)
- return strdup (GTXT ("Java arguments can not be set if Java profiling is not enabled.\n"));
+ return xstrdup (GTXT ("Java arguments can not be set if Java profiling is not enabled.\n"));
/* if count data, no other data is allowed */
if (count_enabled != 0
&& ((clkprof_default != 1 && clkprof_enabled != 0)
|| hwcprof_enabled_cnt != 0 || synctrace_enabled != 0
|| heaptrace_mode != NULL || iotrace_enabled != 0))
- return strdup (GTXT ("Count data cannot be collected along with any other data.\n"));
+ return xstrdup (GTXT ("Count data cannot be collected along with any other data.\n"));
/* if count data, various other options are not allowed */
if (count_enabled != 0
@@ -466,10 +466,10 @@ Coll_Ctrl::check_consistency ()
|| (follow_mode != 0 && follow_default != 1)
|| pauseresume_sig != 0 || sample_sig != 0
|| (sample_default != 1 && sample_period != 0) || time_run != 0))
- return strdup (GTXT ("Count data cannot be collected with any of -F -S -y -l -j -J -x -t .\n"));
+ return xstrdup (GTXT ("Count data cannot be collected with any of -F -S -y -l -j -J -x -t .\n"));
/* if not count data, I and N options are not allowed */
if (count_enabled == 0 && (Iflag != 0 || Nflag != 0))
- return strdup (GTXT ("-I or -N can only be specified with count data.\n"));
+ return xstrdup (GTXT ("-I or -N can only be specified with count data.\n"));
return NULL;
}
@@ -483,12 +483,12 @@ Coll_Ctrl::check_expt (char **warn)
return ret;
/* check for heaptrace and java -- warn that it covers native allocations only */
if (heaptrace_mode != NULL && java_mode == 1 && java_default == 0)
- *warn = strdup (GTXT ("Note: Heap profiling will only trace native allocations, not Java allocations.\n"));
+ *warn = xstrdup (GTXT ("Note: Heap profiling will only trace native allocations, not Java allocations.\n"));
/* if no profiling data selected, warn the user */
if (clkprof_enabled == 0 && hwcprof_enabled_cnt == 0 && synctrace_enabled == 0
&& heaptrace_mode == NULL && iotrace_enabled == 0 && count_enabled == 0)
- *warn = strdup (GTXT ("Warning: No function level data requested; only statistics will be collected.\n\n"));
+ *warn = xstrdup (GTXT ("Warning: No function level data requested; only statistics will be collected.\n\n"));
build_data_desc ();
/* verify that the directory exists */
@@ -677,22 +677,20 @@ char **
Coll_Ctrl::get_collect_args ()
{
char **p;
- char **argv = (char **) calloc (MAX_COLLECT_ARGS, sizeof (char *));
- if (argv == NULL) // poor way of dealing with calloc failure
- abort ();
+ char **argv = (char **) xcalloc (MAX_COLLECT_ARGS, sizeof (char *));
p = argv;
- *p++ = strdup ("collect");
+ *p++ = xstrdup ("collect");
if (debug_mode == 1)
- *p++ = strdup ("-x");
+ *p++ = xstrdup ("-x");
if (clkprof_enabled != 0)
{
- *p++ = strdup ("-p");
+ *p++ = xstrdup ("-p");
*p++ = dbe_sprintf ("%du", clkprof_timer);
}
if (hwcprof_enabled_cnt > 0)
{
StringBuilder sb;
- *p++ = strdup ("-h");
+ *p++ = xstrdup ("-h");
for (int ii = 0; ii < hwcprof_enabled_cnt; ii++)
{
char*rateString = hwc_rate_string (&hwctr[ii], 1); //"1" is for temporary goldfile compatibility. TBR YXXX!!
@@ -711,90 +709,90 @@ Coll_Ctrl::get_collect_args ()
}
if (heaptrace_mode != NULL)
{
- *p++ = strdup ("-H");
- *p++ = strdup (heaptrace_mode);
+ *p++ = xstrdup ("-H");
+ *p++ = xstrdup (heaptrace_mode);
}
if (iotrace_enabled != 0)
{
- *p++ = strdup ("-i");
- *p++ = strdup ("on");
+ *p++ = xstrdup ("-i");
+ *p++ = xstrdup ("on");
}
if (synctrace_enabled != 0)
{
- *p++ = strdup ("-s");
+ *p++ = xstrdup ("-s");
if (synctrace_thresh < 0)
- *p++ = strdup ("calibrate");
+ *p++ = xstrdup ("calibrate");
else if (synctrace_thresh == 0)
- *p++ = strdup ("all");
+ *p++ = xstrdup ("all");
else
*p++ = dbe_sprintf ("%d", synctrace_thresh);
*p++ = dbe_sprintf (",%d", synctrace_scope);
}
if (follow_mode != 0)
{
- *p++ = strdup ("-F");
+ *p++ = xstrdup ("-F");
char * fs = get_follow_usr_spec ();
if (fs)
- *p++ = strdup (fs);
+ *p++ = xstrdup (fs);
else
{
switch (get_follow_mode ())
{
case FOLLOW_ON:
- *p++ = strdup ("on");
+ *p++ = xstrdup ("on");
break;
case FOLLOW_ALL:
- *p++ = strdup ("all");
+ *p++ = xstrdup ("all");
break;
case FOLLOW_NONE:
default:
- *p++ = strdup ("off");
+ *p++ = xstrdup ("off");
break;
}
}
}
- *p++ = strdup ("-a");
- *p++ = strdup (get_archive_mode ());
+ *p++ = xstrdup ("-a");
+ *p++ = xstrdup (get_archive_mode ());
if (java_mode != 0)
{
- *p++ = strdup ("-j");
- *p++ = strdup ("on");
+ *p++ = xstrdup ("-j");
+ *p++ = xstrdup ("on");
}
if (pauseresume_sig != 0)
{
- *p++ = strdup ("-y");
+ *p++ = xstrdup ("-y");
*p++ = dbe_sprintf ("%d%s", pauseresume_sig,
(pauseresume_pause == 0 ? ",r" : ""));
}
if (sample_sig != 0)
{
- *p++ = strdup ("-l");
+ *p++ = xstrdup ("-l");
*p++ = dbe_sprintf ("%d", sample_sig);
}
if (sample_period != 0)
{
- *p++ = strdup ("-S");
+ *p++ = xstrdup ("-S");
*p++ = dbe_sprintf ("%d", sample_period);
}
if (size_limit != 0)
{
- *p++ = strdup ("-L");
+ *p++ = xstrdup ("-L");
*p++ = dbe_sprintf ("%d", size_limit);
}
if (expt_group != NULL)
{
- *p++ = strdup ("-g");
- *p++ = strdup (expt_group);
+ *p++ = xstrdup ("-g");
+ *p++ = xstrdup (expt_group);
}
if (udir_name != 0)
{
- *p++ = strdup ("-d");
- *p++ = strdup (udir_name);
+ *p++ = xstrdup ("-d");
+ *p++ = xstrdup (udir_name);
}
if (expt_name != 0)
{
- *p++ = strdup ("-o");
- *p++ = strdup (expt_name);
+ *p++ = xstrdup ("-o");
+ *p++ = xstrdup (expt_name);
}
if (p - argv >= MAX_COLLECT_ARGS) // argument list too small -- fatal error
abort ();
@@ -852,10 +850,10 @@ Coll_Ctrl::set_clkprof (const char *string, char** warn)
int prevclkprof_default;
*warn = NULL;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
/* if the first character is a +, warn user that it is no longer supported */
if (string[0] == '+')
- return strdup (GTXT ("Warning: clock-based memoryspace and dataspace profiling is no longer supported\n"));
+ return xstrdup (GTXT ("Warning: clock-based memoryspace and dataspace profiling is no longer supported\n"));
if (strcmp (string, "off") == 0)
{
clkprof_enabled = 0;
@@ -946,7 +944,7 @@ char *
Coll_Ctrl::set_synctrace (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
char *comma_p = NULL;
if (string == NULL)
{
@@ -962,7 +960,7 @@ Coll_Ctrl::set_synctrace (const char *string)
}
return NULL;
}
- char *val = strdup (string);
+ char *val = xstrdup (string);
/* see if there's a comma in the string */
char *next = strchr (val, (int) ',');
if (next != NULL)
@@ -1042,14 +1040,14 @@ char *
Coll_Ctrl::set_heaptrace (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
free(heaptrace_mode);
heaptrace_mode = NULL; // Same as "off"
if (string != NULL && strcmp (string, "off") == 0)
return NULL;
if (string == NULL || strlen (string) == 0 || strcmp (string, "on") == 0)
- heaptrace_mode = strdup ("on");
+ heaptrace_mode = xstrdup ("on");
else if (isdigit (*string))
{
char *s;
@@ -1064,7 +1062,7 @@ Coll_Ctrl::set_heaptrace (const char *string)
if (*s != 0)
return dbe_sprintf (
GTXT ("Incorrect range in heap trace parameter '%s'\n"), string);
- heaptrace_mode = strdup (string);
+ heaptrace_mode = xstrdup (string);
}
else
return dbe_sprintf (GTXT ("Unrecognized heap tracing parameter `%s'\n"),
@@ -1083,7 +1081,7 @@ char *
Coll_Ctrl::set_iotrace (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strlen (string) == 0 || strcmp (string, "on") == 0)
{
iotrace_enabled = 1;
@@ -1108,7 +1106,7 @@ Coll_Ctrl::set_count (const char *string)
{
int ret = -1;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strlen (string) == 0 || strcmp (string, "off") == 0)
{
count_enabled = 0;
@@ -1161,9 +1159,9 @@ char *
Coll_Ctrl::set_time_run (const char *valarg)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (valarg == NULL) /* invalid setting */
- return strdup (GTXT ("time parameter can not be NULL\n"));
+ return xstrdup (GTXT ("time parameter can not be NULL\n"));
/* the string should be a number >= 0 */
int prev_start_delay = start_delay;
int prev_time_run = time_run;
@@ -1233,9 +1231,9 @@ char *
Coll_Ctrl::set_attach_pid (char *valarg)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (valarg == NULL)
- return strdup (GTXT ("Specified PID can not be NULL\n"));
+ return xstrdup (GTXT ("Specified PID can not be NULL\n"));
/* the string should be a number corresponding to an active process' pid */
char *endchar = NULL;
@@ -1269,19 +1267,19 @@ Coll_Ctrl::hwcentry_dup (Hwcentry *hnew, Hwcentry *_hwc)
{
*hnew = *_hwc;
if (_hwc->name != NULL)
- hnew->name = strdup (_hwc->name);
+ hnew->name = xstrdup (_hwc->name);
else
hnew->name = NULL;
if (_hwc->int_name != NULL)
- hnew->int_name = strdup (_hwc->int_name);
+ hnew->int_name = xstrdup (_hwc->int_name);
else
hnew->int_name = NULL;
if (_hwc->metric != NULL)
- hnew->metric = strdup (_hwc->metric);
+ hnew->metric = xstrdup (_hwc->metric);
else
hnew->metric = NULL;
if (_hwc->short_desc != NULL)
- hnew->short_desc = strdup (_hwc->short_desc);
+ hnew->short_desc = xstrdup (_hwc->short_desc);
else
hnew->short_desc = NULL;
}
@@ -1378,7 +1376,7 @@ Coll_Ctrl::add_hwcstring (const char *string, char **warnmsg)
char *emsg;
char *wmsg;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (hwcprof_default == 0)
{
/* Copy the counters already defined */
@@ -1472,14 +1470,12 @@ Coll_Ctrl::add_default_hwcstring (const char *resolution, char **warnmsg, bool a
}
/* allocate return string */
int retsize = 2 * len + 10;
- char *ret = (char *) malloc (retsize);
- if (ret == NULL)
- return strdup (GTXT ("internal error formating HW counter set; malloc failed\n"));
+ char *ret = (char *) xmalloc (retsize);
*ret = 0;
char *retp = ret;
char *stringp = def_string;
int first = 1;
- char *hwc_defaultx = strdup (def_string);
+ char *hwc_defaultx = xstrdup (def_string);
/* now massage the string in order to insert resolution for each counter */
for (;;)
@@ -1608,7 +1604,7 @@ Coll_Ctrl::set_sample_period (const char *string)
{
int val;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strcmp (string, "on") == 0)
val = 1;
else if (strcmp (string, "off") == 0)
@@ -1638,7 +1634,7 @@ char *
Coll_Ctrl::set_size_limit (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strlen (string) == 0
|| strcmp (string, "unlimited") == 0 || strcmp (string, "none") == 0)
{
@@ -1776,7 +1772,7 @@ Coll_Ctrl::join_group ()
if (uinterrupt == 1)
{
close (groupfd);
- return strdup (GTXT ("user interrupt\n"));
+ return xstrdup (GTXT ("user interrupt\n"));
}
// it's opened, now lock it
if (fcntl (groupfd, F_SETLK, &flockbuf) != -1)
@@ -1820,7 +1816,7 @@ Coll_Ctrl::join_group ()
// can't get the lock, close the file and try again
close (groupfd);
if (uinterrupt == 1)
- return strdup (GTXT ("user interrupt\n"));
+ return xstrdup (GTXT ("user interrupt\n"));
if (tries == 11900)
return dbe_sprintf (GTXT ("Timed out: waiting for group file %s\n"), group_file);
#if 0
@@ -1883,7 +1879,7 @@ Coll_Ctrl::set_directory (char *dir, char **warn)
struct stat statbuf;
*warn = NULL;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (stat (dir, &statbuf) != 0)
return dbe_sprintf (GTXT ("Can't set directory `%s': %s\n"),
dir, strerror (errno));
@@ -1891,7 +1887,7 @@ Coll_Ctrl::set_directory (char *dir, char **warn)
return dbe_sprintf (GTXT ("Can't set directory `%s': %s\n"),
dir, strerror (ENOTDIR));
free (udir_name);
- udir_name = strdup (dir);
+ udir_name = xstrdup (dir);
// Process new setting
*warn = preprocess_names ();
@@ -1922,14 +1918,14 @@ Coll_Ctrl::set_target (char* targetname)
free (target_name);
target_name = NULL;
if (targetname != NULL)
- target_name = strdup (targetname);
+ target_name = xstrdup (targetname);
return 0;
}
void
Coll_Ctrl::set_default_stem (const char* stem)
{
- default_stem = strdup (stem);
+ default_stem = xstrdup (stem);
preprocess_names ();
(void) update_expt_name (false, false); // no warnings
}
@@ -1944,7 +1940,7 @@ Coll_Ctrl::set_expt (const char *ename, char **warn, bool overwriteExp)
uexpt_name = NULL;
return NULL;
}
- char *exptname = canonical_path (strdup (ename));
+ char *exptname = canonical_path (xstrdup (ename));
size_t i = strlen (exptname);
if (i < 4 || strcmp (&exptname[i - 3], ".er") != 0)
{
@@ -1980,7 +1976,7 @@ char *
Coll_Ctrl::set_group (char *groupname)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (expt_group != NULL)
{
free (expt_group);
@@ -1996,7 +1992,7 @@ Coll_Ctrl::set_group (char *groupname)
int i = (int) strlen (groupname);
if (i < 5 || strcmp (&groupname[i - 4], ".erg") != 0)
return dbe_sprintf (GTXT ("Experiment group name `%s'must end in `.erg'\n"), groupname);
- expt_group = strdup (groupname);
+ expt_group = xstrdup (groupname);
preprocess_names ();
(void) update_expt_name (true, false);
return NULL;
@@ -2007,7 +2003,7 @@ Coll_Ctrl::set_java_mode (const char *string)
{
struct stat statbuf;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strlen (string) == 0 || strcmp (string, "on") == 0)
{
#if defined(GPROFNG_JAVA_PROFILING)
@@ -2024,7 +2020,7 @@ Coll_Ctrl::set_java_mode (const char *string)
}
return NULL;
#else
- return strdup (GTXT ("gprofng was built without support for profiling Java applications\n"));
+ return xstrdup (GTXT ("gprofng was built without support for profiling Java applications\n"));
#endif
}
if (strcmp (string, "off") == 0)
@@ -2071,9 +2067,9 @@ char *
Coll_Ctrl::set_java_path (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
free (java_path);
- java_path = strdup (string);
+ java_path = xstrdup (string);
return NULL;
}
@@ -2082,12 +2078,12 @@ Coll_Ctrl::set_java_args (char *string)
{
char *next;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
char *prev_java_args = java_args;
if (string == NULL || strlen (string) == 0)
- java_args = strdup ("");
+ java_args = xstrdup ("");
else
- java_args = strdup (string);
+ java_args = xstrdup (string);
// now count the number of Java arguments
for (next = java_args; *next; next++)
{
@@ -2116,7 +2112,7 @@ char *
Coll_Ctrl::set_follow_mode (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
free (follow_spec_usr);
free (follow_spec_cmp);
follow_spec_usr = NULL;
@@ -2143,18 +2139,13 @@ Coll_Ctrl::set_follow_mode (const char *string)
int ercode;
const char *userspec = &string[1];
size_t newstrlen = strlen (userspec) + 3;
- char * str = (char *) malloc (newstrlen);
- if (str)
- {
- snprintf (str, newstrlen, "^%s$", userspec);
- assert (strlen (str) == newstrlen - 1);
- ercode = regcomp (&regex_desc, str, REG_EXTENDED | REG_NOSUB | REG_NEWLINE);
- }
- else
- ercode = 1;
+ char * str = (char *) xmalloc (newstrlen);
+ snprintf (str, newstrlen, "^%s$", userspec);
+ assert (strlen (str) == newstrlen - 1);
+ ercode = regcomp (&regex_desc, str, REG_EXTENDED | REG_NOSUB | REG_NEWLINE);
if (!ercode)
{
- follow_spec_usr = strdup (string);
+ follow_spec_usr = xstrdup (string);
/* Ideally, follow_spec_cmp = [serialized regex_desc], */
/* so that libcollector wouldn't have to recompile it. */
/* For now, just copy the regular expression into follow_spec_cmp */
@@ -2173,7 +2164,7 @@ char *
Coll_Ctrl::set_prof_idle (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strlen (string) == 0 || strcmp (string, "on") == 0)
{
prof_idle = 1;
@@ -2191,7 +2182,7 @@ char *
Coll_Ctrl::set_archive_mode (const char *string)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (string == NULL || strlen (string) == 0)
string = "on";
if (strcasecmp (string, "on") == 0 || strcasecmp (string, "off") == 0
@@ -2201,7 +2192,7 @@ Coll_Ctrl::set_archive_mode (const char *string)
|| strcasecmp (string, "all") == 0)
{
free (archive_mode);
- archive_mode = strdup (string);
+ archive_mode = xstrdup (string);
return NULL;
}
return dbe_sprintf (GTXT ("Unrecognized archive-mode parameter `%s'\n"), string);
@@ -2212,7 +2203,7 @@ Coll_Ctrl::set_sample_signal (int value)
{
const char *buf;
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (value == 0)
{
sample_sig = 0;
@@ -2241,9 +2232,7 @@ Coll_Ctrl::find_sig (const char *string)
if (strncmp (string, "SIG", 3) != 0)
{
// no: add it
- signame_alloc = (char *) malloc (strlen (string) + 3 + 1);
- if (signame_alloc == NULL)
- return -1;
+ signame_alloc = (char *) xmalloc (strlen (string) + 3 + 1);
strcpy (signame_alloc, "SIG");
strcpy (&signame_alloc[3], string);
signame = signame_alloc;
@@ -2266,7 +2255,7 @@ char *
Coll_Ctrl::set_pauseresume_signal (int value, int resume)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
if (value == 0)
{
pauseresume_sig = 0;
@@ -2299,7 +2288,7 @@ char *
Coll_Ctrl::set_debug_mode (int value)
{
if (opened == 1)
- return strdup (GTXT ("Experiment is active; command ignored.\n"));
+ return xstrdup (GTXT ("Experiment is active; command ignored.\n"));
debug_mode = value;
return NULL;
}
@@ -2373,7 +2362,7 @@ Coll_Ctrl::preprocess_names ()
}
expno = 1;
if (uexpt_name != NULL)
- expt_name = strdup (uexpt_name);
+ expt_name = xstrdup (uexpt_name);
else
{
// no user name -- pick a default
@@ -2382,12 +2371,12 @@ Coll_Ctrl::preprocess_names ()
char *stembase;
if (expt_group == NULL)
{
- stem = strdup (default_stem);
+ stem = xstrdup (default_stem);
stembase = stem;
}
else
{
- stem = strdup (expt_group);
+ stem = xstrdup (expt_group);
stem[strlen (stem) - 4] = 0;
stembase = stem;
// now remove any leading directory
@@ -2401,7 +2390,7 @@ Coll_Ctrl::preprocess_names ()
if (strlen (stembase) == 0)
{
free (stem);
- stem = strdup (default_stem);
+ stem = xstrdup (default_stem);
stembase = stem;
}
}
@@ -2417,35 +2406,35 @@ Coll_Ctrl::preprocess_names ()
char *s = strrchr (expt_name, '/');
if (s == NULL)
{
- expt_dir = strdup (".");
- base_name = strdup (expt_name);
+ expt_dir = xstrdup (".");
+ base_name = xstrdup (expt_name);
}
else
{
expt_dir = dbe_strndup (expt_name, s - expt_name);
- base_name = strdup (s + 1);
+ base_name = xstrdup (s + 1);
}
if (expt_dir[0] == '/')
- store_dir = strdup (expt_dir);
+ store_dir = xstrdup (expt_dir);
else if ((udir_name == NULL) || (udir_name[0] == 0))
{
if (expt_dir[0] == 0)
- store_dir = strdup (".");
+ store_dir = xstrdup (".");
else
- store_dir = strdup (expt_dir);
+ store_dir = xstrdup (expt_dir);
}
else
{
/* udir_name is a non-empty string */
if (expt_dir[0] == 0)
- store_dir = strdup (udir_name);
+ store_dir = xstrdup (udir_name);
else
store_dir = dbe_sprintf ("%s/%s", udir_name, expt_dir);
}
free (store_ptr);
if (strcmp (store_dir, ".") == 0)
- store_ptr = strdup (base_name);
+ store_ptr = xstrdup (base_name);
else
store_ptr = dbe_sprintf ("%s/%s", store_dir, base_name);
@@ -2453,7 +2442,7 @@ Coll_Ctrl::preprocess_names ()
if (strcmp (store_dir, prev_store_dir) != 0)
{
free (prev_store_dir);
- prev_store_dir = strdup (store_dir);
+ prev_store_dir = xstrdup (store_dir);
const char *fstype = get_fstype (store_dir);
if (interactive && enabled && (fstype != NULL) && (nofswarn == 0))
sb.appendf (GTXT ("Experiment directory is set to a file system of type \"%s\",\n"
@@ -2513,7 +2502,7 @@ Coll_Ctrl::update_expt_name (bool chgmsg, bool chkonly, bool newname)
return NULL;
// save the name for a changed message
- char *oldbase = strdup (base_name);
+ char *oldbase = xstrdup (base_name);
// the name is of the from prefix.nnn.er; extract the value of nnn
int version = atoi (&base_name[pcount + 1]);
@@ -2568,17 +2557,17 @@ Coll_Ctrl::update_expt_name (bool chgmsg, bool chkonly, bool newname)
else
free (oldbase);
free (base_name);
- base_name = strdup (newbase);
+ base_name = xstrdup (newbase);
// now, reset expt_name to reflect new setting
free (expt_name);
if (expt_dir[0] == 0)
- expt_name = strdup (base_name);
+ expt_name = xstrdup (base_name);
else
expt_name = dbe_sprintf ("%s/%s", expt_dir, base_name);
free (store_ptr);
if (strcmp (store_dir, ".") == 0)
- store_ptr = strdup (base_name);
+ store_ptr = xstrdup (base_name);
else
store_ptr = dbe_sprintf ("%s/%s", store_dir, base_name);
closedir (dir);
@@ -2712,7 +2701,7 @@ Coll_Ctrl::find_signal_name (int signal)
char *str_signal = NULL;
const char *buf = strsignal (signal);
if (buf != NULL)
- str_signal = strdup (buf);
+ str_signal = xstrdup (buf);
return str_signal;
}
@@ -2729,7 +2718,7 @@ Coll_Ctrl::get (char * control)
{
if ((size_limit > 0))
return dbe_sprintf ("%d", size_limit);
- return strdup (ipc_str_unlimited);
+ return xstrdup (ipc_str_unlimited);
}
if (!strncmp (control, ipc_str_time_limit, len))
{
@@ -2743,67 +2732,67 @@ Coll_Ctrl::get (char * control)
}
return dbe_sprintf ("0s-%ds", time_run);
}
- return strdup (ipc_str_unlimited);
+ return xstrdup (ipc_str_unlimited);
}
if (strncmp (control, ipc_str_arch_exp, len) == 0)
- return strdup (get_archive_mode ());
+ return xstrdup (get_archive_mode ());
if (!strncmp (control, ipc_str_descendant, len))
{
switch (get_follow_mode ())
{
case FOLLOW_ON:
- return strdup (ipc_str_on);
+ return xstrdup (ipc_str_on);
case FOLLOW_ALL:
- return strdup (ipc_str_on);
+ return xstrdup (ipc_str_on);
case FOLLOW_NONE:
default:
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
}
}
if (!strncmp (control, ipc_str_prof_idle, len))
{
if (prof_idle == 0)
- return strdup (ipc_str_off);
- return strdup (ipc_str_on);
+ return xstrdup (ipc_str_off);
+ return xstrdup (ipc_str_on);
}
if (!strncmp (control, ipc_str_clkprof, len))
{
if (clkprof_default == 1 && clkprof_enabled == 1) // Default value
- return strdup (ipc_str_empty);
+ return xstrdup (ipc_str_empty);
if (clkprof_enabled == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
if ((clkprof_timer > 0))
return dbe_sprintf ("%d", clkprof_timer / 1000);
- return strdup (ipc_str_internal_error);
+ return xstrdup (ipc_str_internal_error);
}
if (!strncmp (control, ipc_str_hwcprof, len))
{
if (hwcprof_enabled_cnt == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
if (hwc_string != NULL)
return dbe_sprintf ("on\n%s", hwc_string);
- return strdup (ipc_str_on); // XXX need more details?
+ return xstrdup (ipc_str_on); // XXX need more details?
}
if (!strncmp (control, ipc_str_javaprof, len))
{
if (java_mode == 0)
- return strdup (ipc_str_off);
- return strdup (ipc_str_on);
+ return xstrdup (ipc_str_off);
+ return xstrdup (ipc_str_on);
}
if (!strncmp (control, ipc_str_sample, len))
{
if (sample_default == 1 && sample_period == 1) // Default value
- return strdup (ipc_str_empty);
+ return xstrdup (ipc_str_empty);
if (sample_period == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
if (sample_period > 0)
return dbe_sprintf ("%d", sample_period);
- return strdup (ipc_str_internal_error);
+ return xstrdup (ipc_str_internal_error);
}
if (!strncmp (control, ipc_str_sample_sig, len))
{
if (sample_sig == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
char *str_signal = find_signal_name (sample_sig);
if (str_signal != NULL)
return str_signal;
@@ -2812,7 +2801,7 @@ Coll_Ctrl::get (char * control)
if (!strncmp (control, ipc_str_pause_resume_sig, len))
{
if (pauseresume_sig == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
char *str_signal = find_signal_name (pauseresume_sig);
if (str_signal != NULL)
return str_signal;
@@ -2821,34 +2810,34 @@ Coll_Ctrl::get (char * control)
if (!strncmp (control, ipc_str_synctrace, len))
{
if (synctrace_enabled == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
if (synctrace_thresh < 0)
- return strdup ("on\nthreshold: calibrate");
+ return xstrdup ("on\nthreshold: calibrate");
if (synctrace_thresh == 0)
- return strdup ("on\nthreshold: all");
+ return xstrdup ("on\nthreshold: all");
return dbe_sprintf ("on\nthreshold: %d", synctrace_thresh);
}
if (!strncmp (control, ipc_str_heaptrace, len))
{
if (heaptrace_mode == NULL)
- return strdup (ipc_str_off);
- return strdup (ipc_str_on);
+ return xstrdup (ipc_str_off);
+ return xstrdup (ipc_str_on);
}
if (!strncmp (control, ipc_str_iotrace, len))
{
if (iotrace_enabled == 0)
- return strdup (ipc_str_off);
- return strdup (ipc_str_on);
+ return xstrdup (ipc_str_off);
+ return xstrdup (ipc_str_on);
}
if (!strncmp (control, ipc_str_count, len))
{
if (count_enabled == 0)
- return strdup (ipc_str_off);
+ return xstrdup (ipc_str_off);
if (count_enabled < 0)
- return strdup ("on\nstatic");
- return strdup (ipc_str_on);
+ return xstrdup ("on\nstatic");
+ return xstrdup (ipc_str_on);
}
- return strdup (ipc_str_unknown_control);
+ return xstrdup (ipc_str_unknown_control);
}
/**
@@ -2914,7 +2903,7 @@ Coll_Ctrl::set (char * control, const char * value)
return set_sample_signal (find_sig (value));
if (!strncmp (control, ipc_str_pause_resume_sig, len))
{
- char *str_signal = strdup (value);
+ char *str_signal = xstrdup (value);
char *str_state = strchr (str_signal, (int) '\n');
if (str_state != NULL)
{
@@ -2936,7 +2925,7 @@ Coll_Ctrl::set (char * control, const char * value)
return set_iotrace (value);
if (!strncmp (control, ipc_str_count, len))
return set_count (value);
- return strdup (ipc_str_unknown_control);
+ return xstrdup (ipc_str_unknown_control);
}
/**
@@ -2957,7 +2946,7 @@ Coll_Ctrl::unset (char * control)
}
if (!strncmp (control, ipc_str_arch_exp, len))
{
- archive_mode = strdup ("on");
+ archive_mode = xstrdup ("on");
return NULL;
}
if (!strncmp (control, ipc_str_descendant, len))
@@ -3031,12 +3020,12 @@ Coll_Ctrl::unset (char * control)
Nflag = 0;
return NULL;
}
- return strdup (ipc_str_unknown_control);
+ return xstrdup (ipc_str_unknown_control);
}
void
Coll_Ctrl::set_project_home (char *s)
{
if (s)
- project_home = strdup (s);
+ project_home = xstrdup (s);
}
diff --git a/gprofng/src/comp_com.c b/gprofng/src/comp_com.c
index 79d14eb..636bcf3 100644
--- a/gprofng/src/comp_com.c
+++ b/gprofng/src/comp_com.c
@@ -25,6 +25,7 @@
#include <values.h>
#include <assert.h>
+#include "libiberty.h"
#include "comp_com.h"
/*
@@ -839,9 +840,7 @@ ccm_vis_init ()
return;
done = 1;
size = ccm_vis_index ((COMPMSG_ID) (CCMV_BASIC << 8));
- ccm_attrs = (Ccm_Attr_t *) calloc (size, sizeof (Ccm_Attr_t));
- if (ccm_attrs == NULL)
- exit (1);
+ ccm_attrs = (Ccm_Attr_t *) xcalloc (size, sizeof (Ccm_Attr_t));
vindex = ccm_vis_index (CCM_MODDATE);
ccm_attrs[vindex].vis = CCMV_VER | CCMV_BASIC | CCMV_UNIMPL;
ccm_attrs[vindex].name = "CCM_MODDATE";
diff --git a/gprofng/src/count.cc b/gprofng/src/count.cc
index 41fa092..42f990e 100644
--- a/gprofng/src/count.cc
+++ b/gprofng/src/count.cc
@@ -33,6 +33,7 @@
#include <collctrl.h>
#include <StringBuilder.h>
#include "collect.h"
+#include "libiberty.h"
/* get_count_data -- format exec of bit to do the real work */
void
@@ -44,7 +45,7 @@ collect::get_count_data ()
// reserve space for original args, plus 30 arguments to bit
nargs = origargc + 30;
- char **narglist = (char **) calloc (nargs, sizeof (char *));
+ char **narglist = (char **) xcalloc (nargs, sizeof (char *));
arglist = narglist;
// construct the command for bit
@@ -57,7 +58,7 @@ collect::get_count_data ()
if (stat (command, &statbuf) == -1)
{
// if bit command does not exist there
- char *first_look = strdup (command);
+ char *first_look = xstrdup (command);
snprintf (command, sizeof (command), NTXT ("%s"), run_dir);
s = strstr (command, NTXT ("/bin"));
snprintf (s, sizeof (command) - (s - command), NTXT ("/prod/bin/bit"));
@@ -69,7 +70,7 @@ collect::get_count_data ()
}
free (first_look);
}
- *arglist++ = strdup (command);
+ *arglist++ = xstrdup (command);
}
else
{
diff --git a/gprofng/src/dbe_hwc.h b/gprofng/src/dbe_hwc.h
index 951ebaf..c303ac8 100644
--- a/gprofng/src/dbe_hwc.h
+++ b/gprofng/src/dbe_hwc.h
@@ -24,8 +24,14 @@
#include <stdio.h>
#include <stdarg.h>
+#include "libiberty.h"
#include "i18n.h"
+#define malloc(s) xmalloc (s)
+#define realloc(p, s) xrealloc (p, s)
+#define calloc(n, s) xcalloc (n, s)
+#define strdup(s) xstrdup (s)
+
#define HWC_TRACELEVEL -1
#if HWC_TRACELEVEL < 0
#define TprintfT(x1,...)
diff --git a/gprofng/src/dbe_memmgr.c b/gprofng/src/dbe_memmgr.c
deleted file mode 100644
index 8c451cf..0000000
--- a/gprofng/src/dbe_memmgr.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Copyright (C) 2021-2024 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 <dlfcn.h>
-#include "util.h"
-
-#define CHECK_OUT_OF_MEM(ptr, size) if (ptr == NULL) err_out_of_memory(size)
-
-/* Report Out of Memory error and exit */
-static void
-err_out_of_memory (unsigned nbytes)
-{
- char *nm = get_prog_name (1);
- if (nm)
- fprintf (stderr, GTXT ("%s: Error: Memory capacity exceeded.\n"), nm);
- else
- fprintf (stderr, GTXT ("Error: Memory capacity exceeded.\n"));
- fprintf (stderr, GTXT (" Requested %u bytes.\n"), nbytes);
- exit (16);
-}
-
-#define CALL_REAL(x) (__real_##x)
-#define NULL_PTR(x) ( __real_##x == NULL )
-
-static void *(*__real_malloc)(size_t) = NULL;
-static void (*__real_free)(void *) = NULL;
-static void *(*__real_realloc)(void *, size_t) = NULL;
-static void *(*__real_calloc)(size_t, size_t) = NULL;
-static char *(*__real_strdup)(const char*) = NULL;
-static volatile int in_init = 0;
-
-static int
-init_heap_intf ()
-{
- in_init = 1;
- __real_malloc = (void*(*)(size_t))dlsym (RTLD_NEXT, "malloc");
- __real_free = (void(*)(void *))dlsym (RTLD_NEXT, "free");
- __real_realloc = (void*(*)(void *, size_t))dlsym (RTLD_NEXT, "realloc");
- __real_calloc = (void*(*)(size_t, size_t))dlsym (RTLD_NEXT, "calloc");
- __real_strdup = (char*(*)(const char*))dlsym (RTLD_NEXT, "strdup");
- in_init = 0;
- return 0;
-}
-
-/* --------------------------------------------------------------------------- */
-/* libc's memory management functions substitutions */
-
-/* Allocate memory and make sure we got some */
-void *
-malloc (size_t size)
-{
- if (NULL_PTR (malloc))
- init_heap_intf ();
- void *ptr = CALL_REAL (malloc)(size);
- CHECK_OUT_OF_MEM (ptr, size);
- return ptr;
-}
-
-
-/* Implement a workaround for a libdl recursion problem */
-void *
-calloc (size_t nelem, size_t size)
-{
- if (NULL_PTR (calloc))
- {
- /* If a program is linked with libpthread then the following
- * calling sequence occurs:
- * init_heap_intf -> dlsym -> calloc -> malloc -> init_heap_intf
- * We break some performance improvement in libdl by returning
- * NULL but preserve functionality.
- */
- if (in_init)
- return NULL;
- init_heap_intf ();
- }
- return CALL_REAL (calloc)(nelem, size);
-}
-
-/* Free the storage associated with data */
-void
-free (void *ptr)
-{
- if (ptr == NULL)
- return;
- if (NULL_PTR (free))
- init_heap_intf ();
- CALL_REAL (free)(ptr);
- return;
-}
-
-/* Reallocate buffer */
-void *
-realloc (void *ptr, size_t size)
-{
- if (NULL_PTR (realloc))
- init_heap_intf ();
- ptr = CALL_REAL (realloc)(ptr, size);
- CHECK_OUT_OF_MEM (ptr, size);
- return ptr;
-}
diff --git a/gprofng/src/envsets.cc b/gprofng/src/envsets.cc
index 70510fb..b7d3d9d 100644
--- a/gprofng/src/envsets.cc
+++ b/gprofng/src/envsets.cc
@@ -136,7 +136,7 @@ int
collect::putenv_libcollector_ld_misc ()
{
#if 0 // XXX 1 turns on LD_DEBUG
- putenv (strdup ("LD_DEBUG=audit,bindings,detail"));
+ putenv (xstrdup ("LD_DEBUG=audit,bindings,detail"));
#endif
// workaround to have the dynamic linker use absolute names
if (add_env (dbe_strdup ("LD_ORIGIN=yes")))
@@ -156,7 +156,7 @@ collect::putenv_libcollector_ld_misc ()
if (ev)
{ /* GPROFNG_PRELOAD_LIBDIRS is used only in the gprofng testing.
* Use these directories first. */
- ev = strdup (ev);
+ ev = xstrdup (ev);
for (char *s = ev; s;)
{
char *s1 = strchr (s, ':');
@@ -246,7 +246,7 @@ collect::add_ld_preload (const char *lib)
{
char *old_sp = sp_preload_list[ii];
if (old_sp == NULL)
- sp_preload_list[ii] = strdup (lib);
+ sp_preload_list[ii] = xstrdup (lib);
else
{
sp_preload_list[ii] = dbe_sprintf ("%s %s", old_sp, lib);
diff --git a/gprofng/src/gp-archive.cc b/gprofng/src/gp-archive.cc
index ff6816d..00a4450 100644
--- a/gprofng/src/gp-archive.cc
+++ b/gprofng/src/gp-archive.cc
@@ -528,7 +528,7 @@ er_archive::check_args (int argc, char *argv[])
if (dseen)
fprintf (stderr, GTXT ("Warning: option -d was specified several times. Last value is used.\n"));
free (common_archive_dir);
- common_archive_dir = strdup (optarg);
+ common_archive_dir = xstrdup (optarg);
dseen = 1;
break;
case 'q':
@@ -546,7 +546,7 @@ er_archive::check_args (int argc, char *argv[])
if (rseen)
fprintf (stderr, GTXT ("Warning: option -r was specified several times. Last value is used.\n"));
free (common_archive_dir);
- common_archive_dir = strdup (optarg);
+ common_archive_dir = xstrdup (optarg);
use_relative_path = 1;
rseen = 1;
break;
@@ -667,7 +667,7 @@ er_archive::check_env_var ()
}
if (opts->size () > 0)
{
- char **arr = (char **) malloc (sizeof (char *) *opts->size ());
+ char **arr = (char **) xmalloc (sizeof (char *) *opts->size ());
for (long i = 0; i < opts->size (); i++)
arr[i] = opts->get (i);
if (-1 == check_args (opts->size (), arr))
@@ -697,5 +697,6 @@ real_main (int argc, char *argv[])
int
main (int argc, char *argv[])
{
+ xmalloc_set_program_name (argv[0]);
return catch_out_of_memory (real_main, argc, argv);
}
diff --git a/gprofng/src/gp-collect-app.cc b/gprofng/src/gp-collect-app.cc
index c80c1b0..4bf9f07 100644
--- a/gprofng/src/gp-collect-app.cc
+++ b/gprofng/src/gp-collect-app.cc
@@ -63,6 +63,7 @@ static Process **processes;
int
main (int argc, char *argv[])
{
+ xmalloc_set_program_name (argv[0]);
// disable any alarm that might be pending
int r = alarm (0);
if (r != 0)
diff --git a/gprofng/src/gp-display-src.cc b/gprofng/src/gp-display-src.cc
index 24af375..5d885b5 100644
--- a/gprofng/src/gp-display-src.cc
+++ b/gprofng/src/gp-display-src.cc
@@ -89,6 +89,7 @@ real_main (int argc, char *argv[])
int
main (int argc, char *argv[])
{
+ xmalloc_set_program_name (argv[0]);
return catch_out_of_memory (real_main, argc, argv);
}
@@ -216,7 +217,7 @@ er_src::set_outfile (char *cmd, FILE *&set_file)
else if ((fname = strstr (cmd, "~")) != NULL && home != NULL)
cmdpath = dbe_sprintf ("/home/%s", fname + 1);
else
- cmdpath = strdup (cmd);
+ cmdpath = xstrdup (cmd);
new_file = fopen (cmdpath, "w");
if (new_file == NULL)
{
@@ -666,7 +667,7 @@ er_src::open (char *exe)
Vector<Histable*> *module_lst;
// Construct the Segment structure
- char *path = strdup (exe);
+ char *path = xstrdup (exe);
lo = dbeSession->createLoadObject (path);
if (NULL == lo->dbeFile->find_file (lo->dbeFile->get_name ()))
{
diff --git a/gprofng/src/gp-display-text.cc b/gprofng/src/gp-display-text.cc
index 3d7774a..ad60e76 100644
--- a/gprofng/src/gp-display-text.cc
+++ b/gprofng/src/gp-display-text.cc
@@ -112,6 +112,7 @@ reexec_enhance (int argc, char *argv[])
int
main (int argc, char *argv[])
{
+ xmalloc_set_program_name (argv[0]);
er_print *erprint;
int ind = 1;
if (argc > ind && *argv[ind] == '-')
@@ -533,7 +534,7 @@ er_print::process_object_select (char *names)
if (!got_err)
{ // good coverage string
free (cov_string);
- cov_string = strdup (names);
+ cov_string = xstrdup (names);
}
else
{ // bad, restore original coverage
@@ -1662,9 +1663,9 @@ er_print::exp_list ()
for (index = 0; index < size; index++)
{
lists[0][index] = dbe_sprintf (NTXT ("%d"), index + 1);
- lists[1][index] = strdup (dbev->get_exp_enable (index) ? GTXT ("yes") : GTXT ("no"));
+ lists[1][index] = xstrdup (dbev->get_exp_enable (index) ? GTXT ("yes") : GTXT ("no"));
lists[2][index] = dbe_sprintf (NTXT ("%d"), dbeSession->get_exp (index)->getPID ());
- lists[3][index] = strdup (dbeSession->get_exp (index)->get_expt_name ());
+ lists[3][index] = xstrdup (dbeSession->get_exp (index)->get_expt_name ());
}
disp_list (4, size, align, header, lists);
for (int i = 0; i < 4; i++)
@@ -1834,9 +1835,9 @@ er_print::seg_list ()
continue;
}
bool expand = dbev->get_lo_expand (lo->seg_idx);
- lists[0][new_index] = strdup (expand ? GTXT ("yes") : GTXT ("no"));
+ lists[0][new_index] = xstrdup (expand ? GTXT ("yes") : GTXT ("no"));
lists[1][new_index] = dbe_sprintf (NTXT ("%lld"), (ll_t) lo->get_size ());
- lists[2][new_index] = strdup (lo->get_pathname ());
+ lists[2][new_index] = xstrdup (lo->get_pathname ());
new_index++;
}
@@ -1903,7 +1904,7 @@ er_print::filter_list (CmdType cmd_type)
continue;
lists[0][new_index] = dbe_sprintf (NTXT ("%d"), index + 1);
pattern = dbev->get_exp_enable (index) ? select->get_pattern () : NULL;
- lists[1][new_index] = strdup (pattern && *pattern ? pattern : GTXT ("none"));
+ lists[1][new_index] = xstrdup (pattern && *pattern ? pattern : GTXT ("none"));
lists[2][new_index] = dbe_sprintf (NTXT ("%lld"), (ll_t) select->nelem ());
lists[3][new_index] = select->get_status ();
new_index++;
@@ -2822,7 +2823,7 @@ er_print::set_outfile (char *cmd, FILE *&set_file, bool append)
else if ((fname = strstr (cmd, NTXT ("~"))) != NULL && home != NULL)
path = dbe_sprintf (NTXT ("/home/%s"), fname + 1);
else
- path = strdup (cmd);
+ path = xstrdup (cmd);
new_file = fopen (path, append ? NTXT ("a") : NTXT ("w"));
if (new_file == NULL)
{
diff --git a/gprofng/src/gprofng.cc b/gprofng/src/gprofng.cc
index a59fdb2..385b097 100644
--- a/gprofng/src/gprofng.cc
+++ b/gprofng/src/gprofng.cc
@@ -49,6 +49,7 @@ private:
int
main (int argc, char *argv[])
{
+ xmalloc_set_program_name (argv[0]);
Gprofng *gprofng = new Gprofng (argc, argv);
gprofng->start();
delete gprofng;
@@ -228,7 +229,7 @@ Gprofng::exec_cmd (char *tool_name, int argc, char **argv)
const char *aname = app_names[first].app_name;
- char **arr = (char **) malloc ((argc + 5) * sizeof (char *));
+ char **arr = (char **) xmalloc ((argc + 5) * sizeof (char *));
char *pname = get_name ();
char *exe_name = dbe_sprintf ("%.*s%s",
(int) (get_basename (pname) - pname), pname, aname);
diff --git a/gprofng/src/ipc.cc b/gprofng/src/ipc.cc
index d5f3771..3e706db 100644
--- a/gprofng/src/ipc.cc
+++ b/gprofng/src/ipc.cc
@@ -28,6 +28,7 @@
#include <sys/wait.h> // wait
#include <locale.h>
+#include "libiberty.h"
#include "DbeApplication.h"
#include "Histable.h"
#include "ipcio.h"
@@ -2686,7 +2687,7 @@ ipc_mainLoop (int argc, char *argv[])
if (er_print_catch_crash)
{
/* reserve memory for fatal error processing */
- fatalErrorDynamicMemory = (char *) malloc (4 * 1024 * 1024); // reserve 4 MB
+ fatalErrorDynamicMemory = (char *) xmalloc (4 * 1024 * 1024); // reserve 4 MB
/* install a handler for SIGABRT */
ipc_request_trace (TRACE_LVL_1, "Installing SIGABRT handler to send message to analyzer\n");
sigemptyset (&act.sa_mask);
diff --git a/gprofng/src/ipcio.cc b/gprofng/src/ipcio.cc
index 29d699d..8ff16d5 100644
--- a/gprofng/src/ipcio.cc
+++ b/gprofng/src/ipcio.cc
@@ -63,7 +63,7 @@ IPCrequest::IPCrequest (int sz, int reqID, int chID)
channelID = chID;
status = INITIALIZED;
idx = 0;
- buf = (char *) malloc (size);
+ buf = (char *) xmalloc (size);
cancelImmediate = false;
}
@@ -149,7 +149,7 @@ readSVal (IPCrequest *req)
ipc_trace (" readSVal: <NULL>\n");
return NULL;
}
- char *str = (char *) malloc (len + 1);
+ char *str = (char *) xmalloc (len + 1);
char *s = str;
*s = (char) 0;
while (len--)
diff --git a/gprofng/src/util.cc b/gprofng/src/util.cc
index 228140b..e491999 100644
--- a/gprofng/src/util.cc
+++ b/gprofng/src/util.cc
@@ -35,7 +35,7 @@
#include "dbe_structs.h"
#include "StringBuilder.h"
#include "StringMap.h" // For directory names
-#include "Application.h" // Only for get_prog_name
+#include "Application.h"
#include "vec.h"
void
@@ -340,7 +340,7 @@ read_line (FILE *fptr)
{
// get an input line, no size limit
int line_sz = 128; // starting size
- char *line = (char *) malloc (line_sz);
+ char *line = (char *) xmalloc (line_sz);
// read as much of the line as will fit in memory
line[0] = 0;
@@ -353,7 +353,7 @@ read_line (FILE *fptr)
if (len == 0 || line[len - 1] == '\n')
break;
// increase the buffer
- char *lineNew = (char *) malloc (2 * line_sz);
+ char *lineNew = (char *) xmalloc (2 * line_sz);
strncpy (lineNew, line, line_sz);
lineNew[line_sz] = '\0';
free (line);
@@ -531,7 +531,7 @@ parse_fname (char *in_str, char **fcontext)
int ch = '`';
if (in_str == NULL)
return NULL;
- char *copy = strdup (in_str);
+ char *copy = xstrdup (in_str);
char *p = strchr (copy, ch);
if (p != NULL)
{
@@ -556,7 +556,7 @@ parse_fname (char *in_str, char **fcontext)
return NULL;
}
free (*fcontext);
- *fcontext = strdup (p);
+ *fcontext = xstrdup (p);
}
return copy;
}
@@ -778,24 +778,11 @@ get_relative_link (const char *path_from, const char *path_to)
}
char *
-get_prog_name (int basename)
-{
- char *nm = NULL;
- if (theApplication)
- {
- nm = theApplication->get_name ();
- if (nm && basename)
- nm = get_basename (nm);
- }
- return nm;
-}
-
-char *
dbe_strndup (const char *str, size_t len)
{
if (str == NULL)
return NULL;
- char *s = (char *) malloc (len + 1);
+ char *s = (char *) xmalloc (len + 1);
strncpy (s, str, len);
s[len] = '\0';
return s;
@@ -815,11 +802,11 @@ dbe_sprintf (const char *fmt, ...)
{
if (buf_size <= 1)
buffer[0] = 0;
- return strdup (buffer);
+ return xstrdup (buffer);
}
va_start (vp, fmt);
- char *buf = (char *) malloc (buf_size);
+ char *buf = (char *) xmalloc (buf_size);
vsnprintf (buf, buf_size, fmt, vp);
va_end (vp);
return buf;
@@ -843,7 +830,7 @@ dbe_write (int f, const char *fmt, ...)
}
va_start (vp, fmt);
- char *buf = (char *) malloc (buf_size);
+ char *buf = (char *) xmalloc (buf_size);
vsnprintf (buf, buf_size, fmt, vp);
va_end (vp);
ssize_t val = write (f, buf, strlen (buf));
@@ -1064,35 +1051,32 @@ dbe_stat_internal (const char *path, dbe_stat_t *sbuf, bool file_only)
if (theApplication->get_number_of_worker_threads () > 0)
{
struct worker_thread_info *wt_info;
- wt_info = (worker_thread_info *) calloc (1, sizeof (worker_thread_info));
- if (wt_info != NULL)
+ wt_info = (worker_thread_info *) xcalloc (1, sizeof (worker_thread_info));
+ int res = dbe_dispatch_on_thread (path, wt_info);
+ if (THREAD_FINISHED == res)
{
- int res = dbe_dispatch_on_thread (path, wt_info);
- if (THREAD_FINISHED == res)
- {
- int st = wt_info->result;
- extract_and_save_dirname (path, st);
- if (st == 0 && file_only)
- if (S_ISREG ((wt_info->statbuf).st_mode) == 0)
- st = -1; // It is not a regular file
- if (sbuf != NULL)
- *sbuf = wt_info->statbuf;
- free (wt_info);
- return st;
- }
- else
+ int st = wt_info->result;
+ extract_and_save_dirname (path, st);
+ if (st == 0 && file_only)
+ if (S_ISREG ((wt_info->statbuf).st_mode) == 0)
+ st = -1; // It is not a regular file
+ if (sbuf != NULL)
+ *sbuf = wt_info->statbuf;
+ free (wt_info);
+ return st;
+ }
+ else
+ {
+ if (THREAD_CANCEL == res)
{
- if (THREAD_CANCEL == res)
- {
- // Worker thread hung. Cannot free wt_info.
- // Allocated memory will be freed by worker thread.
- // save directory
- extract_and_save_dirname (path, 1);
- return 1; // stat64 failed
- }
- else // THREAD_NOT_CREATED - continue on current thread
- free (wt_info);
+ // Worker thread hung. Cannot free wt_info.
+ // Allocated memory will be freed by worker thread.
+ // save directory
+ extract_and_save_dirname (path, 1);
+ return 1; // stat64 failed
}
+ else // THREAD_NOT_CREATED - continue on current thread
+ free (wt_info);
}
}
}
diff --git a/gprofng/src/util.h b/gprofng/src/util.h
index cbbc2f7..ca2480b 100644
--- a/gprofng/src/util.h
+++ b/gprofng/src/util.h
@@ -27,6 +27,7 @@
#include <sys/stat.h>
#include <stdint.h>
+#include "libiberty.h"
#include "gp-defs.h"
#include "gp-time.h"
#include "i18n.h"
@@ -105,7 +106,7 @@ get_basename (const char* name)
inline char *
dbe_strdup (const char *str)
{
- return str ? strdup (str) : NULL;
+ return str ? xstrdup (str) : NULL;
}
inline long
@@ -170,7 +171,6 @@ extern "C"
char *canonical_path (char *path);
char *get_relative_path (char *name);
char *get_relative_link (const char *path_to, const char *path_from);
- char *get_prog_name (int basename);
char *dbe_strndup (const char *str, size_t len);
int dbe_stat (const char *path, dbe_stat_t *sbuf);
int dbe_stat_file (const char *path, dbe_stat_t *sbuf);
diff --git a/gprofng/src/vec.h b/gprofng/src/vec.h
index 7d5be1f..4ee4642 100644
--- a/gprofng/src/vec.h
+++ b/gprofng/src/vec.h
@@ -25,6 +25,7 @@
#include <inttypes.h>
#include <string.h>
#include <stdlib.h>
+#include "libiberty.h"
// This package implements a vector of items.
@@ -222,7 +223,7 @@ Vector<ITEM>::Vector (long sz)
{
count = 0;
limit = sz > 0 ? sz : KILOCHUNK; // was 0;
- data = limit ? (ITEM *) malloc (sizeof (ITEM) * limit) : NULL;
+ data = limit ? (ITEM *) xmalloc (sizeof (ITEM) * limit) : NULL;
sorted = false;
}
@@ -241,7 +242,7 @@ Vector<ITEM>
else
limit = limit * 2;
}
- data = (ITEM *) realloc (data, limit * sizeof (ITEM));
+ data = (ITEM *) xrealloc (data, limit * sizeof (ITEM));
}
template <typename ITEM> void
@@ -269,7 +270,7 @@ Vector<ITEM>::copy ()
vector = new Vector<ITEM>;
vector->count = count;
vector->limit = limit;
- vector->data = (ITEM *) malloc (sizeof (ITEM) * limit);
+ vector->data = (ITEM *) xmalloc (sizeof (ITEM) * limit);
(void) memcpy ((char *) vector->data, (char *) data, sizeof (ITEM) * count);
return vector;
}