Commit 894ef530 authored by Alexander Lobakin's avatar Alexander Lobakin Committed by Thomas Bogendoerfer
Browse files

MIPS: properly stop .eh_frame generation



Commit 866b6a89 ("MIPS: Add DWARF unwinding to assembly") added
-fno-asynchronous-unwind-tables to KBUILD_CFLAGS to prevent compiler
from emitting .eh_frame symbols.
However, as MIPS heavily uses CFI, that's not enough. Use the
approach taken for x86 (as it also uses CFI) and explicitly put CFI
symbols into the .debug_frame section (except for VDSO).
This allows us to drop .eh_frame from DISCARDS as it's no longer
being generated.

Fixes: 866b6a89 ("MIPS: Add DWARF unwinding to assembly")
Suggested-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarAlexander Lobakin <alobakin@pm.me>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 5629d418
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -20,10 +20,27 @@
#include <asm/sgidefs.h>
#include <asm/asm-eva.h>

#ifndef __VDSO__
/*
 * Emit CFI data in .debug_frame sections, not .eh_frame sections.
 * We don't do DWARF unwinding at runtime, so only the offline DWARF
 * information is useful to anyone. Note we should change this if we
 * ever decide to enable DWARF unwinding at runtime.
 */
#define CFI_SECTIONS	.cfi_sections .debug_frame
#else
 /*
  * For the vDSO, emit both runtime unwind information and debug
  * symbols for the .dbg file.
  */
#define CFI_SECTIONS
#endif

/*
 * LEAF - declare leaf routine
 */
#define LEAF(symbol)					\
		CFI_SECTIONS;				\
		.globl	symbol;				\
		.align	2;				\
		.type	symbol, @function;		\
@@ -36,6 +53,7 @@ symbol: .frame sp, 0, ra; \
 * NESTED - declare nested routine entry point
 */
#define NESTED(symbol, framesize, rpc)			\
		CFI_SECTIONS;				\
		.globl	symbol;				\
		.align	2;				\
		.type	symbol, @function;		\
+0 −1
Original line number Diff line number Diff line
@@ -224,6 +224,5 @@ SECTIONS
		*(.options)
		*(.pdr)
		*(.reginfo)
		*(.eh_frame)
	}
}