diff mbox series

Annotate tst_brk with noreturn

Message ID 20201125100910.25617-1-rpalethorpe@suse.com
State Rejected
Headers show
Series Annotate tst_brk with noreturn | expand

Commit Message

Richard Palethorpe Nov. 25, 2020, 10:09 a.m. UTC
Prevents compiler warnings when tst_brk is placed at the end of a
non-void function's control flow. Indeed tst_brk never returns control
to the caller.

Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
---
 include/tst_test.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Petr Vorel Nov. 25, 2020, 11:09 a.m. UTC | #1
Hi Richard,

> Prevents compiler warnings when tst_brk is placed at the end of a
> non-void function's control flow. Indeed tst_brk never returns control
> to the caller.

> Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
> ---
>  include/tst_test.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

> diff --git a/include/tst_test.h b/include/tst_test.h
> index c91d3f18a..b49243e4b 100644
> --- a/include/tst_test.h
> +++ b/include/tst_test.h
> @@ -70,7 +70,7 @@ void tst_resm_hexd_(const char *file, const int lineno, int ttype,
>   */
>  void tst_brk_(const char *file, const int lineno, int ttype,
>                const char *fmt, ...)
> -              __attribute__ ((format (printf, 4, 5)));
> +              __attribute__ ((format (printf, 4, 5))) LTP_ATTRIBUTE_NORETURN;

IMHO this is wrong since 6440c5d0d ("newlib: Allow SAFE_MACROS to be called from cleanup")

Kind regards,
Petr
Cyril Hrubis Nov. 25, 2020, 11:09 a.m. UTC | #2
Hi!
> Prevents compiler warnings when tst_brk is placed at the end of a
> non-void function's control flow. Indeed tst_brk never returns control
> to the caller.

It actually does, in a case of SAFE_MACROS() called from test cleanup().

Which is the reason we cannot annotate the function because if we do so
the compiler will not include the function epilog and tests would crash
in a case that something went wrong in a cleanup().
diff mbox series

Patch

diff --git a/include/tst_test.h b/include/tst_test.h
index c91d3f18a..b49243e4b 100644
--- a/include/tst_test.h
+++ b/include/tst_test.h
@@ -70,7 +70,7 @@  void tst_resm_hexd_(const char *file, const int lineno, int ttype,
  */
 void tst_brk_(const char *file, const int lineno, int ttype,
               const char *fmt, ...)
-              __attribute__ ((format (printf, 4, 5)));
+              __attribute__ ((format (printf, 4, 5))) LTP_ATTRIBUTE_NORETURN;
 
 #define tst_brk(ttype, arg_fmt, ...)						\
 	({									\