[PATCH v6 01/14] Rewrite abi-note.S in C.
H.J. Lu
hjl.tools@gmail.com
Wed Jul 1 17:43:12 GMT 2020
On Wed, Jul 1, 2020 at 10:31 AM Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
>
> The 07/01/2020 07:41, H.J. Lu wrote:
> > 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?
>
> i can do
>
> { .n_namesz = sizeof __abi_tag.name,
> .n_descsz = sizeof __abi_tag.desc,
> .n_type = 1 },
>
> is that better? (for me the int literal looks
> clear in the context and shorter. i don't like
> sizeof "GNU" i think that's less clear.)
It is better.
--
H.J.
More information about the Libc-alpha
mailing list