From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42f.google.com (mail-pf1-x42f.google.com [IPv6:2607:f8b0:4864:20::42f]) by sourceware.org (Postfix) with ESMTPS id 3F0F73854834 for ; Mon, 21 Jun 2021 13:06:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3F0F73854834 Received: by mail-pf1-x42f.google.com with SMTP id w71so3581688pfd.4 for ; Mon, 21 Jun 2021 06:06:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Vgvc6uHMX2MdNXyjfGtPEIbEJs3mzntF5JWaq8dRi8g=; b=bt3KlpzE9oSx4KnbKNN3D5jUC98d/tocFG5TOBLwhaxDgtgXVs5WxJZnFJJMo3owgN yoReHx6ISKoBMXIFc1U45ZhRNRTz61UgT/ktX2l3m9KCsuP4y+KAbUBEC39viqlJApcm 65eJyskO7oID77UVuOjqEs2U3mMhxdWlSvPQJwcHH/LJcOkSC90N9BeKqCHTTunFSphX 66E3PGx1lRrTrQCWrY0zUyJm7J74KLTm6yBEjg5bHlrYUmeCNhKB99yAHBw+AX1wNqmO zaLSWAIUob3Xptf8ZCjNLTE1inkYnw10jy6pLXvQq4OQ7gkk+ZPcmvQPOAqWbsRe2d2y /JVQ== X-Gm-Message-State: AOAM532VxIClP+jKYipwHr3HAfn2eI4pnIykn3O3papt/WcUM6Nc4rtV lZbZx51AGASZLUwXJkl+/Pa4xa7LTtzdioTfbwk= X-Google-Smtp-Source: ABdhPJzLFf08Fjz1FVV37Te1TakPFWbpZmqlksKxk1StIlLIbbClxstbXEb4WzmWaJ2asrmS0H9cDt7SJRJEDwihWkY= X-Received: by 2002:a62:8c8d:0:b029:301:7970:ab46 with SMTP id m135-20020a628c8d0000b02903017970ab46mr12108421pfd.48.1624280771901; Mon, 21 Jun 2021 06:06:11 -0700 (PDT) MIME-Version: 1.0 References: <20210620233620.391576-1-hjl.tools@gmail.com> <20210620233620.391576-5-hjl.tools@gmail.com> <878s33n0q0.fsf@oldenburg.str.redhat.com> <875yy7jry9.fsf@oldenburg.str.redhat.com> In-Reply-To: <875yy7jry9.fsf@oldenburg.str.redhat.com> From: "H.J. Lu" Date: Mon, 21 Jun 2021 06:05:35 -0700 Message-ID: Subject: Re: [PATCH 4/4] Update tests for protected data and function symbols To: Florian Weimer Cc: "H.J. Lu via Libc-alpha" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3025.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2021 13:06:17 -0000 On Mon, Jun 21, 2021 at 5:57 AM Florian Weimer wrote: > > * H. J. Lu: > > > On Mon, Jun 21, 2021 at 12:19 AM Florian Weimer wrote: > >> > >> * H. J. Lu via Libc-alpha: > >> > >> > Protected data and function symbols don't work well without > >> > -fsingle-global-definition: > >> > > >> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37611 > >> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44166 > >> > > >> > 1. Compile tst-protected1[ab].c and tst-protected1mod[ab].c with > >> > -fsingle-global-definition if possible so that GOT entries are used > >> > for undefined data accesses. > >> > 2. Add tests for protected function pointers. > >> > 3. Build tst-prelink.c without single global definition to keepp COPY > >> > relocation. > >> > >> I think these tests need to check that the statically linked bits from > >> GCC have been built with -fsingle-global-definition. I don't think > >> that's guaranteed even if GCC supports -fsingle-global-definition. > >> > >> I think this shows the limitation of the single bit of markup: the > >> statically linked GCC bits are all hidden, so setting > >> GNU_PROPERTY_1_NEEDED_SINGLE_GLOBAL_DEFINITION so is not correct as a > >> marker to *require* a single global definition, but neither is not > >> setting it because libgcc.a etc. should be *compatible* with > >> GNU_PROPERTY_1_NEEDED_SINGLE_GLOBAL_DEFINITION. > > > > The output bit is ORed from all inputs. When one input object file doesn't > > work with COPY relocation, the final output object is marked incompatible > > with COPY relocation even if some inputs do work with COPY relocation. > > But for the main executable, it has to work the other way round. > We need a new property which is ANDed for executables. -- H.J.