コード例 #1
0
 private KeyGenerator CreateGenerator(ELFLoadedImage loadedImage)
 {
     try
     {
         if (loadedImage.Image.IsValid())
         {
             return(new ELFFileKeyGenerator(Tracer, loadedImage.Image, loadedImage.Path));
         }
         // TODO - mikem 7/1/17 - need to figure out a better way to determine the file vs loaded layout
         bool layout = loadedImage.Path.StartsWith("/");
         var  reader = new RelativeAddressSpace(_core.DataSource, loadedImage.LoadAddress, _core.DataSource.Length);
         var  peFile = new PEFile(reader, layout);
         if (peFile.IsValid())
         {
             return(new PEFileKeyGenerator(Tracer, peFile, loadedImage.Path));
         }
         // Check if this is a macho module in a ELF 5.0.x MacOS dump
         var machOFile = new MachOFile(reader, 0, true);
         if (machOFile.IsValid())
         {
             return(new MachOFileKeyGenerator(Tracer, machOFile, loadedImage.Path));
         }
         Tracer.Warning("Unknown ELF core image {0:X16} {1}", loadedImage.LoadAddress, loadedImage.Path);
     }
     catch (InvalidVirtualAddressException ex)
     {
         Tracer.Error("{0}: {1:X16} {2}", ex.Message, loadedImage.LoadAddress, loadedImage.Path);
     }
     return(null);
 }
コード例 #2
0
        public void ParseCore()
        {
            Stream core = GetCore();

            StreamAddressSpace dataSource  = new StreamAddressSpace(core);
            ELFCoreFile        coreReader  = new ELFCoreFile(dataSource);
            ELFLoadedImage     loadedImage = coreReader.LoadedImages.Where(i => i.Path.EndsWith("librt-2.17.so")).First();
            string             buildId     = string.Concat(loadedImage.Image.BuildID.Select(b => b.ToString("x2")));

            Assert.Equal("1d2ad4eaa62bad560685a4b8dccc8d9aa95e22ce", buildId);
        }
コード例 #3
0
ファイル: Tests.cs プロジェクト: tillig/symstore
 public void ParseCore()
 {
     using (Stream core = TestUtilities.OpenCompressedFile("TestBinaries/core.gz"))
     {
         StreamAddressSpace dataSource = new StreamAddressSpace(core);
         ELFCoreFile        coreReader = new ELFCoreFile(dataSource);
         Assert.True(coreReader.IsValid());
         ELFLoadedImage loadedImage = coreReader.LoadedImages.Where(i => i.Path.EndsWith("librt-2.17.so")).First();
         Assert.True(loadedImage.Image.IsValid());
         Assert.True(loadedImage.Image.Header.Type == ELFHeaderType.Shared);
         string buildId = TestUtilities.ToHexString(loadedImage.Image.BuildID);
         Assert.Equal("1d2ad4eaa62bad560685a4b8dccc8d9aa95e22ce", buildId);
     }
 }
コード例 #4
0
ファイル: Tests.cs プロジェクト: tillig/symstore
 public void ParseTriageDump()
 {
     using (Stream core = TestUtilities.OpenCompressedFile("TestBinaries/triagedump.gz"))
     {
         StreamAddressSpace dataSource = new StreamAddressSpace(core);
         ELFCoreFile        coreReader = new ELFCoreFile(dataSource);
         Assert.True(coreReader.IsValid());
         ELFLoadedImage loadedImage = coreReader.LoadedImages.Where(i => i.Path.EndsWith("libcoreclr.so")).First();
         Assert.True(loadedImage.Image.IsValid());
         Assert.True(loadedImage.Image.Header.Type == ELFHeaderType.Shared);
         string buildId = TestUtilities.ToHexString(loadedImage.Image.BuildID);
         Assert.Equal("8f39a52a756311ab365090bfe9edef7ee8c44503", buildId);
     }
 }
コード例 #5
0
ファイル: Tests.cs プロジェクト: mmitche/symstore
        public void ParseCore()
        {
            using (FileStream core = File.OpenRead("TestBinaries\\core"))
            {
                StreamAddressSpace dataSource  = new StreamAddressSpace(core);
                ELFCoreFile        coreReader  = new ELFCoreFile(dataSource);
                ELFLoadedImage     loadedImage = coreReader.LoadedImages.Where(i => i.Path.EndsWith("libcoreclr.so")).First();
                string             buildId     = string.Concat(loadedImage.Image.BuildID.Select(b => b.ToString("x2")));

                //this is the build id for libcoreclr.so from package:
                // https://dotnet.myget.org/feed/dotnet-core/package/nuget/runtime.ubuntu.14.04-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2
                Assert.Equal("bc0d85e535168f1a21a2dd79a466b3988bd274aa", buildId);
            }
        }