This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PowerPC] Garbage collecting .toc entries in a non-adhoc way (section group)
- From: Fangrui Song <i at maskray dot me>
- To: Alan Modra <amodra at gmail dot com>
- Cc: binutils at sourceware dot org
- Date: Mon, 2 Mar 2020 10:02:43 -0800
- Subject: Re: [PowerPC] Garbage collecting .toc entries in a non-adhoc way (section group)
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=maskray.me; dmarc=pass action=none header.from=maskray.me; dkim=pass header.d=maskray.me; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JLniHuGrrFeKywry+N6wkEeTSFNdMsOWH6kmkqC6s84=; b=e+2FISyszSoAiAx++IMrqJ1cQqY0PavD30Vi1z6cJ8nNHXGWJ+IodOGBzbhFKL5VNrQqLJyPu4kGT2dHQkY6euI+H8QXwOpNJCZVT9AGa2wMQmrfxJispymYBlR+TIjeA9ORZQ3IMdtATRJinThk01wUqX2hPLWsi37oekP4cwUflxJb/T2t9PHUkiLPL+AoToQ+D4YwmRUcUqRWKUizWWEU1iOumWQP3VOMUp4SUM73/osO+XbUwGSCO0a7BV7ytXwGaqScgCKsiqmV7C9WB871F2xbJKIVQ44um+WvvhpMBjgVsuWnhGFEqjv4BmToBi/6JEnMPClt/dzgaz/cvA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WojW4LVXo6KH4Kly7Mdd2XAZ+2w3Wtw6m7V+j3oB8yF+SfoJWoo98svZ1W07pVRH13Ne9TA2IVlpTjoPFyLTcupSQZonxeRB93RVJEcpPh6YAcTREKffkNDTeqouA9EcOvlRt0Ed2sxMaXHQjnVz9lCAKMybylEDpjRvLEI7RFb5s5t1a9XRUyAS8W5dG/4u+AN7LR94AhpJM3EcKKrM6Uic4/cSXof7uNqKzKGi5DhtdPzQQg5K1YFCaK2zm0zbU2McVNn6BdfEvRWZn8cQIDcfBrWXoaGpLSe97I6Q48YJ8yY+TmaEkgHucr1stZSRSL2VhVFER7mtmw7Uv0edOA==
- References: <20200302065602.jtyhq5wkhmz5kqh2@gmail.com> <20200302105939.GI5384@bubble.grove.modra.org>
On Mon, Mar 2, 2020 at 2:59 AM Alan Modra <amodra@gmail.com> wrote:
>
> On Sun, Mar 01, 2020 at 10:56:02PM -0800, Fangrui Song wrote:
> > Now I am thinking about whether we can produce .toc in section groups to obtain garbage collection ability for free.
> >
> > .text (not in a section group) references `foo` defined in .data.rel.ro.foo (in a section group) via .toc .
> > ```
> > .text
> > addis 3,2,.LC0@toc@ha
> >
> > .section .data.rel.ro.foo,"aGw",foo,comdat
> > .globl foo
> > foo:
> >
> > .section .toc,"aGw",@progbits,foo,comdat
> > .LC0:
> > .tc foo[TC],foo
> > ```
> >
> > When `.data.rel.ro.foo` and the `.toc` are discarded due to the section
> > group rule, the relocation from `.text` to the `.toc` becomes dangling.
>
> Yes, that breaks the ELF gABI which says: "A symbol table entry with
> STB_LOCAL binding that is defined relative to one of a group's
> sections, and that is contained in a symbol table section that is not
> part of the group, must be discarded if the group members are
> discarded. References to this symbol table entry from outside the
> group are not allowed."
>
> I think what you're trying to do is reinvent the GOT. There isn't any
> reason why powerpc64 can't use a GOT and GOT relocations.
Yes, there is inventing the GOT. But neither GCC nor clang produces
foo@got@ha and foo@got@l pairs. Is there some hidden wisdom I am
missing?