]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb, gdbserver, gdbsupport: use [[noreturn]] instead of ATTRIBUTE_NORETURN
authorSimon Marchi <simon.marchi@polymtl.ca>
Tue, 16 Jul 2024 20:02:12 +0000 (16:02 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 16 Jul 2024 22:30:45 +0000 (18:30 -0400)
C++ 11 has a built-in attribute for this, no need to use a compat macro.

Change-Id: I90e4220d26e8f3949d91761f8a13cd9c37da3875
Reviewed-by: Lancelot Six <lancelot.six@amd.com>
26 files changed:
gdb/command.h
gdb/dwarf2/loc.c
gdb/event-top.c
gdb/guile/guile-internal.h
gdb/linespec.c
gdb/nat/aarch64-mte-linux-ptrace.c
gdb/nat/fork-inferior.h
gdb/nat/linux-namespaces.c
gdb/python/python-internal.h
gdb/remote-sim.c
gdb/remote.c
gdb/symtab.c
gdb/target.c
gdb/target.h
gdb/tid-parse.c
gdb/tid-parse.h
gdb/top.h
gdb/utils.c
gdb/xml-support.c
gdb/xml-support.h
gdbserver/gdbreplay.cc
gdbserver/server.cc
gdbserver/utils.cc
gdbsupport/common-exceptions.cc
gdbsupport/common-exceptions.h
gdbsupport/errors.h

index 615f4e524aa95a0a14f892abc5fd656ce41c153c..0ceaf3e2a6dcf5f2f7e145f641708c301374b3e8 100644 (file)
@@ -876,7 +876,7 @@ extern void cmd_show_list (struct cmd_list_element *, int);
 /* Used everywhere whenever at least one parameter is required and
    none is specified.  */
 
-extern void error_no_arg (const char *) ATTRIBUTE_NORETURN;
+[[noreturn]] extern void error_no_arg (const char *);
 
 
 /* Command line saving and repetition.
index 5fea6683575d46a1b02bdfe1069329146cdf0a65..637c81f040e86db794363ebccafe732598e40037 100644 (file)
@@ -2253,7 +2253,7 @@ dwarf2_get_symbol_read_needs (gdb::array_view<const gdb_byte> expr,
 /* A helper function that throws an unimplemented error mentioning a
    given DWARF operator.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 unimplemented (unsigned int op)
 {
   const char *name = get_DW_OP_name (op);
index b81970d11bb11c909de98b43b1bf5654db90bc2f..cdc7874b7fad8435d10eb553e74ef410d8642979 100644 (file)
@@ -894,7 +894,7 @@ unblock_signal (int sig)
 
 /* Called to handle fatal signals.  SIG is the signal number.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 handle_fatal_signal (int sig)
 {
 #ifdef TUI
index be16fee0dd254f775c8554c0c7e0d54c058f7620..dea788450888f4a439c9756c632b03849aac23d1 100644 (file)
@@ -326,32 +326,32 @@ extern SCM gdbscm_make_type_error (const char *subr, int arg_pos,
 extern SCM gdbscm_make_invalid_object_error (const char *subr, int arg_pos,
                                             SCM bad_value, const char *error);
 
-extern void gdbscm_invalid_object_error (const char *subr, int arg_pos,
-                                        SCM bad_value, const char *error)
-   ATTRIBUTE_NORETURN;
+[[noreturn]] extern void gdbscm_invalid_object_error (const char *subr,
+                                                     int arg_pos,
+                                                     SCM bad_value,
+                                                     const char *error);
 
 extern SCM gdbscm_make_out_of_range_error (const char *subr, int arg_pos,
                                           SCM bad_value, const char *error);
 
-extern void gdbscm_out_of_range_error (const char *subr, int arg_pos,
-                                      SCM bad_value, const char *error)
-   ATTRIBUTE_NORETURN;
+[[noreturn]] extern void gdbscm_out_of_range_error (const char *subr,
+                                                   int arg_pos, SCM bad_value,
+                                                   const char *error);
 
 extern SCM gdbscm_make_misc_error (const char *subr, int arg_pos,
                                   SCM bad_value, const char *error);
 
-extern void gdbscm_misc_error (const char *subr, int arg_pos,
-                              SCM bad_value, const char *error)
-   ATTRIBUTE_NORETURN;
+[[noreturn]] extern void gdbscm_misc_error (const char *subr, int arg_pos,
+                                           SCM bad_value, const char *error);
 
-extern void gdbscm_throw (SCM exception) ATTRIBUTE_NORETURN;
+[[noreturn]] extern void gdbscm_throw (SCM exception);
 
 struct gdbscm_gdb_exception;
 extern SCM gdbscm_scm_from_gdb_exception
   (const gdbscm_gdb_exception &exception);
 
-extern void gdbscm_throw_gdb_exception (gdbscm_gdb_exception exception)
-  ATTRIBUTE_NORETURN;
+[[noreturn]] extern void gdbscm_throw_gdb_exception
+  (gdbscm_gdb_exception exception);
 
 extern void gdbscm_print_exception_with_stack (SCM port, SCM stack,
                                               SCM key, SCM args);
@@ -368,8 +368,8 @@ extern excp_matcher_func gdbscm_user_error_p;
 extern SCM gdbscm_make_memory_error (const char *subr, const char *msg,
                                     SCM args);
 
-extern void gdbscm_memory_error (const char *subr, const char *msg, SCM args)
-  ATTRIBUTE_NORETURN;
+[[noreturn]] extern void gdbscm_memory_error (const char *subr,
+                                             const char *msg, SCM args);
 
 /* scm-safe-call.c */
 
index eae4f9f44f07500e92b53605e8f481a3114efde4..9b0652c9967b00f400b8dce8c4c0f7b40f783440 100644 (file)
@@ -1544,7 +1544,7 @@ decode_line_2 (struct linespec_state *self,
 /* Throw an appropriate error when SYMBOL is not found (optionally in
    FILENAME).  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 symbol_not_found_error (const char *symbol, const char *filename)
 {
   if (symbol == NULL)
@@ -1586,7 +1586,7 @@ symbol_not_found_error (const char *symbol, const char *filename)
 /* Throw an appropriate error when an unexpected token is encountered 
    in the input.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 unexpected_linespec_error (linespec_parser *parser)
 {
   linespec_token token;
@@ -1613,7 +1613,7 @@ unexpected_linespec_error (linespec_parser *parser)
 
 /* Throw an undefined label error.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 undefined_label_error (const char *function, const char *label)
 {
   if (function != NULL)
@@ -1628,7 +1628,7 @@ undefined_label_error (const char *function, const char *label)
 
 /* Throw a source file not found error.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 source_file_not_found_error (const char *name)
 {
   throw_error (NOT_FOUND_ERROR, _("No source file named %s."), name);
index ace3e1880610dbc5b6d8ef50f2d24d23e1bf3de7..9e2a2ce1ab5ebd5edc66cec144e34cb203ed2580 100644 (file)
@@ -31,7 +31,7 @@
 /* Helper function to display various possible errors when reading
    MTE tags.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 aarch64_mte_linux_peek_error (int error)
 {
   switch (error)
@@ -53,7 +53,7 @@ aarch64_mte_linux_peek_error (int error)
 /* Helper function to display various possible errors when writing
    MTE tags.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 aarch64_mte_linux_poke_error (int error)
 {
   switch (error)
index f3e2f54b4e9208ff6c6e13341ea24b60413094e6..0fd42181ac71e7e032c6b9ff70d446a9875d5b04 100644 (file)
@@ -84,13 +84,12 @@ extern void gdb_flush_out_err ();
 /* Report an error that happened when starting to trace the inferior
    (i.e., when the "traceme_fun" callback is called on fork_inferior)
    and bail out.  This function does not return.  */
-extern void trace_start_error (const char *fmt, ...)
-  ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+[[noreturn]] extern void trace_start_error (const char *fmt, ...)
+  ATTRIBUTE_PRINTF (1, 2);
 
 /* Like "trace_start_error", but the error message is constructed by
    combining STRING with the system error message for errno.  This
    function does not return.  */
-extern void trace_start_error_with_name (const char *string)
-  ATTRIBUTE_NORETURN;
+[[noreturn]] extern void trace_start_error_with_name (const char *string);
 
 #endif /* NAT_FORK_INFERIOR_H */
index 36a245c6a4cb01d6c3102e29e24ae9ab56828664..9abd3d689eac999e16b6167a153f13976b441ca7 100644 (file)
@@ -548,7 +548,7 @@ mnsh_handle_readlink (int sock, const char *filename)
 
 /* The helper process.  Never returns.  Must be async-signal-safe.  */
 
-static void mnsh_main (int sock) ATTRIBUTE_NORETURN;
+[[noreturn]] static void mnsh_main (int sock);
 
 static void
 mnsh_main (int sock)
index f25cd3b7d78fd63b9cada71c79bb3b85f546152a..5db308821f266edba0c97a0458817a42ba8c9050 100644 (file)
@@ -948,7 +948,7 @@ private:
 int gdbpy_print_python_errors_p (void);
 void gdbpy_print_stack (void);
 void gdbpy_print_stack_or_quit ();
-void gdbpy_handle_exception () ATTRIBUTE_NORETURN;
+[[noreturn]] void gdbpy_handle_exception ();
 
 /* A wrapper around calling 'error'.  Prefixes the error message with an
    'Error occurred in Python' string.  Use this in C++ code if we spot
@@ -958,8 +958,7 @@ void gdbpy_handle_exception () ATTRIBUTE_NORETURN;
 
    This always calls error, and never returns.  */
 
-void gdbpy_error (const char *fmt, ...)
-  ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+[[noreturn]] void gdbpy_error (const char *fmt, ...) ATTRIBUTE_PRINTF (1, 2);
 
 gdbpy_ref<> python_string_to_unicode (PyObject *obj);
 gdb::unique_xmalloc_ptr<char> unicode_to_target_string (PyObject *unicode_str);
index f92de6198891dc0abd7cbce136ebe99be584a727..67d3f4c8b1c137ad0654fe6cda9eb5424f732dae 100644 (file)
@@ -69,8 +69,7 @@ static void gdb_os_vprintf_filtered (host_callback *, const char *, va_list);
 
 static void gdb_os_evprintf_filtered (host_callback *, const char *, va_list);
 
-static void gdb_os_error (host_callback *, const char *, ...)
-     ATTRIBUTE_NORETURN;
+[[noreturn]] static void gdb_os_error (host_callback *, const char *, ...);
 
 /* Naming convention:
 
index 5d2e251dd7d1b1f9a9bf6c2a0e7943ec1ae55d37..a3617e86a009c7cc7222df5216bca1717bc81db8 100644 (file)
@@ -1539,7 +1539,7 @@ static void remote_console_output (const char *msg, ui_file *stream);
 
 static void remote_btrace_reset (remote_state *rs);
 
-static void remote_unpush_and_throw (remote_target *target);
+[[noreturn]] static void remote_unpush_and_throw (remote_target *target);
 
 /* For "remote".  */
 
@@ -6150,7 +6150,7 @@ remote_unpush_target (remote_target *target)
   fileio_handles_invalidate_target (target);
 }
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 remote_unpush_and_throw (remote_target *target)
 {
   remote_unpush_target (target);
index bb2fc049819ceb9820eb9cc19b57e464fa78c80e..9d1170375ded20b8f9c4a779059fc5e466125b03 100644 (file)
@@ -2439,7 +2439,7 @@ lookup_symbol_in_objfile_from_linkage_name (struct objfile *objfile,
 /* A helper function that throws an exception when a symbol was found
    in a psymtab but not in a symtab.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 error_in_psymtab_expansion (enum block_enum block_index, const char *name,
                            struct compunit_symtab *cust)
 {
index 18027037d3bd7c25c512f42d39f0390fed00cdae..d23743729325b6d165eb721b802e69d3af6a4911 100644 (file)
@@ -56,7 +56,7 @@
 #include "cli/cli-decode.h"
 #include "cli/cli-style.h"
 
-static void generic_tls_error (void) ATTRIBUTE_NORETURN;
+[[noreturn]] static void generic_tls_error (void);
 
 static void default_rcmd (struct target_ops *, const char *, struct ui_file *);
 
@@ -64,7 +64,7 @@ static int default_verify_memory (struct target_ops *self,
                                  const gdb_byte *data,
                                  CORE_ADDR memaddr, ULONGEST size);
 
-static void tcomplain (void) ATTRIBUTE_NORETURN;
+[[noreturn]] static void tcomplain (void);
 
 /* Mapping between target_info objects (which have address identity)
    and corresponding open/factory function/callback.  Each add_target
index d0af584a2bb041cc110c1692c0c9c337ae8b90b3..f1b97cfb7d32343c9de0d421674c4db25b21abe5 100644 (file)
@@ -2490,7 +2490,7 @@ extern int default_memory_insert_breakpoint (struct gdbarch *,
 
 extern void initialize_targets (void);
 
-extern void noprocess (void) ATTRIBUTE_NORETURN;
+[[noreturn]] extern void noprocess (void);
 
 extern void target_require_runnable (void);
 
index 623f55e14b366d532167f73f5239f46c3cc8c6b8..1b8f343f0800b58923bcb2e9ff2a5cf1c5aa8e29 100644 (file)
@@ -24,7 +24,7 @@
 
 /* See tid-parse.h.  */
 
-void ATTRIBUTE_NORETURN
+[[noreturn]] void
 invalid_thread_id_error (const char *string)
 {
   error (_("Invalid thread ID: %s"), string);
index b7bd920f48a633693b42e43905b2244c81001a4e..7bbdeabe85b93aa7870f9492e58652600ced6cd2 100644 (file)
@@ -26,7 +26,7 @@ struct thread_info;
 
 /* Issue an invalid thread ID error, pointing at STRING, the invalid
    ID.  */
-extern void ATTRIBUTE_NORETURN invalid_thread_id_error (const char *string);
+[[noreturn]] extern void invalid_thread_id_error (const char *string);
 
 /* Parse TIDSTR as a per-inferior thread ID, in either INF_NUM.THR_NUM
    or THR_NUM form.  In the latter case, the missing INF_NUM is filled
index dc3f2aaf614136d66b9e4d37024baba4c122388a..b57cc3bd3cdfa58e046995026d7bd676ca48ff61 100644 (file)
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -42,7 +42,7 @@ extern void read_command_file (FILE *);
 extern void init_history (void);
 extern void command_loop (void);
 extern int quit_confirm (void);
-extern void quit_force (int *, int) ATTRIBUTE_NORETURN;
+[[noreturn]] extern void quit_force (int *, int);
 extern void quit_command (const char *, int);
 extern void quit_cover (void);
 extern void execute_command (const char *, int);
index 17498e04312c15359ae8583b10aa307b795d5968..94310300fb5a1311fc91cd0b3931f8d277925547 100644 (file)
@@ -192,7 +192,7 @@ verror (const char *string, va_list args)
 
 /* Emit a message and abort.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 abort_with_message (const char *msg)
 {
   if (current_ui == NULL)
index b60b2c531a7c36f9d47b4cb0f3ee0003502c7a8a..33c8e41c5912aa7267a98ac01dd4292cc4fb9f66 100644 (file)
@@ -93,8 +93,8 @@ struct gdb_xml_parser
     ATTRIBUTE_PRINTF (2, 0);
 
   /* Issue an error message, and stop parsing.  */
-  void verror (const char *format, va_list ap)
-    ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0);
+  [[noreturn]] void verror (const char *format, va_list ap)
+    ATTRIBUTE_PRINTF (2, 0);
 
   void body_text (const XML_Char *text, int length);
   void start_element (const XML_Char *name, const XML_Char **attrs);
index b9bac7a10c21019426615ab66405aefc5089377a..2ff0e3ca8c534be229d057ce03d0a863334120f6 100644 (file)
@@ -191,8 +191,9 @@ void gdb_xml_debug (struct gdb_xml_parser *parser, const char *format, ...)
 /* Issue an error message from one of PARSER's handlers, and stop
    parsing.  */
 
-void gdb_xml_error (struct gdb_xml_parser *parser, const char *format, ...)
-  ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3);
+[[noreturn]] void gdb_xml_error (struct gdb_xml_parser *parser,
+                                const char *format, ...)
+  ATTRIBUTE_PRINTF (2, 3);
 
 /* Find the attribute named NAME in the set of parsed attributes
    ATTRIBUTES.  Returns NULL if not found.  */
index 0219e865ec73c07380abf70f998a6f5d9cb10bfd..c2359e4ab436a237ecfa8904acc4745e91125895 100644 (file)
@@ -421,7 +421,7 @@ gdbreplay_usage (FILE *stream)
 /* Main function.  This is called by the real "main" function,
    wrapped in a TRY_CATCH that handles any uncaught exceptions.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 captured_main (int argc, char *argv[])
 {
   FILE *fp;
index 30d05177452390e7807379da67ce7c3b870df441..87b2a26772117a975d4ac2aa64d3d41133acc85c 100644 (file)
@@ -4038,7 +4038,7 @@ test_memory_tagging_functions (void)
 /* Main function.  This is called by the real "main" function,
    wrapped in a TRY_CATCH that handles any uncaught exceptions.  */
 
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 captured_main (int argc, char *argv[])
 {
   int bad_attach;
index 302300770e84cf4c8924bdd1281eb6db16b3b020..57fceb1103dedd663ff8a7220b8822a31aba5858 100644 (file)
@@ -31,7 +31,7 @@
    the filesystem of small embedded targets with core files.  If in
    development mode however, abort, producing core files to help with
    debugging GDBserver.  */
-static void ATTRIBUTE_NORETURN
+[[noreturn]] static void
 abort_or_exit ()
 {
 #ifdef DEVELOPMENT
index 5aa16129b02b7062e78b51def659ac89909d4bac..8301fb556fb1eed15b455a98f06c28ec5085df0e 100644 (file)
@@ -191,7 +191,7 @@ throw_exception (gdb_exception &&exception)
     gdb_assert_not_reached ("invalid return reason");
 }
 
-static void ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0)
+[[noreturn]] static void ATTRIBUTE_PRINTF (3, 0)
 throw_it (enum return_reason reason, enum errors error, const char *fmt,
          va_list ap)
 {
index ffc02d2107f05349c0312c6459421c01022458f5..8f53cd475dad30348229783af299c3ca5fc58d50 100644 (file)
@@ -336,27 +336,26 @@ struct gdb_quit_bad_alloc
 /* Throw an exception (as described by "struct gdb_exception"),
    landing in the inner most containing exception handler established
    using TRY/CATCH.  */
-extern void throw_exception (gdb_exception &&exception)
-     ATTRIBUTE_NORETURN;
+[[noreturn]] extern void throw_exception (gdb_exception &&exception);
 
 /* Throw an exception by executing a LONG JUMP to the inner most
    containing exception handler established using TRY_SJLJ.  Necessary
    in some cases where we need to throw GDB exceptions across
    third-party library code (e.g., readline).  */
-extern void throw_exception_sjlj (const struct gdb_exception &exception)
-     ATTRIBUTE_NORETURN;
+[[noreturn]] extern void throw_exception_sjlj (const gdb_exception &exception);
 
 /* Convenience wrappers around throw_exception that throw GDB
    errors.  */
-extern void throw_verror (enum errors, const char *fmt, va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0);
-extern void throw_vquit (const char *fmt, va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
-extern void throw_error (enum errors error, const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3);
-extern void throw_quit (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
-extern void throw_forced_quit (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+[[noreturn]] extern void throw_verror (enum errors, const char *fmt,
+                                      va_list ap)
+  ATTRIBUTE_PRINTF (2, 0);
+[[noreturn]] extern void throw_vquit (const char *fmt, va_list ap)
+  ATTRIBUTE_PRINTF (1, 0);
+[[noreturn]] extern void throw_error (enum errors error, const char *fmt, ...)
+  ATTRIBUTE_PRINTF (2, 3);
+[[noreturn]] extern void throw_quit (const char *fmt, ...)
+  ATTRIBUTE_PRINTF (1, 2);
+[[noreturn]] [[noreturn]] extern void throw_forced_quit (const char *fmt, ...)
+  ATTRIBUTE_PRINTF (1, 2);
 
 #endif /* COMMON_COMMON_EXCEPTIONS_H */
index d8daed0f5f28659d21d2ee382a86bfdfa785a8ad..c0747f84bae16eff9d06e9cf95500727fbc1885a 100644 (file)
@@ -36,11 +36,10 @@ extern void vwarning (const char *fmt, va_list args)
    a printf- or vprintf-style argument list.  These functions do not
    return.  The function "verror" must be provided by the client.  */
 
-extern void error (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+[[noreturn]] extern void error (const char *fmt, ...) ATTRIBUTE_PRINTF (1, 2);
 
-extern void verror (const char *fmt, va_list args)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
+[[noreturn]] extern void verror (const char *fmt, va_list args)
+  ATTRIBUTE_PRINTF (1, 0);
 
 /* An internal error was detected.  Internal errors indicate
    programming errors such as assertion failures, as opposed to
@@ -53,16 +52,16 @@ extern void verror (const char *fmt, va_list args)
    automatically.  The function "internal_verror" must be provided
    by the client.  */
 
-extern void internal_error_loc (const char *file, int line,
-                               const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 4);
+[[noreturn]] extern void internal_error_loc (const char *file, int line,
+                                            const char *fmt, ...)
+  ATTRIBUTE_PRINTF (3, 4);
 
 #define internal_error(fmt, ...)                               \
   internal_error_loc (__FILE__, __LINE__, fmt, ##__VA_ARGS__)
 
-extern void internal_verror (const char *file, int line,
-                            const char *fmt, va_list args)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
+[[noreturn]] extern void internal_verror (const char *file, int line,
+                                         const char *fmt, va_list args)
+  ATTRIBUTE_PRINTF (3, 0);
 
 /* An internal problem was detected, but the requested operation can
    still proceed.  Internal warnings indicate programming errors as
@@ -93,14 +92,13 @@ extern std::string perror_string (const char *prefix, int errnum = 0);
    STRING with the system error message for errno.  If ERRNUM is given,
    then use it in place of errno.  This function does not return.  */
 
-extern void perror_with_name (const char *string, int errnum = 0)
-    ATTRIBUTE_NORETURN;
+[[noreturn]] extern void perror_with_name (const char *string, int errnum = 0);
 
 /* Call this function to handle memory allocation failures.  This
    function does not return.  This function must be provided by the
    client.  */
 
-extern void malloc_failure (long size) ATTRIBUTE_NORETURN;
+[[noreturn]] extern void malloc_failure (long size);
 
 /* Flush stdout and stderr.  Must be provided by the client.  */
 
@@ -124,8 +122,8 @@ extern const char *strwinerror (ULONGEST error);
    including STRING and the system text for the given error
    number.  */
 
-extern void throw_winerror_with_name (const char *string, ULONGEST err)
-  ATTRIBUTE_NORETURN;
+[[noreturn]] extern void throw_winerror_with_name (const char *string,
+                                                  ULONGEST err);
 
 #endif /* USE_WIN32API */