From: ddaney.cavm@gmail.com (David Daney)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: extable: sort the exception table at build time
Date: Fri, 17 May 2013 11:33:53 -0700 [thread overview]
Message-ID: <51967811.7090709@gmail.com> (raw)
In-Reply-To: <1368809021-25130-1-git-send-email-will.deacon@arm.com>
On 05/17/2013 09:43 AM, Will Deacon wrote:
> 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: Will Deacon <will.deacon@arm.com>
> ---
> arch/arm64/Kconfig | 1 +
> arch/arm64/kernel/vmlinux.lds.S | 15 +++++++--------
> scripts/sortextable.c | 5 +++++
> 3 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 48347dc..fb8fd90 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -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
> diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
> index 3fae2be..3d527726 100644
> --- a/arch/arm64/kernel/vmlinux.lds.S
> +++ b/arch/arm64/kernel/vmlinux.lds.S
> @@ -57,6 +57,13 @@ SECTIONS
>
> RO_DATA(PAGE_SIZE)
>
> + . = ALIGN(8);
> + __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
> + __start___ex_table = .;
> + *(__ex_table)
> + __stop___ex_table = .;
> + }
> +
> _etext = .; /* End of text and rodata section */
You have moved this to rodata.
o Will the runtime sort still work like this?
o Do we care? Maybe not.
David Daney
>
> . = ALIGN(PAGE_SIZE);
> @@ -99,14 +106,6 @@ SECTIONS
> 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
> */
> DATA_DATA
> diff --git a/scripts/sortextable.c b/scripts/sortextable.c
> index 1f10e89..f9ce116 100644
> --- a/scripts/sortextable.c
> +++ b/scripts/sortextable.c
> @@ -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 */
>
WARNING: multiple messages have this Message-ID (diff)
From: David Daney <ddaney.cavm@gmail.com>
To: Will Deacon <will.deacon@arm.com>
Cc: catalin.marinas@arm.com, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, david.daney@cavium.com
Subject: Re: [PATCH] arm64: extable: sort the exception table at build time
Date: Fri, 17 May 2013 11:33:53 -0700 [thread overview]
Message-ID: <51967811.7090709@gmail.com> (raw)
In-Reply-To: <1368809021-25130-1-git-send-email-will.deacon@arm.com>
On 05/17/2013 09:43 AM, Will Deacon wrote:
> 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: Will Deacon <will.deacon@arm.com>
> ---
> arch/arm64/Kconfig | 1 +
> arch/arm64/kernel/vmlinux.lds.S | 15 +++++++--------
> scripts/sortextable.c | 5 +++++
> 3 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 48347dc..fb8fd90 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -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
> diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
> index 3fae2be..3d527726 100644
> --- a/arch/arm64/kernel/vmlinux.lds.S
> +++ b/arch/arm64/kernel/vmlinux.lds.S
> @@ -57,6 +57,13 @@ SECTIONS
>
> RO_DATA(PAGE_SIZE)
>
> + . = ALIGN(8);
> + __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
> + __start___ex_table = .;
> + *(__ex_table)
> + __stop___ex_table = .;
> + }
> +
> _etext = .; /* End of text and rodata section */
You have moved this to rodata.
o Will the runtime sort still work like this?
o Do we care? Maybe not.
David Daney
>
> . = ALIGN(PAGE_SIZE);
> @@ -99,14 +106,6 @@ SECTIONS
> 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
> */
> DATA_DATA
> diff --git a/scripts/sortextable.c b/scripts/sortextable.c
> index 1f10e89..f9ce116 100644
> --- a/scripts/sortextable.c
> +++ b/scripts/sortextable.c
> @@ -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 */
>
next prev parent reply other threads:[~2013-05-17 18:33 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-17 16:43 [PATCH] arm64: extable: sort the exception table at build time Will Deacon
2013-05-17 16:43 ` Will Deacon
2013-05-17 18:33 ` David Daney [this message]
2013-05-17 18:33 ` David Daney
2013-05-20 9:46 ` Will Deacon
2013-05-20 9:46 ` Will Deacon
2013-05-17 18:49 ` Sam Ravnborg
2013-05-17 18:49 ` Sam Ravnborg
2013-05-20 9:49 ` Will Deacon
2013-05-20 9:49 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51967811.7090709@gmail.com \
--to=ddaney.cavm@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.