This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ARM hard-float ABI: add ldconfig flag value


On Fri, Jul 27, 2012 at 05:09:53PM +0100, Steve McIntyre wrote:
>Hi,
>
>I'm back to working on some of the HF ABI issues that have been raised
>in the past [1]; sorry for the long delay. As a first part, here's a
>trivial patch to add a flag value for HF ABI libraries in ldconfig and
>the cache:
>
>diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h
>index ef3f4b9..1cffdc6 100644
>--- a/sysdeps/generic/ldconfig.h
>+++ b/sysdeps/generic/ldconfig.h
>@@ -34,6 +34,7 @@
> #define FLAG_MIPS64_LIBN32     0x0600
> #define FLAG_MIPS64_LIBN64     0x0700
> #define FLAG_X8664_LIBX32      0x0800
>+#define FLAG_ARM_HFABI         0x0900
> 
> /* Name of auxiliary cache.  */
> #define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"
>
>
>I'm discussing a possible use/implementation of the PT_ARM_ARCHEXT
>segment with folks inside ARM at the moment, as a replacement for
>checking the ARM-specific build attributes that people didn't like
>back then. In advance of that, I'd like to stake a claim for a flag
>value. I'm guessing that the new ARM AArch64 architecture will need
>one too, but I'll leave that for the team to ask about separately when
>they're ready.
>
>[1] http://www.eglibc.org/archives/patches/msg01017.html

Hi folks,

I've not seen any comments on this at all. I'm hoping it's not *that*
scary...!?

I've also been discussing with the ARM ABI folks about how to identify
whether a binary is hard-float or soft-float. The PT_ARM_ARCHEXT
approach might work, but it's felt to be more complicated than
necessary. Our favoured approach is to add two new possible values for
the OSABI field. I just wish that people had thought about this *way*
back when we first started the hard-float ABI work, as it would have
been much easier to work on and standardise this back then. Modulo
availability of time machines, there's not much we can do on that
front today...

What I'm proposing is to use two new values in the OSABI field in the
ELF header:

  #define ELFOSABI_LINUX_ARM_AEABI_SF 65
  #define ELFOSABI_LINUX_ARM_AEABI_HF 66

and use these values in the future for soft- and hard-float binaries
so that can unambiguously identify them.

There's already precedent for binaries using different values in this
field, with support in glibc for parsing and understanding them.

I have a plan of attack for how to make a staged switch over,
deliberately to minimise any potential compatibility problems. See the
attached doc for that. It's deliberately not very specific in terms of
timeline, as that's something I'm hoping to get feedback
about. Comments very welcome; please point out if you think there are
problems with this approach, or if there are any more implementations
of toolchain / linker that will need to be addressed.

Cheers,
-- 
Steve McIntyre                                steve.mcintyre@linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs

Attachment: elf_plan.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]