1*9880d681SAndroid Build Coastguard Worker#!/usr/bin/env python 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker# Generates ELF, COFF and MachO object files for different architectures 4*9880d681SAndroid Build Coastguard Worker# containing all relocations: 5*9880d681SAndroid Build Coastguard Worker# 6*9880d681SAndroid Build Coastguard Worker# ELF: i386, x86_64, ppc64, aarch64, arm, mips, mips64el 7*9880d681SAndroid Build Coastguard Worker# COFF: i386, x86_64 8*9880d681SAndroid Build Coastguard Worker# MachO: i386, x86_64, arm 9*9880d681SAndroid Build Coastguard Worker# (see end of file for triples) 10*9880d681SAndroid Build Coastguard Worker# 11*9880d681SAndroid Build Coastguard Worker# To simplify generation, object files are generated with just the proper 12*9880d681SAndroid Build Coastguard Worker# number of relocations through repeated instructions. Afterwards, the 13*9880d681SAndroid Build Coastguard Worker# relocations in the object file are patched to their proper value. 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerimport operator 16*9880d681SAndroid Build Coastguard Workerimport shutil 17*9880d681SAndroid Build Coastguard Workerimport StringIO 18*9880d681SAndroid Build Coastguard Workerimport struct 19*9880d681SAndroid Build Coastguard Workerimport subprocess 20*9880d681SAndroid Build Coastguard Workerimport sys 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerclass EnumType(type): 23*9880d681SAndroid Build Coastguard Worker def __init__(self, name, bases = (), attributes = {}): 24*9880d681SAndroid Build Coastguard Worker super(EnumType, self).__init__(name, bases, attributes) 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker type.__setattr__(self, '_map', {}) 27*9880d681SAndroid Build Coastguard Worker type.__setattr__(self, '_nameMap', {}) 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker for symbol in attributes: 30*9880d681SAndroid Build Coastguard Worker if symbol.startswith('__') or symbol.endswith('__'): 31*9880d681SAndroid Build Coastguard Worker continue 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker value = attributes[symbol] 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker # MyEnum.symbol == value 36*9880d681SAndroid Build Coastguard Worker type.__setattr__(self, symbol, value) 37*9880d681SAndroid Build Coastguard Worker self._nameMap[symbol] = value 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker # The first symbol with the given value is authoritative. 40*9880d681SAndroid Build Coastguard Worker if not (value in self._map): 41*9880d681SAndroid Build Coastguard Worker # MyEnum[value] == symbol 42*9880d681SAndroid Build Coastguard Worker self._map[value] = symbol 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker # Not supported (Enums are immutable). 45*9880d681SAndroid Build Coastguard Worker def __setattr__(self, name, value): 46*9880d681SAndroid Build Coastguard Worker raise NotSupportedException, self.__setattr__ 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker # Not supported (Enums are immutable). 49*9880d681SAndroid Build Coastguard Worker def __delattr__(self, name): 50*9880d681SAndroid Build Coastguard Worker raise NotSupportedException, self.__delattr__ 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker # Gets the enum symbol for the specified value. 53*9880d681SAndroid Build Coastguard Worker def __getitem__(self, value): 54*9880d681SAndroid Build Coastguard Worker symbol = self._map.get(value) 55*9880d681SAndroid Build Coastguard Worker if symbol is None: 56*9880d681SAndroid Build Coastguard Worker raise KeyError, value 57*9880d681SAndroid Build Coastguard Worker return symbol 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker # Gets the enum symbol for the specified value or none. 60*9880d681SAndroid Build Coastguard Worker def lookup(self, value): 61*9880d681SAndroid Build Coastguard Worker symbol = self._map.get(value) 62*9880d681SAndroid Build Coastguard Worker return symbol 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker # Not supported (Enums are immutable). 65*9880d681SAndroid Build Coastguard Worker def __setitem__(self, value, symbol): 66*9880d681SAndroid Build Coastguard Worker raise NotSupportedException, self.__setitem__ 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker # Not supported (Enums are immutable). 69*9880d681SAndroid Build Coastguard Worker def __delitem__(self, value): 70*9880d681SAndroid Build Coastguard Worker raise NotSupportedException, self.__delitem__ 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker def entries(self): 73*9880d681SAndroid Build Coastguard Worker # sort by (value, name) 74*9880d681SAndroid Build Coastguard Worker def makeKey(item): 75*9880d681SAndroid Build Coastguard Worker return (item[1], item[0]) 76*9880d681SAndroid Build Coastguard Worker e = [] 77*9880d681SAndroid Build Coastguard Worker for pair in sorted(self._nameMap.iteritems(), key=makeKey): 78*9880d681SAndroid Build Coastguard Worker e.append(pair) 79*9880d681SAndroid Build Coastguard Worker return e 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker def __iter__(self): 82*9880d681SAndroid Build Coastguard Worker for e in self.entries(): 83*9880d681SAndroid Build Coastguard Worker yield e 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard WorkerEnum = EnumType('Enum', (), {}) 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workerclass BinaryReader: 88*9880d681SAndroid Build Coastguard Worker def __init__(self, path): 89*9880d681SAndroid Build Coastguard Worker self.file = open(path, "r+b", 0) 90*9880d681SAndroid Build Coastguard Worker self.isLSB = None 91*9880d681SAndroid Build Coastguard Worker self.is64Bit = None 92*9880d681SAndroid Build Coastguard Worker self.isN64 = False 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker def tell(self): 95*9880d681SAndroid Build Coastguard Worker return self.file.tell() 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker def seek(self, pos): 98*9880d681SAndroid Build Coastguard Worker self.file.seek(pos) 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker def read(self, N): 101*9880d681SAndroid Build Coastguard Worker data = self.file.read(N) 102*9880d681SAndroid Build Coastguard Worker if len(data) != N: 103*9880d681SAndroid Build Coastguard Worker raise ValueError, "Out of data!" 104*9880d681SAndroid Build Coastguard Worker return data 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker def int8(self): 107*9880d681SAndroid Build Coastguard Worker return ord(self.read(1)) 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker def uint8(self): 110*9880d681SAndroid Build Coastguard Worker return ord(self.read(1)) 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker def int16(self): 113*9880d681SAndroid Build Coastguard Worker return struct.unpack('><'[self.isLSB] + 'h', self.read(2))[0] 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker def uint16(self): 116*9880d681SAndroid Build Coastguard Worker return struct.unpack('><'[self.isLSB] + 'H', self.read(2))[0] 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker def int32(self): 119*9880d681SAndroid Build Coastguard Worker return struct.unpack('><'[self.isLSB] + 'i', self.read(4))[0] 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker def uint32(self): 122*9880d681SAndroid Build Coastguard Worker return struct.unpack('><'[self.isLSB] + 'I', self.read(4))[0] 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker def int64(self): 125*9880d681SAndroid Build Coastguard Worker return struct.unpack('><'[self.isLSB] + 'q', self.read(8))[0] 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker def uint64(self): 128*9880d681SAndroid Build Coastguard Worker return struct.unpack('><'[self.isLSB] + 'Q', self.read(8))[0] 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker def writeUInt8(self, value): 131*9880d681SAndroid Build Coastguard Worker self.file.write(struct.pack('><'[self.isLSB] + 'B', value)) 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Worker def writeUInt16(self, value): 134*9880d681SAndroid Build Coastguard Worker self.file.write(struct.pack('><'[self.isLSB] + 'H', value)) 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker def writeUInt32(self, value): 137*9880d681SAndroid Build Coastguard Worker self.file.write(struct.pack('><'[self.isLSB] + 'I', value)) 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker def writeUInt64(self, value): 140*9880d681SAndroid Build Coastguard Worker self.file.write(struct.pack('><'[self.isLSB] + 'Q', value)) 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker def word(self): 143*9880d681SAndroid Build Coastguard Worker if self.is64Bit: 144*9880d681SAndroid Build Coastguard Worker return self.uint64() 145*9880d681SAndroid Build Coastguard Worker else: 146*9880d681SAndroid Build Coastguard Worker return self.uint32() 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker def writeWord(self, value): 149*9880d681SAndroid Build Coastguard Worker if self.is64Bit: 150*9880d681SAndroid Build Coastguard Worker self.writeUInt64(value) 151*9880d681SAndroid Build Coastguard Worker else: 152*9880d681SAndroid Build Coastguard Worker self.writeUInt32(value) 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerclass StringTable: 155*9880d681SAndroid Build Coastguard Worker def __init__(self, strings): 156*9880d681SAndroid Build Coastguard Worker self.string_table = strings 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker def __getitem__(self, index): 159*9880d681SAndroid Build Coastguard Worker end = self.string_table.index('\x00', index) 160*9880d681SAndroid Build Coastguard Worker return self.string_table[index:end] 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Workerclass ElfSection: 163*9880d681SAndroid Build Coastguard Worker def __init__(self, f): 164*9880d681SAndroid Build Coastguard Worker self.sh_name = f.uint32() 165*9880d681SAndroid Build Coastguard Worker self.sh_type = f.uint32() 166*9880d681SAndroid Build Coastguard Worker self.sh_flags = f.word() 167*9880d681SAndroid Build Coastguard Worker self.sh_addr = f.word() 168*9880d681SAndroid Build Coastguard Worker self.sh_offset = f.word() 169*9880d681SAndroid Build Coastguard Worker self.sh_size = f.word() 170*9880d681SAndroid Build Coastguard Worker self.sh_link = f.uint32() 171*9880d681SAndroid Build Coastguard Worker self.sh_info = f.uint32() 172*9880d681SAndroid Build Coastguard Worker self.sh_addralign = f.word() 173*9880d681SAndroid Build Coastguard Worker self.sh_entsize = f.word() 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker def patch(self, f, relocs): 176*9880d681SAndroid Build Coastguard Worker if self.sh_type == 4 or self.sh_type == 9: # SHT_RELA / SHT_REL 177*9880d681SAndroid Build Coastguard Worker self.patchRelocs(f, relocs) 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker def patchRelocs(self, f, relocs): 180*9880d681SAndroid Build Coastguard Worker entries = self.sh_size // self.sh_entsize 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker for index in range(entries): 183*9880d681SAndroid Build Coastguard Worker f.seek(self.sh_offset + index * self.sh_entsize) 184*9880d681SAndroid Build Coastguard Worker r_offset = f.word() 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker if index < len(relocs): 187*9880d681SAndroid Build Coastguard Worker ri = index 188*9880d681SAndroid Build Coastguard Worker else: 189*9880d681SAndroid Build Coastguard Worker ri = 0 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Worker if f.isN64: 192*9880d681SAndroid Build Coastguard Worker r_sym = f.uint32() 193*9880d681SAndroid Build Coastguard Worker r_ssym = f.uint8() 194*9880d681SAndroid Build Coastguard Worker f.seek(f.tell()) 195*9880d681SAndroid Build Coastguard Worker f.writeUInt8(relocs[ri][1]) 196*9880d681SAndroid Build Coastguard Worker f.writeUInt8(relocs[ri][1]) 197*9880d681SAndroid Build Coastguard Worker f.writeUInt8(relocs[ri][1]) 198*9880d681SAndroid Build Coastguard Worker else: 199*9880d681SAndroid Build Coastguard Worker pos = f.tell() 200*9880d681SAndroid Build Coastguard Worker r_info = f.word() 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Worker r_type = relocs[ri][1] 203*9880d681SAndroid Build Coastguard Worker if f.is64Bit: 204*9880d681SAndroid Build Coastguard Worker r_info = (r_info & 0xFFFFFFFF00000000) | (r_type & 0xFFFFFFFF) 205*9880d681SAndroid Build Coastguard Worker else: 206*9880d681SAndroid Build Coastguard Worker r_info = (r_info & 0xFF00) | (r_type & 0xFF) 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Worker print(" %s" % relocs[ri][0]) 209*9880d681SAndroid Build Coastguard Worker f.seek(pos) 210*9880d681SAndroid Build Coastguard Worker f.writeWord(r_info) 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerclass CoffSection: 214*9880d681SAndroid Build Coastguard Worker def __init__(self, f): 215*9880d681SAndroid Build Coastguard Worker self.raw_name = f.read(8) 216*9880d681SAndroid Build Coastguard Worker self.virtual_size = f.uint32() 217*9880d681SAndroid Build Coastguard Worker self.virtual_address = f.uint32() 218*9880d681SAndroid Build Coastguard Worker self.raw_data_size = f.uint32() 219*9880d681SAndroid Build Coastguard Worker self.pointer_to_raw_data = f.uint32() 220*9880d681SAndroid Build Coastguard Worker self.pointer_to_relocations = f.uint32() 221*9880d681SAndroid Build Coastguard Worker self.pointer_to_line_numbers = f.uint32() 222*9880d681SAndroid Build Coastguard Worker self.relocation_count = f.uint16() 223*9880d681SAndroid Build Coastguard Worker self.line_number_count = f.uint16() 224*9880d681SAndroid Build Coastguard Worker self.characteristics = f.uint32() 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerdef compileAsm(filename, triple, src): 228*9880d681SAndroid Build Coastguard Worker cmd = ["llvm-mc", "-triple=" + triple, "-filetype=obj", "-o", filename] 229*9880d681SAndroid Build Coastguard Worker print(" Running: " + " ".join(cmd)) 230*9880d681SAndroid Build Coastguard Worker p = subprocess.Popen(cmd, stdin=subprocess.PIPE) 231*9880d681SAndroid Build Coastguard Worker p.communicate(input=src) 232*9880d681SAndroid Build Coastguard Worker p.wait() 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Workerdef compileIR(filename, triple, src): 235*9880d681SAndroid Build Coastguard Worker cmd = ["llc", "-mtriple=" + triple, "-filetype=obj", "-o", filename] 236*9880d681SAndroid Build Coastguard Worker print(" Running: " + " ".join(cmd)) 237*9880d681SAndroid Build Coastguard Worker p = subprocess.Popen(cmd, stdin=subprocess.PIPE) 238*9880d681SAndroid Build Coastguard Worker p.communicate(input=src) 239*9880d681SAndroid Build Coastguard Worker p.wait() 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Workerdef craftElf(filename, triple, relocs, dummyReloc): 243*9880d681SAndroid Build Coastguard Worker print("Crafting " + filename + " for " + triple) 244*9880d681SAndroid Build Coastguard Worker if type(dummyReloc) is tuple: 245*9880d681SAndroid Build Coastguard Worker preSrc, dummyReloc, relocsPerDummy = dummyReloc 246*9880d681SAndroid Build Coastguard Worker src = preSrc + "\n" 247*9880d681SAndroid Build Coastguard Worker for i in range((len(relocs) + relocsPerDummy - 1) / relocsPerDummy): 248*9880d681SAndroid Build Coastguard Worker src += dummyReloc.format(i) + "\n" 249*9880d681SAndroid Build Coastguard Worker compileIR(filename, triple, src) 250*9880d681SAndroid Build Coastguard Worker else: 251*9880d681SAndroid Build Coastguard Worker src = (dummyReloc + "\n") * len(relocs) 252*9880d681SAndroid Build Coastguard Worker compileAsm(filename, triple, src) 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Worker print(" Patching relocations...") 255*9880d681SAndroid Build Coastguard Worker patchElf(filename, relocs) 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdef patchElf(path, relocs): 258*9880d681SAndroid Build Coastguard Worker f = BinaryReader(path) 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Worker magic = f.read(4) 261*9880d681SAndroid Build Coastguard Worker assert magic == '\x7FELF' 262*9880d681SAndroid Build Coastguard Worker 263*9880d681SAndroid Build Coastguard Worker fileclass = f.uint8() 264*9880d681SAndroid Build Coastguard Worker if fileclass == 1: 265*9880d681SAndroid Build Coastguard Worker f.is64Bit = False 266*9880d681SAndroid Build Coastguard Worker elif fileclass == 2: 267*9880d681SAndroid Build Coastguard Worker f.is64Bit = True 268*9880d681SAndroid Build Coastguard Worker else: 269*9880d681SAndroid Build Coastguard Worker raise ValueError, "Unknown file class %x" % fileclass 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker byteordering = f.uint8() 272*9880d681SAndroid Build Coastguard Worker if byteordering == 1: 273*9880d681SAndroid Build Coastguard Worker f.isLSB = True 274*9880d681SAndroid Build Coastguard Worker elif byteordering == 2: 275*9880d681SAndroid Build Coastguard Worker f.isLSB = False 276*9880d681SAndroid Build Coastguard Worker else: 277*9880d681SAndroid Build Coastguard Worker raise ValueError, "Unknown byte ordering %x" % byteordering 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Worker f.seek(18) 280*9880d681SAndroid Build Coastguard Worker e_machine = f.uint16() 281*9880d681SAndroid Build Coastguard Worker if e_machine == 0x0008 and f.is64Bit: # EM_MIPS && 64 bit 282*9880d681SAndroid Build Coastguard Worker f.isN64 = True 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Worker e_version = f.uint32() 285*9880d681SAndroid Build Coastguard Worker e_entry = f.word() 286*9880d681SAndroid Build Coastguard Worker e_phoff = f.word() 287*9880d681SAndroid Build Coastguard Worker e_shoff = f.word() 288*9880d681SAndroid Build Coastguard Worker e_flags = f.uint32() 289*9880d681SAndroid Build Coastguard Worker e_ehsize = f.uint16() 290*9880d681SAndroid Build Coastguard Worker e_phentsize = f.uint16() 291*9880d681SAndroid Build Coastguard Worker e_phnum = f.uint16() 292*9880d681SAndroid Build Coastguard Worker e_shentsize = f.uint16() 293*9880d681SAndroid Build Coastguard Worker e_shnum = f.uint16() 294*9880d681SAndroid Build Coastguard Worker e_shstrndx = f.uint16() 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Worker sections = [] 297*9880d681SAndroid Build Coastguard Worker for index in range(e_shnum): 298*9880d681SAndroid Build Coastguard Worker f.seek(e_shoff + index * e_shentsize) 299*9880d681SAndroid Build Coastguard Worker s = ElfSection(f) 300*9880d681SAndroid Build Coastguard Worker sections.append(s) 301*9880d681SAndroid Build Coastguard Worker 302*9880d681SAndroid Build Coastguard Worker f.seek(sections[e_shstrndx].sh_offset) 303*9880d681SAndroid Build Coastguard Worker shstrtab = StringTable(f.read(sections[e_shstrndx].sh_size)) 304*9880d681SAndroid Build Coastguard Worker 305*9880d681SAndroid Build Coastguard Worker strtab = None 306*9880d681SAndroid Build Coastguard Worker for section in sections: 307*9880d681SAndroid Build Coastguard Worker if shstrtab[section.sh_name] == ".strtab": 308*9880d681SAndroid Build Coastguard Worker f.seek(section.sh_offset) 309*9880d681SAndroid Build Coastguard Worker strtab = StringTable(f.read(section.sh_size)) 310*9880d681SAndroid Build Coastguard Worker break 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Worker for index in range(e_shnum): 313*9880d681SAndroid Build Coastguard Worker sections[index].patch(f, relocs) 314*9880d681SAndroid Build Coastguard Worker 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Workerdef craftCoff(filename, triple, relocs, dummyReloc): 317*9880d681SAndroid Build Coastguard Worker print("Crafting " + filename + " for " + triple) 318*9880d681SAndroid Build Coastguard Worker src = (dummyReloc + "\n") * len(relocs) 319*9880d681SAndroid Build Coastguard Worker compileAsm(filename, triple, src) 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Worker print(" Patching relocations...") 322*9880d681SAndroid Build Coastguard Worker patchCoff(filename, relocs) 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Workerdef patchCoff(path, relocs): 325*9880d681SAndroid Build Coastguard Worker f = BinaryReader(path) 326*9880d681SAndroid Build Coastguard Worker f.isLSB = True 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Worker machine_type = f.uint16() 329*9880d681SAndroid Build Coastguard Worker section_count = f.uint16() 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Worker # Zero out timestamp to prevent churn when regenerating COFF files. 332*9880d681SAndroid Build Coastguard Worker f.writeUInt32(0) 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Worker f.seek(20) 335*9880d681SAndroid Build Coastguard Worker sections = [CoffSection(f) for idx in range(section_count)] 336*9880d681SAndroid Build Coastguard Worker 337*9880d681SAndroid Build Coastguard Worker section = sections[0] 338*9880d681SAndroid Build Coastguard Worker f.seek(section.pointer_to_relocations) 339*9880d681SAndroid Build Coastguard Worker for i in range(section.relocation_count): 340*9880d681SAndroid Build Coastguard Worker virtual_addr = f.uint32() 341*9880d681SAndroid Build Coastguard Worker symtab_idx = f.uint32() 342*9880d681SAndroid Build Coastguard Worker print(" %s" % relocs[i][0]) 343*9880d681SAndroid Build Coastguard Worker f.writeUInt16(relocs[i][1]) 344*9880d681SAndroid Build Coastguard Worker 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Workerdef craftMacho(filename, triple, relocs, dummyReloc): 347*9880d681SAndroid Build Coastguard Worker print("Crafting " + filename + " for " + triple) 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker if type(dummyReloc) is tuple: 350*9880d681SAndroid Build Coastguard Worker srcType, preSrc, dummyReloc, relocsPerDummy = dummyReloc 351*9880d681SAndroid Build Coastguard Worker src = preSrc + "\n" 352*9880d681SAndroid Build Coastguard Worker for i in range((len(relocs) + relocsPerDummy - 1) / relocsPerDummy): 353*9880d681SAndroid Build Coastguard Worker src += dummyReloc.format(i) + "\n" 354*9880d681SAndroid Build Coastguard Worker if srcType == "asm": 355*9880d681SAndroid Build Coastguard Worker compileAsm(filename, triple, src) 356*9880d681SAndroid Build Coastguard Worker elif srcType == "ir": 357*9880d681SAndroid Build Coastguard Worker compileIR(filename, triple, src) 358*9880d681SAndroid Build Coastguard Worker else: 359*9880d681SAndroid Build Coastguard Worker src = (dummyReloc + "\n") * len(relocs) 360*9880d681SAndroid Build Coastguard Worker compileAsm(filename, triple, src) 361*9880d681SAndroid Build Coastguard Worker 362*9880d681SAndroid Build Coastguard Worker print(" Patching relocations...") 363*9880d681SAndroid Build Coastguard Worker patchMacho(filename, relocs) 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Workerdef patchMacho(filename, relocs): 366*9880d681SAndroid Build Coastguard Worker f = BinaryReader(filename) 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Worker magic = f.read(4) 369*9880d681SAndroid Build Coastguard Worker if magic == '\xFE\xED\xFA\xCE': 370*9880d681SAndroid Build Coastguard Worker f.isLSB, f.is64Bit = False, False 371*9880d681SAndroid Build Coastguard Worker elif magic == '\xCE\xFA\xED\xFE': 372*9880d681SAndroid Build Coastguard Worker f.isLSB, f.is64Bit = True, False 373*9880d681SAndroid Build Coastguard Worker elif magic == '\xFE\xED\xFA\xCF': 374*9880d681SAndroid Build Coastguard Worker f.isLSB, f.is64Bit = False, True 375*9880d681SAndroid Build Coastguard Worker elif magic == '\xCF\xFA\xED\xFE': 376*9880d681SAndroid Build Coastguard Worker f.isLSB, f.is64Bit = True, True 377*9880d681SAndroid Build Coastguard Worker else: 378*9880d681SAndroid Build Coastguard Worker raise ValueError,"Not a Mach-O object file: %r (bad magic)" % path 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Worker cputype = f.uint32() 381*9880d681SAndroid Build Coastguard Worker cpusubtype = f.uint32() 382*9880d681SAndroid Build Coastguard Worker filetype = f.uint32() 383*9880d681SAndroid Build Coastguard Worker numLoadCommands = f.uint32() 384*9880d681SAndroid Build Coastguard Worker loadCommandsSize = f.uint32() 385*9880d681SAndroid Build Coastguard Worker flag = f.uint32() 386*9880d681SAndroid Build Coastguard Worker if f.is64Bit: 387*9880d681SAndroid Build Coastguard Worker reserved = f.uint32() 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Worker start = f.tell() 390*9880d681SAndroid Build Coastguard Worker 391*9880d681SAndroid Build Coastguard Worker for i in range(numLoadCommands): 392*9880d681SAndroid Build Coastguard Worker patchMachoLoadCommand(f, relocs) 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Worker if f.tell() - start != loadCommandsSize: 395*9880d681SAndroid Build Coastguard Worker raise ValueError,"%s: warning: invalid load commands size: %r" % ( 396*9880d681SAndroid Build Coastguard Worker sys.argv[0], loadCommandsSize) 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Workerdef patchMachoLoadCommand(f, relocs): 399*9880d681SAndroid Build Coastguard Worker start = f.tell() 400*9880d681SAndroid Build Coastguard Worker cmd = f.uint32() 401*9880d681SAndroid Build Coastguard Worker cmdSize = f.uint32() 402*9880d681SAndroid Build Coastguard Worker 403*9880d681SAndroid Build Coastguard Worker if cmd == 1: 404*9880d681SAndroid Build Coastguard Worker patchMachoSegmentLoadCommand(f, relocs) 405*9880d681SAndroid Build Coastguard Worker elif cmd == 25: 406*9880d681SAndroid Build Coastguard Worker patchMachoSegmentLoadCommand(f, relocs) 407*9880d681SAndroid Build Coastguard Worker else: 408*9880d681SAndroid Build Coastguard Worker f.read(cmdSize - 8) 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Worker if f.tell() - start != cmdSize: 411*9880d681SAndroid Build Coastguard Worker raise ValueError,"%s: warning: invalid load command size: %r" % ( 412*9880d681SAndroid Build Coastguard Worker sys.argv[0], cmdSize) 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Workerdef patchMachoSegmentLoadCommand(f, relocs): 415*9880d681SAndroid Build Coastguard Worker segment_name = f.read(16) 416*9880d681SAndroid Build Coastguard Worker vm_addr = f.word() 417*9880d681SAndroid Build Coastguard Worker vm_size = f.word() 418*9880d681SAndroid Build Coastguard Worker file_offset = f.word() 419*9880d681SAndroid Build Coastguard Worker file_size = f.word() 420*9880d681SAndroid Build Coastguard Worker maxprot = f.uint32() 421*9880d681SAndroid Build Coastguard Worker initprot = f.uint32() 422*9880d681SAndroid Build Coastguard Worker numSections = f.uint32() 423*9880d681SAndroid Build Coastguard Worker flags = f.uint32() 424*9880d681SAndroid Build Coastguard Worker for i in range(numSections): 425*9880d681SAndroid Build Coastguard Worker patchMachoSection(f, relocs) 426*9880d681SAndroid Build Coastguard Worker 427*9880d681SAndroid Build Coastguard Workerdef patchMachoSection(f, relocs): 428*9880d681SAndroid Build Coastguard Worker section_name = f.read(16) 429*9880d681SAndroid Build Coastguard Worker segment_name = f.read(16) 430*9880d681SAndroid Build Coastguard Worker address = f.word() 431*9880d681SAndroid Build Coastguard Worker size = f.word() 432*9880d681SAndroid Build Coastguard Worker offset = f.uint32() 433*9880d681SAndroid Build Coastguard Worker alignment = f.uint32() 434*9880d681SAndroid Build Coastguard Worker relocOffset = f.uint32() 435*9880d681SAndroid Build Coastguard Worker numReloc = f.uint32() 436*9880d681SAndroid Build Coastguard Worker flags = f.uint32() 437*9880d681SAndroid Build Coastguard Worker reserved1 = f.uint32() 438*9880d681SAndroid Build Coastguard Worker reserved2 = f.uint32() 439*9880d681SAndroid Build Coastguard Worker if f.is64Bit: 440*9880d681SAndroid Build Coastguard Worker reserved3 = f.uint32() 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Worker prev_pos = f.tell() 443*9880d681SAndroid Build Coastguard Worker 444*9880d681SAndroid Build Coastguard Worker f.seek(relocOffset) 445*9880d681SAndroid Build Coastguard Worker for i in range(numReloc): 446*9880d681SAndroid Build Coastguard Worker ri = i < len(relocs) and i or 0 447*9880d681SAndroid Build Coastguard Worker print(" %s" % relocs[ri][0]) 448*9880d681SAndroid Build Coastguard Worker word1 = f.uint32() 449*9880d681SAndroid Build Coastguard Worker pos = f.tell() 450*9880d681SAndroid Build Coastguard Worker value = f.uint32() 451*9880d681SAndroid Build Coastguard Worker f.seek(pos) 452*9880d681SAndroid Build Coastguard Worker value = (value & 0x0FFFFFFF) | ((relocs[ri][1] & 0xF) << 28) 453*9880d681SAndroid Build Coastguard Worker f.writeUInt32(value) 454*9880d681SAndroid Build Coastguard Worker f.seek(prev_pos) 455*9880d681SAndroid Build Coastguard Worker 456*9880d681SAndroid Build Coastguard Worker 457*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_X86_64(Enum): 458*9880d681SAndroid Build Coastguard Worker R_X86_64_NONE = 0 459*9880d681SAndroid Build Coastguard Worker R_X86_64_64 = 1 460*9880d681SAndroid Build Coastguard Worker R_X86_64_PC32 = 2 461*9880d681SAndroid Build Coastguard Worker R_X86_64_GOT32 = 3 462*9880d681SAndroid Build Coastguard Worker R_X86_64_PLT32 = 4 463*9880d681SAndroid Build Coastguard Worker R_X86_64_COPY = 5 464*9880d681SAndroid Build Coastguard Worker R_X86_64_GLOB_DAT = 6 465*9880d681SAndroid Build Coastguard Worker R_X86_64_JUMP_SLOT = 7 466*9880d681SAndroid Build Coastguard Worker R_X86_64_RELATIVE = 8 467*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTPCREL = 9 468*9880d681SAndroid Build Coastguard Worker R_X86_64_32 = 10 469*9880d681SAndroid Build Coastguard Worker R_X86_64_32S = 11 470*9880d681SAndroid Build Coastguard Worker R_X86_64_16 = 12 471*9880d681SAndroid Build Coastguard Worker R_X86_64_PC16 = 13 472*9880d681SAndroid Build Coastguard Worker R_X86_64_8 = 14 473*9880d681SAndroid Build Coastguard Worker R_X86_64_PC8 = 15 474*9880d681SAndroid Build Coastguard Worker R_X86_64_DTPMOD64 = 16 475*9880d681SAndroid Build Coastguard Worker R_X86_64_DTPOFF64 = 17 476*9880d681SAndroid Build Coastguard Worker R_X86_64_TPOFF64 = 18 477*9880d681SAndroid Build Coastguard Worker R_X86_64_TLSGD = 19 478*9880d681SAndroid Build Coastguard Worker R_X86_64_TLSLD = 20 479*9880d681SAndroid Build Coastguard Worker R_X86_64_DTPOFF32 = 21 480*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTTPOFF = 22 481*9880d681SAndroid Build Coastguard Worker R_X86_64_TPOFF32 = 23 482*9880d681SAndroid Build Coastguard Worker R_X86_64_PC64 = 24 483*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTOFF64 = 25 484*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTPC32 = 26 485*9880d681SAndroid Build Coastguard Worker R_X86_64_GOT64 = 27 486*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTPCREL64 = 28 487*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTPC64 = 29 488*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTPLT64 = 30 489*9880d681SAndroid Build Coastguard Worker R_X86_64_PLTOFF64 = 31 490*9880d681SAndroid Build Coastguard Worker R_X86_64_SIZE32 = 32 491*9880d681SAndroid Build Coastguard Worker R_X86_64_SIZE64 = 33 492*9880d681SAndroid Build Coastguard Worker R_X86_64_GOTPC32_TLSDESC = 34 493*9880d681SAndroid Build Coastguard Worker R_X86_64_TLSDESC_CALL = 35 494*9880d681SAndroid Build Coastguard Worker R_X86_64_TLSDESC = 36 495*9880d681SAndroid Build Coastguard Worker R_X86_64_IRELATIVE = 37 496*9880d681SAndroid Build Coastguard Worker 497*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_i386(Enum): 498*9880d681SAndroid Build Coastguard Worker R_386_NONE = 0 499*9880d681SAndroid Build Coastguard Worker R_386_32 = 1 500*9880d681SAndroid Build Coastguard Worker R_386_PC32 = 2 501*9880d681SAndroid Build Coastguard Worker R_386_GOT32 = 3 502*9880d681SAndroid Build Coastguard Worker R_386_PLT32 = 4 503*9880d681SAndroid Build Coastguard Worker R_386_COPY = 5 504*9880d681SAndroid Build Coastguard Worker R_386_GLOB_DAT = 6 505*9880d681SAndroid Build Coastguard Worker R_386_JUMP_SLOT = 7 506*9880d681SAndroid Build Coastguard Worker R_386_RELATIVE = 8 507*9880d681SAndroid Build Coastguard Worker R_386_GOTOFF = 9 508*9880d681SAndroid Build Coastguard Worker R_386_GOTPC = 10 509*9880d681SAndroid Build Coastguard Worker R_386_32PLT = 11 510*9880d681SAndroid Build Coastguard Worker R_386_TLS_TPOFF = 14 511*9880d681SAndroid Build Coastguard Worker R_386_TLS_IE = 15 512*9880d681SAndroid Build Coastguard Worker R_386_TLS_GOTIE = 16 513*9880d681SAndroid Build Coastguard Worker R_386_TLS_LE = 17 514*9880d681SAndroid Build Coastguard Worker R_386_TLS_GD = 18 515*9880d681SAndroid Build Coastguard Worker R_386_TLS_LDM = 19 516*9880d681SAndroid Build Coastguard Worker R_386_16 = 20 517*9880d681SAndroid Build Coastguard Worker R_386_PC16 = 21 518*9880d681SAndroid Build Coastguard Worker R_386_8 = 22 519*9880d681SAndroid Build Coastguard Worker R_386_PC8 = 23 520*9880d681SAndroid Build Coastguard Worker R_386_TLS_GD_32 = 24 521*9880d681SAndroid Build Coastguard Worker R_386_TLS_GD_PUSH = 25 522*9880d681SAndroid Build Coastguard Worker R_386_TLS_GD_CALL = 26 523*9880d681SAndroid Build Coastguard Worker R_386_TLS_GD_POP = 27 524*9880d681SAndroid Build Coastguard Worker R_386_TLS_LDM_32 = 28 525*9880d681SAndroid Build Coastguard Worker R_386_TLS_LDM_PUSH = 29 526*9880d681SAndroid Build Coastguard Worker R_386_TLS_LDM_CALL = 30 527*9880d681SAndroid Build Coastguard Worker R_386_TLS_LDM_POP = 31 528*9880d681SAndroid Build Coastguard Worker R_386_TLS_LDO_32 = 32 529*9880d681SAndroid Build Coastguard Worker R_386_TLS_IE_32 = 33 530*9880d681SAndroid Build Coastguard Worker R_386_TLS_LE_32 = 34 531*9880d681SAndroid Build Coastguard Worker R_386_TLS_DTPMOD32 = 35 532*9880d681SAndroid Build Coastguard Worker R_386_TLS_DTPOFF32 = 36 533*9880d681SAndroid Build Coastguard Worker R_386_TLS_TPOFF32 = 37 534*9880d681SAndroid Build Coastguard Worker R_386_TLS_GOTDESC = 39 535*9880d681SAndroid Build Coastguard Worker R_386_TLS_DESC_CALL = 40 536*9880d681SAndroid Build Coastguard Worker R_386_TLS_DESC = 41 537*9880d681SAndroid Build Coastguard Worker R_386_IRELATIVE = 42 538*9880d681SAndroid Build Coastguard Worker R_386_NUM = 43 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_PPC32(Enum): 541*9880d681SAndroid Build Coastguard Worker R_PPC_NONE = 0 542*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR32 = 1 543*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR24 = 2 544*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR16 = 3 545*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR16_LO = 4 546*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR16_HI = 5 547*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR16_HA = 6 548*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR14 = 7 549*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR14_BRTAKEN = 8 550*9880d681SAndroid Build Coastguard Worker R_PPC_ADDR14_BRNTAKEN = 9 551*9880d681SAndroid Build Coastguard Worker R_PPC_REL24 = 10 552*9880d681SAndroid Build Coastguard Worker R_PPC_REL14 = 11 553*9880d681SAndroid Build Coastguard Worker R_PPC_REL14_BRTAKEN = 12 554*9880d681SAndroid Build Coastguard Worker R_PPC_REL14_BRNTAKEN = 13 555*9880d681SAndroid Build Coastguard Worker R_PPC_REL32 = 26 556*9880d681SAndroid Build Coastguard Worker R_PPC_TPREL16_LO = 70 557*9880d681SAndroid Build Coastguard Worker R_PPC_TPREL16_HA = 72 558*9880d681SAndroid Build Coastguard Worker 559*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_PPC64(Enum): 560*9880d681SAndroid Build Coastguard Worker R_PPC64_NONE = 0 561*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR32 = 1 562*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR16_LO = 4 563*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR16_HI = 5 564*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR14 = 7 565*9880d681SAndroid Build Coastguard Worker R_PPC64_REL24 = 10 566*9880d681SAndroid Build Coastguard Worker R_PPC64_REL32 = 26 567*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR64 = 38 568*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR16_HIGHER = 39 569*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR16_HIGHEST = 41 570*9880d681SAndroid Build Coastguard Worker R_PPC64_REL64 = 44 571*9880d681SAndroid Build Coastguard Worker R_PPC64_TOC16 = 47 572*9880d681SAndroid Build Coastguard Worker R_PPC64_TOC16_LO = 48 573*9880d681SAndroid Build Coastguard Worker R_PPC64_TOC16_HA = 50 574*9880d681SAndroid Build Coastguard Worker R_PPC64_TOC = 51 575*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR16_DS = 56 576*9880d681SAndroid Build Coastguard Worker R_PPC64_ADDR16_LO_DS = 57 577*9880d681SAndroid Build Coastguard Worker R_PPC64_TOC16_DS = 63 578*9880d681SAndroid Build Coastguard Worker R_PPC64_TOC16_LO_DS = 64 579*9880d681SAndroid Build Coastguard Worker R_PPC64_TLS = 67 580*9880d681SAndroid Build Coastguard Worker R_PPC64_TPREL16_LO = 70 581*9880d681SAndroid Build Coastguard Worker R_PPC64_TPREL16_HA = 72 582*9880d681SAndroid Build Coastguard Worker R_PPC64_DTPREL16_LO = 75 583*9880d681SAndroid Build Coastguard Worker R_PPC64_DTPREL16_HA = 77 584*9880d681SAndroid Build Coastguard Worker R_PPC64_GOT_TLSGD16_LO = 80 585*9880d681SAndroid Build Coastguard Worker R_PPC64_GOT_TLSGD16_HA = 82 586*9880d681SAndroid Build Coastguard Worker R_PPC64_GOT_TLSLD16_LO = 84 587*9880d681SAndroid Build Coastguard Worker R_PPC64_GOT_TLSLD16_HA = 86 588*9880d681SAndroid Build Coastguard Worker R_PPC64_GOT_TPREL16_LO_DS = 88 589*9880d681SAndroid Build Coastguard Worker R_PPC64_GOT_TPREL16_HA = 90 590*9880d681SAndroid Build Coastguard Worker R_PPC64_TLSGD = 107 591*9880d681SAndroid Build Coastguard Worker R_PPC64_TLSLD = 108 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_AArch64(Enum): 594*9880d681SAndroid Build Coastguard Worker R_AARCH64_NONE = 0 595*9880d681SAndroid Build Coastguard Worker R_AARCH64_ABS64 = 0x101 596*9880d681SAndroid Build Coastguard Worker R_AARCH64_ABS32 = 0x102 597*9880d681SAndroid Build Coastguard Worker R_AARCH64_ABS16 = 0x103 598*9880d681SAndroid Build Coastguard Worker R_AARCH64_PREL64 = 0x104 599*9880d681SAndroid Build Coastguard Worker R_AARCH64_PREL32 = 0x105 600*9880d681SAndroid Build Coastguard Worker R_AARCH64_PREL16 = 0x106 601*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G0 = 0x107 602*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G0_NC = 0x108 603*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G1 = 0x109 604*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G1_NC = 0x10a 605*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G2 = 0x10b 606*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G2_NC = 0x10c 607*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_UABS_G3 = 0x10d 608*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_SABS_G0 = 0x10e 609*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_SABS_G1 = 0x10f 610*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_SABS_G2 = 0x110 611*9880d681SAndroid Build Coastguard Worker R_AARCH64_LD_PREL_LO19 = 0x111 612*9880d681SAndroid Build Coastguard Worker R_AARCH64_ADR_PREL_LO21 = 0x112 613*9880d681SAndroid Build Coastguard Worker R_AARCH64_ADR_PREL_PG_HI21 = 0x113 614*9880d681SAndroid Build Coastguard Worker R_AARCH64_ADR_PREL_PG_HI21_NC = 0x114 615*9880d681SAndroid Build Coastguard Worker R_AARCH64_ADD_ABS_LO12_NC = 0x115 616*9880d681SAndroid Build Coastguard Worker R_AARCH64_LDST8_ABS_LO12_NC = 0x116 617*9880d681SAndroid Build Coastguard Worker R_AARCH64_TSTBR14 = 0x117 618*9880d681SAndroid Build Coastguard Worker R_AARCH64_CONDBR19 = 0x118 619*9880d681SAndroid Build Coastguard Worker R_AARCH64_JUMP26 = 0x11a 620*9880d681SAndroid Build Coastguard Worker R_AARCH64_CALL26 = 0x11b 621*9880d681SAndroid Build Coastguard Worker R_AARCH64_LDST16_ABS_LO12_NC = 0x11c 622*9880d681SAndroid Build Coastguard Worker R_AARCH64_LDST32_ABS_LO12_NC = 0x11d 623*9880d681SAndroid Build Coastguard Worker R_AARCH64_LDST64_ABS_LO12_NC = 0x11e 624*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G0 = 0x11f 625*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G0_NC = 0x120 626*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G1 = 0x121 627*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G1_NC = 0x122 628*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G2 = 0x123 629*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G2_NC = 0x124 630*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_PREL_G3 = 0x125 631*9880d681SAndroid Build Coastguard Worker R_AARCH64_LDST128_ABS_LO12_NC = 0x12b 632*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G0 = 0x12c 633*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G0_NC = 0x12d 634*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G1 = 0x12e 635*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G1_NC = 0x12f 636*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G2 = 0x130 637*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G2_NC = 0x131 638*9880d681SAndroid Build Coastguard Worker R_AARCH64_MOVW_GOTOFF_G3 = 0x132 639*9880d681SAndroid Build Coastguard Worker R_AARCH64_GOTREL64 = 0x133 640*9880d681SAndroid Build Coastguard Worker R_AARCH64_GOTREL32 = 0x134 641*9880d681SAndroid Build Coastguard Worker R_AARCH64_GOT_LD_PREL19 = 0x135 642*9880d681SAndroid Build Coastguard Worker R_AARCH64_LD64_GOTOFF_LO15 = 0x136 643*9880d681SAndroid Build Coastguard Worker R_AARCH64_ADR_GOT_PAGE = 0x137 644*9880d681SAndroid Build Coastguard Worker R_AARCH64_LD64_GOT_LO12_NC = 0x138 645*9880d681SAndroid Build Coastguard Worker R_AARCH64_LD64_GOTPAGE_LO15 = 0x139 646*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSGD_ADR_PREL21 = 0x200 647*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSGD_ADR_PAGE21 = 0x201 648*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSGD_ADD_LO12_NC = 0x202 649*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSGD_MOVW_G1 = 0x203 650*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSGD_MOVW_G0_NC = 0x204 651*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_ADR_PREL21 = 0x205 652*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_ADR_PAGE21 = 0x206 653*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_ADD_LO12_NC = 0x207 654*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_G1 = 0x208 655*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_G0_NC = 0x209 656*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LD_PREL19 = 0x20a 657*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b 658*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_DTPREL_G1 = 0x20c 659*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC = 0x20d 660*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_DTPREL_G0 = 0x20e 661*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC = 0x20f 662*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_ADD_DTPREL_HI12 = 0x210 663*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_ADD_DTPREL_LO12 = 0x211 664*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC = 0x212 665*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST8_DTPREL_LO12 = 0x213 666*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC = 0x214 667*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST16_DTPREL_LO12 = 0x215 668*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC = 0x216 669*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST32_DTPREL_LO12 = 0x217 670*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC = 0x218 671*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST64_DTPREL_LO12 = 0x219 672*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC = 0x21a 673*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 = 0x21b 674*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC = 0x21c 675*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 = 0x21d 676*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC = 0x21e 677*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 = 0x21f 678*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_MOVW_TPREL_G2 = 0x220 679*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_MOVW_TPREL_G1 = 0x221 680*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_MOVW_TPREL_G1_NC = 0x222 681*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_MOVW_TPREL_G0 = 0x223 682*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_MOVW_TPREL_G0_NC = 0x224 683*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_ADD_TPREL_HI12 = 0x225 684*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_ADD_TPREL_LO12 = 0x226 685*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_ADD_TPREL_LO12_NC = 0x227 686*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST8_TPREL_LO12 = 0x228 687*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC = 0x229 688*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST16_TPREL_LO12 = 0x22a 689*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC = 0x22b 690*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST32_TPREL_LO12 = 0x22c 691*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC = 0x22d 692*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST64_TPREL_LO12 = 0x22e 693*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC = 0x22f 694*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_LD_PREL19 = 0x230 695*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_ADR_PREL21 = 0x231 696*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_ADR_PAGE21 = 0x232 697*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233 698*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234 699*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_OFF_G1 = 0x235 700*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_OFF_G0_NC = 0x236 701*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_LDR = 0x237 702*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_ADD = 0x238 703*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC_CALL = 0x239 704*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST128_TPREL_LO12 = 0x23a 705*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC = 0x23b 706*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST128_DTPREL_LO12 = 0x23c 707*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC = 0x23d 708*9880d681SAndroid Build Coastguard Worker R_AARCH64_COPY = 0x400 709*9880d681SAndroid Build Coastguard Worker R_AARCH64_GLOB_DAT = 0x401 710*9880d681SAndroid Build Coastguard Worker R_AARCH64_JUMP_SLOT = 0x402 711*9880d681SAndroid Build Coastguard Worker R_AARCH64_RELATIVE = 0x403 712*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLS_DTPREL64 = 0x404 713*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLS_DTPMOD64 = 0x405 714*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLS_TPREL64 = 0x406 715*9880d681SAndroid Build Coastguard Worker R_AARCH64_TLSDESC = 0x407 716*9880d681SAndroid Build Coastguard Worker R_AARCH64_IRELATIVE = 0x408 717*9880d681SAndroid Build Coastguard Worker 718*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_ARM(Enum): 719*9880d681SAndroid Build Coastguard Worker R_ARM_NONE = 0x00 720*9880d681SAndroid Build Coastguard Worker R_ARM_PC24 = 0x01 721*9880d681SAndroid Build Coastguard Worker R_ARM_ABS32 = 0x02 722*9880d681SAndroid Build Coastguard Worker R_ARM_REL32 = 0x03 723*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_PC_G0 = 0x04 724*9880d681SAndroid Build Coastguard Worker R_ARM_ABS16 = 0x05 725*9880d681SAndroid Build Coastguard Worker R_ARM_ABS12 = 0x06 726*9880d681SAndroid Build Coastguard Worker R_ARM_THM_ABS5 = 0x07 727*9880d681SAndroid Build Coastguard Worker R_ARM_ABS8 = 0x08 728*9880d681SAndroid Build Coastguard Worker R_ARM_SBREL32 = 0x09 729*9880d681SAndroid Build Coastguard Worker R_ARM_THM_CALL = 0x0a 730*9880d681SAndroid Build Coastguard Worker R_ARM_THM_PC8 = 0x0b 731*9880d681SAndroid Build Coastguard Worker R_ARM_BREL_ADJ = 0x0c 732*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_DESC = 0x0d 733*9880d681SAndroid Build Coastguard Worker R_ARM_THM_SWI8 = 0x0e 734*9880d681SAndroid Build Coastguard Worker R_ARM_XPC25 = 0x0f 735*9880d681SAndroid Build Coastguard Worker R_ARM_THM_XPC22 = 0x10 736*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_DTPMOD32 = 0x11 737*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_DTPOFF32 = 0x12 738*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_TPOFF32 = 0x13 739*9880d681SAndroid Build Coastguard Worker R_ARM_COPY = 0x14 740*9880d681SAndroid Build Coastguard Worker R_ARM_GLOB_DAT = 0x15 741*9880d681SAndroid Build Coastguard Worker R_ARM_JUMP_SLOT = 0x16 742*9880d681SAndroid Build Coastguard Worker R_ARM_RELATIVE = 0x17 743*9880d681SAndroid Build Coastguard Worker R_ARM_GOTOFF32 = 0x18 744*9880d681SAndroid Build Coastguard Worker R_ARM_BASE_PREL = 0x19 745*9880d681SAndroid Build Coastguard Worker R_ARM_GOT_BREL = 0x1a 746*9880d681SAndroid Build Coastguard Worker R_ARM_PLT32 = 0x1b 747*9880d681SAndroid Build Coastguard Worker R_ARM_CALL = 0x1c 748*9880d681SAndroid Build Coastguard Worker R_ARM_JUMP24 = 0x1d 749*9880d681SAndroid Build Coastguard Worker R_ARM_THM_JUMP24 = 0x1e 750*9880d681SAndroid Build Coastguard Worker R_ARM_BASE_ABS = 0x1f 751*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PCREL_7_0 = 0x20 752*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PCREL_15_8 = 0x21 753*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PCREL_23_15 = 0x22 754*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_SBREL_11_0_NC = 0x23 755*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SBREL_19_12_NC = 0x24 756*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SBREL_27_20_CK = 0x25 757*9880d681SAndroid Build Coastguard Worker R_ARM_TARGET1 = 0x26 758*9880d681SAndroid Build Coastguard Worker R_ARM_SBREL31 = 0x27 759*9880d681SAndroid Build Coastguard Worker R_ARM_V4BX = 0x28 760*9880d681SAndroid Build Coastguard Worker R_ARM_TARGET2 = 0x29 761*9880d681SAndroid Build Coastguard Worker R_ARM_PREL31 = 0x2a 762*9880d681SAndroid Build Coastguard Worker R_ARM_MOVW_ABS_NC = 0x2b 763*9880d681SAndroid Build Coastguard Worker R_ARM_MOVT_ABS = 0x2c 764*9880d681SAndroid Build Coastguard Worker R_ARM_MOVW_PREL_NC = 0x2d 765*9880d681SAndroid Build Coastguard Worker R_ARM_MOVT_PREL = 0x2e 766*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVW_ABS_NC = 0x2f 767*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVT_ABS = 0x30 768*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVW_PREL_NC = 0x31 769*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVT_PREL = 0x32 770*9880d681SAndroid Build Coastguard Worker R_ARM_THM_JUMP19 = 0x33 771*9880d681SAndroid Build Coastguard Worker R_ARM_THM_JUMP6 = 0x34 772*9880d681SAndroid Build Coastguard Worker R_ARM_THM_ALU_PREL_11_0 = 0x35 773*9880d681SAndroid Build Coastguard Worker R_ARM_THM_PC12 = 0x36 774*9880d681SAndroid Build Coastguard Worker R_ARM_ABS32_NOI = 0x37 775*9880d681SAndroid Build Coastguard Worker R_ARM_REL32_NOI = 0x38 776*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PC_G0_NC = 0x39 777*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PC_G0 = 0x3a 778*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PC_G1_NC = 0x3b 779*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PC_G1 = 0x3c 780*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_PC_G2 = 0x3d 781*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_PC_G1 = 0x3e 782*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_PC_G2 = 0x3f 783*9880d681SAndroid Build Coastguard Worker R_ARM_LDRS_PC_G0 = 0x40 784*9880d681SAndroid Build Coastguard Worker R_ARM_LDRS_PC_G1 = 0x41 785*9880d681SAndroid Build Coastguard Worker R_ARM_LDRS_PC_G2 = 0x42 786*9880d681SAndroid Build Coastguard Worker R_ARM_LDC_PC_G0 = 0x43 787*9880d681SAndroid Build Coastguard Worker R_ARM_LDC_PC_G1 = 0x44 788*9880d681SAndroid Build Coastguard Worker R_ARM_LDC_PC_G2 = 0x45 789*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SB_G0_NC = 0x46 790*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SB_G0 = 0x47 791*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SB_G1_NC = 0x48 792*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SB_G1 = 0x49 793*9880d681SAndroid Build Coastguard Worker R_ARM_ALU_SB_G2 = 0x4a 794*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_SB_G0 = 0x4b 795*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_SB_G1 = 0x4c 796*9880d681SAndroid Build Coastguard Worker R_ARM_LDR_SB_G2 = 0x4d 797*9880d681SAndroid Build Coastguard Worker R_ARM_LDRS_SB_G0 = 0x4e 798*9880d681SAndroid Build Coastguard Worker R_ARM_LDRS_SB_G1 = 0x4f 799*9880d681SAndroid Build Coastguard Worker R_ARM_LDRS_SB_G2 = 0x50 800*9880d681SAndroid Build Coastguard Worker R_ARM_LDC_SB_G0 = 0x51 801*9880d681SAndroid Build Coastguard Worker R_ARM_LDC_SB_G1 = 0x52 802*9880d681SAndroid Build Coastguard Worker R_ARM_LDC_SB_G2 = 0x53 803*9880d681SAndroid Build Coastguard Worker R_ARM_MOVW_BREL_NC = 0x54 804*9880d681SAndroid Build Coastguard Worker R_ARM_MOVT_BREL = 0x55 805*9880d681SAndroid Build Coastguard Worker R_ARM_MOVW_BREL = 0x56 806*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVW_BREL_NC = 0x57 807*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVT_BREL = 0x58 808*9880d681SAndroid Build Coastguard Worker R_ARM_THM_MOVW_BREL = 0x59 809*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_GOTDESC = 0x5a 810*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_CALL = 0x5b 811*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_DESCSEQ = 0x5c 812*9880d681SAndroid Build Coastguard Worker R_ARM_THM_TLS_CALL = 0x5d 813*9880d681SAndroid Build Coastguard Worker R_ARM_PLT32_ABS = 0x5e 814*9880d681SAndroid Build Coastguard Worker R_ARM_GOT_ABS = 0x5f 815*9880d681SAndroid Build Coastguard Worker R_ARM_GOT_PREL = 0x60 816*9880d681SAndroid Build Coastguard Worker R_ARM_GOT_BREL12 = 0x61 817*9880d681SAndroid Build Coastguard Worker R_ARM_GOTOFF12 = 0x62 818*9880d681SAndroid Build Coastguard Worker R_ARM_GOTRELAX = 0x63 819*9880d681SAndroid Build Coastguard Worker R_ARM_GNU_VTENTRY = 0x64 820*9880d681SAndroid Build Coastguard Worker R_ARM_GNU_VTINHERIT = 0x65 821*9880d681SAndroid Build Coastguard Worker R_ARM_THM_JUMP11 = 0x66 822*9880d681SAndroid Build Coastguard Worker R_ARM_THM_JUMP8 = 0x67 823*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_GD32 = 0x68 824*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_LDM32 = 0x69 825*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_LDO32 = 0x6a 826*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_IE32 = 0x6b 827*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_LE32 = 0x6c 828*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_LDO12 = 0x6d 829*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_LE12 = 0x6e 830*9880d681SAndroid Build Coastguard Worker R_ARM_TLS_IE12GP = 0x6f 831*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_0 = 0x70 832*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_1 = 0x71 833*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_2 = 0x72 834*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_3 = 0x73 835*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_4 = 0x74 836*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_5 = 0x75 837*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_6 = 0x76 838*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_7 = 0x77 839*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_8 = 0x78 840*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_9 = 0x79 841*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_10 = 0x7a 842*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_11 = 0x7b 843*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_12 = 0x7c 844*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_13 = 0x7d 845*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_14 = 0x7e 846*9880d681SAndroid Build Coastguard Worker R_ARM_PRIVATE_15 = 0x7f 847*9880d681SAndroid Build Coastguard Worker R_ARM_ME_TOO = 0x80 848*9880d681SAndroid Build Coastguard Worker R_ARM_THM_TLS_DESCSEQ16 = 0x81 849*9880d681SAndroid Build Coastguard Worker R_ARM_THM_TLS_DESCSEQ32 = 0x82 850*9880d681SAndroid Build Coastguard Worker R_ARM_IRELATIVE = 0xa0 851*9880d681SAndroid Build Coastguard Worker 852*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_Mips(Enum): 853*9880d681SAndroid Build Coastguard Worker R_MIPS_NONE = 0 854*9880d681SAndroid Build Coastguard Worker R_MIPS_16 = 1 855*9880d681SAndroid Build Coastguard Worker R_MIPS_32 = 2 856*9880d681SAndroid Build Coastguard Worker R_MIPS_REL32 = 3 857*9880d681SAndroid Build Coastguard Worker R_MIPS_26 = 4 858*9880d681SAndroid Build Coastguard Worker R_MIPS_HI16 = 5 859*9880d681SAndroid Build Coastguard Worker R_MIPS_LO16 = 6 860*9880d681SAndroid Build Coastguard Worker R_MIPS_GPREL16 = 7 861*9880d681SAndroid Build Coastguard Worker R_MIPS_LITERAL = 8 862*9880d681SAndroid Build Coastguard Worker R_MIPS_GOT16 = 9 863*9880d681SAndroid Build Coastguard Worker R_MIPS_PC16 = 10 864*9880d681SAndroid Build Coastguard Worker R_MIPS_CALL16 = 11 865*9880d681SAndroid Build Coastguard Worker R_MIPS_GPREL32 = 12 866*9880d681SAndroid Build Coastguard Worker R_MIPS_SHIFT5 = 16 867*9880d681SAndroid Build Coastguard Worker R_MIPS_SHIFT6 = 17 868*9880d681SAndroid Build Coastguard Worker R_MIPS_64 = 18 869*9880d681SAndroid Build Coastguard Worker R_MIPS_GOT_DISP = 19 870*9880d681SAndroid Build Coastguard Worker R_MIPS_GOT_PAGE = 20 871*9880d681SAndroid Build Coastguard Worker R_MIPS_GOT_OFST = 21 872*9880d681SAndroid Build Coastguard Worker R_MIPS_GOT_HI16 = 22 873*9880d681SAndroid Build Coastguard Worker R_MIPS_GOT_LO16 = 23 874*9880d681SAndroid Build Coastguard Worker R_MIPS_SUB = 24 875*9880d681SAndroid Build Coastguard Worker R_MIPS_INSERT_A = 25 876*9880d681SAndroid Build Coastguard Worker R_MIPS_INSERT_B = 26 877*9880d681SAndroid Build Coastguard Worker R_MIPS_DELETE = 27 878*9880d681SAndroid Build Coastguard Worker R_MIPS_HIGHER = 28 879*9880d681SAndroid Build Coastguard Worker R_MIPS_HIGHEST = 29 880*9880d681SAndroid Build Coastguard Worker R_MIPS_CALL_HI16 = 30 881*9880d681SAndroid Build Coastguard Worker R_MIPS_CALL_LO16 = 31 882*9880d681SAndroid Build Coastguard Worker R_MIPS_SCN_DISP = 32 883*9880d681SAndroid Build Coastguard Worker R_MIPS_REL16 = 33 884*9880d681SAndroid Build Coastguard Worker R_MIPS_ADD_IMMEDIATE = 34 885*9880d681SAndroid Build Coastguard Worker R_MIPS_PJUMP = 35 886*9880d681SAndroid Build Coastguard Worker R_MIPS_RELGOT = 36 887*9880d681SAndroid Build Coastguard Worker R_MIPS_JALR = 37 888*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_DTPMOD32 = 38 889*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_DTPREL32 = 39 890*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_DTPMOD64 = 40 891*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_DTPREL64 = 41 892*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_GD = 42 893*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_LDM = 43 894*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_DTPREL_HI16 = 44 895*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_DTPREL_LO16 = 45 896*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_GOTTPREL = 46 897*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_TPREL32 = 47 898*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_TPREL64 = 48 899*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_TPREL_HI16 = 49 900*9880d681SAndroid Build Coastguard Worker R_MIPS_TLS_TPREL_LO16 = 50 901*9880d681SAndroid Build Coastguard Worker R_MIPS_GLOB_DAT = 51 902*9880d681SAndroid Build Coastguard Worker R_MIPS_COPY = 126 903*9880d681SAndroid Build Coastguard Worker R_MIPS_JUMP_SLOT = 127 904*9880d681SAndroid Build Coastguard Worker R_MIPS_NUM = 218 905*9880d681SAndroid Build Coastguard Worker 906*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_Hexagon(Enum): 907*9880d681SAndroid Build Coastguard Worker R_HEX_NONE = 0 908*9880d681SAndroid Build Coastguard Worker R_HEX_B22_PCREL = 1 909*9880d681SAndroid Build Coastguard Worker R_HEX_B15_PCREL = 2 910*9880d681SAndroid Build Coastguard Worker R_HEX_B7_PCREL = 3 911*9880d681SAndroid Build Coastguard Worker R_HEX_LO16 = 4 912*9880d681SAndroid Build Coastguard Worker R_HEX_HI16 = 5 913*9880d681SAndroid Build Coastguard Worker R_HEX_32 = 6 914*9880d681SAndroid Build Coastguard Worker R_HEX_16 = 7 915*9880d681SAndroid Build Coastguard Worker R_HEX_8 = 8 916*9880d681SAndroid Build Coastguard Worker R_HEX_GPREL16_0 = 9 917*9880d681SAndroid Build Coastguard Worker R_HEX_GPREL16_1 = 10 918*9880d681SAndroid Build Coastguard Worker R_HEX_GPREL16_2 = 11 919*9880d681SAndroid Build Coastguard Worker R_HEX_GPREL16_3 = 12 920*9880d681SAndroid Build Coastguard Worker R_HEX_HL16 = 13 921*9880d681SAndroid Build Coastguard Worker R_HEX_B13_PCREL = 14 922*9880d681SAndroid Build Coastguard Worker R_HEX_B9_PCREL = 15 923*9880d681SAndroid Build Coastguard Worker R_HEX_B32_PCREL_X = 16 924*9880d681SAndroid Build Coastguard Worker R_HEX_32_6_X = 17 925*9880d681SAndroid Build Coastguard Worker R_HEX_B22_PCREL_X = 18 926*9880d681SAndroid Build Coastguard Worker R_HEX_B15_PCREL_X = 19 927*9880d681SAndroid Build Coastguard Worker R_HEX_B13_PCREL_X = 20 928*9880d681SAndroid Build Coastguard Worker R_HEX_B9_PCREL_X = 21 929*9880d681SAndroid Build Coastguard Worker R_HEX_B7_PCREL_X = 22 930*9880d681SAndroid Build Coastguard Worker R_HEX_16_X = 23 931*9880d681SAndroid Build Coastguard Worker R_HEX_12_X = 24 932*9880d681SAndroid Build Coastguard Worker R_HEX_11_X = 25 933*9880d681SAndroid Build Coastguard Worker R_HEX_10_X = 26 934*9880d681SAndroid Build Coastguard Worker R_HEX_9_X = 27 935*9880d681SAndroid Build Coastguard Worker R_HEX_8_X = 28 936*9880d681SAndroid Build Coastguard Worker R_HEX_7_X = 29 937*9880d681SAndroid Build Coastguard Worker R_HEX_6_X = 30 938*9880d681SAndroid Build Coastguard Worker R_HEX_32_PCREL = 31 939*9880d681SAndroid Build Coastguard Worker R_HEX_COPY = 32 940*9880d681SAndroid Build Coastguard Worker R_HEX_GLOB_DAT = 33 941*9880d681SAndroid Build Coastguard Worker R_HEX_JMP_SLOT = 34 942*9880d681SAndroid Build Coastguard Worker R_HEX_RELATIVE = 35 943*9880d681SAndroid Build Coastguard Worker R_HEX_PLT_B22_PCREL = 36 944*9880d681SAndroid Build Coastguard Worker R_HEX_GOTREL_LO16 = 37 945*9880d681SAndroid Build Coastguard Worker R_HEX_GOTREL_HI16 = 38 946*9880d681SAndroid Build Coastguard Worker R_HEX_GOTREL_32 = 39 947*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_LO16 = 40 948*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_HI16 = 41 949*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_32 = 42 950*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_16 = 43 951*9880d681SAndroid Build Coastguard Worker R_HEX_DTPMOD_32 = 44 952*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_LO16 = 45 953*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_HI16 = 46 954*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_32 = 47 955*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_16 = 48 956*9880d681SAndroid Build Coastguard Worker R_HEX_GD_PLT_B22_PCREL = 49 957*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_LO16 = 50 958*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_HI16 = 51 959*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_32 = 52 960*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_16 = 53 961*9880d681SAndroid Build Coastguard Worker R_HEX_IE_LO16 = 54 962*9880d681SAndroid Build Coastguard Worker R_HEX_IE_HI16 = 55 963*9880d681SAndroid Build Coastguard Worker R_HEX_IE_32 = 56 964*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_LO16 = 57 965*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_HI16 = 58 966*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_32 = 59 967*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_16 = 60 968*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_LO16 = 61 969*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_HI16 = 62 970*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_32 = 63 971*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_16 = 64 972*9880d681SAndroid Build Coastguard Worker R_HEX_6_PCREL_X = 65 973*9880d681SAndroid Build Coastguard Worker R_HEX_GOTREL_32_6_X = 66 974*9880d681SAndroid Build Coastguard Worker R_HEX_GOTREL_16_X = 67 975*9880d681SAndroid Build Coastguard Worker R_HEX_GOTREL_11_X = 68 976*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_32_6_X = 69 977*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_16_X = 70 978*9880d681SAndroid Build Coastguard Worker R_HEX_GOT_11_X = 71 979*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_32_6_X = 72 980*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_16_X = 73 981*9880d681SAndroid Build Coastguard Worker R_HEX_DTPREL_11_X = 74 982*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_32_6_X = 75 983*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_16_X = 76 984*9880d681SAndroid Build Coastguard Worker R_HEX_GD_GOT_11_X = 77 985*9880d681SAndroid Build Coastguard Worker R_HEX_IE_32_6_X = 78 986*9880d681SAndroid Build Coastguard Worker R_HEX_IE_16_X = 79 987*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_32_6_X = 80 988*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_16_X = 81 989*9880d681SAndroid Build Coastguard Worker R_HEX_IE_GOT_11_X = 82 990*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_32_6_X = 83 991*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_16_X = 84 992*9880d681SAndroid Build Coastguard Worker R_HEX_TPREL_11_X = 85 993*9880d681SAndroid Build Coastguard Worker 994*9880d681SAndroid Build Coastguard Workerclass Relocs_Elf_Lanai(Enum): 995*9880d681SAndroid Build Coastguard Worker R_LANAI_NONE = 0 996*9880d681SAndroid Build Coastguard Worker R_LANAI_21 = 1 997*9880d681SAndroid Build Coastguard Worker R_LANAI_21_F = 2 998*9880d681SAndroid Build Coastguard Worker R_LANAI_25 = 3 999*9880d681SAndroid Build Coastguard Worker R_LANAI_32 = 4 1000*9880d681SAndroid Build Coastguard Worker R_LANAI_HI16 = 5 1001*9880d681SAndroid Build Coastguard Worker R_LANAI_LO16 = 6 1002*9880d681SAndroid Build Coastguard Worker 1003*9880d681SAndroid Build Coastguard Workerclass Relocs_Coff_i386(Enum): 1004*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_ABSOLUTE = 0x0000 1005*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_DIR16 = 0x0001 1006*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_REL16 = 0x0002 1007*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_DIR32 = 0x0006 1008*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_DIR32NB = 0x0007 1009*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_SEG12 = 0x0009 1010*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_SECTION = 0x000A 1011*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_SECREL = 0x000B 1012*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_TOKEN = 0x000C 1013*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_SECREL7 = 0x000D 1014*9880d681SAndroid Build Coastguard Worker IMAGE_REL_I386_REL32 = 0x0014 1015*9880d681SAndroid Build Coastguard Worker 1016*9880d681SAndroid Build Coastguard Workerclass Relocs_Coff_X86_64(Enum): 1017*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_ABSOLUTE = 0x0000 1018*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_ADDR64 = 0x0001 1019*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_ADDR32 = 0x0002 1020*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_ADDR32NB = 0x0003 1021*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_REL32 = 0x0004 1022*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_REL32_1 = 0x0005 1023*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_REL32_2 = 0x0006 1024*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_REL32_3 = 0x0007 1025*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_REL32_4 = 0x0008 1026*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_REL32_5 = 0x0009 1027*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_SECTION = 0x000A 1028*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_SECREL = 0x000B 1029*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_SECREL7 = 0x000C 1030*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_TOKEN = 0x000D 1031*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_SREL32 = 0x000E 1032*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_PAIR = 0x000F 1033*9880d681SAndroid Build Coastguard Worker IMAGE_REL_AMD64_SSPAN32 = 0x0010 1034*9880d681SAndroid Build Coastguard Worker 1035*9880d681SAndroid Build Coastguard Workerclass Relocs_Coff_ARM(Enum): 1036*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_ABSOLUTE = 0x0000 1037*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_ADDR32 = 0x0001 1038*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_ADDR32NB = 0x0002 1039*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BRANCH24 = 0x0003 1040*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BRANCH11 = 0x0004 1041*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_TOKEN = 0x0005 1042*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BLX24 = 0x0008 1043*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BLX11 = 0x0009 1044*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_SECTION = 0x000E 1045*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_SECREL = 0x000F 1046*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_MOV32A = 0x0010 1047*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_MOV32T = 0x0011 1048*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BRANCH20T = 0x0012 1049*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BRANCH24T = 0x0014 1050*9880d681SAndroid Build Coastguard Worker IMAGE_REL_ARM_BLX23T = 0x0015 1051*9880d681SAndroid Build Coastguard Worker 1052*9880d681SAndroid Build Coastguard Worker 1053*9880d681SAndroid Build Coastguard Workerclass Relocs_Macho_i386(Enum): 1054*9880d681SAndroid Build Coastguard Worker RIT_Vanilla = 0 1055*9880d681SAndroid Build Coastguard Worker RIT_Pair = 1 1056*9880d681SAndroid Build Coastguard Worker RIT_Difference = 2 1057*9880d681SAndroid Build Coastguard Worker RIT_Generic_PreboundLazyPointer = 3 1058*9880d681SAndroid Build Coastguard Worker RIT_Generic_LocalDifference = 4 1059*9880d681SAndroid Build Coastguard Worker RIT_Generic_TLV = 5 1060*9880d681SAndroid Build Coastguard Worker 1061*9880d681SAndroid Build Coastguard Workerclass Relocs_Macho_X86_64(Enum): 1062*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Unsigned = 0 1063*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Signed = 1 1064*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Branch = 2 1065*9880d681SAndroid Build Coastguard Worker RIT_X86_64_GOTLoad = 3 1066*9880d681SAndroid Build Coastguard Worker RIT_X86_64_GOT = 4 1067*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Subtractor = 5 1068*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Signed1 = 6 1069*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Signed2 = 7 1070*9880d681SAndroid Build Coastguard Worker RIT_X86_64_Signed4 = 8 1071*9880d681SAndroid Build Coastguard Worker RIT_X86_64_TLV = 9 1072*9880d681SAndroid Build Coastguard Worker 1073*9880d681SAndroid Build Coastguard Workerclass Relocs_Macho_ARM(Enum): 1074*9880d681SAndroid Build Coastguard Worker RIT_Vanilla = 0 1075*9880d681SAndroid Build Coastguard Worker RIT_Pair = 1 1076*9880d681SAndroid Build Coastguard Worker RIT_Difference = 2 1077*9880d681SAndroid Build Coastguard Worker RIT_ARM_LocalDifference = 3 1078*9880d681SAndroid Build Coastguard Worker RIT_ARM_PreboundLazyPointer = 4 1079*9880d681SAndroid Build Coastguard Worker RIT_ARM_Branch24Bit = 5 1080*9880d681SAndroid Build Coastguard Worker RIT_ARM_ThumbBranch22Bit = 6 1081*9880d681SAndroid Build Coastguard Worker RIT_ARM_ThumbBranch32Bit = 7 1082*9880d681SAndroid Build Coastguard Worker RIT_ARM_Half = 8 1083*9880d681SAndroid Build Coastguard Worker RIT_ARM_HalfDifference = 9 1084*9880d681SAndroid Build Coastguard Worker 1085*9880d681SAndroid Build Coastguard Workerclass Relocs_Macho_PPC(Enum): 1086*9880d681SAndroid Build Coastguard Worker PPC_RELOC_VANILLA = 0 1087*9880d681SAndroid Build Coastguard Worker PPC_RELOC_PAIR = 1 1088*9880d681SAndroid Build Coastguard Worker PPC_RELOC_BR14 = 2 1089*9880d681SAndroid Build Coastguard Worker PPC_RELOC_BR24 = 3 1090*9880d681SAndroid Build Coastguard Worker PPC_RELOC_HI16 = 4 1091*9880d681SAndroid Build Coastguard Worker PPC_RELOC_LO16 = 5 1092*9880d681SAndroid Build Coastguard Worker PPC_RELOC_HA16 = 6 1093*9880d681SAndroid Build Coastguard Worker PPC_RELOC_LO14 = 7 1094*9880d681SAndroid Build Coastguard Worker PPC_RELOC_SECTDIFF = 8 1095*9880d681SAndroid Build Coastguard Worker PPC_RELOC_PB_LA_PTR = 9 1096*9880d681SAndroid Build Coastguard Worker PPC_RELOC_HI16_SECTDIFF = 10 1097*9880d681SAndroid Build Coastguard Worker PPC_RELOC_LO16_SECTDIFF = 11 1098*9880d681SAndroid Build Coastguard Worker PPC_RELOC_HA16_SECTDIFF = 12 1099*9880d681SAndroid Build Coastguard Worker PPC_RELOC_JBSR = 13 1100*9880d681SAndroid Build Coastguard Worker PPC_RELOC_LO14_SECTDIFF = 14 1101*9880d681SAndroid Build Coastguard Worker PPC_RELOC_LOCAL_SECTDIFF = 15 1102*9880d681SAndroid Build Coastguard Worker 1103*9880d681SAndroid Build Coastguard Worker 1104*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-x86_64", "x86_64-pc-linux-gnu", Relocs_Elf_X86_64.entries(), "leaq sym@GOTTPOFF(%rip), %rax") 1105*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-i386", "i386-pc-linux-gnu", Relocs_Elf_i386.entries(), "mov sym@GOTOFF(%ebx), %eax") 1106*9880d681SAndroid Build Coastguard Worker#craftElf("relocs-elf-ppc32", "powerpc-unknown-linux-gnu", Relocs_Elf_PPC32.entries(), ...) 1107*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-ppc64", "powerpc64-unknown-linux-gnu", Relocs_Elf_PPC64.entries(), 1108*9880d681SAndroid Build Coastguard Worker ("@t = thread_local global i32 0, align 4", "define i32* @f{0}() nounwind {{ ret i32* @t }}", 2)) 1109*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-aarch64", "aarch64", Relocs_Elf_AArch64.entries(), "movz x0, #:abs_g0:sym") 1110*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-arm", "arm-unknown-unknown", Relocs_Elf_ARM.entries(), "b sym") 1111*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-mips", "mips-unknown-linux", Relocs_Elf_Mips.entries(), "lui $2, %hi(sym)") 1112*9880d681SAndroid Build Coastguard WorkercraftElf("relocs.obj.elf-mips64el", "mips64el-unknown-linux", Relocs_Elf_Mips.entries(), "lui $2, %hi(sym)") 1113*9880d681SAndroid Build Coastguard Worker#craftElf("relocs.obj.elf-hexagon", "hexagon-unknown-unknown", Relocs_Elf_Hexagon.entries(), ...) 1114*9880d681SAndroid Build Coastguard Worker#craftElf("relocs.obj.elf-lanai", "lanai-unknown-unknown", Relocs_Elf_Lanai.entries(), "mov hi(x), %r4") 1115*9880d681SAndroid Build Coastguard Worker 1116*9880d681SAndroid Build Coastguard WorkercraftCoff("relocs.obj.coff-i386", "i386-pc-win32", Relocs_Coff_i386.entries(), "mov foo@imgrel(%ebx, %ecx, 4), %eax") 1117*9880d681SAndroid Build Coastguard WorkercraftCoff("relocs.obj.coff-x86_64", "x86_64-pc-win32", Relocs_Coff_X86_64.entries(), "mov foo@imgrel(%ebx, %ecx, 4), %eax") 1118*9880d681SAndroid Build Coastguard Worker#craftCoff("relocs.obj.coff-arm", "arm-pc-win32", Relocs_Coff_ARM.entries(), "...") 1119*9880d681SAndroid Build Coastguard Worker 1120*9880d681SAndroid Build Coastguard WorkercraftMacho("relocs.obj.macho-i386", "i386-apple-darwin9", Relocs_Macho_i386.entries(), 1121*9880d681SAndroid Build Coastguard Worker ("asm", ".subsections_via_symbols; .text; a: ; b:", "call a", 1)) 1122*9880d681SAndroid Build Coastguard WorkercraftMacho("relocs.obj.macho-x86_64", "x86_64-apple-darwin9", Relocs_Macho_X86_64.entries(), 1123*9880d681SAndroid Build Coastguard Worker ("asm", ".subsections_via_symbols; .text; a: ; b:", "call a", 1)) 1124*9880d681SAndroid Build Coastguard WorkercraftMacho("relocs.obj.macho-arm", "armv7-apple-darwin10", Relocs_Macho_ARM.entries(), "bl sym") 1125*9880d681SAndroid Build Coastguard Worker#craftMacho("relocs.obj.macho-ppc", "powerpc-apple-darwin10", Relocs_Macho_PPC.entries(), ...) 1126