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.
next prev parent 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).