From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id 14C583858D20 for ; Wed, 23 Aug 2023 00:27:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 14C583858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-68a410316a2so2045052b3a.0 for ; Tue, 22 Aug 2023 17:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692750450; x=1693355250; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=yGSz0qUEXKjRPw3YU/ddn8mL6Ay/5mk+SrAf+V96FIY=; b=c7Lnv0WukjZiBjd01D+l9By3pjGjm93ymS88hUtB2KxP+cZYON0L2XXzM9lfw5LG3Y Wlotj9TNLV07mQ1OEG+jfTktCD4CCgiuczWnS34oaNQZdF8cD/aoRz/RsaYoEeidn1Pq zmJmZ2F0sYPIjL8PQ7Ixom5tzIk3/7m43g2bobRpmTKfMwa2RtzAytqDEXpWYgp/Px0Q iExy6aA9Z9Z3rZFMqmRtCHe/Sp/Wr4+jMPiPg2TpCGUjwdZrS794JqkrVxDj176c2v5d YslY8tn8NLeLSkfk5BZU7KCTmhgbuj6o+AMwYKOTKcUArStWTfdazaiz8oX6wIHRPnB4 wBDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692750450; x=1693355250; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yGSz0qUEXKjRPw3YU/ddn8mL6Ay/5mk+SrAf+V96FIY=; b=X6A4nTxrk7QIsf2NNUId9S5qu6HnddBXaMTKu0UvqXINx+08Hx9aF5Ve0SMa4rw3TL fKyuvc9B88j23DM49i0EFN+SWNhAgnLtE1ZjV5K3zUybMl52tz06ENe2x1dDa+gsdZGa SR0hoSQO3MvugSfha15Aak3rrWZU6upXlT2RToNjY9KQJBz4hETKMMbBZQZHHFOiQUgV 9uaQrbOUTDfupro4HkEc/FdPiwi4s8V3ZyreTXcvUTu+W5w2esxpptkhRSD+4LqJ8eDR J/Q35O6UnONR4kaMWdjJ+CJQNRnaWDAm78JkCS3BqrLqX91ACgFF8FWSGLEPz1gPtcSp PsPw== X-Gm-Message-State: AOJu0YzeLRNgOckAo5Jos4VyAQ/kFhu8ZPX4+f9Ws8yQt8S0Jqrg2Hlg 43mhSNQnV1ivZ/bisxjW0fI= X-Google-Smtp-Source: AGHT+IETaelYD58+TvbMtdvq/Q00fJIYisnzwMyc03Xo1opyfeAmgUeEWDl37tMYeMCIrUzPlOckng== X-Received: by 2002:a05:6a20:1456:b0:137:a3c9:aaa9 with SMTP id a22-20020a056a20145600b00137a3c9aaa9mr10564876pzi.16.1692750449853; Tue, 22 Aug 2023 17:27:29 -0700 (PDT) Received: from squeak.grove.modra.org (158.106.96.58.static.exetel.com.au. [58.96.106.158]) by smtp.gmail.com with ESMTPSA id x24-20020aa784d8000000b006825003a276sm8263639pfn.42.2023.08.22.17.27.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Aug 2023 17:27:29 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 2A1991140F34; Wed, 23 Aug 2023 09:57:26 +0930 (ACST) Date: Wed, 23 Aug 2023 09:57:26 +0930 From: Alan Modra To: Paul Iannetta Cc: binutils@sourceware.org Subject: Re: [PATCH] kvx: fix 32-bit build and validation Message-ID: References: <20230822160142.ocnjgkuboicpncii@ws2202.lin.mbt.kalray.eu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230822160142.ocnjgkuboicpncii@ws2202.lin.mbt.kalray.eu> X-Spam-Status: No, score=-3028.2 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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Tue, Aug 22, 2023 at 06:01:42PM +0200, Paul Iannetta via Binutils wrote: > kvx-*-*) > - targ_defvec=kvx_elf32_vec > -#ifdef BFD64 > - targ64_selvecs=kvx_elf64_vec > -#endif > + targ_defvec=kvx_elf64_vec > + targ_selvecs="kvx_elf64_vec kvx_elf32_vec" > + want64=true It isn't necessary to put kvx_elf64_vec into targ_selvecs, but doesn't hurt. I mention this only because.. > - kvx_elf64_vec) tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa" ;; > - kvx_elf64_linux_vec) tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa" ;; > + kvx_elf64_vec) tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa"; target_size=64 ;; > + kvx_elf64_linux_vec) tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa"; target_size=64 ;; ..I don't see kvx_elf64_linux_vec defined anywhere. Delete it? > if (class == classes->imm_classes) > { > - unsigned long long uval = token_val_p > + uint64_t uval = token_val_p > ? token->val > : strtoull (tok + (tok[0] == '-') + (tok[0] == '+'), NULL, 0); > - long long val = uval; > - long long pval = val < 0 ? -val : val; > - int neg_power2_p = val < 0 && !(pval & (pval - 1)); > + uint64_t sign_bit = ((~0ULL >> 1) ^ ~0ULL); > + int64_t pval = sign_bit & uval ? 1 + (~0ULL >> 1) - (~sign_bit & uval) : (~sign_bit & uval); > + int neg_power2_p = (sign_bit & uval) && !(pval & (pval - 1)); > unsigned int len = 8 * sizeof (pval) - __builtin_clzll (pval); > for (; class[cur].class_id != -1 > && ((unsigned int) (class[cur].sz < 0 ? - class[cur].sz - !neg_power2_p : class[cur].sz) < len I'm about to commit a patch I wrote yesterday that fixes ubsan warnings in the above, which will make this change unnecessary (except of course you might like to make the variables {u,}int64_t). The expressions you're using for sign_bit and pval to avoid signed integer overflow will no doubt work (unless unsigned long long is larger than uint64_t!), but are more complicated than the following. int64_t val = uval; int64_t pval = val < 0 ? -uval : uval; int neg_power2_p = val < 0 && !(uval & (uval - 1)); > index 3cf6b27976d..00aec6c858e 100644 > --- a/gas/config/tc-kvx.c > +++ b/gas/config/tc-kvx.c > @@ -1419,6 +1419,9 @@ kvx_set_cpu (void) > if (env.params.core == -1) > env.params.core = kvx_core_info->elf_core; > > + if (!strcmp (TARGET_OS, "linux-gnu")) > + env.params.osabi = ELFOSABI_GNU; > + > int kvx_bfd_mach; > print_insn = kvx_print_insn; > Do you really need this? Other targets automatically use ELFOSABI_GNU when the ELF bfd code detects known ABI extensions. See has_gnu_osabi. Hmm, likely you shouldn't be setting e_ident in tc-kvx.c:kvx_end. -- Alan Modra Australia Development Lab, IBM