X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=libctf%2Fctf-util.c;h=b813c0d41411c570e3aeec4965742b8942be533e;hb=d851ecd373a3764581372b10be5b74c9ee98ae08;hp=730f358a9318a258704fce73d04fcf64d68bda6c;hpb=a0486bac41d6ce47f27795a5abbca5cc53ddba00;p=deliverable%2Fbinutils-gdb.git diff --git a/libctf/ctf-util.c b/libctf/ctf-util.c index 730f358a93..b813c0d414 100644 --- a/libctf/ctf-util.c +++ b/libctf/ctf-util.c @@ -95,28 +95,6 @@ ctf_sym_to_elf64 (const Elf32_Sym *src, Elf64_Sym *dst) return dst; } -/* Convert an encoded CTF string name into a pointer to a C string by looking - up the appropriate string table buffer and then adding the offset. */ - -const char * -ctf_strraw (ctf_file_t *fp, uint32_t name) -{ - ctf_strs_t *ctsp = &fp->ctf_str[CTF_NAME_STID (name)]; - - if (ctsp->cts_strs != NULL && CTF_NAME_OFFSET (name) < ctsp->cts_len) - return (ctsp->cts_strs + CTF_NAME_OFFSET (name)); - - /* String table not loaded or corrupt offset. */ - return NULL; -} - -const char * -ctf_strptr (ctf_file_t *fp, uint32_t name) -{ - const char *s = ctf_strraw (fp, name); - return (s != NULL ? s : "(?)"); -} - /* Same as strdup(3C), but use ctf_alloc() to do the memory allocation. */ _libctf_malloc_ char * @@ -154,6 +132,19 @@ ctf_str_append (char *s, const char *append) return s; } +/* A realloc() that fails noisily if called with any ctf_str_num_users. */ +void * +ctf_realloc (ctf_file_t *fp, void *ptr, size_t size) +{ + if (fp->ctf_str_num_refs > 0) + { + ctf_dprintf ("%p: attempt to realloc() string table with %lu active refs\n", + (void *) fp, (unsigned long) fp->ctf_str_num_refs); + return NULL; + } + return realloc (ptr, size); +} + /* Store the specified error code into errp if it is non-NULL, and then return NULL for the benefit of the caller. */