Símbolo débil (weak symbol)
Una definición que el enlazador solo usa si no aparece otra definición "fuerte" con el mismo nombre.
En GCC y Clang se escribe __attribute__((weak)), y ELF lo admite de forma nativa. El mundo embebido lo usa a lo grande: los archivos de arranque de CMSIS definen cada manejador de interrupción como alias débil de un Default_Handler que se limita a girar en un bucle infinito. Si escribes tu propio USART1_IRQHandler, gana el tuyo; si no escribes ninguno, la interrupción acaba en el bucle en lugar de fallar el enlazado.
La otra cara es que una errata —USART1_IRQhandler— o un extern "C" olvidado en C++ compila sin una sola advertencia. El programa se cuelga luego en Default_Handler la primera vez que llega la interrupción, y eso da para una de las sesiones de depuración más desconcertantes del oficio.