17.2.35 Weak Function Attribute
The
weak attribute indicate that a symbol is weak, which means
that if another version of the same symbol is available, that version should
be used instead. This is useful when a library function is implemented such
that it can be overridden by a user written function. For
example:void __attribute__ ((weak)) foo(void);