MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / GetRelocationInfo

Method GetRelocationInfo

arch/x86/arch_x86.cpp:4090–4158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4088{
4089public:
4090 virtual bool GetRelocationInfo(Ref<BinaryView> view, Ref<Architecture> arch, vector<BNRelocationInfo>& result) override
4091 {
4092 (void)view; (void)arch;
4093 set<uint64_t> relocTypes;
4094 for (auto& reloc : result)
4095 {
4096 reloc.type = StandardRelocationType;
4097 switch (reloc.nativeType)
4098 {
4099 case R_386_NONE:
4100 reloc.type = IgnoredRelocation;
4101 break;
4102 case R_386_32:
4103 reloc.pcRelative = false;
4104 reloc.baseRelative = false;
4105 reloc.hasSign = false;
4106 reloc.size = 4;
4107 reloc.truncateSize = 4;
4108 break;
4109 case R_386_PC32:
4110 case R_386_GOT32:
4111 case R_386_PLT32:
4112 reloc.pcRelative = true;
4113 reloc.baseRelative = false;
4114 reloc.hasSign = false;
4115 reloc.size = 4;
4116 reloc.truncateSize = 4;
4117 break;
4118 case R_386_RELATIVE:
4119 reloc.pcRelative = false;
4120 reloc.baseRelative = true;
4121 reloc.hasSign = false;
4122 reloc.size = 4;
4123 reloc.truncateSize = 4;
4124 reloc.implicitAddend = true;
4125 reloc.addend = 0;
4126 break;
4127 case R_386_COPY:
4128 reloc.type = ELFCopyRelocationType;
4129 reloc.pcRelative = false;
4130 reloc.baseRelative = false;
4131 reloc.size = 4;
4132 reloc.truncateSize = 4;
4133 break;
4134 case R_386_GLOB_DAT:
4135 reloc.type = ELFGlobalRelocationType;
4136 reloc.pcRelative = false;
4137 reloc.baseRelative = false;
4138 reloc.size = 4;
4139 reloc.truncateSize = 4;
4140 reloc.implicitAddend = false;
4141 break;
4142 case R_386_JUMP_SLOT:
4143 reloc.type = ELFJumpSlotRelocationType;
4144 reloc.pcRelative = false;
4145 reloc.baseRelative = false;
4146 reloc.size = 4;
4147 reloc.truncateSize = 4;

Callers

nothing calls this directly

Calls 2

GetRelocationStringFunction · 0.70
insertMethod · 0.45

Tested by

no test coverage detected