This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] Add private_function for private functions within glibc [BZ #21598]
- From: Florian Weimer <fweimer at redhat dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 10 Aug 2017 14:33:35 +0200
- Subject: Re: [PATCH] Add private_function for private functions within glibc [BZ #21598]
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=fweimer at redhat dot com
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 25CF7C0D7960
- References: <20170808182536.GA24765@gmail.com> <firstname.lastname@example.org> <CAMe9rOoU4oJCQj+9oXq2n8TSON+4+g0KPHZkaWHNeVh=gdOemail@example.com>
On 08/09/2017 12:58 PM, H.J. Lu wrote:
> On Wed, Aug 9, 2017 at 3:33 AM, Florian Weimer <firstname.lastname@example.org> wrote:
>> On 08/08/2017 08:25 PM, H.J. Lu wrote:
>>> which is incompatible with Shadow Stack in Intel Control-flow Enforcement
>>> Technology (CET) instructions:
>>> since shadow stack doesn't match return stack. We need to use register
>>> indirect branch via %ecx. That means only 2 parameters can be passed
>>> in registers for external function calls with lazy binding when shadow
>>> stack is enabled. However, internal_function, which should be used only
>>> with hidden function within libc.so, are also used with private function
>>> calls between different shared objects of glibc.
>> I think we should work towards removing internal_function instead. It's
>> an unnecessary maintenance overhead for those working on other
>> architectures besides i386.
> Some i386 assembly codes call internal functions directly:
> Removing internal_function is too risky for i386.
I can use a hacked GCC which adds name mangling for regparm functions,
so that we get link errors if there are references from assembler code,
and rewrite that assembler code.
Would that work for you?