private void DoOpenObjFile(string fileName)
        {
            ObjectLibrary library = OmfLoader.LoadObject(fileName);

            library.ResolveAllSymbols();

            LibraryDisassembler dasm = new LibraryDisassembler(library);

            dasm.Analyze();

            this.program = library;
            this.procedureList.Program  = program;
            this.errorList.Program      = program;
            this.segmentList.Program    = program;
            this.libraryBrowser.Library = library;
        }
        private void DoOpenLibFile(string fileName)
        {
            ObjectLibrary library = OmfLoader.LoadLibrary(fileName);

            library.ResolveAllSymbols();

            LibraryDisassembler dasm = new LibraryDisassembler(library);

            dasm.Analyze();

            this.program = library;
            this.procedureList.Program = program;
            this.errorList.Program     = program;
            this.segmentList.Program   = program;

            // Display all unresolved symbols.
            foreach (string key in library.GetUnresolvedSymbols())
            {
                System.Diagnostics.Debug.WriteLine(string.Format(
                                                       "Symbol {0} is unresolved.", key));
            }

            this.libraryBrowser.Library = library;

#if false
            string symbolToFind = "FISRQQ";
            foreach (var mod in library.Symbols[symbolToFind])
            {
                System.Diagnostics.Debug.WriteLine(string.Format(
                                                       "Symbol {0} is defined in module {1}",
                                                       symbolToFind, mod.Name));
            }
            //library.DuplicateSymbols

            ObjectModule  module     = library.FindModule("_ctype");
            DefinedSymbol symbol     = module.DefinedNames.Find(x => x.Name == "_isupper");
            Address       entryPoint = new Address(
                symbol.BaseSegment.Id, (int)symbol.Offset);

            Disassembler16New dasm = new Disassembler16New(library);
            dasm.Analyze(entryPoint);

            this.disassemblyList.SetView(library, symbol.BaseSegment);
#endif
        }
Beispiel #3
0
        private void btnTest_Click(object sender, EventArgs e)
        {
#if false
            CallGraphWindow f         = new CallGraphWindow();
            LinearPointer   procEntry = dasm.Image.BaseAddress.LinearAddress + 0x14FE;
            f.SourceProcedure = dasm.Image.Procedures.Find(procEntry);
            f.WindowState     = FormWindowState.Maximized;
            f.Show(this);
#else
            string        fileName = @"..\..\..\..\Test\SLIBC7.LIB";
            ObjectLibrary library  = OmfLoader.LoadLibrary(fileName);
            propertiesWindow.SelectedObject = library;

            library.ResolveAllSymbols();
            libraryWindow.Library          = library;
            libraryWindow.PropertiesWindow = propertiesWindow;
            libraryWindow.ListingWindow    = listingWindow;
#endif
        }
Beispiel #4
0
        public void Omfldr_Library_Single_Record()
        {
            Given_Omf(LibraryHeader, 0xD, DW(0x10), W(1), B(0), Pad(6));
            Given_Omf(THEADR, 0x0C, S("ANSIINJECT"), B(42));
            Given_Omf(COMENT, 0x1B,
                      B(0x80), B(0xA0), B(0x01),
                      B(0x01),
                      S("ANSIINJECT"),
                      S("ANSICALL"),
                      W(1),
                      B(42));
            Given_Omf(COMENT, 0x08,
                      B(0xC0, 0xFE), DW(0x12345678), B(0), B(42));
            Given_Omf(MODEND, 0x02, B(0), B(42), Align(0x10));
            Given_Omf(LibraryEnd, 0x0, Align(0x10));

            var omf     = new OmfLoader(platform.Services, "foo.lib", writer.ToArray());
            var typelib = omf.Load(platform, new TypeLibrary());
            var module  = typelib.Modules["ANSICALL"];
            var svc     = module.ServicesByOrdinal[1];

            Assert.AreEqual("ANSIINJECT", svc.Name);
        }