From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x72c.google.com (mail-qk1-x72c.google.com [IPv6:2607:f8b0:4864:20::72c]) by sourceware.org (Postfix) with ESMTPS id B34323858C51 for ; Tue, 12 Jul 2022 06:29:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B34323858C51 Received: by mail-qk1-x72c.google.com with SMTP id o26so5570105qkl.6 for ; Mon, 11 Jul 2022 23:29:03 -0700 (PDT) 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:content-transfer-encoding; bh=gsw62wg5JJi/PD/GoF4IdYNINoMJ9kcbgrrGLu0I/lM=; b=Jb5l/MFP/509/P18ERneROIpQDvOx8aSs6ZfD3bamm0+4hfWxV1RitdI2FJrVXrCBt SsoH3W9Eu4pbNcK66aCEyPOgmSDY6aiV4Ua+ooE8b4R7ANv8bE4upyBDsRuK61g+V1Ro JAEmN5ZYbYHGsTTZc8vBR9RmQEHyswEM360V/0fOMtwqJsaOjSBNiaKKWrQle71+/D6f dminTyMVCKjvQTJ9zUNVUJMVd5LLKsB4smT3sKEDqbiYGmffpecHWRKLjw3pU4sMp8cB hgq4q/3lYi4elbi8TnmnWso+z2SNBwE4GfDCmEMk13sBOxsByADK8mbkOP8KE+7nnZd4 DbHw== X-Gm-Message-State: AJIora/+q/pOjwZrqSkeYOT4DyCZUWtXt9CODrwoAM+Z7GIhbU1sWThp X8+dDOzJe6RxskosaNbl+sP0ZRR9YSKVHubXUtE= X-Google-Smtp-Source: AGRyM1ugee3jpRinNr0sJ5N88crU3RrqLJnBUwWCpKgRO+lP8vnPEGP1ykwmD6cAqkcvxChprWLTqqMzT2NmqGnK90E= X-Received: by 2002:a37:a581:0:b0:6b5:5d62:d208 with SMTP id o123-20020a37a581000000b006b55d62d208mr13724536qke.581.1657607343038; Mon, 11 Jul 2022 23:29:03 -0700 (PDT) MIME-Version: 1.0 References: <803a0290-3909-b9c5-2461-b1740a00c63a@suse.cz> <146a46f1-3a56-48c5-386f-c15633cc6781@ispras.ru> <37b52d36-d1dd-f291-0baa-0cf670493692@suse.cz> <4e3df681-9523-4781-d324-9a6e230f495a@suse.cz> <3dc13790-a22d-c4d6-6cfe-ab9b567968ff@suse.cz> <862b4381-c377-ac7a-476c-e7ced3c29c2c@ispras.ru> <3bde5aa4-f3d7-63e8-8b4f-29b29f00293f@suse.cz> <41751c29-5b9b-671d-de47-e1c13ea78b7@ispras.ru> In-Reply-To: <41751c29-5b9b-671d-de47-e1c13ea78b7@ispras.ru> From: Richard Biener Date: Tue, 12 Jul 2022 08:28:52 +0200 Message-ID: Subject: Re: [PATCH 3/3] lto-plugin: implement LDPT_GET_API_VERSION To: Alexander Monakov Cc: =?UTF-8?Q?Martin_Li=C5=A1ka?= , Rui Ueyama , GCC Patches Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.9 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, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2022 06:29:05 -0000 On Mon, Jul 11, 2022 at 6:35 PM Alexander Monakov wrot= e: > > On Mon, 11 Jul 2022, Martin Li=C5=A1ka wrote: > > > I've clarified that linker should return a value that is in range > > [minimal_api_supported, maximal_api_supported] and added an abort > > if it's not the case. > > I noticed that we are placing a trap for C++ consumers such as mold > by passing min/max_api_supported as enum values. Unlike C, C++ disallows > out-of-range enum values, so when mold does > > enum PluginLinkerAPIVersion { > LAPI_V0 =3D 0, > LAPI_V1, > }; > > get_api_version(const char *plugin_identifier, > unsigned plugin_version, > PluginLinkerAPIVersion minimal_api_supported, > PluginLinkerAPIVersion maximal_api_supported, > const char **linker_identifier, > const char **linker_version) { > > checks such as 'min_api_supported > LAPI_V1' can be optimized out. Also, > if a future tool passes LAPI_V2, it will trigger Clang's UBSan (GCC > -fsanitize-undefined=3Denum instruments loads but not retrieval of functi= on > arguments). > > I'd suggest to fix this on both sides by changing the arguments to plain > integer types. That's a good point - the enum itself is then also somewhat redundant if it just specifies symbolic names for 0, 1, ... but we can keep it for documentation purposes. > > Alexander