彼时,北电在其诸如,UMTS、CDMA、及自行开发的众多工具等项目中(此后,在4G项目,Wimax及Lte中),将GCC作为标准编译器来使用。每周我都需要进行数次的loadbuild,编译出load文件进行测试,以验证我对一些bug的修正...
彼时,北电在其诸如,UMTS、CDMA、及自行开发的众多工具等项目中(此后,在4G项目,Wimax及Lte中),将GCC作为标准编译器来使用。每周我都需要进行数次的loadbuild,编译出load文件进行测试,以验证我对一些bug的修正...
gcc-3.4.6完整安装包,安装顺序 rpm -ivh glibc-kernheaders-2.4-9.1.103.EL.i386.rpm --nodeps --force rpm -ivh glibc-headers-2.3.4-2.43.i386.rpm --nodeps --force rpm -ivh glibc-devel-2.3.4-2.43.i386.rpm -...
<br />5.12.5.2.2.2.1.3. 为具现构建RECORD_TYPE 最后,在cp_parser_init_declarator的10181行,cp_finish_decl完成这个声明。因为它是在一个函数中的声明,在下面4957行,一个新的DECL_STMT被插入到...
4.3.1.7.8.3. 异常处理句柄 接下来,如果我们没有通过-fno-...这整个功能由定义在文件gcc-3.4.6/libstdc++-v3/libstdsupc++/eh_personality.cc中的运行时函数__cxa_call_unexpected来提供。 而在解析
4.1.3.1.2.1.4. 读入宏定义在剩下的PCH文件中,包含了其宏定义的细节。根据这个信息,现在我们可以把这些定义插入cpp_reader里。在PCH文件中,每个宏定义以以下的macrodef_struct结构开头。 38 struct macrodef_...
<br />5.12.5.2.2.2.1.3.10. 完成派生类的RECORD_TYPE – 构建vtable 记得在determine_primary_base中,如果我们找到一个主要基类,我们只是记住它的vtable(记住它必须有vtable,否则我们不会有主要...
common_handle_option (continue) 909 case OPT_fcall_used_:910 fix_register (arg, 0, 1);911 break;912 913 case OPT_fcall_saved_:914 fix_register (arg, 0, 0)
ELF是支持重定位及PIC(位置无关代码)的格式。【10】的第三章给出了关于ELF的一个很好的解释。从【10】的总结中,我们得到: ELF文件有3种稍有不同的风格的形式:可重定位(relocatable),可执行(executable...
5.12.4.1.2.1. 处理非类型参数 在解析了这个非类型模板参数之后,下一步,需要处理这个参数来完成相关的子树并插入中间树。 2161 tree 2162 process_template_parm ...
依次调用cp_parser_class_specifier,cp_parser_member_specification_opt,cp_parser_member_declaration,cp_parser_decl_specifier_seq,在下面的代码片段中按照构造函数解析这个decl-specifier。 ...
4.1.1. 完成查找路径设置GCC在多个不同的地方查找头文件。在一个普通的Unix系统上,如果不另外指示,由`#include 请求的文件将在以下目录中查找: /usr/local/include LIBDIR/gcc/TARGET/VERSION/include /usr/...
5.12.3.1.1. 解析模板类型参数 首先尝试类型参数。 7654statictree 7655cp_parser_template_parameter(cp_parser* parser) in parser.c 7656{ 7657 cp_token *token;...
3.3.2. 初始化与目标平台相关选项在上面605行, set_target_switch处理与目标平台相关的选项。所有这些选项都以“-m”开头。 3829 void3830 set_target_switch (const char *name) in toplev.
4.2.8.用于函数调用序幕、结尾,兄弟调用结尾的数据 在backend_init中,接下来调用init_function_once。 8140 void 8141 init_function_once (void) in function.c 8142 { 8143 ...
4.3.1.7.8. 完成初始化 下面的abort_fndecl代表函数abort,而函数build_library_fn_ptr与build_library_fn相仿,不过它接受字符串作为名字,而不是标识符节点。 cxx_init_decl_...
<br />5.13.5.3.2.2.3. 普通的内联函数 处理完了强制内联函数(使用“always_inline”)后,剩下的函数由编译器便宜行事。只要我们不通过编译选项-fno-inline明确禁止函数内联,1326行的flag_really_...
大约4年前,我加入了GDNT - 北电网络在中国的合资企业,参与3G UMTS无线接入网的研发工作。与GCC有了第一次亲密的接触...每周我都需要进行数次的loadbuild,编译出load文件进行测试,以验证我对一些bug的修正代码。
5.13.2. 输出PCH文件 看过了转换相关的内容后,回到我们例子的解析后的阶段,从expand_or_defer_fn返回,我们回到cp_parser_function_definition_after_declarator,并立即返回FUNCTION_DECL,这个...
5.12.3.2.1.1.2.1. 构建对自己的引用 在2082行,根据ISO-IEC-14882-2003的要求,函数build_self_reference构建了一个对自己的伪引用,使得Derived::Base(及A::A)能够工作 “类名亦加入类作用域...
5.13.5.2.2.2. 变量 输出初始值后,回到assemble_variable,接下来处理对应的变量。 assemble_variable (continue) 1468 resolve_unique_section (decl, reloc, flag_...
4.3.1.7.6. 其它具有C链接性的C++语言成分4.3.1.7.6.1. 标准部分 和c_common_nodes_and_builtins走过一长段路程后,我们回到cxx_init_decl_processing。注意current_lang_name仍然是lang_name_c,表明下面...
发布tinfo 现在所有需要代码发布的tinfo已经被串入unemitted_tinfo_decls中。接着在finish_file的2628行,emit_tinfo_decl确定decl的tinfo是否需要发布,如果需要,则返回true。下面,看到之前在finish_file的...
1.6.3.1.1.1.4. 加法和减法回到int_const_binop,接下来的操作是加法和减法。 int_const_binop (continue) 1239 case PLUS_EXPR:1240 overflow = add_double (int1l, int1h, int2l, int2h, &low, &hi)
5.13.1.1.2. 用户定义转换序列 如果标准转换不奏效,在implicit_conversion的1107行conv将是NULL。它将要看是否有可用的用户定义的转换。这涉及重载解析的过程,【3】条文13.3“重载解析”,对此定义...
3.3.3.1.1. C++的选项对于C,C++或者obj-C,lang_hooks的handle_options都是c_common_handle_option。下面的OPT_*用作cl_options数组的索引。 251 int252 c_common_handle_option (size_t scode, const char *...
4.3.4.完成编译器初始化 回到lang_dependent_init,终于看到函数的结尾了,编译器的初始化马上就要完成了。 lang_dependent_init (continue) 4542 /* The following initialization...
其他内建类型节点 c_common_nodes_and_builtins接下来的代码如下: c_common_nodes_and_builtins (continue) 3177 build_common_tree_nodes_2 (flag_short_double); 3178 ...
4.3.语言相关的初始化 回到do_compile,下一个被调用的是lang_dependent_init。 do_compile (continue) 4650 /* Language-dependent initialization. Returns true on success....
发布代码根据优先级调用初始化函数 如果由代码2573至2800行执行的迭代稳定了下来——即不再产生新的东西,或者换句话说,所有显式或隐式涉及的对象都已经处理了,就可以继续完成机器代码分别这个目标。...