[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] pkl: make PK_UNREACHABLE more verbose
|
From: |
Jose E. Marchesi |
|
Subject: |
Re: [PATCH v2] pkl: make PK_UNREACHABLE more verbose |
|
Date: |
Tue, 14 Feb 2023 21:21:33 +0100 |
|
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi Mohammad.
> 2023-02-14 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
>
> * common/pk-utils.h (pk_unreachable): New function declaration.
> (PK_UNREACHABLE): Changed the macro to use `pk_unreachable'.
> * common/pk-utils.c (pk_unreachable): New function definition.
> ---
> ChangeLog | 6 ++++++
> common/pk-utils.c | 9 +++++++++
> common/pk-utils.h | 17 ++++++++++-------
> 3 files changed, 25 insertions(+), 7 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index 4261944e..ccdbb8e7 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,9 @@
> +2023-02-14 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
> +
> + * common/pk-utils.h (pk_unreachable): New function declaration.
> + (PK_UNREACHABLE): Changed the macro to use `pk_unreachable'.
> + * common/pk-utils.c (pk_unreachable): New function definition.
> +
> 2023-02-14 Hannes Domani <ssbssa@yahoo.de>
>
> * pickles/pe.pk: Add size_of_stack_reserve.
> diff --git a/common/pk-utils.c b/common/pk-utils.c
> index 612f8a89..f5874d31 100644
> --- a/common/pk-utils.c
> +++ b/common/pk-utils.c
> @@ -222,3 +222,12 @@ pk_str_trim (char **str)
> while (isspace (*--end));
> *(end + 1) = '\0';
> }
> +
> +void
> +pk_unreachable (const char *funcname, const char *filename, int line)
> +{
> + fprintf (stderr, "unreachable reached in function %s (%s:%d)\n", funcname,
> + filename, line);
> + fflush (NULL);
> + abort ();
> +}
> diff --git a/common/pk-utils.h b/common/pk-utils.h
> index a4dba8e1..37713413 100644
> --- a/common/pk-utils.h
> +++ b/common/pk-utils.h
> @@ -66,13 +66,16 @@ char *pk_str_replace (const char *in, const char *search,
> const char *replace);
> /* Left and rigth trim the given string from whitespaces. */
> void pk_str_trim (char **str);
>
> +/* This function is called when the program reaches a supposedly
> + unreachable point; print an error message and abort the execution.
> +
> + FUNCNAME is the name of function in which PK_UNREACHABLE is invoked.
> + FILENAME and LINE are the location information of invocation
> + of this function. */
> +void pk_unreachable (const char *funcname, const char *filename, int line)
> + __attribute__ ((noreturn));
> +
> /* Diagnoses reaching unreachable code, and aborts. */
> -#define PK_UNREACHABLE() \
> - do \
> - { \
> - assert (0 && "Reached unreachable code."); \
> - abort (); \
> - } \
> - while (0)
> +#define PK_UNREACHABLE() pk_unreachable (__func__, __FILE__, __LINE__)
Is it really __func__ and not __FUNC__?
Is that portable?
(Never used it before.)
>
> #endif /* ! PK_UTILS_H */
Re: [RFC][PATCH] pkl: make PK_UNREACHABLE more verbose, Jose E. Marchesi, 2023/02/13
Re: [RFC][PATCH] pkl: make PK_UNREACHABLE more verbose, Arsen Arsenović, 2023/02/14