···2525 * Start the thread running and terminate it if it returns
2626 *---------------------------------------------------------------------------
2727 */
2828-void start_thread(void); /* Provide C access to ASM label */
2828+void start_thread(void) USED_ATTR; /* Provide C access to ASM label */
2929static void USED_ATTR __start_thread(void)
3030{
3131 /* a0=macsr, a1=context */
+1-1
firmware/asm/mips/thread-mips32.c
···2626 *---------------------------------------------------------------------------
2727 */
28282929-void start_thread(void); /* Provide C access to ASM label */
2929+void start_thread(void) USED_ATTR; /* Provide C access to ASM label */
3030static void USED_ATTR _start_thread(void)
3131{
3232 /* t1 = context */
+1-1
firmware/firmware.make
···49495050ifdef USE_LTO
5151$(BUILDDIR)/firmware/asm/%.o: CFLAGS += -fno-lto
5252-$(BUILDDIR)/firmware/kernel/%.o: CFLAGS += -fno-lto
5252+$(BUILDDIR)/firmware/kernel/thread.o: CFLAGS += -fno-lto
5353endif
54545555# GNU make (at least) has a bug/feature that exported variable are not available
+2-2
firmware/panic.c
···4747#define LINECHARS (LCD_WIDTH/SYSFONT_WIDTH) - 2
48484949#if defined(CPU_ARM) && defined(HAVE_RB_BACKTRACE)
5050-void panicf_f( const char *fmt, ...);
5050+void panicf_f( const char *fmt, ...) USED_ATTR;
51515252/* we wrap panicf() here with naked function to catch SP value */
5353void __attribute__((naked)) panicf( const char *fmt, ...)
···6060}
61616262/*
6363- * "Dude. This is pretty fucked-up, right here."
6363+ * "Dude. This is pretty fucked-up, right here."
6464 */
6565void panicf_f( const char *fmt, ...)
6666{