⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msvc_objectmodel.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    if ( !h )	h = 1;    return h;}//#define USE_DISPLAY_HASH#ifdef USE_DISPLAY_HASHstatic void displayHash( const char* str ){    printf( "case 0x%07x: // %s\n    break;\n", elfHash(str), str );}#endifbool VCLinkerTool::parseOption( const char* option ){#ifdef USE_DISPLAY_HASH    // Main options    displayHash( "/ALIGN" ); displayHash( "/ALLOWBIND" ); displayHash( "/ASSEMBLYMODULE" );    displayHash( "/ASSEMBLYRESOURCE" ); displayHash( "/BASE" ); displayHash( "/DEBUG" );    displayHash( "/DEF" ); displayHash( "/DEFAULTLIB" ); displayHash( "/DELAY" );    displayHash( "/DELAYLOAD" ); displayHash( "/DLL" ); displayHash( "/DRIVER" );    displayHash( "/ENTRY" ); displayHash( "/EXETYPE" ); displayHash( "/EXPORT" );    displayHash( "/FIXED" ); displayHash( "/FORCE" ); displayHash( "/HEAP" );    displayHash( "/IDLOUT" ); displayHash( "/IGNOREIDL" ); displayHash( "/IMPLIB" );    displayHash( "/INCLUDE" ); displayHash( "/INCREMENTAL" ); displayHash( "/LARGEADDRESSAWARE" );    displayHash( "/LIBPATH" ); displayHash( "/LTCG" ); displayHash( "/MACHINE" );    displayHash( "/MAP" ); displayHash( "/MAPINFO" ); displayHash( "/MERGE" );    displayHash( "/MIDL" ); displayHash( "/NOASSEMBLY" ); displayHash( "/NODEFAULTLIB" );    displayHash( "/NOENTRY" ); displayHash( "/NOLOGO" ); displayHash( "/OPT" );    displayHash( "/ORDER" ); displayHash( "/OUT" ); displayHash( "/PDB" );    displayHash( "/PDBSTRIPPED" ); displayHash( "/RELEASE" ); displayHash( "/SECTION" );    displayHash( "/STACK" ); displayHash( "/STUB" ); displayHash( "/SUBSYSTEM" );    displayHash( "/SWAPRUN" ); displayHash( "/TLBID" ); displayHash( "/TLBOUT" );    displayHash( "/TSAWARE" ); displayHash( "/VERBOSE" ); displayHash( "/VERSION" );    displayHash( "/VXD" ); displayHash( "/WS " );#endif#ifdef USE_DISPLAY_HASH    // Sub options    displayHash( "UNLOAD" ); displayHash( "NOBIND" ); displayHash( "no" ); displayHash( "NOSTATUS" ); displayHash( "STATUS" );    displayHash( "AM33" ); displayHash( "ARM" ); displayHash( "CEE" ); displayHash( "IA64" ); displayHash( "X86" ); displayHash( "M32R" );    displayHash( "MIPS" ); displayHash( "MIPS16" ); displayHash( "MIPSFPU" ); displayHash( "MIPSFPU16" ); displayHash( "MIPSR41XX" ); displayHash( "PPC" );    displayHash( "SH3" ); displayHash( "SH4" ); displayHash( "SH5" ); displayHash( "THUMB" ); displayHash( "TRICORE" ); displayHash( "EXPORTS" );    displayHash( "LINES" ); displayHash( "REF" ); displayHash( "NOREF" ); displayHash( "ICF" ); displayHash( "WIN98" ); displayHash( "NOWIN98" );    displayHash( "CONSOLE" ); displayHash( "EFI_APPLICATION" ); displayHash( "EFI_BOOT_SERVICE_DRIVER" ); displayHash( "EFI_ROM" ); displayHash( "EFI_RUNTIME_DRIVER" ); displayHash( "NATIVE" );    displayHash( "POSIX" ); displayHash( "WINDOWS" ); displayHash( "WINDOWSCE" ); displayHash( "NET" ); displayHash( "CD" ); displayHash( "NO" );#endif    bool found = TRUE;    switch ( elfHash(option) ) {    case 0x3360dbe: // /ALIGN[:number]    case 0x1485c34: // /ALLOWBIND[:NO]    case 0x6b21972: // /DEFAULTLIB:library    case 0x396ea92: // /DRIVER[:UPONLY | :WDM]    case 0xaca9d75: // /EXETYPE[:DYNAMIC | :DEV386]    case 0x3ad5444: // /EXPORT:entryname[,@ordinal[,NONAME]][,DATA]    case 0x33aec94: // /FIXED[:NO]    case 0x33b4675: // /FORCE:[MULTIPLE|UNRESOLVED]    case 0x7988f7e: // /SECTION:name,[E][R][W][S][D][K][L][P][X][,ALIGN=#]    case 0x0348992: // /STUB:filename    case 0x0034bc4: // /VXD    case 0x0034c50: // /WS	AdditionalOptions += option;	break;    case 0x679c075: // /ASSEMBLYMODULE:filename	AddModuleNamesToAssembly += option+15;	break;    case 0x062d065: // /ASSEMBLYRESOURCE:filename	LinkToManagedResourceFile = option+18;	break;    case 0x0336675: // /BASE:{address | @filename,key}	// Do we need to do a manual lookup when '@filename,key'?	// Seems BaseAddress only can contain the location...	// We don't use it in Qt, so keep it simple for now	BaseAddress = option+6;	break;    case 0x3389797: // /DEBUG	GenerateDebugInformation = _True;	break;    case 0x0033896: // /DEF:filename	ModuleDefinitionFile = option+5;	break;    case 0x338a069: // /DELAY:{UNLOAD | NOBIND}	// MS documentation does not specify what to do with	// this option, so we'll put it in AdditionalOptions	AdditionalOptions += option;	break;    case 0x06f4bf4: // /DELAYLOAD:dllname	DelayLoadDLLs += option+11;	break;    // case 0x003390c: // /DLL    // This option is not used for vcproj files    //	break;    case 0x33a3979: // /ENTRY:function	EntryPointSymbol = option+7;	break;    case 0x033c960: // /HEAP:reserve[,commit]	{	    QStringList both = QStringList::split( ",", option+6 );	    HeapReserveSize = both[0].toLong();	    if ( both.count() == 2 )		HeapCommitSize = both[1].toLong();	}	break;    case 0x3d91494: // /IDLOUT:[path\]filename	MergedIDLBaseFileName = option+8;	break;    case 0x345a04c: // /IGNOREIDL	IgnoreEmbeddedIDL = _True;	break;    case 0x3e250e2: // /IMPLIB:filename	ImportLibrary = option+8;	break;    case 0xe281ab5: // /INCLUDE:symbol	ForceSymbolReferences += option+9;	break;    case 0xb28103c: // /INCREMENTAL[:no]	if ( *(option+12) == ':' &&	     *(option+13) == 'n' )	    LinkIncremental = linkIncrementalNo;	else	    LinkIncremental = linkIncrementalYes;	break;    case 0x26e4675: // /LARGEADDRESSAWARE[:no]	if ( *(option+18) == ':' &&	     *(option+19) == 'n' )	    LargeAddressAware = addrAwareNoLarge;	else	    LargeAddressAware = addrAwareLarge;	break;    case 0x0d745c8: // /LIBPATH:dir	AdditionalLibraryDirectories += option+9;	break;    case 0x0341877: // /LTCG[:NOSTATUS|:STATUS]	config->WholeProgramOptimization = _True;	LinkTimeCodeGeneration = _True;	if ( *(option+5) == ':' &&	     *(option+6) == 'S' )	     ShowProgress = linkProgressAll;	break;    case 0x157cf65: // /MACHINE:{AM33|ARM|CEE|IA64|X86|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|MIPSR41XX|PPC|SH3|SH4|SH5|THUMB|TRICORE}	switch ( elfHash(option+9) ) {	    // Very limited documentation on all options but X86,	    // so we put the others in AdditionalOptions...	case 0x0046063: // AM33	case 0x000466d: // ARM	case 0x0004795: // CEE	case 0x004d494: // IA64	case 0x0050672: // M32R	case 0x0051e53: // MIPS	case 0x51e5646: // MIPS16	case 0x1e57b05: // MIPSFPU	case 0x57b09a6: // MIPSFPU16	case 0x5852738: // MIPSR41XX	case 0x0005543: // PPC	case 0x00057b3: // SH3	case 0x00057b4: // SH4	case 0x00057b5: // SH5	case 0x058da12: // THUMB	case 0x96d8435: // TRICORE	    AdditionalOptions += option;	    break;	case 0x0005bb6: // X86	    TargetMachine = machineX86;	    break;	default:	    found = FALSE;	}	break;    case 0x0034160: // /MAP[:filename]	GenerateMapFile = _True;	MapFileName = option+5;	break;    case 0x164e1ef: // /MAPINFO:{EXPORTS|LINES}	if ( *(option+9) == 'E' )	    MapExports = _True;	else if ( *(option+9) == 'L' )	    MapLines = _True;	break;    case 0x341a6b5: // /MERGE:from=to	MergeSections = option+7;	break;    case 0x0341d8c: // /MIDL:@file	MidlCommandFile = option+7;	break;    case 0x84e2679: // /NOASSEMBLY	TurnOffAssemblyGeneration = _True;	break;    case 0x2b21942: // /NODEFAULTLIB[:library]	if ( *(option+13) == '\0' )	    IgnoreAllDefaultLibraries = _True;	else	    IgnoreDefaultLibraryNames += option+14;	break;    case 0x33a3a39: // /NOENTRY	ResourceOnlyDLL = _True;	break;    case 0x434138f: // /NOLOGO	SuppressStartupBanner = _True;	break;    case 0x0034454: // /OPT:{REF | NOREF | ICF[=iterations] | NOICF | WIN98 | NOWIN98}	{	    char third = *(option+7);	    switch ( third ) {	    case 'F': // REF		if ( *(option+5) == 'R' ) {		    OptimizeReferences = optReferences;		} else { // ICF[=iterations]		    EnableCOMDATFolding = optFolding;		    // [=iterations] case is not documented		}		break;	    case 'R': // NOREF		OptimizeReferences = optNoReferences;		break;	    case 'I': // NOICF		EnableCOMDATFolding = optNoFolding;		break;	    case 'N': // WIN98		OptimizeForWindows98 = optWin98Yes;		break;	    case 'W': // NOWIN98		OptimizeForWindows98 = optWin98No;		break;	    default:		found = FALSE;	    }	}	break;    case 0x34468a2: // /ORDER:@filename	FunctionOrder = option+8;	break;    case 0x00344a4: // /OUT:filename	OutputFile = option+5;	break;    case 0x0034482: // /PDB:filename	ProgramDatabaseFile = option+5;	break;    case 0xa2ad314: // /PDBSTRIPPED:pdb_file_name	StripPrivateSymbols = option+13;	break;    case 0x6a09535: // /RELEASE	SetChecksum = _True;	break;    case 0x348857b: // /STACK:reserve[,commit]	{	    QStringList both = QStringList::split( ",", option+7 );	    StackReserveSize = both[0].toLong();	    if ( both.count() == 2 )		StackCommitSize = both[1].toLong();	}	break;    case 0x78dc00d: // /SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}[,major[.minor]]	{	    // Split up in subsystem, and version number	    QStringList both = QStringList::split( ",", option+11 );	    switch ( elfHash(both[0].latin1()) ) {	    case 0x8438445: // CONSOLE		SubSystem = subSystemConsole;		break;	    case 0xbe29493: // WINDOWS		SubSystem = subSystemWindows;		break;	    // The following are undocumented, so add them to AdditionalOptions	    case 0x240949e: // EFI_APPLICATION	    case 0xe617652: // EFI_BOOT_SERVICE_DRIVER	    case 0x9af477d: // EFI_ROM	    case 0xd34df42: // EFI_RUNTIME_DRIVER	    case 0x5268ea5: // NATIVE	    case 0x05547e8: // POSIX	    case 0x2949c95: // WINDOWSCE		AdditionalOptions += option;		break;	    default:		found = FALSE;	    }	}	break;    case 0x8b654de: // /SWAPRUN:{NET | CD}	if ( *(option+9) == 'N' )	    SwapRunFromNet = _True;	else if ( *(option+9) == 'C' )	    SwapRunFromCD = _True;	else	    found = FALSE;	break;    case 0x34906d4: // /TLBID:id	TypeLibraryResourceID = QString( option+7 ).toLong();	break;    case 0x4907494: // /TLBOUT:[path\]filename	TypeLibraryFile = option+8;	break;    case 0x976b525: // /TSAWARE[:NO]	if ( *(option+8) == ':' )	    TerminalServerAware = termSvrAwareNo;	else	    TerminalServerAware = termSvrAwareYes;	break;    case 0xaa67735: // /VERBOSE[:lib]	if ( *(option+9) == ':' ) {	    ShowProgress = linkProgressLibs;	    AdditionalOptions += option;	} else {	    ShowProgress = linkProgressAll;	}	break;    case 0xaa77f7e: // /VERSION:major[.minor]	Version = option+9;	break;    default:	found = FALSE;    }    if( !found )	warn_msg( WarnLogic, "Could not parse Linker options: %s", option );    return found;}// VCMIDLTool -------------------------------------------------------VCMIDLTool::VCMIDLTool()    :	DefaultCharType( midlCharUnsigned ),	EnableErrorChecks( midlDisableAll ),	ErrorCheckAllocations( unset ),	ErrorCheckBounds( unset ),	ErrorCheckEnumRange( unset ),	ErrorCheckRefPointers( unset ),	ErrorCheckStubData( unset ),	GenerateStublessProxies( unset ),	GenerateTypeLibrary( unset ),	IgnoreStandardIncludePath( unset ),	MkTypLibCompatible( unset ),	StructMemberAlignment( midlAlignNotSet ),	SuppressStartupBanner( unset ),	TargetEnvironment( midlTargetNotSet ),	ValidateParameters( unset ),	WarnAsError( unset ),	WarningLevel( midlWarningLevel_0 ){}QTextStream &operator<<( QTextStream &strm, const VCMIDLTool &tool ){    strm << _begTool3;    strm << _VCMIDLToolName;    strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories );    strm << XPair( _AdditionalOptions, tool.AdditionalOptions, " " );    strm << XPair( _CPreprocessOptions, tool.CPreprocessOptions );    strm << EPair( _DefaultCharType, tool.DefaultCharType );    strm << SPair( _DLLDataFileName, tool.DLLDataFileName );    strm << EPair( _EnableErrorChecks, tool.EnableErrorChecks );    strm << TPair( _ErrorCheckAllocations, tool.ErrorCheckAllocations );    strm << TPair( _ErrorCheckBounds, tool.ErrorCheckBounds );    strm << TPair( _ErrorCheckEnumRange, tool.ErrorCheckEnumRange );    strm << TPair( _ErrorCheckRefPointers, tool.ErrorCheckRefPointers );    strm << TPair( _ErrorCheckStubData, tool.ErrorCheckStubData );    strm << XPair( _FullIncludePath, tool.FullIncludePath );    strm << TPair( _GenerateStublessProxies, tool.GenerateStublessProxies );    strm << TPair( _GenerateTypeLibrary, tool.GenerateTypeLibrary );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -