Exemple #1
0
def IsBitcode(filename):
  fp = DriverOpen(filename, 'rb')
  header = fp.read(4)
  DriverClose(fp)
  # Raw bitcode
  if header == LLVM_BITCODE_MAGIC:
    return True
  # Wrapped bitcode
  return IsBitcodeWrapperHeader(header)
Exemple #2
0
def SetPortableUrl(json_dict, shortname, filepath):
    json_dict['portable'] = {}
    json_dict['portable']['pnacl-translate'] = {}
    json_dict['portable']['pnacl-translate']['url'] = shortname
    fd = DriverOpen(filepath, 'r')
    sha = hashlib.sha256()
    sha.update(fd.read())
    fd.close()
    json_dict['portable']['pnacl-translate']['sha256'] = sha.hexdigest()
def SetPortableUrl(json_dict, shortname, filepath):
  json_dict['portable'] = {}
  json_dict['portable']['pnacl-translate'] = {}
  json_dict['portable']['pnacl-translate']['url'] = shortname
  fd = DriverOpen(filepath, 'r')
  sha = hashlib.sha256()
  sha.update(fd.read())
  fd.close()
  json_dict['portable']['pnacl-translate']['sha256'] = sha.hexdigest()
Exemple #4
0
def WrapBitcode(output):
  """ Hash the bitcode and insert a wrapper header with the sha value.
      If the bitcode is already wrapped, the old hash is overwritten.
  """
  fd = DriverOpen(output, 'rb')
  maybe_header = fd.read(16)
  if IsBitcodeWrapperHeader(maybe_header):
    offset, bytes_left = GetBasicHeaderData(maybe_header)
    fd.seek(offset)
  else:
    offset = 0
    fd.seek(0, os.SEEK_END)
    bytes_left = fd.tell()
    fd.seek(0)
  # get the hash
  sha = hashlib.sha256()
  while bytes_left:
    block = fd.read(min(bytes_left, 4096))
    sha.update(block)
    bytes_left -= len(block)
  DriverClose(fd)
  # run bc-wrap
  Run(' '.join(['${LLVM_BCWRAP}', '-hash', sha.hexdigest(), '"%s"' % output]))
Exemple #5
0
def GetELFHeader(filename):
  fp = DriverOpen(filename, 'rb')
  header = fp.read(16 + 2 + 2)
  DriverClose(fp)
  return DecodeELFHeader(header, filename)
Exemple #6
0
def IsWrappedBitcode(filename):
  fp = DriverOpen(filename, 'rb')
  header = fp.read(4)
  iswbc = IsBitcodeWrapperHeader(header)
  DriverClose(fp)
  return iswbc
def GetELFHeader(filename):
  fp = DriverOpen(filename, 'rb')
  # Read max(sizeof(Elf64_Ehdr), sizeof(Elf32_Ehdr)), which is 64 bytes.
  header = fp.read(64)
  DriverClose(fp)
  return DecodeELFHeader(header, filename)
Exemple #8
0
def GetELFHeader(filename):
    fp = DriverOpen(filename, 'rb')
    # Read max(sizeof(Elf64_Ehdr), sizeof(Elf32_Ehdr)), which is 64 bytes.
    header = fp.read(64)
    DriverClose(fp)
    return DecodeELFHeader(header, filename)
def GetELFHeader(filename):
    fp = DriverOpen(filename, 'rb')
    header = fp.read(16 + 2 + 2)
    DriverClose(fp)
    return DecodeELFHeader(header, filename)
Exemple #10
0
def GetBitcodeMagic(filename):
    fp = DriverOpen(filename, 'rb')
    header = fp.read(4)
    DriverClose(fp)
    return header