Esempio n. 1
0
        private MachSymtab ReadSymtab()
        {
            IsAtLeastOneSymtabLoadCommand.CheckThrowing();
            IsAtMostOneSymtabLoadCommand.CheckThrowing();
            ulong symtabPosition   = 0;
            ulong dysymtabPosition = 0;

            foreach (Tuple <MachLoadCommand, ulong> cmdAndPos in _loadCommands.Value)
            {
                switch (cmdAndPos.Item1.Command)
                {
                case LoadCommandType.Symtab:
                    symtabPosition = cmdAndPos.Item2;
                    break;

                case LoadCommandType.DySymtab:
                    dysymtabPosition = cmdAndPos.Item2;
                    break;
                }
            }
            if (symtabPosition == 0 || dysymtabPosition == 0)
            {
                return(null);
            }
            return(new MachSymtab(DataSourceReader, symtabPosition, dysymtabPosition, PhysicalAddressReader));
        }
Esempio n. 2
0
        private MachSymtab ReadSymtab()
        {
            IsAtLeastOneSymtabLoadCommand.CheckThrowing();
            IsAtMostOneSymtabLoadCommand.CheckThrowing();
            foreach (Tuple <MachLoadCommand, ulong> cmdAndPos in _loadCommands.Value)
            {
                if (cmdAndPos.Item1.Command != LoadCommandType.Symtab)
                {
                    continue;
                }
                return(new MachSymtab(DataSourceReader, cmdAndPos.Item2, PhysicalAddressReader));
            }

            return(null);
        }