aboutsummaryrefslogtreecommitdiff
path: root/gprofng/src/Stabs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/Stabs.cc')
-rw-r--r--gprofng/src/Stabs.cc42
1 files changed, 21 insertions, 21 deletions
diff --git a/gprofng/src/Stabs.cc b/gprofng/src/Stabs.cc
index ac2ff48..82d85ef 100644
--- a/gprofng/src/Stabs.cc
+++ b/gprofng/src/Stabs.cc
@@ -305,7 +305,6 @@ Stabs::Stabs (char *_path, char *_lo_name)
Stabs::~Stabs ()
{
- delete pltSym;
delete SymLstByName;
Destroy (SymLst);
Destroy (RelLst);
@@ -1618,9 +1617,9 @@ Stabs::createFunction (LoadObject *lo, Module *module, Symbol *sym)
Function *func = dbeSession->createFunction ();
func->module = module;
func->img_fname = path;
- func->img_offset = (off_t) sym->img_offset;
+ func->img_offset = sym->img_offset;
func->save_addr = sym->save;
- func->size = (uint32_t) sym->size;
+ func->size = sym->size;
func->set_name (sym->name);
func->elfSym = sym;
module->functions->append (func);
@@ -1691,12 +1690,12 @@ Stabs::check_Symtab ()
Elf *elf = openElf (true);
if (elf == NULL)
return;
- if (elfDis->plt != 0)
+ if (elf->plt != 0)
{
- Elf_Internal_Shdr *shdr = elfDis->get_shdr (elfDis->plt);
+ Elf_Internal_Shdr *shdr = elf->get_shdr (elf->plt);
if (shdr)
{
- pltSym = new Symbol ();
+ pltSym = new Symbol (SymLst);
pltSym->value = shdr->sh_addr;
pltSym->size = shdr->sh_size;
pltSym->img_offset = shdr->sh_offset;
@@ -1744,7 +1743,8 @@ Stabs::readSymSec (unsigned int sec, Elf *elf)
switch (GELF_ST_TYPE (Sym.st_info))
{
case STT_FUNC:
- // Skip UNDEF symbols (bug 4817083)
+ if (Sym.st_size == 0)
+ break;
if (Sym.st_shndx == 0)
{
if (Sym.st_value == 0)
@@ -1752,8 +1752,8 @@ Stabs::readSymSec (unsigned int sec, Elf *elf)
sitem = new Symbol (SymLst);
sitem->flags |= SYM_UNDEF;
if (pltSym)
- sitem->img_offset = (uint32_t) (pltSym->img_offset +
- Sym.st_value - pltSym->value);
+ sitem->img_offset = pltSym->img_offset +
+ Sym.st_value - pltSym->value;
}
else
{
@@ -1761,8 +1761,8 @@ Stabs::readSymSec (unsigned int sec, Elf *elf)
if (shdrp == NULL)
break;
sitem = new Symbol (SymLst);
- sitem->img_offset = (uint32_t) (shdrp->sh_offset +
- Sym.st_value - shdrp->sh_addr);
+ sitem->img_offset = shdrp->sh_offset +
+ Sym.st_value - shdrp->sh_addr;
}
sitem->size = Sym.st_size;
sitem->name = dbe_strdup (st_name);
@@ -1882,7 +1882,7 @@ Stabs::check_Relocs ()
if (shdr_txt == NULL)
continue;
if (!(shdr_txt->sh_flags & SHF_EXECINSTR))
- continue;
+ continue;
// Get corresponding symbol table section
Elf_Internal_Shdr *shdr_sym = elf->get_shdr (shdr->sh_link);
@@ -2305,9 +2305,9 @@ Stabs::append_local_funcs (Module *module, int first_ind)
Function *func = dbeSession->createFunction ();
sitem->func = func;
func->img_fname = path;
- func->img_offset = (off_t) sitem->img_offset;
- func->save_addr = (uint32_t) sitem->save;
- func->size = (uint32_t) sitem->size;
+ func->img_offset = sitem->img_offset;
+ func->save_addr = sitem->save;
+ func->size = sitem->size;
func->module = module;
func->set_name (sitem->name);
module->functions->append (func);
@@ -2381,9 +2381,9 @@ Stabs::append_Function (Module *module, char *fname)
return sitem->func;
sitem->func = func = dbeSession->createFunction ();
func->img_fname = path;
- func->img_offset = (off_t) sitem->img_offset;
- func->save_addr = (uint32_t) sitem->save;
- func->size = (uint32_t) sitem->size;
+ func->img_offset = sitem->img_offset;
+ func->save_addr = sitem->save;
+ func->size = sitem->size;
}
else
func = dbeSession->createFunction ();
@@ -2436,9 +2436,9 @@ Stabs::append_Function (Module *module, char *linkerName, uint64_t pc)
sitem->func = func = dbeSession->createFunction ();
func->img_fname = path;
- func->img_offset = (off_t) sitem->img_offset;
- func->save_addr = (uint32_t) sitem->save;
- func->size = (uint32_t) sitem->size;
+ func->img_offset = sitem->img_offset;
+ func->save_addr = sitem->save;
+ func->size = sitem->size;
func->module = module;
func->set_name (sitem->name); //XXXX ?? Now call it to set obj->name
module->functions->append (func);