Home | History | Annotate | Download | only in Object

Lines Matching refs:Symb

310   void            validateSymbol(DataRefImpl Symb) const;
316 const Elf_Sym *getSymbol(DataRefImpl Symb) const;
323 error_code getSymbolName(const Elf_Sym *Symb, StringRef &Res) const;
326 virtual error_code getSymbolNext(DataRefImpl Symb, SymbolRef &Res) const;
327 virtual error_code getSymbolName(DataRefImpl Symb, StringRef &Res) const;
328 virtual error_code getSymbolOffset(DataRefImpl Symb, uint64_t &Res) const;
329 virtual error_code getSymbolAddress(DataRefImpl Symb, uint64_t &Res) const;
330 virtual error_code getSymbolSize(DataRefImpl Symb, uint64_t &Res) const;
331 virtual error_code getSymbolNMTypeChar(DataRefImpl Symb, char &Res) const;
332 virtual error_code isSymbolInternal(DataRefImpl Symb, bool &Res) const;
333 virtual error_code isSymbolGlobal(DataRefImpl Symb, bool &Res) const;
334 virtual error_code getSymbolType(DataRefImpl Symb, SymbolRef::SymbolType &Res) const;
345 virtual error_code sectionContainsSymbol(DataRefImpl Sec, DataRefImpl Symb,
378 ELF::Elf64_Word getSymbolTableIndex(const Elf_Sym *symb) const;
379 const Elf_Shdr *getSection(const Elf_Sym *symb) const;
385 ::validateSymbol(DataRefImpl Symb) const {
386 const Elf_Sym *symb = getSymbol(Symb);
387 const Elf_Shdr *SymbolTableSection = SymbolTableSections[Symb.d.b];
391 if (!( symb
393 && symb >= (const Elf_Sym*)(base()
395 && symb < (const Elf_Sym*)(base()
399 report_fatal_error("Symb must point to a valid symbol!");
404 ::getSymbolNext(DataRefImpl Symb,
406 validateSymbol(Symb);
407 const Elf_Shdr *SymbolTableSection = SymbolTableSections[Symb.d.b];
409 ++Symb.d.a;
411 if (Symb.d.a >= SymbolTableSection->getEntityCount()) {
413 ++Symb.d.b;
414 Symb.d.a = 1; // The 0th symbol in ELF is fake.
416 if (Symb.d.b >= SymbolTableSections.size()) {
417 Symb.d.a = std::numeric_limits<uint32_t>::max();
418 Symb.d.b = std::numeric_limits<uint32_t>::max();
422 Result = SymbolRef(Symb, this);
428 ::getSymbolName(DataRefImpl Symb,
430 validateSymbol(Symb);
431 const Elf_Sym *symb = getSymbol(Symb);
432 return getSymbolName(symb, Result);
437 ::getSymbolTableIndex(const Elf_Sym *symb) const {
438 if (symb->st_shndx == ELF::SHN_XINDEX)
439 return ExtendedSymbolTable.lookup(symb);
440 return symb->st_shndx;
446 ::getSection(const Elf_Sym *symb) const {
447 if (symb->st_shndx == ELF::SHN_XINDEX)
448 return getSection(ExtendedSymbolTable.lookup(symb));
449 if (symb->st_shndx >= ELF::SHN_LORESERVE)
451 return getSection(symb->st_shndx);
456 ::getSymbolOffset(DataRefImpl Symb,
458 validateSymbol(Symb);
459 const Elf_Sym *symb = getSymbol(Symb);
461 switch (getSymbolTableIndex(symb)) {
468 Result = symb->st_value;
470 default: Section = getSection(symb);
473 switch (symb->getType()) {
480 Result = symb->st_value;
490 ::getSymbolAddress(DataRefImpl Symb,
492 validateSymbol(Symb);
493 const Elf_Sym *symb = getSymbol(Symb);
495 switch (getSymbolTableIndex(symb)) {
502 Result = reinterpret_cast<uintptr_t>(base()+symb->st_value);
504 default: Section = getSection(symb);
509 switch (symb->getType()) {
516 addr += symb->st_value;
527 ::getSymbolSize(DataRefImpl Symb,
529 validateSymbol(Symb);
530 const Elf_Sym *symb = getSymbol(Symb);
531 if (symb->st_size == 0)
533 Result = symb->st_size;
539 ::getSymbolNMTypeChar(DataRefImpl Symb,
541 validateSymbol(Symb);
542 const Elf_Sym *symb = getSymbol(Symb);
543 const Elf_Shdr *Section = getSection(symb);
566 switch (getSymbolTableIndex(symb)) {
575 switch (symb->getBinding()) {
578 if (getSymbolTableIndex(symb) == ELF::SHN_UNDEF)
581 if (symb->getType() == ELF::STT_OBJECT)
587 if (ret == '?' && symb->getType() == ELF::STT_SECTION) {
589 if (error_code ec = getSymbolName(Symb, name))
604 ::getSymbolType(DataRefImpl Symb,
606 validateSymbol(Symb);
607 const Elf_Sym *symb = getSymbol(Symb);
609 if (getSymbolTableIndex(symb) == ELF::SHN_UNDEF) {
614 switch (symb->getType()) {
630 ::isSymbolGlobal(DataRefImpl Symb,
632 validateSymbol(Symb);
633 const Elf_Sym *symb = getSymbol(Symb);
635 Result = symb->getBinding() == ELF::STB_GLOBAL;
641 ::isSymbolInternal(DataRefImpl Symb,
643 validateSymbol(Symb);
644 const Elf_Sym *symb = getSymbol(Symb);
646 if ( symb->getType() == ELF::STT_FILE
647 || symb->getType() == ELF::STT_SECTION)
750 DataRefImpl Symb,
1051 const Elf_Sym *symb = getEntry<Elf_Sym>(sec->sh_link, symbol_index);
1053 if (error_code ec = getSymbolName(symb, symname))
1309 ELFObjectFile<target_endianness, is64Bits>::getSymbol(DataRefImpl Symb) const {
1310 return getEntry<Elf_Sym>(SymbolTableSections[Symb.d.b], Symb.d.a);
1327 ELFObjectFile<target_endianness, is64Bits>::getSection(DataRefImpl Symb) const {
1328 const Elf_Shdr *sec = getSection(Symb.d.b);
1369 ::getSymbolName(const Elf_Sym *symb,
1371 if (symb->st_name == 0) {
1372 const Elf_Shdr *section = getSection(symb);
1381 Result = getString(dot_strtab_sec, symb->st_name);