Rewrite abi-note.S in C.

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 protection.
This commit is contained in:
Szabolcs Nagy 2020-04-01 16:02:03 +01:00
parent c7aa8596de
commit dbfefbdc3a
2 changed files with 15 additions and 18 deletions

View File

@ -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,16 @@ 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 = sizeof __abi_tag.name,
.n_descsz = sizeof __abi_tag.desc,
.n_type = 1 },
"GNU",
{ __ABI_TAG_OS, __ABI_TAG_VERSION }
};

View File

@ -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>