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

📄 gcc.c

📁 gcc关键代码
💻 C
📖 第 1 页 / 共 5 页
字号:
   that we default the front end language better.  */static const char *trad_capable_cpp ="cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}";/* We don't wrap .d files in %W{} since a missing .d file, and   therefore no dependency entry, confuses make into thinking a .o   file that happens to exist is up-to-date.  */static const char *cpp_unique_options ="%{C|CC:%{!E:%eGCC does not support -C or -CC without -E}}\ %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*&F*} %{P} %I\ %{MD:-MD %{!o:%b.d}%{o*:%.d%*}}\ %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}}\ %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*}\ %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}}\ %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i\ %{fmudflap:-D_MUDFLAP -include mf-runtime.h}\ %{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h}\ %{E|M|MM:%W{o*}}";/* This contains cpp options which are common with cc1_options and are passed   only when preprocessing only to avoid duplication.  We pass the cc1 spec   options to the preprocessor so that it the cc1 spec may manipulate   options used to set target flags.  Those special target flags settings may   in turn cause preprocessor symbols to be defined specially.  */static const char *cpp_options ="%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\ %{f*} %{g*:%{!g0:%{!fno-working-directory:-fworking-directory}}} %{O*}\ %{undef} %{save-temps:-fpch-preprocess}";/* This contains cpp options which are not passed when the preprocessor   output will be used by another program.  */static const char *cpp_debug_options = "%{d*}";/* NB: This is shared amongst all front-ends.  */static const char *cc1_options ="%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\ %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*}\ %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}}\ %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs}\ %{v:-version} %{pg:-p} %{p} %{f*} %{undef}\ %{Qn:-fno-ident} %{--help:--help}\ %{--target-help:--target-help}\ %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ %{fsyntax-only:-o %j} %{-param*}\ %{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\ %{coverage:-fprofile-arcs -ftest-coverage}";static const char *asm_options ="%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}";static const char *invoke_as =#ifdef AS_NEEDS_DASH_FOR_PIPED_INPUT"%{!S:-o %|.s |\n as %(asm_options) %|.s %A }";#else"%{!S:-o %|.s |\n as %(asm_options) %m.s %A }";#endif/* Some compilers have limits on line lengths, and the multilib_select   and/or multilib_matches strings can be very long, so we build them at   run time.  */static struct obstack multilib_obstack;static const char *multilib_select;static const char *multilib_matches;static const char *multilib_defaults;static const char *multilib_exclusions;/* Check whether a particular argument is a default argument.  */#ifndef MULTILIB_DEFAULTS#define MULTILIB_DEFAULTS { "" }#endifstatic const char *const multilib_defaults_raw[] = MULTILIB_DEFAULTS;#ifndef DRIVER_SELF_SPECS#define DRIVER_SELF_SPECS ""#endifstatic const char *const driver_self_specs[] = { DRIVER_SELF_SPECS };#ifndef OPTION_DEFAULT_SPECS#define OPTION_DEFAULT_SPECS { "", "" }#endifstruct default_spec{  const char *name;  const char *spec;};static const struct default_spec  option_default_specs[] = { OPTION_DEFAULT_SPECS };struct user_specs{  struct user_specs *next;  const char *filename;};static struct user_specs *user_specs_head, *user_specs_tail;#ifndef SWITCH_TAKES_ARG#define SWITCH_TAKES_ARG(CHAR) DEFAULT_SWITCH_TAKES_ARG(CHAR)#endif#ifndef WORD_SWITCH_TAKES_ARG#define WORD_SWITCH_TAKES_ARG(STR) DEFAULT_WORD_SWITCH_TAKES_ARG (STR)#endif#ifdef HAVE_TARGET_EXECUTABLE_SUFFIX/* This defines which switches stop a full compilation.  */#define DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR) \  ((CHAR) == 'c' || (CHAR) == 'S')#ifndef SWITCH_CURTAILS_COMPILATION#define SWITCH_CURTAILS_COMPILATION(CHAR) \  DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR)#endif#endif/* Record the mapping from file suffixes for compilation specs.  */struct compiler{  const char *suffix;		/* Use this compiler for input files				   whose names end in this suffix.  */  const char *spec;		/* To use this compiler, run this spec.  */  const char *cpp_spec;         /* If non-NULL, substitute this spec				   for `%C', rather than the usual				   cpp_spec.  */  const int combinable;          /* If nonzero, compiler can deal with				    multiple source files at once (IMA).  */  const int needs_preprocessing; /* If nonzero, source files need to				    be run through a preprocessor.  */};/* Pointer to a vector of `struct compiler' that gives the spec for   compiling a file, based on its suffix.   A file that does not end in any of these suffixes will be passed   unchanged to the loader and nothing else will be done to it.   An entry containing two 0s is used to terminate the vector.   If multiple entries match a file, the last matching one is used.  */static struct compiler *compilers;/* Number of entries in `compilers', not counting the null terminator.  */static int n_compilers;/* The default list of file name suffixes and their compilation specs.  */static const struct compiler default_compilers[] ={  /* Add lists of suffixes of known languages here.  If those languages     were not present when we built the driver, we will hit these copies     and be given a more meaningful error than "file not used since     linking is not done".  */  {".m",  "#Objective-C", 0, 0, 0}, {".mi",  "#Objective-C", 0, 0, 0},  {".mm", "#Objective-C++", 0, 0, 0}, {".M", "#Objective-C++", 0, 0, 0},  {".mii", "#Objective-C++", 0, 0, 0},  {".cc", "#C++", 0, 0, 0}, {".cxx", "#C++", 0, 0, 0},  {".cpp", "#C++", 0, 0, 0}, {".cp", "#C++", 0, 0, 0},  {".c++", "#C++", 0, 0, 0}, {".C", "#C++", 0, 0, 0},  {".CPP", "#C++", 0, 0, 0}, {".ii", "#C++", 0, 0, 0},  {".ads", "#Ada", 0, 0, 0}, {".adb", "#Ada", 0, 0, 0},  {".f", "#Fortran", 0, 0, 0}, {".for", "#Fortran", 0, 0, 0},  {".fpp", "#Fortran", 0, 0, 0}, {".F", "#Fortran", 0, 0, 0},  {".FOR", "#Fortran", 0, 0, 0}, {".FPP", "#Fortran", 0, 0, 0},  {".f90", "#Fortran", 0, 0, 0}, {".f95", "#Fortran", 0, 0, 0},  {".F90", "#Fortran", 0, 0, 0}, {".F95", "#Fortran", 0, 0, 0},  {".r", "#Ratfor", 0, 0, 0},  {".p", "#Pascal", 0, 0, 0}, {".pas", "#Pascal", 0, 0, 0},  {".java", "#Java", 0, 0, 0}, {".class", "#Java", 0, 0, 0},  {".zip", "#Java", 0, 0, 0}, {".jar", "#Java", 0, 0, 0},  /* Next come the entries for C.  */  {".c", "@c", 0, 1, 1},  {"@c",   /* cc1 has an integrated ISO C preprocessor.  We should invoke the      external preprocessor if -save-temps is given.  */     "%{E|M|MM:%(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)}\      %{!E:%{!M:%{!MM:\          %{traditional|ftraditional:\%eGNU C no longer supports -traditional without -E}\       %{!combine:\	  %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \		%(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i} \n\		    cc1 -fpreprocessed %{save-temps:%b.i} %{!save-temps:%g.i} \			%(cc1_options)}\	  %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\		cc1 %(cpp_unique_options) %(cc1_options)}}}\          %{!fsyntax-only:%(invoke_as)}} \      %{combine:\	  %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \		%(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i}}\	  %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\		cc1 %(cpp_unique_options) %(cc1_options)}}\                %{!fsyntax-only:%(invoke_as)}}}}}}", 0, 1, 1},  {"-",   "%{!E:%e-E or -x required when input is from standard input}\    %(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)", 0, 0, 0},  {".h", "@c-header", 0, 0, 0},  {"@c-header",   /* cc1 has an integrated ISO C preprocessor.  We should invoke the      external preprocessor if -save-temps is given.  */     "%{E|M|MM:%(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)}\      %{!E:%{!M:%{!MM:\	  %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \		%(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i} \n\		    cc1 -fpreprocessed %{save-temps:%b.i} %{!save-temps:%g.i} \			%(cc1_options)\                        -o %g.s %{!o*:--output-pch=%i.gch}\                        %W{o*:--output-pch=%*}%V}\	  %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\		cc1 %(cpp_unique_options) %(cc1_options)\                    -o %g.s %{!o*:--output-pch=%i.gch}\                    %W{o*:--output-pch=%*}%V}}}}}}", 0, 0, 0},  {".i", "@cpp-output", 0, 1, 0},  {"@cpp-output",   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 1, 0},  {".s", "@assembler", 0, 1, 0},  {"@assembler",   "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 1, 0},  {".S", "@assembler-with-cpp", 0, 1, 0},  {"@assembler-with-cpp",#ifdef AS_NEEDS_DASH_FOR_PIPED_INPUT   "%(trad_capable_cpp) -lang-asm %(cpp_options)\      %{E|M|MM:%(cpp_debug_options)}\      %{!M:%{!MM:%{!E:%{!S:-o %|.s |\n\       as %(asm_debug) %(asm_options) %|.s %A }}}}"#else   "%(trad_capable_cpp) -lang-asm %(cpp_options)\      %{E|M|MM:%(cpp_debug_options)}\      %{!M:%{!MM:%{!E:%{!S:-o %|.s |\n\       as %(asm_debug) %(asm_options) %m.s %A }}}}"#endif   , 0, 1, 0},#include "specs.h"  /* Mark end of table.  */  {0, 0, 0, 0, 0}};/* Number of elements in default_compilers, not counting the terminator.  */static const int n_default_compilers = ARRAY_SIZE (default_compilers) - 1;/* A vector of options to give to the linker.   These options are accumulated by %x,   and substituted into the linker command with %X.  */static int n_linker_options;static char **linker_options;/* A vector of options to give to the assembler.   These options are accumulated by -Wa,   and substituted into the assembler command with %Y.  */static int n_assembler_options;static char **assembler_options;/* A vector of options to give to the preprocessor.   These options are accumulated by -Wp,   and substituted into the preprocessor command with %Z.  */static int n_preprocessor_options;static char **preprocessor_options;/* Define how to map long options into short ones.  *//* This structure describes one mapping.  */struct option_map{  /* The long option's name.  */  const char *const name;  /* The equivalent short option.  */  const char *const equivalent;  /* Argument info.  A string of flag chars; NULL equals no options.     a => argument required.     o => argument optional.     j => join argument to equivalent, making one word.     * => require other text after NAME as an argument.  */  const char *const arg_info;};/* This is the table of mappings.  Mappings are tried sequentially   for each option encountered; the first one that matches, wins.  */static const struct option_map option_map[] = {   {"--all-warnings", "-Wall", 0},   {"--ansi", "-ansi", 0},   {"--assemble", "-S", 0},   {"--assert", "-A", "a"},   {"--classpath", "-fclasspath=", "aj"},   {"--bootclasspath", "-fbootclasspath=", "aj"},   {"--CLASSPATH", "-fclasspath=", "aj"},   {"--combine", "-combine", 0},   {"--comments", "-C", 0},   {"--comments-in-macros", "-CC", 0},   {"--compile", "-c", 0},   {"--debug", "-g", "oj"},   {"--define-macro", "-D", "aj"},   {"--dependencies", "-M", 0},   {"--dump", "-d", "a"},   {"--dumpbase", "-dumpbase", "a"},   {"--encoding", "-fencoding=", "aj"},   {"--entry", "-e", 0},   {"--extra-warnings", "-W", 0},   {"--extdirs", "-fextdirs=", "aj"},   {"--for-assembler", "-Wa", "a"},   {"--for-linker", "-Xlinker", "a"},   {"--force-link", "-u", "a"},   {"--coverage", "-coverage", 0},   {"--imacros", "-imacros", "a"},   {"--include", "-include", "a"},   {"--include-barrier", "-I-", 0},   {"--include-directory", "-I", "aj"},   {"--include-directory-after", "-idirafter", "a"},   {"--include-prefix", "-iprefix", "a"},   {"--include-with-prefix", "-iwithprefix", "a"},   {"--include-with-prefix-before", "-iwithprefixbefore", "a"},   {"--include-with-prefix-after", "-iwithprefix", "a"},   {"--language", "-x", "a"},   {"--library-directory", "-L", "a"},   {"--machine", "-m", "aj"},   {"--machine-", "-m", "*j"},   {"--no-integrated-cpp", "-no-integrated-cpp", 0},   {"--no-line-commands", "-P", 0},   {"--no-precompiled-includes", "-noprecomp", 0},   {"--no-standard-includes", "-nostdinc", 0},   {"--no-standard-libraries", "-nostdlib", 0},   {"--no-warnings", "-w", 0},   {"--optimize", "-O", "oj"},   {"--output", "-o", "a"},   {"--output-class-directory", "-foutput-class-dir=", "ja"},   {"--param", "--param", "a"},   {"--pass-exit-codes", "-pass-exit-codes", 0},   {"--pedantic", "-pedantic", 0},   {"--pedantic-errors", "-pedantic-errors", 0},   {"--pie", "-pie", 0},   {"--pipe", "-pipe", 0},   {"--prefix", "-B", "a"},   {"--preprocess", "-E", 0},   {"--print-search-dirs", "-print-search-dirs", 0},   {"--print-file-name", "-print-file-name=", "aj"},   {"--print-libgcc-file-name", "-print-libgcc-file-name", 0},   {"--print-missing-file-dependencies", "-MG", 0},   {"--print-multi-lib", "-print-multi-lib", 0},   {"--print-multi-directory", "-print-multi-directory", 0},   {"--print-multi-os-directory", "-print-multi-os-directory", 0},   {"--print-prog-name", "-print-prog-name=", "aj"},   {"--profile", "-p", 0},   {"--profile-blocks", "-a", 0},   {"--quiet", "-q", 0},   {"--resource", "-fcompile-resource=", "aj"},   {"--save-temps", "-save-temps", 0},   {"--shared", "-shared", 0},   {"--silent", "-q", 0},   {"--specs", "-specs=", "aj"},   {"--static", "-static", 0},   {"--std", "-std=", "aj"},   {"--symbolic", "-symbolic", 0},   {"--sysroot", "--sysroot=", "aj"},   {"--time", "-time", 0},   {"--trace-includes", "-H", 0},   {"--traditional", "-traditional", 0},   {"--traditional-cpp", "-traditional-cpp", 0},   {"--trigraphs", "-trigraphs", 0},   {"--undefine-macro", "-U", "aj"},   {"--user-dependencies", "-MM", 0},   {"--verbose", "-v", 0},   {"--warn-", "-W", "*j"},   {"--write-dependencies", "-MD", 0},   {"--write-user-dependencies", "-MMD", 0},   {"--", "-f", "*j"} };

⌨️ 快捷键说明

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