This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCHv3] powerpc: ABI change - add HWCAP/HWCAP2/platform info to TCB
- From: Peter Bergner <bergner at vnet dot ibm dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: Carlos Eduardo Seo <cseo at linux dot vnet dot ibm dot com>, GNU C Library <libc-alpha at sourceware dot org>, Tulio Machado <tuliom at linux dot vnet dot ibm dot com>, "Steven J. Munroe" <sjmunroe at us dot ibm dot com>, "Carlos O'Donell" <carlos at redhat dot com>
- Date: Wed, 23 Sep 2015 17:23:06 -0500
- Subject: Re: [PATCHv3] powerpc: ABI change - add HWCAP/HWCAP2/platform info to TCB
- Authentication-results: sourceware.org; auth=none
- References: <4BE991CB-F601-4D63-A416-5991FE870FC4 at linux dot vnet dot ibm dot com> <alpine dot DEB dot 2 dot 10 dot 1509232114070 dot 10585 at digraph dot polyomino dot org dot uk> <B650304C-6207-46AC-B6A8-FA29959B305D at linux dot vnet dot ibm dot com> <alpine dot DEB dot 2 dot 10 dot 1509232141250 dot 10585 at digraph dot polyomino dot org dot uk>
On Wed, 2015-09-23 at 21:43 +0000, Joseph Myers wrote:
> On Wed, 23 Sep 2015, Carlos Eduardo Seo wrote:
>> OâDonell suggested we used a versioned symbol to track this change, so
>> it doesnât break applications when running against an old glibc:
>
> But I don't see how the symbol, in the form you've added it, achieves
> that. How do you ensure that applications using the new feature have an
> undefined reference to this symbol? And in any case a symbol that is not
> part of the public API, but is exported from shared libraries, needs to be
> in the implementation namespace (__*).
The idea is that applications will use the builtins supplied by GCC
(and other compilers) and will not access this info directly.
In GCC, my plan is to first add a configure test looking for the
symbol and if it doesn't exist, then I'll make the builtins return
false for all queries. If it does exist during configure, I'll emit
code to load/test the TCB entries, but I'll also emit a data reference
to the symbol which will cause a linker/loader error in the event the
user attempts to link/run against an old glibc.
Peter