ElfSymbol.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  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 => Type == ElfSymbolType.SttFunc || Type == ElfSymbolType.SttObject;
  10. public bool IsGlobalOrWeak => Binding == ElfSymbolBinding.StbGlobal || Binding == ElfSymbolBinding.StbWeak;
  11. public int ShIdx { get; private set; }
  12. public ulong Value { get; private set; }
  13. public ulong Size { get; private set; }
  14. public ElfSymbol(
  15. string name,
  16. int info,
  17. int other,
  18. int shIdx,
  19. ulong value,
  20. ulong size)
  21. {
  22. Name = name;
  23. Type = (ElfSymbolType)(info & 0xf);
  24. Binding = (ElfSymbolBinding)(info >> 4);
  25. Visibility = (ElfSymbolVisibility)other;
  26. ShIdx = shIdx;
  27. Value = value;
  28. Size = size;
  29. }
  30. }
  31. }