From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 79622 invoked by alias); 18 Apr 2016 17:27:58 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 79567 invoked by uid 89); 18 Apr 2016 17:27:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1676, matzsusede, U*matz, matz@suse.de X-HELO: mail-qg0-f41.google.com Received: from mail-qg0-f41.google.com (HELO mail-qg0-f41.google.com) (209.85.192.41) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Mon, 18 Apr 2016 17:27:47 +0000 Received: by mail-qg0-f41.google.com with SMTP id f105so120765462qge.2 for ; Mon, 18 Apr 2016 10:27:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=PABaEdmfczkfqVXQKGXJEVoOYB2PyOwi9AvUZyGR7pA=; b=c+7RHOYTXe0QQvz4tsmxJGXo+jIoolNMXTgLdvokJFaHaiBzyt5xA6T47GHmORIf/E a/PjL1Y2EXUQJeq+2L7MrMtAL3fFva1SHkOZo/vKwgbJ6XFPgqIRODm+WKWvkgeAMgYZ vqdf8d0nYA6pQxcbke4eb5JsDlcZAasWwEvPPgW6ZpVXDjSLPFflF6zgrFPcd/jDGOZy RLogkRKlnNNeu4ft+7n0qUT2Ewi2ONeC5bncVU0c06crpV4Hd8mrr6E7YYjU5e18o2C6 gzy2CNJgpMbwXJZqmRIBcJLV4n1TERDcvSz9xlDnnWJVkcxRSzlNR970FhSHxU0ftriR aaWw== X-Gm-Message-State: AOPr4FVJXw/5PR7NMuP/u2P82X0xawsK3XELrI+6LKGgI91rMpkROtsUpMr8rY8QgOVgMpKnoX5jiUeW+31IOg== MIME-Version: 1.0 X-Received: by 10.140.27.200 with SMTP id 66mr1870648qgx.96.1461000465434; Mon, 18 Apr 2016 10:27:45 -0700 (PDT) Received: by 10.55.217.134 with HTTP; Mon, 18 Apr 2016 10:27:45 -0700 (PDT) In-Reply-To: References: <983472E1-A1BC-4970-9CF9-0138A6BAD16D@apple.com> <6AAD87D2-90F9-4AD7-A195-AC91B76EA6AE@apple.com> <56FB5061.9010303@redhat.com> <20160330143421.GM15812@bubble.grove.modra.org> <571161D0.10601@redhat.com> <20160418144911.GG15088@bubble.grove.modra.org> Date: Mon, 18 Apr 2016 17:27:00 -0000 Message-ID: Subject: Re: Preventing preemption of 'protected' symbols in GNU ld 2.26 [aka should we revert the fix for 65248] From: "H.J. Lu" To: Michael Matz Cc: "Maciej W. Rozycki" , Alan Modra , Richard Biener , Jeff Law , Cary Coutant , Joe Groff , Binutils , GCC Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2016-04/txt/msg00279.txt.bz2 On Mon, Apr 18, 2016 at 10:23 AM, Michael Matz wrote: > Hi, > > On Mon, 18 Apr 2016, H.J. Lu wrote: > >> > reason is DSO code (also handcoded assembly) may reasonably expect to >> > be able to load the address with a PC-relative load-address type >> > instruction (ADDIUPC, LEA, MOVAB, etc.) and the target may not even >> > have suitable dynamic relocations available to apply any load-time >> > fixup if the symbol referred turns up outside of the DSO. The >> > instruction used may have a PC-relative range limit too. >> >> That is why protected visibility is such a mess. > > Not mess, but it comes with certain limitations. And that's okay. It's > intended as an optimization, and it should do that optimization if > requested, and error out if it can't be done for whatever reason. > > E.g. one limitation might very well be that function pointer comparison > for protected functions doesn't work (gives different outcomes if the > pointer is built from inside the exe or from a shared lib). (No matter > how it's built, it will still _work_ when called). Alternatively we can > make comparison work (by using the exe PLT slot), in which case Alans > testcase will need more complications to show that protected visibility > currently is broken. Alans testcase will work right now (as in showing > protected being broken) on data symbols. > We have special treatment for pointer of protected function symbol in ld and ld.so from day one, which, BTW, disables optimization of pointer of protected function symbol inside the shared library. -- H.J.