ElfSymbol.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. namespace Ryujinx.HLE.Loaders.Elf
  2. {
  3. struct ElfSymbol
  4. {
  5. public string Name { get; private set; }
  6. public ElfSymbolType Type { get; private set; }
  7. public ElfSymbolBinding Binding { get; private set; }
  8. public ElfSymbolVisibility Visibility { get; private set; }
  9. public bool IsFuncOrObject =>
  10. Type == ElfSymbolType.SttFunc ||
  11. Type == ElfSymbolType.SttObject;
  12. public bool IsGlobalOrWeak =>
  13. Binding == ElfSymbolBinding.StbGlobal ||
  14. Binding == ElfSymbolBinding.StbWeak;
  15. public int ShIdx { get; private set; }
  16. public long Value { get; private set; }
  17. public long Size { get; private set; }
  18. public ElfSymbol(
  19. string name,
  20. int info,
  21. int other,
  22. int shIdx,
  23. long value,
  24. long size)
  25. {
  26. Name = name;
  27. Type = (ElfSymbolType)(info & 0xf);
  28. Binding = (ElfSymbolBinding)(info >> 4);
  29. Visibility = (ElfSymbolVisibility)other;
  30. ShIdx = shIdx;
  31. Value = value;
  32. Size = size;
  33. }
  34. }
  35. }