Ejemplo n.º 1
0
int getGlobalVariableOffset() {
    int* symbolTableCursor;

    symbolTableCursor = getSymbolTableEntry();

    if (symbolTableCursor != 0) {
        symbolTableCursor = symbolTableCursor + 2;

        return *symbolTableCursor;
    } else
        // variable not found but who cares,
        // just create entry in symbol table,
        // allocate space for global variable,
        // and return its offset
        return createSymbolTableEntry(allocateGlobalVariable());
}
Ejemplo n.º 2
0
char MachOObjectFile::getSymbolNMTypeChar(DataRefImpl DRI) const {
  InMemoryStruct<macho::SymbolTableEntry> Entry;
  getSymbolTableEntry(DRI, Entry);

  char Char;
  switch (Entry->Type & macho::STF_TypeMask) {
    case macho::STT_Undefined:
      Char = 'u';
      break;
    case macho::STT_Absolute:
    case macho::STT_Section:
      Char = 's';
      break;
    default:
      Char = '?';
      break;
  }

  if (Entry->Flags & (macho::STF_External | macho::STF_PrivateExtern))
    Char = toupper(Char);
  return Char;
}
Ejemplo n.º 3
0
int setProcedureAddress() {
    int* symbolTableCursor;
    int savedAddress;

    symbolTableCursor = getSymbolTableEntry();

    if (symbolTableCursor != 0) {
        symbolTableCursor = symbolTableCursor + 2;

        savedAddress = *symbolTableCursor;

        if (getOpcodeFromCode(savedAddress) == BSR)
            // save address of next instruction which may point to
            // the new head of an existing fixup chain
            // or the beginning of a procedure body
            *symbolTableCursor = codeLength;

        return savedAddress;
    } else
        // procedure not found but who cares,
        // just create entry in symbol table,
        // and save address of next instruction
        return createSymbolTableEntry(codeLength);
}
Ejemplo n.º 4
0
bool MachOObjectFile::isSymbolInternal(DataRefImpl DRI) const {
  InMemoryStruct<macho::SymbolTableEntry> Entry;
  getSymbolTableEntry(DRI, Entry);
  return Entry->Flags & macho::STF_StabsEntryMask;
}
Ejemplo n.º 5
0
uint64_t MachOObjectFile::getSymbolAddress(DataRefImpl DRI) const {
  InMemoryStruct<macho::SymbolTableEntry> Entry;
  getSymbolTableEntry(DRI, Entry);
  return Entry->Value;
}
Ejemplo n.º 6
0
StringRef MachOObjectFile::getSymbolName(DataRefImpl DRI) const {
  InMemoryStruct<macho::SymbolTableEntry> Entry;
  getSymbolTableEntry(DRI, Entry);
  return MachOObj->getStringAtIndex(Entry->StringIndex);
}