From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) by sourceware.org (Postfix) with ESMTPS id 8DB593858C52 for ; Fri, 1 Apr 2022 01:33:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8DB593858C52 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=maskray.me Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-io1-f45.google.com with SMTP id b16so1647074ioz.3 for ; Thu, 31 Mar 2022 18:33:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=yv972FWa8BJ3ZngPfVaA7YYWnXR3h0sZ76Q3xe6smW8=; b=cm24NZnPhvfG6A0WgfZT3on9+I1tm5NyveLPCdgjaIB0/cfNYEzSmREZ/Dj+I7wMSF t4Q9kGJULL9eAFweAO6i0PL1YnfI+Kd+UirNJGsjMtWXqtLnu/8GV4uRfZaNYJg/P6/o r+OEOXuEgkEJnEgsciHUAKlAXvhArbBJTU/88bSe8+VG7p6cP5HXQA9KG3Hagv/Zj6Sx xRczMZqDHowAxgCPPQwzmNGYoxbJezo64nMX2jV8tRZNaqr5vUo5r608nIw3LNsxTITQ Ib0Cv7ZzMwSRn1vF4l6eqjt9ZimQynZiCHlFkOCH4umvWohW502bm0o5dEedefbhJJa0 28UA== X-Gm-Message-State: AOAM530V1pJyZ030kjYjfMjj+FAomwm/Jd3iEbsHHZzB2d+Cb5ouCmnI Q2dh+teyCGX2XoM8fVJ2JeY= X-Google-Smtp-Source: ABdhPJwWjrKVzmsO+UvP2mYbBoQrXMuT66PuMBZZPKsHBdFcJn8KJXypiFgg9UWbY8ZkYWC2yQ4bKg== X-Received: by 2002:a6b:cd0c:0:b0:649:adb8:79eb with SMTP id d12-20020a6bcd0c000000b00649adb879ebmr15217441iog.138.1648776826883; Thu, 31 Mar 2022 18:33:46 -0700 (PDT) Received: from localhost ([199.117.93.194]) by smtp.gmail.com with ESMTPSA id s13-20020a6bdc0d000000b006408888551dsm627659ioc.8.2022.03.31.18.33.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 31 Mar 2022 18:33:46 -0700 (PDT) Date: Thu, 31 Mar 2022 18:33:43 -0700 From: Fangrui Song To: Jan Beulich Cc: binutils@sourceware.org, Alan Modra , Nick Clifton Subject: Re: [PATCH] gas: copy st_size only if unset Message-ID: <20220401013343.jeb5ptalaumk7cdq@gmail.com> References: <20220331033729.1813121-1-i@maskray.me> <2b2801ff-0bc4-2680-2526-74dd87be3ea0@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <2b2801ff-0bc4-2680-2526-74dd87be3ea0@suse.com> X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_INFOUSMEBIZ, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Apr 2022 01:33:49 -0000 On 2022-03-31, Jan Beulich wrote: >On 31.03.2022 05:37, Fangrui Song wrote: >> For >> ``` >> .size foo1, 1 >> foo1: >> >> .set bar1, foo1 >> .size bar1, 2 >> .size bar2, 2 >> .set bar2, foo1 >> >> .set bar3, foo2 >> .size bar3, 2 >> .size bar4, 2 >> .set bar4, foo2 >> >> .size foo2, 1 >> foo2: >> ``` >> >> bar1's size is 2 while bar2, bar3, bar4's is 1. The behavior of bar1 makes sense >> (generally directives on the new symbol should win) and is relied upon by glibc >> stdio-common/errlist.c: > >But what about > >foo1: > .size foo1, 1 >foo2: > .size foo2, 2 > .set bar, foo1 > .set bar, foo2 > >I would think bar's size should end up being 2 in this case, whereas I >think it would end up being 1 with your change. > >Jan bar's size is 2. The patch has no effect, because `dest` variables for the two invocations are (surprisingly) different! bar is a volatile symbol (created by .set instead of .equiv). The second .set directive creates calls gas.c/read.c:3273 symbol_clone (symbolP, 1). That said, I think it makes sense to add tests for this as well. I'll use the following if this patch is accepted. .text .size foo1, 1 foo1: .set bar1, foo1 .size bar1, 2 .size bar2, 2 .set bar2, foo1 .set bar3, foo2 .size bar3, 2 .size bar4, 2 .set bar4, foo2 .set bar5, foo1 .set bar6, foo2 .size foo2, 3 foo2: .set bar7, foo1 .set bar7, foo2