Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit adace895 authored by Will Deacon's avatar Will Deacon Committed by Catalin Marinas
Browse files

arm64: extable: sort the exception table at build time



As is done for other architectures, sort the exception table at
build-time rather than during boot.

Since sortextable appears to be a standalone C program relying on the
host elf.h to provide EM_AARCH64, I've had to add a conditional check in
order to allow cross-compilation on machines that aren't running a
bleeding-edge libc-dev.

Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 73150c98
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ config ARM64
	select ARM_AMBA
	select ARM_ARCH_TIMER
	select ARM_GIC
	select BUILDTIME_EXTABLE_SORT
	select CLONE_BACKWARDS
	select COMMON_CLK
	select GENERIC_CLOCKEVENTS
+1 −9
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ SECTIONS
	}

	RO_DATA(PAGE_SIZE)

	EXCEPTION_TABLE(8)
	_etext = .;			/* End of text and rodata section */

	. = ALIGN(PAGE_SIZE);
@@ -98,14 +98,6 @@ SECTIONS
		CACHELINE_ALIGNED_DATA(64)
		READ_MOSTLY_DATA(64)

		/*
		 * The exception fixup table (might need resorting at runtime)
		 */
		. = ALIGN(32);
		__start___ex_table = .;
		*(__ex_table)
		__stop___ex_table = .;

		/*
		 * and the usual data section
		 */
+5 −0
Original line number Diff line number Diff line
@@ -31,6 +31,10 @@
#include <tools/be_byteshift.h>
#include <tools/le_byteshift.h>

#ifndef EM_AARCH64
#define EM_AARCH64	183
#endif

static int fd_map;	/* File descriptor for file being modified. */
static int mmap_failed; /* Boolean flag. */
static void *ehdr_curr; /* current ElfXX_Ehdr *  for resource cleanup */
@@ -249,6 +253,7 @@ do_file(char const *const fname)
		custom_sort = sort_relative_table;
		break;
	case EM_ARM:
	case EM_AARCH64:
	case EM_MIPS:
		break;
	}  /* end switch */