Next: , Previous: PCH Target, Up: Target Macros


17.29 C++ ABI参数

— Target Hook: tree TARGET_CXX_GUARD_TYPE (void)

定义该钩子来覆盖用于guard变量的整数类型。 这些被用于实现静态对象的一次构建。缺省为long_long_integer_type_node。

— Target Hook: bool TARGET_CXX_GUARD_MASK_BIT (void)

该钩子确定如何使用guard变量。如果第一个字节应该被使用, 则应该返回false(缺省)。返回值为true表明应该使用最低有效位。

— Target Hook: tree TARGET_CXX_GET_COOKIE_SIZE (tree type)

该钩子返回cookie的大小,其中cookie为当分配一个数组其元素具有type类型, 所使用的cookie。假设已经知道需要一个cookie。 缺省为max(sizeof (size_t), alignof(type)), 在2.7节IA64/Generic C++ ABI中定义。

— Target Hook: bool TARGET_CXX_COOKIE_HAS_SIZE (void)

该钩子应该返回true,如果元素大小应该被存放在数组cookie中。 缺省为返回false

— Target Hook: int TARGET_CXX_IMPORT_EXPORT_CLASS (tree type, int import_export)

如果后端定义了该钩子,则允许覆盖对导出类type的决定。 import_export将包含1,如果类将被导出,−1如果其将被导入,否则为0. 该函数应该返回修改后的值,并执行其它需要的操作来支持后端的操作系统。

— Target Hook: bool TARGET_CXX_CDTOR_RETURNS_THIS (void)

该钩子应该返回true,如果构造者和析构者返回创建/销毁对象的地址。 缺省为返回false

— Target Hook: bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void)

该钩子返回真,如果类的关键方法(即,如果方法在当前转换单元中定义, 其使得虚拟表被输出)可以为内联函数。对于标准的Itanium C++ ABI, 关键方法可以为内联函数,只要函数不在类定义中声明为内联的。 其它ABI的变体中,内联函数不能为关键方法。缺省为返回true

— Target Hook: void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree decl)

decl为虚拟表,类型信息对象,或其它类似的隐含类数据对象, 其将在该转换单元中作为外部链接被输出。ELF的可视性不会被显示的指定。 如果target需要指定可视性, 可以使用该钩子来设置DECL_VISIBILITYDECL_VISIBILITY_SPECIFIED

— Target Hook: bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void)

该钩子返回真(缺省情况)如果虚拟表和其它类似的隐式类数据对象总是为COMDAT, 如果它们具有外部连接。如果该钩子返回假, 则只在一个转换单元中被输出的虚拟表的类的类数据将不是COMDAT。

— Target Hook: bool TARGET_CXX_LIBRARY_RTTI_COMDAT (void)

该钩子返回真(缺省情况), 如果在C++运行时定义的基本类型的RTTI信息应该总是为COMDAT,否则为假。

— Target Hook: bool TARGET_CXX_USE_AEABI_ATEXIT (void)

该钩子返回真, 如果__aeabi_atexit(如被ARM EABI定义)应该用于注册静态析构者, 当-fuse-cxa-atexit为有效时。缺省是返回假,使用__cxa_atexit

— Target Hook: bool TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT (void)

该钩子返回真, 如果target的atexit函数可以跟__cxa_atexit一样被用于注册静态析构者。 这要求在共享库中atexit注册的函数要按照正确的顺序运行,当库被卸载时。 缺省为返回假。

— Target Hook: void TARGET_CXX_ADJUST_CLASS_AT_DEFINITION (tree type)

type为一个刚被定义的C++类(即RECORD_TYPE 或 UNION_TYPE)。 使用该钩子来调整类(例如tweak可视性或者执行其它target需要的修改)。