Next: Addressing Modes, Previous: Trampolines, Up: Target Macros
该宏,如果被定义,应该扩展为一块C代码,当编译libgcc.a的函数时被扩展。 其可以被用于提供GCC内部库函数的替代名字,如果有编译应该提供的ABI名字。
该钩子应该声明额外的库函数或者重命名存在的, 使用optabs.c中定义的函数
set_optab_libfunc
和init_one_libfunc
。init_optabs
调用该宏,在初始化所有正常的库函数之后。缺省为不作任何事情。大多数port不需要定义该钩子。
该宏应该返回
true
,如果实现在模式mode下的浮点比较操作符 comparison的库函数应该返回一个布尔值, 如果应该返回一个三态值则返回false。GCC本身的浮点库从比较运算符中返回三态值,所以缺省总是返回假。 大多数port不需要定义该宏。
该宏应该求解为
true
,如果整型比较函数(像__cmpdi2
) 应该返回0来指示第一个操作数比第二个小,1来指示相等, 2来指示第一个操作数大于第二个。如果该宏求解为false
, 则比较函数返回-1,0和1,来替代0,1和2。如果target使用libgcc.a中的函数, 则不需要定义该宏。
定义该宏,如果你的系统C库使用US Software GOFAST库来提供浮点模拟。
除了定义该宏以外,你的体系结构必须将
TARGET_INIT_LIBFUNCS
设为gofast_maybe_init_libfuncs
,或者从那个钩子版本中调用该函数。 其在config/gofast.h中定义, 且必须被你的体系结构的cpu.c文件包含进来。 例如参见sparc/sparc.c。如果该宏被定义, 则
TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL
target钩子必须返回假, 对于SFmode
和DFmode
比较。
target机器上的
EDOM
的值,作为一个C整型常量表达式。如果没有定义该宏, 则GCC不尝试将EDOM
的值直接存放到errno
中。 查看/usr/include/errno.h来查找你的系统上的EDOM
的值。如果没有定义
TARGET_EDOM
则被编译的代码通过调用库函数并使其报告错误, 来报告domain错误。如果对于这样的错误,你系统上的数学函数使用matherr
, 则应该不定义TARGET_EDOM
,以便matherr
被正常使用。
定义该宏为C表达式来创建一个rtl表达式,来引用全局“变量”
errno
。 (在一些系统上,errno
可能实际不是一个变量。)如果没有定义该宏, 则会使用一个合理的缺省。
当该宏非0时,GCC将隐式的优化
sin
调用为sinf
, 类似的还有C99标准中定义的其它函数。缺省为非0,这对于大多现代系统是合适的, 然而有一些系统缺少对这些函数的运行时支持,所以它们需要该宏被重定义为0。