https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111639
--- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #0) > The <math.h> in avr-libc does things like this: > > extern double acos(double __x) __ATTR_CONST__; > #define acosf acos /**< The alias for acos(). */ This is no more the case with current AVR-LibC, which uses proper prototypes and symbols for acos, acosf and acosl etc. Here is math.h from the AVR-LibC v2.1 release (Jan 2022) : https://github.com/avrdudes/avr-libc/blob/c466ef11ebf6cf774b7148dbd78c250789989ce0/include/math.h (which has only acos and acosf, where the alias is implemented using assembly name __asm("")). The next release will also include long double prototypes, and they are proper prototypes (without __asm("") names). math.h from current HEAD: https://github.com/avrdudes/avr-libc/blob/main/include/math.h