public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org, Szabolcs Nagy <szabolcs.nagy@arm.com>
Subject: Re: [PATCH v3 3/5] elf: Make the tunable struct definition internal only
Date: Wed, 13 Jan 2021 14:38:14 -0300	[thread overview]
Message-ID: <7737720b-bad9-6384-fc4f-420dd71ce90e@linaro.org> (raw)
In-Reply-To: <7b64c9aa6cd771ec569c51d50395147e4b22acc5.1610471272.git.szabolcs.nagy@arm.com>



On 12/01/2021 14:22, Szabolcs Nagy via Libc-alpha wrote:
> The representation of the tunables including type information and
> the tunable list structure are only used in the implementation not
> in the tunables api that is exposed to usage within glibc.
> 
> This patch moves the representation related definitions into the
> existing dl-tunable-types.h and uses that only for implementation.
> 
> The tunable callback and related types are moved to dl-tunables.h
> because they are part of the tunables api.
> 
> This reduces the details exposed in the tunables api so the internals
> are easier to change.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  elf/dl-tunable-types.h   | 42 ++++++++++++++++++++++++++++++----------
>  elf/dl-tunables.h        | 35 ++++++++-------------------------
>  scripts/gen-tunables.awk |  4 +++-
>  3 files changed, 43 insertions(+), 38 deletions(-)
> 
> diff --git a/elf/dl-tunable-types.h b/elf/dl-tunable-types.h
> index 8f6a383dcc..05d4958e1c 100644
> --- a/elf/dl-tunable-types.h
> +++ b/elf/dl-tunable-types.h
> @@ -1,4 +1,4 @@
> -/* Tunable type information.
> +/* Internal representation of tunables.
>  
>     Copyright (C) 2016-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
> @@ -18,8 +18,14 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #ifndef _TUNABLE_TYPES_H_
> -# define _TUNABLE_TYPES_H_
> +#define _TUNABLE_TYPES_H_
> +
> +/* Note: This header is included in the generated dl-tunables-list.h and
> +   only used internally in the tunables implementation in dl-tunables.c.  */
> +
> +#include <stdbool.h>
>  #include <stddef.h>
> +#include <stdint.h>
>  
>  typedef enum
>  {
> @@ -36,14 +42,6 @@ typedef struct
>    int64_t max;
>  } tunable_type_t;
>  
> -typedef union
> -{
> -  int64_t numval;
> -  const char *strval;
> -} tunable_val_t;
> -
> -typedef void (*tunable_callback_t) (tunable_val_t *);
> -
>  /* Security level for tunables.  This decides what to do with individual
>     tunables for AT_SECURE binaries.  */
>  typedef enum
> @@ -58,5 +56,29 @@ typedef enum
>    TUNABLE_SECLEVEL_NONE = 2,
>  } tunable_seclevel_t;
>  
> +/* A tunable.  */
> +struct _tunable
> +{
> +  const char *name;			/* Internal name of the tunable.  */
> +  tunable_type_t type;			/* Data type of the tunable.  */
> +  tunable_val_t val;			/* The value.  */
> +  bool initialized;			/* Flag to indicate that the tunable is
> +					   initialized.  */
> +  tunable_seclevel_t security_level;	/* Specify the security level for the
> +					   tunable with respect to AT_SECURE
> +					   programs.  See description of
> +					   tunable_seclevel_t to see a
> +					   description of the values.
> +
> +					   Note that even if the tunable is
> +					   read, it may not get used by the
> +					   target module if the value is
> +					   considered unsafe.  */
> +  /* Compatibility elements.  */
> +  const char *env_alias;		/* The compatibility environment
> +					   variable name.  */
> +};
> +
> +typedef struct _tunable tunable_t;
>  
>  #endif

Ok.

> diff --git a/elf/dl-tunables.h b/elf/dl-tunables.h
> index 518342a300..1773c7e254 100644
> --- a/elf/dl-tunables.h
> +++ b/elf/dl-tunables.h
> @@ -21,8 +21,6 @@
>  #ifndef _TUNABLES_H_
>  #define _TUNABLES_H_
>  
> -#include <stdbool.h>
> -
>  #if !HAVE_TUNABLES
>  static inline void
>  __always_inline
> @@ -31,34 +29,17 @@ __tunables_init (char **unused __attribute__ ((unused)))
>    /* This is optimized out if tunables are not enabled.  */
>  }
>  #else
> -
> +# include <stdbool.h>
>  # include <stddef.h>
> -# include "dl-tunable-types.h"
> +# include <stdint.h>
>  
> -/* A tunable.  */
> -struct _tunable
> +typedef union
>  {
> -  const char *name;			/* Internal name of the tunable.  */
> -  tunable_type_t type;			/* Data type of the tunable.  */
> -  tunable_val_t val;			/* The value.  */
> -  bool initialized;			/* Flag to indicate that the tunable is
> -					   initialized.  */
> -  tunable_seclevel_t security_level;	/* Specify the security level for the
> -					   tunable with respect to AT_SECURE
> -					   programs.  See description of
> -					   tunable_seclevel_t to see a
> -					   description of the values.
> -
> -					   Note that even if the tunable is
> -					   read, it may not get used by the
> -					   target module if the value is
> -					   considered unsafe.  */
> -  /* Compatibility elements.  */
> -  const char *env_alias;		/* The compatibility environment
> -					   variable name.  */
> -};
> -
> -typedef struct _tunable tunable_t;
> +  int64_t numval;
> +  const char *strval;
> +} tunable_val_t;
> +
> +typedef void (*tunable_callback_t) (tunable_val_t *);
>  
>  /* Full name for a tunable is top_ns.tunable_ns.id.  */
>  # define TUNABLE_NAME_S(top,ns,id) #top "." #ns "." #id

Ok.

> diff --git a/scripts/gen-tunables.awk b/scripts/gen-tunables.awk
> index 622199061a..cda12ef62e 100644
> --- a/scripts/gen-tunables.awk
> +++ b/scripts/gen-tunables.awk
> @@ -156,8 +156,10 @@ END {
>    }
>    print "} tunable_id_t;\n"
>  
> -  # Finally, the tunable list.
>    print "\n#ifdef TUNABLES_INTERNAL"
> +  # Internal definitions.
> +  print "# include \"dl-tunable-types.h\""
> +  # Finally, the tunable list.
>    print "static tunable_t tunable_list[] attribute_relro = {"
>    for (tnm in types) {
>      split (tnm, indices, SUBSEP);
> 

Ok.

  reply	other threads:[~2021-01-13 17:38 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-12 17:21 [PATCH v3 0/5] fix ifunc with static pie [BZ #27072] Szabolcs Nagy
2021-01-12 17:21 ` [PATCH v3 1/5] configure: Require PI_STATIC_AND_HIDDEN for static pie Szabolcs Nagy
2021-01-12 18:38   ` Adhemerval Zanella
2021-01-12 17:22 ` [PATCH v3 2/5] Make libc symbols hidden in static PIE Szabolcs Nagy
2021-01-12 23:09   ` H.J. Lu
2021-01-13  0:02     ` H.J. Lu
2021-01-13  0:33       ` H.J. Lu
2021-01-13  1:19         ` H.J. Lu
2021-01-13  9:50           ` Szabolcs Nagy
2021-01-14 11:17             ` Szabolcs Nagy
2021-01-14 15:39               ` H.J. Lu
2021-01-15  3:36               ` H.J. Lu
2021-01-15  4:29                 ` H.J. Lu
2021-01-15 11:25                 ` Szabolcs Nagy
2021-01-15 13:43                   ` H.J. Lu
2021-01-15 14:27                     ` Szabolcs Nagy
2021-01-15 15:28                       ` H.J. Lu
2021-01-15 22:42                         ` H.J. Lu
2021-01-16  0:41                           ` H.J. Lu
2021-01-16 13:18                             ` H.J. Lu
2021-01-18 16:22                               ` Szabolcs Nagy
2021-01-12 17:22 ` [PATCH v3 3/5] elf: Make the tunable struct definition internal only Szabolcs Nagy
2021-01-13 17:38   ` Adhemerval Zanella [this message]
2021-01-12 17:22 ` [PATCH v3 4/5] elf: Avoid RELATIVE relocs in __tunables_init Szabolcs Nagy
2021-01-13 17:42   ` Adhemerval Zanella
2021-01-12 17:23 ` [PATCH v3 5/5] csu: Move static pie self relocation later [BZ #27072] Szabolcs Nagy
2021-01-12 22:55   ` H.J. Lu
2021-01-14 15:49     ` H.J. Lu
2021-01-14 15:52       ` H.J. Lu
2021-01-14 16:01         ` H.J. Lu
2021-01-14 16:26           ` H.J. Lu
2021-01-14 17:19             ` Szabolcs Nagy
2021-01-14 17:59               ` Szabolcs Nagy
2021-01-14 17:05           ` Szabolcs Nagy

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=7737720b-bad9-6384-fc4f-420dd71ce90e@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    --cc=szabolcs.nagy@arm.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).