[PATCH v6 01/14] Rewrite abi-note.S in C.
H.J. Lu
hjl.tools@gmail.com
Wed Jul 1 14:41:37 GMT 2020
On Wed, Jul 1, 2020 at 7:38 AM Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
>
> Using C code allows the compiler to add target specific object file
> markings based on CFLAGS.
>
> The arm specific abi-note.S is removed and similar object file fix
> up will be avoided on AArch64 with standard branch-prtection.
> ---
> csu/{abi-note.S => abi-note.c} | 23 +++++++++++++----------
> sysdeps/arm/abi-note.S | 8 --------
> 2 files changed, 13 insertions(+), 18 deletions(-)
> rename csu/{abi-note.S => abi-note.c} (90%)
> delete mode 100644 sysdeps/arm/abi-note.S
>
> diff --git a/csu/abi-note.S b/csu/abi-note.c
> similarity index 90%
> rename from csu/abi-note.S
> rename to csu/abi-note.c
> index 2b4b5f8824..db195c7ab7 100644
> --- a/csu/abi-note.S
> +++ b/csu/abi-note.c
> @@ -53,6 +53,8 @@ offset length contents
> identify the earliest release of that OS that supports this ABI.
> See abi-tags (top level) for details. */
>
> +#include <link.h>
> +#include <stdint.h>
> #include <config.h>
> #include <abi-tag.h> /* OS-specific ABI tag value */
>
> @@ -60,13 +62,14 @@ offset length contents
> name begins with `.note' and creates a PT_NOTE program header entry
> pointing at it. */
>
> - .section ".note.ABI-tag", "a"
> - .p2align 2
> - .long 1f - 0f /* name length */
> - .long 3f - 2f /* data length */
> - .long 1 /* note type */
> -0: .asciz "GNU" /* vendor name */
> -1: .p2align 2
> -2: .long __ABI_TAG_OS /* note data: the ABI tag */
> - .long __ABI_TAG_VERSION
> -3: .p2align 2 /* pad out section */
> +__attribute__ ((used, aligned (4), section (".note.ABI-tag")))
> +static const struct
> +{
> + ElfW(Nhdr) nhdr;
> + char name[4];
> + int32_t desc[4];
> +} __abi_tag = {
> + { .n_namesz = 4, .n_descsz = 16, .n_type = 1 },
sizeof "GNU"? and sizeof desc?
> + "GNU",
> + { __ABI_TAG_OS, __ABI_TAG_VERSION }
> +};
> diff --git a/sysdeps/arm/abi-note.S b/sysdeps/arm/abi-note.S
> deleted file mode 100644
> index 07bd4c4619..0000000000
> --- a/sysdeps/arm/abi-note.S
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -/* Tag_ABI_align8_preserved: This code preserves 8-byte
> - alignment in any callee. */
> - .eabi_attribute 25, 1
> -/* Tag_ABI_align8_needed: This code may require 8-byte alignment from
> - the caller. */
> - .eabi_attribute 24, 1
> -
> -#include <csu/abi-note.S>
> --
> 2.17.1
>
--
H.J.
More information about the Libc-alpha
mailing list