18ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck#!/usr/bin/env python 28ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 38ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# Generates ELF, COFF and MachO object files for different architectures 48ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# containing all relocations: 58ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# 68ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# ELF: i386, x86_64, ppc64, aarch64, arm, mips, mips64el 78ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# COFF: i386, x86_64 88ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# MachO: i386, x86_64, arm 98ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# (see end of file for triples) 108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# 118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# To simplify generation, object files are generated with just the proper 128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# number of relocations through repeated instructions. Afterwards, the 138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck# relocations in the object file are patched to their proper value. 148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckimport operator 168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckimport shutil 178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckimport StringIO 188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckimport struct 198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckimport subprocess 208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckimport sys 218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass EnumType(type): 238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __init__(self, name, bases = (), attributes = {}): 248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck super(EnumType, self).__init__(name, bases, attributes) 258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck type.__setattr__(self, '_map', {}) 278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck type.__setattr__(self, '_nameMap', {}) 288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for symbol in attributes: 308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if symbol.startswith('__') or symbol.endswith('__'): 318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck continue 328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck value = attributes[symbol] 348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # MyEnum.symbol == value 368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck type.__setattr__(self, symbol, value) 378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self._nameMap[symbol] = value 388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # The first symbol with the given value is authoritative. 408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if not (value in self._map): 418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # MyEnum[value] == symbol 428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self._map[value] = symbol 438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # Not supported (Enums are immutable). 458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __setattr__(self, name, value): 468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise NotSupportedException, self.__setattr__ 478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # Not supported (Enums are immutable). 498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __delattr__(self, name): 508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise NotSupportedException, self.__delattr__ 518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # Gets the enum symbol for the specified value. 538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __getitem__(self, value): 548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck symbol = self._map.get(value) 558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if symbol is None: 568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise KeyError, value 578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return symbol 588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # Gets the enum symbol for the specified value or none. 608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def lookup(self, value): 618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck symbol = self._map.get(value) 628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return symbol 638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # Not supported (Enums are immutable). 658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __setitem__(self, value, symbol): 668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise NotSupportedException, self.__setitem__ 678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # Not supported (Enums are immutable). 698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __delitem__(self, value): 708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise NotSupportedException, self.__delitem__ 718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def entries(self): 738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck # sort by (value, name) 748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def makeKey(item): 758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return (item[1], item[0]) 768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e = [] 778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for pair in sorted(self._nameMap.iteritems(), key=makeKey): 788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e.append(pair) 798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return e 808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __iter__(self): 828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for e in self.entries(): 838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck yield e 848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 858ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckEnum = EnumType('Enum', (), {}) 868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass BinaryReader: 888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __init__(self, path): 898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.file = open(path, "r+b", 0) 908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.isLSB = None 918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.is64Bit = None 928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.isN64 = False 938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def tell(self): 958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return self.file.tell() 968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def seek(self, pos): 988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.file.seek(pos) 998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def read(self, N): 1018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck data = self.file.read(N) 1028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if len(data) != N: 1038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise ValueError, "Out of data!" 1048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return data 1058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def int8(self): 1078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return ord(self.read(1)) 1088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def uint8(self): 1108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return ord(self.read(1)) 1118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def int16(self): 1138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return struct.unpack('><'[self.isLSB] + 'h', self.read(2))[0] 1148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def uint16(self): 1168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return struct.unpack('><'[self.isLSB] + 'H', self.read(2))[0] 1178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def int32(self): 1198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return struct.unpack('><'[self.isLSB] + 'i', self.read(4))[0] 1208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def uint32(self): 1228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return struct.unpack('><'[self.isLSB] + 'I', self.read(4))[0] 1238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def int64(self): 1258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return struct.unpack('><'[self.isLSB] + 'q', self.read(8))[0] 1268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def uint64(self): 1288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return struct.unpack('><'[self.isLSB] + 'Q', self.read(8))[0] 1298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def writeUInt8(self, value): 1318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.file.write(struct.pack('><'[self.isLSB] + 'B', value)) 1328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def writeUInt16(self, value): 1348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.file.write(struct.pack('><'[self.isLSB] + 'H', value)) 1358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def writeUInt32(self, value): 1378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.file.write(struct.pack('><'[self.isLSB] + 'I', value)) 1388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def writeUInt64(self, value): 1408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.file.write(struct.pack('><'[self.isLSB] + 'Q', value)) 1418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def word(self): 1438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if self.is64Bit: 1448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return self.uint64() 1458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 1468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return self.uint32() 1478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def writeWord(self, value): 1498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if self.is64Bit: 1508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.writeUInt64(value) 1518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 1528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.writeUInt32(value) 1538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass StringTable: 1558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __init__(self, strings): 1568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.string_table = strings 1578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __getitem__(self, index): 1598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck end = self.string_table.index('\x00', index) 1608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck return self.string_table[index:end] 1618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass ElfSection: 1638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __init__(self, f): 1648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_name = f.uint32() 1658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_type = f.uint32() 1668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_flags = f.word() 1678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_addr = f.word() 1688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_offset = f.word() 1698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_size = f.word() 1708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_link = f.uint32() 1718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_info = f.uint32() 1728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_addralign = f.word() 1738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.sh_entsize = f.word() 1748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def patch(self, f, relocs): 1768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if self.sh_type == 4 or self.sh_type == 9: # SHT_RELA / SHT_REL 1778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.patchRelocs(f, relocs) 1788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def patchRelocs(self, f, relocs): 1808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck entries = self.sh_size // self.sh_entsize 1818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for index in range(entries): 1838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(self.sh_offset + index * self.sh_entsize) 1848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_offset = f.word() 1858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if index < len(relocs): 1878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck ri = index 1888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 1898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck ri = 0 1908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 1918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if f.isN64: 1928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_sym = f.uint32() 1938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_ssym = f.uint8() 1948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(f.tell()) 1958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.writeUInt8(relocs[ri][1]) 1968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.writeUInt8(relocs[ri][1]) 1978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.writeUInt8(relocs[ri][1]) 1988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 1998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck pos = f.tell() 2008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_info = f.word() 2018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_type = relocs[ri][1] 2038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if f.is64Bit: 2048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_info = (r_info & 0xFFFFFFFF00000000) | (r_type & 0xFFFFFFFF) 2058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 2068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck r_info = (r_info & 0xFF00) | (r_type & 0xFF) 2078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" %s" % relocs[ri][0]) 2098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(pos) 2108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.writeWord(r_info) 2118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass CoffSection: 2148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck def __init__(self, f): 2158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.raw_name = f.read(8) 2168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.virtual_size = f.uint32() 2178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.virtual_address = f.uint32() 2188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.raw_data_size = f.uint32() 2198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.pointer_to_raw_data = f.uint32() 2208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.pointer_to_relocations = f.uint32() 2218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.pointer_to_line_numbers = f.uint32() 2228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.relocation_count = f.uint16() 2238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.line_number_count = f.uint16() 2248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck self.characteristics = f.uint32() 2258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef compileAsm(filename, triple, src): 2288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck cmd = ["llvm-mc", "-triple=" + triple, "-filetype=obj", "-o", filename] 2298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" Running: " + " ".join(cmd)) 2308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck p = subprocess.Popen(cmd, stdin=subprocess.PIPE) 2318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck p.communicate(input=src) 2328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck p.wait() 2338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef compileIR(filename, triple, src): 2358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck cmd = ["llc", "-mtriple=" + triple, "-filetype=obj", "-o", filename] 2368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" Running: " + " ".join(cmd)) 2378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck p = subprocess.Popen(cmd, stdin=subprocess.PIPE) 2388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck p.communicate(input=src) 2398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck p.wait() 2408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef craftElf(filename, triple, relocs, dummyReloc): 2438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print("Crafting " + filename + " for " + triple) 2448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if type(dummyReloc) is tuple: 2458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck preSrc, dummyReloc, relocsPerDummy = dummyReloc 2468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src = preSrc + "\n" 2478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for i in range((len(relocs) + relocsPerDummy - 1) / relocsPerDummy): 2488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src += dummyReloc.format(i) + "\n" 2498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck compileIR(filename, triple, src) 2508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 2518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src = (dummyReloc + "\n") * len(relocs) 2528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck compileAsm(filename, triple, src) 2538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" Patching relocations...") 2558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchElf(filename, relocs) 2568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef patchElf(path, relocs): 2588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f = BinaryReader(path) 2598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck magic = f.read(4) 2618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck assert magic == '\x7FELF' 2628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck fileclass = f.uint8() 2648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if fileclass == 1: 2658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.is64Bit = False 2668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif fileclass == 2: 2678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.is64Bit = True 2688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 2698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise ValueError, "Unknown file class %x" % fileclass 2708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck byteordering = f.uint8() 2728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if byteordering == 1: 2738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB = True 2748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif byteordering == 2: 2758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB = False 2768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 2778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise ValueError, "Unknown byte ordering %x" % byteordering 2788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(18) 2808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_machine = f.uint16() 2818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if e_machine == 0x0008 and f.is64Bit: # EM_MIPS && 64 bit 2828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isN64 = True 2838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_version = f.uint32() 2858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_entry = f.word() 2868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_phoff = f.word() 2878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_shoff = f.word() 2888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_flags = f.uint32() 2898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_ehsize = f.uint16() 2908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_phentsize = f.uint16() 2918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_phnum = f.uint16() 2928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_shentsize = f.uint16() 2938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_shnum = f.uint16() 2948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck e_shstrndx = f.uint16() 2958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 2968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck sections = [] 2978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for index in range(e_shnum): 2988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(e_shoff + index * e_shentsize) 2998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck s = ElfSection(f) 3008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck sections.append(s) 3018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(sections[e_shstrndx].sh_offset) 3038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck shstrtab = StringTable(f.read(sections[e_shstrndx].sh_size)) 3048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck strtab = None 3068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for section in sections: 3078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if shstrtab[section.sh_name] == ".strtab": 3088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(section.sh_offset) 3098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck strtab = StringTable(f.read(section.sh_size)) 3108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck break 3118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for index in range(e_shnum): 3138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck sections[index].patch(f, relocs) 3148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef craftCoff(filename, triple, relocs, dummyReloc): 3178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print("Crafting " + filename + " for " + triple) 3188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src = (dummyReloc + "\n") * len(relocs) 3198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck compileAsm(filename, triple, src) 3208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" Patching relocations...") 3228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchCoff(filename, relocs) 3238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef patchCoff(path, relocs): 3258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f = BinaryReader(path) 3268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB = True 3278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck machine_type = f.uint16() 3298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck section_count = f.uint16() 3308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(20) 3318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck sections = [CoffSection(f) for idx in range(section_count)] 3328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck section = sections[0] 3348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(section.pointer_to_relocations) 3358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for i in range(section.relocation_count): 3368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck virtual_addr = f.uint32() 3378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck symtab_idx = f.uint32() 3388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" %s" % relocs[i][0]) 3398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.writeUInt16(relocs[i][1]) 3408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef craftMacho(filename, triple, relocs, dummyReloc): 3438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print("Crafting " + filename + " for " + triple) 3448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if type(dummyReloc) is tuple: 3468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck srcType, preSrc, dummyReloc, relocsPerDummy = dummyReloc 3478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src = preSrc + "\n" 3488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for i in range((len(relocs) + relocsPerDummy - 1) / relocsPerDummy): 3498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src += dummyReloc.format(i) + "\n" 3508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if srcType == "asm": 3518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck compileAsm(filename, triple, src) 3528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif srcType == "ir": 3538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck compileIR(filename, triple, src) 3548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 3558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck src = (dummyReloc + "\n") * len(relocs) 3568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck compileAsm(filename, triple, src) 3578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" Patching relocations...") 3598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchMacho(filename, relocs) 3608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef patchMacho(filename, relocs): 3628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f = BinaryReader(filename) 3638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck magic = f.read(4) 3658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if magic == '\xFE\xED\xFA\xCE': 3668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB, f.is64Bit = False, False 3678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif magic == '\xCE\xFA\xED\xFE': 3688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB, f.is64Bit = True, False 3698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif magic == '\xFE\xED\xFA\xCF': 3708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB, f.is64Bit = False, True 3718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif magic == '\xCF\xFA\xED\xFE': 3728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.isLSB, f.is64Bit = True, True 3738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 3748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise ValueError,"Not a Mach-O object file: %r (bad magic)" % path 3758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck cputype = f.uint32() 3778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck cpusubtype = f.uint32() 3788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck filetype = f.uint32() 3798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck numLoadCommands = f.uint32() 3808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck loadCommandsSize = f.uint32() 3818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck flag = f.uint32() 3828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if f.is64Bit: 3838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck reserved = f.uint32() 3848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck start = f.tell() 3868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for i in range(numLoadCommands): 3888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchMachoLoadCommand(f, relocs) 3898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if f.tell() - start != loadCommandsSize: 3918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise ValueError,"%s: warning: invalid load commands size: %r" % ( 3928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck sys.argv[0], loadCommandsSize) 3938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef patchMachoLoadCommand(f, relocs): 3958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck start = f.tell() 3968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck cmd = f.uint32() 3978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck cmdSize = f.uint32() 3988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 3998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if cmd == 1: 4008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchMachoSegmentLoadCommand(f, relocs) 4018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck elif cmd == 25: 4028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchMachoSegmentLoadCommand(f, relocs) 4038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck else: 4048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.read(cmdSize - 8) 4058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if f.tell() - start != cmdSize: 4078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck raise ValueError,"%s: warning: invalid load command size: %r" % ( 4088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck sys.argv[0], cmdSize) 4098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef patchMachoSegmentLoadCommand(f, relocs): 4118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck segment_name = f.read(16) 4128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck vm_addr = f.word() 4138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck vm_size = f.word() 4148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck file_offset = f.word() 4158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck file_size = f.word() 4168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck maxprot = f.uint32() 4178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck initprot = f.uint32() 4188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck numSections = f.uint32() 4198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck flags = f.uint32() 4208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for i in range(numSections): 4218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck patchMachoSection(f, relocs) 4228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckdef patchMachoSection(f, relocs): 4248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck section_name = f.read(16) 4258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck segment_name = f.read(16) 4268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck address = f.word() 4278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck size = f.word() 4288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck offset = f.uint32() 4298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck alignment = f.uint32() 4308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck relocOffset = f.uint32() 4318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck numReloc = f.uint32() 4328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck flags = f.uint32() 4338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck reserved1 = f.uint32() 4348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck reserved2 = f.uint32() 4358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck if f.is64Bit: 4368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck reserved3 = f.uint32() 4378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck prev_pos = f.tell() 4398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(relocOffset) 4418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck for i in range(numReloc): 4428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck ri = i < len(relocs) and i or 0 4438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck print(" %s" % relocs[ri][0]) 4448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck word1 = f.uint32() 4458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck pos = f.tell() 4468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck value = f.uint32() 4478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(pos) 4488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck value = (value & 0x0FFFFFFF) | ((relocs[ri][1] & 0xF) << 28) 4498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.writeUInt32(value) 4508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck f.seek(prev_pos) 4518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_X86_64(Enum): 4548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_NONE = 0 4558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_64 = 1 4568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_PC32 = 2 4578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOT32 = 3 4588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_PLT32 = 4 4598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_COPY = 5 4608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GLOB_DAT = 6 4618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_JUMP_SLOT = 7 4628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_RELATIVE = 8 4638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTPCREL = 9 4648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_32 = 10 4658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_32S = 11 4668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_16 = 12 4678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_PC16 = 13 4688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_8 = 14 4698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_PC8 = 15 4708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_DTPMOD64 = 16 4718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_DTPOFF64 = 17 4728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_TPOFF64 = 18 4738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_TLSGD = 19 4748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_TLSLD = 20 4758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_DTPOFF32 = 21 4768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTTPOFF = 22 4778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_TPOFF32 = 23 4788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_PC64 = 24 4798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTOFF64 = 25 4808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTPC32 = 26 4818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOT64 = 27 4828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTPCREL64 = 28 4838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTPC64 = 29 4848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTPLT64 = 30 4858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_PLTOFF64 = 31 4868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_SIZE32 = 32 4878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_SIZE64 = 33 4888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_GOTPC32_TLSDESC = 34 4898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_TLSDESC_CALL = 35 4908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_TLSDESC = 36 4918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_X86_64_IRELATIVE = 37 4928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 4938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_i386(Enum): 4948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_NONE = 0 4958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_32 = 1 4968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_PC32 = 2 4978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_GOT32 = 3 4988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_PLT32 = 4 4998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_COPY = 5 5008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_GLOB_DAT = 6 5018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_JUMP_SLOT = 7 5028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_RELATIVE = 8 5038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_GOTOFF = 9 5048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_GOTPC = 10 5058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_32PLT = 11 5068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_TPOFF = 14 5078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_IE = 15 5088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GOTIE = 16 5098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LE = 17 5108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GD = 18 5118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LDM = 19 5128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_16 = 20 5138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_PC16 = 21 5148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_8 = 22 5158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_PC8 = 23 5168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GD_32 = 24 5178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GD_PUSH = 25 5188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GD_CALL = 26 5198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GD_POP = 27 5208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LDM_32 = 28 5218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LDM_PUSH = 29 5228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LDM_CALL = 30 5238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LDM_POP = 31 5248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LDO_32 = 32 5258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_IE_32 = 33 5268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_LE_32 = 34 5278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_DTPMOD32 = 35 5288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_DTPOFF32 = 36 5298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_TPOFF32 = 37 5308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_GOTDESC = 39 5318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_DESC_CALL = 40 5328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_TLS_DESC = 41 5338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_IRELATIVE = 42 5348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_386_NUM = 43 5358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 5368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_PPC32(Enum): 5378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_NONE = 0 5388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR32 = 1 5398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR24 = 2 5408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR16 = 3 5418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR16_LO = 4 5428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR16_HI = 5 5438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR16_HA = 6 5448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR14 = 7 5458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR14_BRTAKEN = 8 5468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_ADDR14_BRNTAKEN = 9 5478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_REL24 = 10 5488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_REL14 = 11 5498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_REL14_BRTAKEN = 12 5508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_REL14_BRNTAKEN = 13 5518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_REL32 = 26 5528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_TPREL16_LO = 70 5538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC_TPREL16_HA = 72 5548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 5558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_PPC64(Enum): 5568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_NONE = 0 5578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR32 = 1 5588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR16_LO = 4 5598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR16_HI = 5 5608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR14 = 7 5618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_REL24 = 10 5628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_REL32 = 26 5638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR64 = 38 5648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR16_HIGHER = 39 5658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR16_HIGHEST = 41 5668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_REL64 = 44 5678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TOC16 = 47 5688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TOC16_LO = 48 5698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TOC16_HA = 50 5708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TOC = 51 5718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR16_DS = 56 5728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_ADDR16_LO_DS = 57 5738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TOC16_DS = 63 5748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TOC16_LO_DS = 64 5758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TLS = 67 5768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TPREL16_LO = 70 5778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TPREL16_HA = 72 5788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_DTPREL16_LO = 75 5798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_DTPREL16_HA = 77 5808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_GOT_TLSGD16_LO = 80 5818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_GOT_TLSGD16_HA = 82 5828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_GOT_TLSLD16_LO = 84 5838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_GOT_TLSLD16_HA = 86 5848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_GOT_TPREL16_LO_DS = 88 5858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_GOT_TPREL16_HA = 90 5868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TLSGD = 107 5878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_PPC64_TLSLD = 108 5888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 5898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_AArch64(Enum): 5908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_NONE = 0x100 5918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ABS64 = 0x101 5928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ABS32 = 0x102 5938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ABS16 = 0x103 5948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_PREL64 = 0x104 5958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_PREL32 = 0x105 5968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_PREL16 = 0x106 5978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G0 = 0x107 5988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G0_NC = 0x108 5998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G1 = 0x109 6008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G1_NC = 0x10a 6018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G2 = 0x10b 6028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G2_NC = 0x10c 6038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_UABS_G3 = 0x10d 6048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_SABS_G0 = 0x10e 6058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_SABS_G1 = 0x10f 6068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_MOVW_SABS_G2 = 0x110 6078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LD_PREL_LO19 = 0x111 6088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ADR_PREL_LO21 = 0x112 6098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ADR_PREL_PG_HI21 = 0x113 6108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ADD_ABS_LO12_NC = 0x115 6118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LDST8_ABS_LO12_NC = 0x116 6128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TSTBR14 = 0x117 6138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_CONDBR19 = 0x118 6148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_JUMP26 = 0x11a 6158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_CALL26 = 0x11b 6168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LDST16_ABS_LO12_NC = 0x11c 6178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LDST32_ABS_LO12_NC = 0x11d 6188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LDST64_ABS_LO12_NC = 0x11e 6198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LDST128_ABS_LO12_NC = 0x12b 6208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_ADR_GOT_PAGE = 0x137 6218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_LD64_GOT_LO12_NC = 0x138 6228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b 6238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_MOVW_DTPREL_G1 = 0x20c 6248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC = 0x20d 6258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_MOVW_DTPREL_G0 = 0x20e 6268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC = 0x20f 6278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_ADD_DTPREL_HI12 = 0x210 6288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_ADD_DTPREL_LO12 = 0x211 6298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC = 0x212 6308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST8_DTPREL_LO12 = 0x213 6318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC = 0x214 6328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST16_DTPREL_LO12 = 0x215 6338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC = 0x216 6348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST32_DTPREL_LO12 = 0x217 6358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC = 0x218 6368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST64_DTPREL_LO12 = 0x219 6378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC = 0x21a 6388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 = 0x21b 6398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC = 0x21c 6408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 = 0x21d 6418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC = 0x21e 6428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 = 0x21f 6438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_MOVW_TPREL_G2 = 0x220 6448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_MOVW_TPREL_G1 = 0x221 6458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_MOVW_TPREL_G1_NC = 0x222 6468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_MOVW_TPREL_G0 = 0x223 6478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_MOVW_TPREL_G0_NC = 0x224 6488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_ADD_TPREL_HI12 = 0x225 6498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_ADD_TPREL_LO12 = 0x226 6508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_ADD_TPREL_LO12_NC = 0x227 6518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST8_TPREL_LO12 = 0x228 6528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC = 0x229 6538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST16_TPREL_LO12 = 0x22a 6548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC = 0x22b 6558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST32_TPREL_LO12 = 0x22c 6568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC = 0x22d 6578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST64_TPREL_LO12 = 0x22e 6588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC = 0x22f 6598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSDESC_ADR_PAGE = 0x232 6608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233 6618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234 6628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_AARCH64_TLSDESC_CALL = 0x239 6638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 6648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_ARM(Enum): 6658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_NONE = 0x00 6668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PC24 = 0x01 6678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ABS32 = 0x02 6688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_REL32 = 0x03 6698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_PC_G0 = 0x04 6708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ABS16 = 0x05 6718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ABS12 = 0x06 6728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_ABS5 = 0x07 6738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ABS8 = 0x08 6748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_SBREL32 = 0x09 6758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_CALL = 0x0a 6768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_PC8 = 0x0b 6778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_BREL_ADJ = 0x0c 6788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_DESC = 0x0d 6798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_SWI8 = 0x0e 6808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_XPC25 = 0x0f 6818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_XPC22 = 0x10 6828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_DTPMOD32 = 0x11 6838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_DTPOFF32 = 0x12 6848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_TPOFF32 = 0x13 6858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_COPY = 0x14 6868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GLOB_DAT = 0x15 6878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_JUMP_SLOT = 0x16 6888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_RELATIVE = 0x17 6898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOTOFF32 = 0x18 6908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_BASE_PREL = 0x19 6918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOT_BREL = 0x1a 6928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PLT32 = 0x1b 6938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_CALL = 0x1c 6948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_JUMP24 = 0x1d 6958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_JUMP24 = 0x1e 6968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_BASE_ABS = 0x1f 6978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PCREL_7_0 = 0x20 6988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PCREL_15_8 = 0x21 6998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PCREL_23_15 = 0x22 7008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_SBREL_11_0_NC = 0x23 7018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SBREL_19_12_NC = 0x24 7028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SBREL_27_20_CK = 0x25 7038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TARGET1 = 0x26 7048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_SBREL31 = 0x27 7058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_V4BX = 0x28 7068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TARGET2 = 0x29 7078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PREL31 = 0x2a 7088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVW_ABS_NC = 0x2b 7098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVT_ABS = 0x2c 7108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVW_PREL_NC = 0x2d 7118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVT_PREL = 0x2e 7128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVW_ABS_NC = 0x2f 7138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVT_ABS = 0x30 7148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVW_PREL_NC = 0x31 7158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVT_PREL = 0x32 7168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_JUMP19 = 0x33 7178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_JUMP6 = 0x34 7188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_ALU_PREL_11_0 = 0x35 7198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_PC12 = 0x36 7208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ABS32_NOI = 0x37 7218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_REL32_NOI = 0x38 7228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PC_G0_NC = 0x39 7238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PC_G0 = 0x3a 7248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PC_G1_NC = 0x3b 7258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PC_G1 = 0x3c 7268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_PC_G2 = 0x3d 7278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_PC_G1 = 0x3e 7288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_PC_G2 = 0x3f 7298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDRS_PC_G0 = 0x40 7308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDRS_PC_G1 = 0x41 7318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDRS_PC_G2 = 0x42 7328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDC_PC_G0 = 0x43 7338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDC_PC_G1 = 0x44 7348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDC_PC_G2 = 0x45 7358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SB_G0_NC = 0x46 7368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SB_G0 = 0x47 7378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SB_G1_NC = 0x48 7388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SB_G1 = 0x49 7398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ALU_SB_G2 = 0x4a 7408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_SB_G0 = 0x4b 7418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_SB_G1 = 0x4c 7428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDR_SB_G2 = 0x4d 7438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDRS_SB_G0 = 0x4e 7448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDRS_SB_G1 = 0x4f 7458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDRS_SB_G2 = 0x50 7468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDC_SB_G0 = 0x51 7478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDC_SB_G1 = 0x52 7488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_LDC_SB_G2 = 0x53 7498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVW_BREL_NC = 0x54 7508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVT_BREL = 0x55 7518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_MOVW_BREL = 0x56 7528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVW_BREL_NC = 0x57 7538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVT_BREL = 0x58 7548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_MOVW_BREL = 0x59 7558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_GOTDESC = 0x5a 7568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_CALL = 0x5b 7578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_DESCSEQ = 0x5c 7588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_TLS_CALL = 0x5d 7598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PLT32_ABS = 0x5e 7608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOT_ABS = 0x5f 7618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOT_PREL = 0x60 7628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOT_BREL12 = 0x61 7638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOTOFF12 = 0x62 7648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GOTRELAX = 0x63 7658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GNU_VTENTRY = 0x64 7668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_GNU_VTINHERIT = 0x65 7678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_JUMP11 = 0x66 7688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_JUMP8 = 0x67 7698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_GD32 = 0x68 7708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_LDM32 = 0x69 7718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_LDO32 = 0x6a 7728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_IE32 = 0x6b 7738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_LE32 = 0x6c 7748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_LDO12 = 0x6d 7758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_LE12 = 0x6e 7768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_TLS_IE12GP = 0x6f 7778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_0 = 0x70 7788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_1 = 0x71 7798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_2 = 0x72 7808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_3 = 0x73 7818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_4 = 0x74 7828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_5 = 0x75 7838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_6 = 0x76 7848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_7 = 0x77 7858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_8 = 0x78 7868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_9 = 0x79 7878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_10 = 0x7a 7888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_11 = 0x7b 7898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_12 = 0x7c 7908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_13 = 0x7d 7918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_14 = 0x7e 7928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_PRIVATE_15 = 0x7f 7938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_ME_TOO = 0x80 7948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_TLS_DESCSEQ16 = 0x81 7958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_ARM_THM_TLS_DESCSEQ32 = 0x82 7968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 7978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_Mips(Enum): 7988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_NONE = 0 7998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_16 = 1 8008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_32 = 2 8018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_REL32 = 3 8028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_26 = 4 8038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_HI16 = 5 8048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_LO16 = 6 8058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GPREL16 = 7 8068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_LITERAL = 8 8078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GOT16 = 9 8088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_PC16 = 10 8098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_CALL16 = 11 8108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GPREL32 = 12 8118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_SHIFT5 = 16 8128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_SHIFT6 = 17 8138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_64 = 18 8148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GOT_DISP = 19 8158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GOT_PAGE = 20 8168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GOT_OFST = 21 8178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GOT_HI16 = 22 8188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GOT_LO16 = 23 8198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_SUB = 24 8208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_INSERT_A = 25 8218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_INSERT_B = 26 8228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_DELETE = 27 8238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_HIGHER = 28 8248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_HIGHEST = 29 8258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_CALL_HI16 = 30 8268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_CALL_LO16 = 31 8278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_SCN_DISP = 32 8288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_REL16 = 33 8298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_ADD_IMMEDIATE = 34 8308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_PJUMP = 35 8318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_RELGOT = 36 8328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_JALR = 37 8338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_DTPMOD32 = 38 8348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_DTPREL32 = 39 8358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_DTPMOD64 = 40 8368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_DTPREL64 = 41 8378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_GD = 42 8388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_LDM = 43 8398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_DTPREL_HI16 = 44 8408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_DTPREL_LO16 = 45 8418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_GOTTPREL = 46 8428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_TPREL32 = 47 8438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_TPREL64 = 48 8448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_TPREL_HI16 = 49 8458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_TLS_TPREL_LO16 = 50 8468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_GLOB_DAT = 51 8478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_COPY = 126 8488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_JUMP_SLOT = 127 8498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_MIPS_NUM = 218 8508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 8518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Elf_Hexagon(Enum): 8528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_NONE = 0 8538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B22_PCREL = 1 8548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B15_PCREL = 2 8558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B7_PCREL = 3 8568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_LO16 = 4 8578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_HI16 = 5 8588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_32 = 6 8598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_16 = 7 8608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_8 = 8 8618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GPREL16_0 = 9 8628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GPREL16_1 = 10 8638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GPREL16_2 = 11 8648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GPREL16_3 = 12 8658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_HL16 = 13 8668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B13_PCREL = 14 8678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B9_PCREL = 15 8688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B32_PCREL_X = 16 8698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_32_6_X = 17 8708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B22_PCREL_X = 18 8718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B15_PCREL_X = 19 8728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B13_PCREL_X = 20 8738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B9_PCREL_X = 21 8748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_B7_PCREL_X = 22 8758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_16_X = 23 8768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_12_X = 24 8778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_11_X = 25 8788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_10_X = 26 8798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_9_X = 27 8808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_8_X = 28 8818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_7_X = 29 8828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_6_X = 30 8838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_32_PCREL = 31 8848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_COPY = 32 8858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GLOB_DAT = 33 8868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_JMP_SLOT = 34 8878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_RELATIVE = 35 8888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_PLT_B22_PCREL = 36 8898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOTREL_LO16 = 37 8908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOTREL_HI16 = 38 8918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOTREL_32 = 39 8928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_LO16 = 40 8938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_HI16 = 41 8948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_32 = 42 8958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_16 = 43 8968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPMOD_32 = 44 8978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_LO16 = 45 8988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_HI16 = 46 8998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_32 = 47 9008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_16 = 48 9018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_PLT_B22_PCREL = 49 9028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_LO16 = 50 9038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_HI16 = 51 9048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_32 = 52 9058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_16 = 53 9068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_LO16 = 54 9078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_HI16 = 55 9088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_32 = 56 9098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_LO16 = 57 9108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_HI16 = 58 9118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_32 = 59 9128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_16 = 60 9138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_LO16 = 61 9148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_HI16 = 62 9158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_32 = 63 9168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_16 = 64 9178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_6_PCREL_X = 65 9188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOTREL_32_6_X = 66 9198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOTREL_16_X = 67 9208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOTREL_11_X = 68 9218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_32_6_X = 69 9228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_16_X = 70 9238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GOT_11_X = 71 9248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_32_6_X = 72 9258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_16_X = 73 9268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_DTPREL_11_X = 74 9278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_32_6_X = 75 9288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_16_X = 76 9298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_GD_GOT_11_X = 77 9308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_32_6_X = 78 9318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_16_X = 79 9328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_32_6_X = 80 9338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_16_X = 81 9348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_IE_GOT_11_X = 82 9358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_32_6_X = 83 9368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_16_X = 84 9378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck R_HEX_TPREL_11_X = 85 9388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Coff_i386(Enum): 9418ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_ABSOLUTE = 0x0000 9428ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_DIR16 = 0x0001 9438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_REL16 = 0x0002 9448ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_DIR32 = 0x0006 9458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_DIR32NB = 0x0007 9468ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_SEG12 = 0x0009 9478ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_SECTION = 0x000A 9488ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_SECREL = 0x000B 9498ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_TOKEN = 0x000C 9508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_SECREL7 = 0x000D 9518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_I386_REL32 = 0x0014 9528ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9538ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Coff_X86_64(Enum): 9548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_ABSOLUTE = 0x0000 9558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_ADDR64 = 0x0001 9568ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_ADDR32 = 0x0002 9578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_ADDR32NB = 0x0003 9588ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_REL32 = 0x0004 9598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_REL32_1 = 0x0005 9608ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_REL32_2 = 0x0006 9618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_REL32_3 = 0x0007 9628ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_REL32_4 = 0x0008 9638ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_REL32_5 = 0x0009 9648ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_SECTION = 0x000A 9658ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_SECREL = 0x000B 9668ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_SECREL7 = 0x000C 9678ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_TOKEN = 0x000D 9688ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_SREL32 = 0x000E 9698ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_PAIR = 0x000F 9708ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_AMD64_SSPAN32 = 0x0010 9718ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9728ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Coff_ARM(Enum): 9738ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_ABSOLUTE = 0x0000 9748ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_ADDR32 = 0x0001 9758ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_ADDR32NB = 0x0002 9768ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BRANCH24 = 0x0003 9778ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BRANCH11 = 0x0004 9788ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_TOKEN = 0x0005 9798ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BLX24 = 0x0008 9808ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BLX11 = 0x0009 9818ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_SECTION = 0x000E 9828ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_SECREL = 0x000F 9838ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_MOV32A = 0x0010 9848ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_MOV32T = 0x0011 9858ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BRANCH20T = 0x0012 9868ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BRANCH24T = 0x0014 9878ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck IMAGE_REL_ARM_BLX23T = 0x0015 9888ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9898ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9908ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Macho_i386(Enum): 9918ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Vanilla = 0 9928ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Pair = 1 9938ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Difference = 2 9948ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Generic_PreboundLazyPointer = 3 9958ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Generic_LocalDifference = 4 9968ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Generic_TLV = 5 9978ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 9988ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Macho_X86_64(Enum): 9998ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Unsigned = 0 10008ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Signed = 1 10018ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Branch = 2 10028ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_GOTLoad = 3 10038ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_GOT = 4 10048ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Subtractor = 5 10058ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Signed1 = 6 10068ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Signed2 = 7 10078ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_Signed4 = 8 10088ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_X86_64_TLV = 9 10098ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 10108ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Macho_ARM(Enum): 10118ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Vanilla = 0 10128ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Pair = 1 10138ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_Difference = 2 10148ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_LocalDifference = 3 10158ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_PreboundLazyPointer = 4 10168ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_Branch24Bit = 5 10178ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_ThumbBranch22Bit = 6 10188ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_ThumbBranch32Bit = 7 10198ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_Half = 8 10208ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck RIT_ARM_HalfDifference = 9 10218ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 10228ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieckclass Relocs_Macho_PPC(Enum): 10238ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_VANILLA = 0 10248ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_PAIR = 1 10258ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_BR14 = 2 10268ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_BR24 = 3 10278ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_HI16 = 4 10288ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_LO16 = 5 10298ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_HA16 = 6 10308ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_LO14 = 7 10318ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_SECTDIFF = 8 10328ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_PB_LA_PTR = 9 10338ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_HI16_SECTDIFF = 10 10348ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_LO16_SECTDIFF = 11 10358ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_HA16_SECTDIFF = 12 10368ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_JBSR = 13 10378ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_LO14_SECTDIFF = 14 10388ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck PPC_RELOC_LOCAL_SECTDIFF = 15 10398ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 10408ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 10418ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-x86_64", "x86_64-pc-linux-gnu", Relocs_Elf_X86_64.entries(), "leaq sym@GOTTPOFF(%rip), %rax") 10428ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-i386", "i386-pc-linux-gnu", Relocs_Elf_i386.entries(), "mov sym@GOTOFF(%ebx), %eax") 10438ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck#craftElf("relocs-elf-ppc32", "powerpc-unknown-linux-gnu", Relocs_Elf_PPC32.entries(), ...) 10448ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-ppc64", "powerpc64-unknown-linux-gnu", Relocs_Elf_PPC64.entries(), 10458ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck ("@t = thread_local global i32 0, align 4", "define i32* @f{0}() nounwind {{ ret i32* @t }}", 2)) 10468ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-aarch64", "aarch64", Relocs_Elf_AArch64.entries(), "movz x0, #:abs_g0:sym") 10478ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-arm", "arm-unknown-unknown", Relocs_Elf_ARM.entries(), "b sym") 10488ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-mips", "mips-unknown-linux", Relocs_Elf_Mips.entries(), "lui $2, %hi(sym)") 10498ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftElf("relocs.obj.elf-mips64el", "mips64el-unknown-linux", Relocs_Elf_Mips.entries(), "lui $2, %hi(sym)") 10508ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck#craftElf("relocs.obj.elf-hexagon", "hexagon-unknown-unknown", Relocs_Elf_Hexagon.entries(), ...) 10518ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 10528ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftCoff("relocs.obj.coff-i386", "i386-pc-win32", Relocs_Coff_i386.entries(), "mov foo@imgrel(%ebx, %ecx, 4), %eax") 10538ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftCoff("relocs.obj.coff-x86_64", "x86_64-pc-win32", Relocs_Coff_X86_64.entries(), "mov foo@imgrel(%ebx, %ecx, 4), %eax") 10548ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck#craftCoff("relocs.obj.coff-arm", "arm-pc-win32", Relocs_Coff_ARM.entries(), "...") 10558ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck 10568ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftMacho("relocs.obj.macho-i386", "i386-apple-darwin9", Relocs_Macho_i386.entries(), 10578ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck ("asm", ".subsections_via_symbols; .text; a: ; b:", "call a", 1)) 10588ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftMacho("relocs.obj.macho-x86_64", "x86_64-apple-darwin9", Relocs_Macho_X86_64.entries(), 10598ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck ("asm", ".subsections_via_symbols; .text; a: ; b:", "call a", 1)) 10608ed205f0a35337089407a57cc8e01de59bc4e26bNico RieckcraftMacho("relocs.obj.macho-arm", "armv7-apple-darwin10", Relocs_Macho_ARM.entries(), "bl sym") 10618ed205f0a35337089407a57cc8e01de59bc4e26bNico Rieck#craftMacho("relocs.obj.macho-ppc", "powerpc-apple-darwin10", Relocs_Macho_PPC.entries(), ...) 1062