From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by sourceware.org (Postfix) with ESMTPS id 750443858D37 for ; Wed, 5 Jan 2022 14:55:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 750443858D37 Received: by mail-pl1-x632.google.com with SMTP id u16so29443674plg.9 for ; Wed, 05 Jan 2022 06:55:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=MuDy5oiEwIbNIpKYGCfz+T4Ja+xzHYYHggBh8HAdozY=; b=L9+Am6oOkZ0riE8p98JBzGJwEYZzPzCY06RavRH2mxVAJjI5+z1Ua3kW7Crls9VAfm QbOvTTTF4540nxIzphOomUh8qeOyENtJwTy71bexD31WEQlEJjupt4kttSP2+izR00sp qIgLHJayQF7XOShd1wx4cRndxXD/5V3A8BxIF5fHkpWAPh8sH5HoESfvnAGrl6sPHom7 dJmvyH+JhxF6ovSVlvHs9aJWTuNFaeJYXQIr/08ykD+mkTuftsH05vXSagmCS9RDjDjE 0ag7sRMpev1gUP/Fgalnp0arHT0qSOA5NY5qPiAjAl74AIMfMeXiFvS/vdXnLuuWHvbY wnbQ== X-Gm-Message-State: AOAM531pCOf/Cw1l6TNt/zCa1RDg/YII2E6OXP/Ms+8Dt0k6kVeilxdm TjXXyM3O0zCXGybgSnuFvRjPNu+GTBusTJNDX0dYRgcR X-Google-Smtp-Source: ABdhPJz+NwkrnsJZJ3XN+haQkRQHzcZI1bz6RVCbg7XdZaag73CHuHu34pzSb9Dusf7J3dkQOV9UVyWobTIo/QDpdJA= X-Received: by 2002:a17:903:191:b0:148:e4d3:e8a9 with SMTP id z17-20020a170903019100b00148e4d3e8a9mr53678207plg.101.1641394506586; Wed, 05 Jan 2022 06:55:06 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: "H.J. Lu" Date: Wed, 5 Jan 2022 06:54:30 -0800 Message-ID: Subject: Re: [PATCH] x86-64: restrict PC32 -> PLT32 conversion To: Jan Beulich Cc: Binutils Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3021.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham 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: Wed, 05 Jan 2022 14:55:08 -0000 On Wed, Jan 5, 2022 at 3:14 AM Jan Beulich wrote: > > Neither non-64-bit code nor uses with a non-zero offset from a symbol > should be converted to PLT32, as an eventual PLT entry would not express > what was requested. > > --- a/gas/config/tc-i386.c > +++ b/gas/config/tc-i386.c > @@ -8857,6 +8857,8 @@ output_branch (void) > off = 0; > } > > + frag_now->tc_frag_data.code64 = flag_code == CODE_64BIT; > + > /* 1 possible extra opcode + 4 byte displacement go in var part. > Pass reloc in fr_var. */ > frag_var (rs_machine_dependent, 5, i.reloc[0], subtype, sym, off, p); > @@ -8985,8 +8987,8 @@ output_jump (void) > } > > #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) > - if (size == 4 > - && jump_reloc == NO_RELOC > + if (flag_code == CODE_64BIT && size == 4 > + && jump_reloc == NO_RELOC && i.op[0].disps->X_add_number == 0 > && need_plt32_p (i.op[0].disps->X_add_symbol)) > jump_reloc = BFD_RELOC_X86_64_PLT32; > #endif > @@ -12289,7 +12291,8 @@ md_estimate_size_before_relax (fragS *fr > else if (size == 2) > reloc_type = BFD_RELOC_16_PCREL; > #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) > - else if (need_plt32_p (fragP->fr_symbol)) > + else if (fragP->tc_frag_data.code64 && fragP->fr_offset == 0 > + && need_plt32_p (fragP->fr_symbol)) > reloc_type = BFD_RELOC_X86_64_PLT32; > #endif > else > --- a/gas/config/tc-i386.h > +++ b/gas/config/tc-i386.h > @@ -283,6 +283,7 @@ struct i386_tc_frag_data > unsigned int mf_type : 3; > unsigned int classified : 1; > unsigned int branch_type : 3; > + unsigned int code64 : 1; /* Only set by output_branch for now. */ > }; > > /* We need to emit the right NOP pattern in .align frags. This is > OK. Thanks. -- H.J.