Here is an explanation of implicit calls to library routines.
MULSI3_LIBCALL __mulsi3 , a function defined in `libgcc.a'.
DIVSI3_LIBCALL __divsi3 , a function defined in `libgcc.a'.
UDIVSI3_LIBCALL __udivsi3 , a function defined in `libgcc.a'.
MODSI3_LIBCALL __modsi3 , a function defined in `libgcc.a'.
UMODSI3_LIBCALL __umodsi3 , a function defined in `libgcc.a'.
MULDI3_LIBCALL __muldi3 , a function defined in `libgcc.a'.
DIVDI3_LIBCALL __divdi3 , a function defined in `libgcc.a'.
UDIVDI3_LIBCALL __udivdi3 , a function defined in `libgcc.a'.
MODDI3_LIBCALL __moddi3 , a function defined in `libgcc.a'.
UMODDI3_LIBCALL __umoddi3 , a function defined in `libgcc.a'.
INIT_TARGET_OPTABS init_optabs calls this macro after initializing all the normal library routines.
TARGET_EDOM EDOM on the target machine, as a C integer constant expression. If you don't define this macro, GNU CC does not attempt to deposit the value of EDOM into errno directly. Look in `/usr/include/errno.h' to find the value of EDOM on your system.
If you do not define TARGET_EDOM , then compiled code reports domain errors by calling the library function and letting it report the error. If mathematical functions on your system use matherr when there is an error, then you should leave TARGET_EDOM undefined so that matherr is used normally.
GEN_ERRNO_RTX errno . (On certain systems, errno may not actually be a variable.) If you don't define this macro, a reasonable default is used.
TARGET_MEM_FUNCTIONS memcpy and memset rather than the BSD functions bcopy and bzero .
LIBGCC_NEEDS_DOUBLE float arguments cannot be passed to library routines (so they must be converted to double ). This macro affects both how library calls are generated and how the library routines in `libgcc1.c' accept their arguments. It is useful on machines where floating and fixed point arguments are passed differently, such as the i860.
FLOAT_ARG_TYPE float . (By default, they use a union of float and int .)
The obvious choice would be float ---but that won't work with traditional C compilers that expect all arguments declared as float to arrive as double . To avoid this conversion, the library routines ask for the value as some other type and then treat it as a float .
On some systems, no other type will work for this. For these systems, you must use LIBGCC_NEEDS_DOUBLE instead, to force conversion of the values double before they are passed.
FLOATIFY (passed-value) float argument as a float instead of the type it was passed as. The default is an expression which takes the float field of the union.
FLOAT_VALUE_TYPE float . (By default, they use int .)
The obvious choice would be float ---but that won't work with traditional C compilers gratuitously convert values declared as float into double .
INTIFY (float-value) float -returning library routine should be packaged in order to return it. These functions are actually declared to return type FLOAT_VALUE_TYPE (normally int ).
These values can't be returned as type float because traditional C compilers would gratuitously convert the value to a double .
A local variable named intify is always available when the macro INTIFY is used. It is a union of a float field named f and a field named i whose type is FLOAT_VALUE_TYPE or int .
If you don't define this macro, the default definition works by copying the value through that union.
nongcc_SI_type SImode in the system's own C compiler.
You need not define this macro if that type is long int , as it usually is.
nongcc_word_type
You need not define this macro if that type is long int , as it usually is.
perform_... float and double in the library routines in `libgcc1.c'. See that file for a full list of these macros and their arguments. On most machines, you don't need to define any of these macros, because the C compiler that comes with the system takes care of doing them.
NEXT_OBJC_RUNTIME The default calling convention passes just the object and the selector to the lookup function, which returns a pointer to the method.