public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Alexander Monakov <amonakov@ispras.ru>
To: "Martin Liška" <mliska@suse.cz>
Cc: gcc-patches@gcc.gnu.org, Richard Biener <richard.guenther@gmail.com>
Subject: Re: [PATCH 3/3] lto-plugin: implement LDPT_GET_API_VERSION
Date: Thu, 16 Jun 2022 11:00:47 +0300 (MSK)	[thread overview]
Message-ID: <146a46f1-3a56-48c5-386f-c15633cc6781@ispras.ru> (raw)
In-Reply-To: <bb9bf388-21d7-80d8-8474-6453fae50a49@suse.cz>

On Thu, 16 Jun 2022, Martin Liška wrote:

> Hi.
> 
> I'm sending updated version of the patch where I addressed the comments.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> 
> Ready to be installed?

I noticed a typo (no objection on the substance on the patch from me):

> --- a/include/plugin-api.h
> +++ b/include/plugin-api.h
> @@ -483,6 +483,34 @@ enum ld_plugin_level
>    LDPL_FATAL
>  };
>  
> +/* Contract between a plug-in and a linker.  */
> +
> +enum linker_api_version
> +{
> +   /* The linker/plugin do not implement any of the API levels below, the API
> +       is determined solely via the transfer vector.  */
> +   LAPI_UNSPECIFIED = 0,
> +
> +   /* API level v1.  The linker provides add_symbols_v3, add_symbols_v2,

This should be '*get_*symbols_v3, add_symbols_v2'.

> +      the plugin will use that and not any lower versions.
> +      claim_file is thread-safe on the plugin side and
> +      add_symbols on the linker side.  */
> +   LAPI_V1 = 1
> +};
> +
> +/* The linker's interface for API version negotiation.  A plug-in calls
> +  the function (with its IDENTIFIER and VERSION), plus minimal and maximal
> +  version of linker_api_version is provided.  Linker then returns selected
> +  API version and provides its IDENTIFIER and VERSION.  */
> +
> +typedef
> +enum linker_api_version
> +(*ld_plugin_get_api_version) (const char *plugin_identifier, unsigned plugin_version,
> +			      enum linker_api_version minimal_api_supported,
> +			      enum linker_api_version maximal_api_supported,
> +			      const char **linker_identifier,
> +			      unsigned *linker_version);

IIRC Richi asked to mention which side owns the strings (does the receiver need
to 'free' or 'strdup' them). Perhaps we could say they are owned by the
originating side, but it might be even better to say they are unchanging to
allow simply using string literals. Perhaps add something like this to the
comment?

    Identifier pointers remain valid as long as the plugin is loaded.

>  /* Values for the tv_tag field of the transfer vector.  */
>  
>  enum ld_plugin_tag
> @@ -521,6 +549,7 @@ enum ld_plugin_tag
>    LDPT_REGISTER_NEW_INPUT_HOOK,
>    LDPT_GET_WRAP_SYMBOLS,
>    LDPT_ADD_SYMBOLS_V2,
> +  LDPT_GET_API_VERSION,
>  };

I went checking if this is in sync with Binutils header and noticed that
get_wrap_symbols and add_symbols_v2 are not even mentioned on the wiki page with
plugin API documentation.

Alexander

  reply	other threads:[~2022-06-16  8:00 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-02  7:51 [PATCH] Support LDPT_GET_SYMBOLS_V3 Martin Liška
2022-05-04 12:20 ` [PATCH] lto-plugin: add support for feature detection Martin Liška
2022-05-04 12:32   ` Alexander Monakov
2022-05-04 12:41     ` Martin Liška
2022-05-04 13:10       ` Alexander Monakov
2022-05-04 13:31         ` Martin Liška
2022-05-04 15:06           ` Bernhard Reutner-Fischer
2022-05-05  6:15           ` Richard Biener
2022-05-05  6:31             ` Richard Biener
2022-05-05 10:52               ` Alexander Monakov
2022-05-05 12:50                 ` Martin Liška
2022-05-06 14:46                   ` Alexander Monakov
2022-05-09  9:05                     ` Martin Liška
2022-05-15  6:57                     ` Rui Ueyama
2022-05-15  7:53                       ` Alexander Monakov
2022-05-15  8:07                         ` Rui Ueyama
2022-05-15  8:50                           ` Alexander Monakov
2022-05-15 10:01                             ` Rui Ueyama
2022-05-15 10:09                               ` Alexander Monakov
2022-05-15 10:32                                 ` Rui Ueyama
2022-05-15 11:37                                   ` Alexander Monakov
2022-05-15 11:52                                     ` Rui Ueyama
2022-05-15 12:07                                       ` Alexander Monakov
2022-05-16  2:41                                         ` Rui Ueyama
2022-05-16  6:38                                           ` Alexander Monakov
2022-05-16  8:37                                             ` Rui Ueyama
2022-05-16  9:10                                               ` Richard Biener
2022-05-16  9:15                                                 ` Alexander Monakov
2022-05-16  9:25                                                 ` Jan Hubicka
2022-05-16  9:38                                                   ` Martin Liška
2022-05-16  9:50                                                     ` Jan Hubicka
2022-05-16 10:22                                                       ` Richard Biener
2022-05-16  9:58                                                     ` Rui Ueyama
2022-05-16 10:28                                                       ` Richard Biener
2022-05-16 10:44                                                         ` Rui Ueyama
2022-05-16 12:04                                                         ` Martin Liška
2022-05-16 13:07                                                           ` Rui Ueyama
2022-05-16 13:38                                                             ` Alexander Monakov
2022-05-16 15:16                                                           ` Alexander Monakov
2022-05-17  6:20                                                             ` Richard Biener
2022-05-17 13:44                                                             ` Martin Liška
2022-06-16  6:59                                                               ` [PATCH 1/3] lto-plugin: support LDPT_GET_SYMBOLS_V3 Martin Liška
2022-06-20  9:23                                                                 ` Richard Biener
2022-06-16  7:01                                                               ` [PATCH 2/3] lto-plugin: make claim_file_handler thread-safe Martin Liška
2022-06-20  9:32                                                                 ` Richard Biener
2022-06-20 10:20                                                                   ` Martin Liška
2022-06-21  7:56                                                                     ` Richard Biener
2022-06-21  8:43                                                                       ` Martin Liška
2022-06-24  8:37                                                                         ` Richard Biener
2022-06-16  7:01                                                               ` [PATCH 3/3] lto-plugin: implement LDPT_GET_API_VERSION Martin Liška
2022-06-16  8:00                                                                 ` Alexander Monakov [this message]
2022-06-16 12:25                                                                   ` Martin Liška
2022-06-20  9:35                                                                     ` Richard Biener
2022-06-20 13:01                                                                       ` Martin Liška
2022-06-30  6:43                                                                         ` Rui Ueyama
2022-06-30  8:42                                                                           ` Martin Liška
2022-07-01  6:36                                                                             ` Richard Biener
2022-07-04 14:17                                                                               ` Martin Liška
2022-07-07  2:19                                                                                 ` Rui Ueyama
2022-07-08  8:42                                                                                   ` Martin Liška
2022-07-08 12:41                                                                                     ` Alexander Monakov
2022-07-11  7:23                                                                                       ` Rui Ueyama
2022-07-11  9:16                                                                                         ` Alexander Monakov
2022-07-11  9:55                                                                                           ` Richard Biener
2022-07-11 10:51                                                                                             ` Martin Liška
2022-07-11 12:24                                                                                               ` Rui Ueyama
2022-07-11 12:38                                                                                                 ` Alexander Monakov
2022-07-11 12:51                                                                                                 ` Martin Liška
2022-07-12  1:36                                                                                                   ` Rui Ueyama
2022-07-11 16:35                                                                                               ` Alexander Monakov
2022-07-12  6:28                                                                                                 ` Richard Biener
2022-07-12  7:36                                                                                                   ` Martin Liška
2022-07-12 11:50                                                                                                     ` Rui Ueyama
2022-07-12 13:21                                                                                                       ` Richard Biener
2022-07-12 13:31                                                                                                       ` Martin Liška
2022-07-13  7:44                                                                                                         ` Rui Ueyama

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=146a46f1-3a56-48c5-386f-c15633cc6781@ispras.ru \
    --to=amonakov@ispras.ru \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=mliska@suse.cz \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).