Example #1
0
 def __init__(self, path, basedir='', buffer=''):
     Magic.__init__(self, path, basedir)
     fullpath = basedir+path
     self.contents['stripped'] = elf.stripped(fullpath)
     if self.__class__ is ELF:
         # ar doesn't deal with hasDebug or RPATH
         try:
             self.contents['hasDebug'] = elf.hasDebug(fullpath)
         except elf.error: pass
         try:
             self.contents['RPATH'] = elf.getRPATH(fullpath)
         except elf.error: pass
         try:
             self.contents['Type'] = elf.getType(fullpath)
         except elf.error: pass
     try:
         requires, provides = elf.inspect(fullpath)
         # Filter None abi flags
         requires = [ x for x in requires
                      if x[0] != 'abi' or x[2][0] is not None ]
         self.contents['requires'] = requires
         self.contents['provides'] = provides
         for req in requires:
             if req[0] == 'abi':
                 self.contents['abi'] = req[1:]
                 self.contents['isnset'] = req[2][1]
         for prov in provides:
             if prov[0] == 'soname':
                 self.contents['soname'] = prov[1]
     except elf.error: pass
Example #2
0
 def __init__(self, path, basedir='', buffer=''):
     Magic.__init__(self, path, basedir)
     fullpath = basedir + path
     self.contents['stripped'] = elf.stripped(fullpath)
     if self.__class__ is ELF:
         # ar doesn't deal with hasDebug or RPATH
         try:
             self.contents['hasDebug'] = elf.hasDebug(fullpath)
         except elf.error:
             pass
         try:
             self.contents['RPATH'] = elf.getRPATH(fullpath)
         except elf.error:
             pass
         try:
             self.contents['Type'] = elf.getType(fullpath)
         except elf.error:
             pass
     try:
         requires, provides = elf.inspect(fullpath)
         # Filter None abi flags
         requires = [
             x for x in requires if x[0] != 'abi' or x[2][0] is not None
         ]
         self.contents['requires'] = requires
         self.contents['provides'] = provides
         for req in requires:
             if req[0] == 'abi':
                 self.contents['abi'] = req[1:]
                 self.contents['isnset'] = req[2][1]
         for prov in provides:
             if prov[0] == 'soname':
                 self.contents['soname'] = prov[1]
     except elf.error:
         pass
Example #3
0
    def testGetType(self):
        d = tempfile.mkdtemp()
        cwd = os.getcwd()
        try:
            os.chdir(d)
            # write a simple C program...
            f = open('foo.c', 'w')
            f.write('int main(void) { return 0; }\n')
            f.close()

            subprocess.call(('gcc', '-o', 'foo', 'foo.c'))
            assert (elf.getType('foo') == elf.ET_EXEC)

            subprocess.call(('gcc', '-o', 'foo', 'foo.c', '-fPIC', '-shared'))
            assert (elf.getType('foo') == elf.ET_DYN)

        finally:
            os.chdir(cwd)
            shutil.rmtree(d)
Example #4
0
    def testGetType(self):
        d = tempfile.mkdtemp()
        cwd = os.getcwd()
        try:
            os.chdir(d)
            # write a simple C program...
            f = open('foo.c', 'w')
            f.write('int main(void) { return 0; }\n')
            f.close()

            subprocess.call(('gcc', '-o', 'foo', 'foo.c'))
            assert(elf.getType('foo') == elf.ET_EXEC)

            subprocess.call(('gcc', '-o', 'foo', 'foo.c', '-fPIC', '-shared'))
            assert(elf.getType('foo') == elf.ET_DYN)

        finally:
            os.chdir(cwd)
            shutil.rmtree(d)