Remove EXTERN_C and related defines

Message ID 20231106163407.2610122-1-tom@tromey.com
State New
Headers
Series Remove EXTERN_C and related defines |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm success Testing passed

Commit Message

Tom Tromey Nov. 6, 2023, 4:34 p.m. UTC
  common-defs.h has a few defines that I suspect were used during the
transition to C++.  These aren't needed any more, so remove them.

Tested by rebuilding.
---
 gdb/cli-out.c                 |  2 +-
 gdb/completer.c               |  2 +-
 gdb/defs.h                    |  2 +-
 gdb/event-top.c               |  2 +-
 gdb/gdb_curses.h              |  2 +-
 gdb/maint.c                   |  4 ++--
 gdb/nat/linux-ptrace.c        |  2 +-
 gdb/utils.c                   |  2 +-
 gdbserver/tracepoint.cc       | 32 ++++++++++++++++----------------
 gdbserver/tracepoint.h        |  6 +++---
 gdbsupport/common-defs.h      |  4 ----
 gdbsupport/gdb_proc_service.h |  8 ++++----
 12 files changed, 32 insertions(+), 36 deletions(-)
  

Comments

Simon Marchi Nov. 6, 2023, 4:36 p.m. UTC | #1
On 11/6/23 11:34, Tom Tromey wrote:
> common-defs.h has a few defines that I suspect were used during the
> transition to C++.  These aren't needed any more, so remove them.

Seems fine to me, thanks.

Approved-By: Simon Marchi <simon.marchi@efficios.com>

Simon
  
Andrew Burgess Nov. 6, 2023, 4:40 p.m. UTC | #2
Tom Tromey <tom@tromey.com> writes:

> common-defs.h has a few defines that I suspect were used during the
> transition to C++.  These aren't needed any more, so remove them.

Makes sense.

Approved-By: Andrew Burgess <aburgess@redhat.com>

Thanks,
Andrew


>
> Tested by rebuilding.
> ---
>  gdb/cli-out.c                 |  2 +-
>  gdb/completer.c               |  2 +-
>  gdb/defs.h                    |  2 +-
>  gdb/event-top.c               |  2 +-
>  gdb/gdb_curses.h              |  2 +-
>  gdb/maint.c                   |  4 ++--
>  gdb/nat/linux-ptrace.c        |  2 +-
>  gdb/utils.c                   |  2 +-
>  gdbserver/tracepoint.cc       | 32 ++++++++++++++++----------------
>  gdbserver/tracepoint.h        |  6 +++---
>  gdbsupport/common-defs.h      |  4 ----
>  gdbsupport/gdb_proc_service.h |  8 ++++----
>  12 files changed, 32 insertions(+), 36 deletions(-)
>
> diff --git a/gdb/cli-out.c b/gdb/cli-out.c
> index 20d3d93f1ad..a1cde54feda 100644
> --- a/gdb/cli-out.c
> +++ b/gdb/cli-out.c
> @@ -493,7 +493,7 @@ cli_mld_flush (const struct match_list_displayer *displayer)
>    fflush (rl_outstream);
>  }
>  
> -EXTERN_C void _rl_erase_entire_line (void);
> +extern "C" void _rl_erase_entire_line (void);
>  
>  /* CLI version of displayer.erase_entire_line.  */
>  
> diff --git a/gdb/completer.c b/gdb/completer.c
> index 2abf3998345..8942a3f7950 100644
> --- a/gdb/completer.c
> +++ b/gdb/completer.c
> @@ -2812,7 +2812,7 @@ gdb_complete_get_screenwidth (const struct match_list_displayer *displayer)
>  extern int _rl_completion_prefix_display_length;
>  extern int _rl_print_completions_horizontally;
>  
> -EXTERN_C int _rl_qsort_string_compare (const void *, const void *);
> +extern "C" int _rl_qsort_string_compare (const void *, const void *);
>  typedef int QSFUNC (const void *, const void *);
>  
>  /* GDB version of readline/complete.c:rl_display_match_list.
> diff --git a/gdb/defs.h b/gdb/defs.h
> index f5af3e617c4..b8612e1ac6d 100644
> --- a/gdb/defs.h
> +++ b/gdb/defs.h
> @@ -303,7 +303,7 @@ extern int annotation_level;	/* in stack.c */
>     "const char *" in unistd.h, so we can't declare the argument
>     as "char *".  */
>  
> -EXTERN_C char *re_comp (const char *);
> +extern "C" char *re_comp (const char *);
>  
>  /* From symfile.c */
>  
> diff --git a/gdb/event-top.c b/gdb/event-top.c
> index 3d6fa896a9c..9886ca46e7b 100644
> --- a/gdb/event-top.c
> +++ b/gdb/event-top.c
> @@ -138,7 +138,7 @@ static struct async_signal_handler *async_sigterm_token;
>  void (*after_char_processing_hook) (void);
>  
>  #if RL_VERSION_MAJOR == 7
> -EXTERN_C void _rl_signal_handler (int);
> +extern "C" void _rl_signal_handler (int);
>  #endif
>  
>  /* Wrapper function for calling into the readline library.  This takes
> diff --git a/gdb/gdb_curses.h b/gdb/gdb_curses.h
> index 7ac0ade2a30..39bf6f14296 100644
> --- a/gdb/gdb_curses.h
> +++ b/gdb/gdb_curses.h
> @@ -60,7 +60,7 @@
>     of the termcap functions will be built from stub-termcap.c.  Readline
>     provides its own extern declarations when there's no termcap.h; do the
>     same here for the termcap functions used in GDB.  */
> -EXTERN_C int tgetnum (const char *);
> +extern "C" int tgetnum (const char *);
>  #endif
>  
>  /* SunOS's curses.h has a '#define reg register' in it.  Thank you Sun.  */
> diff --git a/gdb/maint.c b/gdb/maint.c
> index 0635af3dfc4..c1154d0a54e 100644
> --- a/gdb/maint.c
> +++ b/gdb/maint.c
> @@ -791,7 +791,7 @@ extern char etext;
>  
>  static int profiling_state;
>  
> -EXTERN_C void _mcleanup (void);
> +extern "C" void _mcleanup (void);
>  
>  static void
>  mcleanup_wrapper (void)
> @@ -800,7 +800,7 @@ mcleanup_wrapper (void)
>      _mcleanup ();
>  }
>  
> -EXTERN_C void monstartup (unsigned long, unsigned long);
> +extern "C" void monstartup (unsigned long, unsigned long);
>  extern int main (int, char **);
>  
>  static void
> diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
> index b80c7b88893..e259f65058c 100644
> --- a/gdb/nat/linux-ptrace.c
> +++ b/gdb/nat/linux-ptrace.c
> @@ -70,7 +70,7 @@ linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err)
>  #if defined __i386__ || defined __x86_64__
>  
>  /* Address of the 'ret' instruction in asm code block below.  */
> -EXTERN_C void linux_ptrace_test_ret_to_nx_instr (void);
> +extern "C" void linux_ptrace_test_ret_to_nx_instr (void);
>  
>  #include <sys/reg.h>
>  #include <sys/mman.h>
> diff --git a/gdb/utils.c b/gdb/utils.c
> index a191d26a007..f959af3219b 100644
> --- a/gdb/utils.c
> +++ b/gdb/utils.c
> @@ -1112,7 +1112,7 @@ static bool filter_initialized = false;
>  
>  /* See readline's rlprivate.h.  */
>  
> -EXTERN_C int _rl_term_autowrap;
> +extern "C" int _rl_term_autowrap;
>  
>  /* See utils.h.  */
>  
> diff --git a/gdbserver/tracepoint.cc b/gdbserver/tracepoint.cc
> index 609d49a87ef..a5f58fd54eb 100644
> --- a/gdbserver/tracepoint.cc
> +++ b/gdbserver/tracepoint.cc
> @@ -826,7 +826,7 @@ struct wstep_state
>  
>  #endif
>  
> -EXTERN_C_PUSH
> +extern "C" {
>  
>  /* The linked list of all tracepoints.  Marked explicitly as used as
>     the in-process library doesn't use it for the fast tracepoints
> @@ -848,7 +848,7 @@ IP_AGENT_EXPORT_VAR int trace_buffer_is_full;
>     enum eval_result_type values.  */
>  IP_AGENT_EXPORT_VAR int expr_eval_result = expr_eval_no_error;
>  
> -EXTERN_C_POP
> +}
>  
>  #ifndef IN_PROCESS_AGENT
>  
> @@ -868,9 +868,9 @@ static const char * const eval_result_names[] =
>  
>  /* The tracepoint in which the error occurred.  */
>  
> -EXTERN_C_PUSH
> +extern "C" {
>  IP_AGENT_EXPORT_VAR struct tracepoint *error_tracepoint;
> -EXTERN_C_POP
> +}
>  
>  struct trace_state_variable
>  {
> @@ -982,7 +982,7 @@ static int circular_trace_buffer;
>  
>  static LONGEST trace_buffer_size;
>  
> -EXTERN_C_PUSH
> +extern "C" {
>  
>  /* Pointer to the block of memory that traceframes all go into.  */
>  
> @@ -993,7 +993,7 @@ IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_lo;
>  
>  IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_hi;
>  
> -EXTERN_C_POP
> +}
>  
>  /* Control structure holding the read/write/etc. pointers into the
>     trace buffer.  We need more than one of these to implement a
> @@ -4683,9 +4683,9 @@ collect_data_at_step (struct tracepoint_hit_ctx *ctx,
>  #ifdef IN_PROCESS_AGENT
>  /* The target description index for IPA.  Passed from gdbserver, used
>     to select ipa_tdesc.  */
> -EXTERN_C_PUSH
> +extern "C" {
>  IP_AGENT_EXPORT_VAR int ipa_tdesc_idx;
> -EXTERN_C_POP
> +}
>  #endif
>  
>  static struct regcache *
> @@ -5749,9 +5749,9 @@ fast_tracepoint_collecting, returning continue-until-break at %s",
>     NULL if it isn't locked.  Note that this lock *must* be set while
>     executing any *function other than the jump pad.  See
>     fast_tracepoint_collecting.  */
> -EXTERN_C_PUSH
> +extern "C" {
>  IP_AGENT_EXPORT_VAR collecting_t *collecting;
> -EXTERN_C_POP
> +}
>  
>  /* This is needed for -Wmissing-declarations.  */
>  IP_AGENT_EXPORT_FUNC void gdb_collect (struct tracepoint *tpoint,
> @@ -5840,14 +5840,14 @@ typedef ULONGEST (*get_raw_reg_ptr_type) (const unsigned char *, int);
>  typedef LONGEST (*get_trace_state_variable_value_ptr_type) (int);
>  typedef void (*set_trace_state_variable_value_ptr_type) (int, LONGEST);
>  
> -EXTERN_C_PUSH
> +extern "C" {
>  IP_AGENT_EXPORT_VAR gdb_collect_ptr_type gdb_collect_ptr = gdb_collect;
>  IP_AGENT_EXPORT_VAR get_raw_reg_ptr_type get_raw_reg_ptr = get_raw_reg;
>  IP_AGENT_EXPORT_VAR get_trace_state_variable_value_ptr_type
>    get_trace_state_variable_value_ptr = get_trace_state_variable_value;
>  IP_AGENT_EXPORT_VAR set_trace_state_variable_value_ptr_type
>    set_trace_state_variable_value_ptr = set_trace_state_variable_value;
> -EXTERN_C_POP
> +}
>  
>  #endif
>  
> @@ -6834,9 +6834,9 @@ run_inferior_command (char *cmd, int len)
>  
>  /* Thread ID of the helper thread.  GDBserver reads this to know which
>     is the help thread.  This is an LWP id on Linux.  */
> -EXTERN_C_PUSH
> +extern "C" {
>  IP_AGENT_EXPORT_VAR int helper_thread_id;
> -EXTERN_C_POP
> +}
>  
>  static int
>  init_named_socket (const char *name)
> @@ -7265,9 +7265,9 @@ gdb_agent_helper_thread (void *arg)
>  #include <signal.h>
>  #include <pthread.h>
>  
> -EXTERN_C_PUSH
> +extern "C" {
>  IP_AGENT_EXPORT_VAR int gdb_agent_capability = AGENT_CAPA_STATIC_TRACE;
> -EXTERN_C_POP
> +}
>  
>  static void
>  gdb_agent_init (void)
> diff --git a/gdbserver/tracepoint.h b/gdbserver/tracepoint.h
> index 1f40d7b5177..91f757fcff6 100644
> --- a/gdbserver/tracepoint.h
> +++ b/gdbserver/tracepoint.h
> @@ -55,12 +55,12 @@ void initialize_tracepoint (void);
>     must also be exported with C linkage.  As we can't both use extern
>     "C" and initialize a variable in the same statement, variables that
>     don't have a separate declaration must use
> -   EXTERN_C_PUSH/EXTERN_C_POP around their definition.  */
> +   extern "C" {...} around their definition.  */
>  
>  #ifdef IN_PROCESS_AGENT
> -# define IP_AGENT_EXPORT_FUNC EXTERN_C EXPORTED_SYMBOL ATTR_NOINLINE ATTR_USED
> +# define IP_AGENT_EXPORT_FUNC extern "C" EXPORTED_SYMBOL ATTR_NOINLINE ATTR_USED
>  # define IP_AGENT_EXPORT_VAR EXPORTED_SYMBOL ATTR_USED
> -# define IP_AGENT_EXPORT_VAR_DECL EXTERN_C EXPORTED_SYMBOL
> +# define IP_AGENT_EXPORT_VAR_DECL extern "C" EXPORTED_SYMBOL
>  #else
>  # define IP_AGENT_EXPORT_FUNC static
>  # define IP_AGENT_EXPORT_VAR
> diff --git a/gdbsupport/common-defs.h b/gdbsupport/common-defs.h
> index 5e8ebab620c..6f0d99f949a 100644
> --- a/gdbsupport/common-defs.h
> +++ b/gdbsupport/common-defs.h
> @@ -214,10 +214,6 @@
>  #include "common-exceptions.h"
>  #include "gdbsupport/poison.h"
>  
> -#define EXTERN_C extern "C"
> -#define EXTERN_C_PUSH extern "C" {
> -#define EXTERN_C_POP }
> -
>  /* Pull in gdb::unique_xmalloc_ptr.  */
>  #include "gdbsupport/gdb_unique_ptr.h"
>  
> diff --git a/gdbsupport/gdb_proc_service.h b/gdbsupport/gdb_proc_service.h
> index 19d40e0ee10..c289e87dd76 100644
> --- a/gdbsupport/gdb_proc_service.h
> +++ b/gdbsupport/gdb_proc_service.h
> @@ -25,11 +25,11 @@
>  
>  /* glibc's proc_service.h doesn't wrap itself with extern "C".  Need
>     to do it ourselves.  */
> -EXTERN_C_PUSH
> +extern "C" {
>  
>  #include <proc_service.h>
>  
> -EXTERN_C_POP
> +}
>  
>  #else /* HAVE_PROC_SERVICE_H */
>  
> @@ -69,7 +69,7 @@ EXTERN_C_POP
>  # endif
>  #endif
>  
> -EXTERN_C_PUSH
> +extern "C" {
>  
>  /* Functions in this interface return one of these status codes.  */
>  typedef enum
> @@ -166,7 +166,7 @@ extern ps_err_e ps_lsetxregs (struct ps_prochandle *ph, lwpid_t lwpid,
>  /* Log a message (sends to gdb_stderr).  */
>  extern void ps_plog (const char *fmt, ...);
>  
> -EXTERN_C_POP
> +}
>  
>  #endif /* HAVE_PROC_SERVICE_H */
>  
> -- 
> 2.41.0
  

Patch

diff --git a/gdb/cli-out.c b/gdb/cli-out.c
index 20d3d93f1ad..a1cde54feda 100644
--- a/gdb/cli-out.c
+++ b/gdb/cli-out.c
@@ -493,7 +493,7 @@  cli_mld_flush (const struct match_list_displayer *displayer)
   fflush (rl_outstream);
 }
 
-EXTERN_C void _rl_erase_entire_line (void);
+extern "C" void _rl_erase_entire_line (void);
 
 /* CLI version of displayer.erase_entire_line.  */
 
diff --git a/gdb/completer.c b/gdb/completer.c
index 2abf3998345..8942a3f7950 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -2812,7 +2812,7 @@  gdb_complete_get_screenwidth (const struct match_list_displayer *displayer)
 extern int _rl_completion_prefix_display_length;
 extern int _rl_print_completions_horizontally;
 
-EXTERN_C int _rl_qsort_string_compare (const void *, const void *);
+extern "C" int _rl_qsort_string_compare (const void *, const void *);
 typedef int QSFUNC (const void *, const void *);
 
 /* GDB version of readline/complete.c:rl_display_match_list.
diff --git a/gdb/defs.h b/gdb/defs.h
index f5af3e617c4..b8612e1ac6d 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -303,7 +303,7 @@  extern int annotation_level;	/* in stack.c */
    "const char *" in unistd.h, so we can't declare the argument
    as "char *".  */
 
-EXTERN_C char *re_comp (const char *);
+extern "C" char *re_comp (const char *);
 
 /* From symfile.c */
 
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 3d6fa896a9c..9886ca46e7b 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -138,7 +138,7 @@  static struct async_signal_handler *async_sigterm_token;
 void (*after_char_processing_hook) (void);
 
 #if RL_VERSION_MAJOR == 7
-EXTERN_C void _rl_signal_handler (int);
+extern "C" void _rl_signal_handler (int);
 #endif
 
 /* Wrapper function for calling into the readline library.  This takes
diff --git a/gdb/gdb_curses.h b/gdb/gdb_curses.h
index 7ac0ade2a30..39bf6f14296 100644
--- a/gdb/gdb_curses.h
+++ b/gdb/gdb_curses.h
@@ -60,7 +60,7 @@ 
    of the termcap functions will be built from stub-termcap.c.  Readline
    provides its own extern declarations when there's no termcap.h; do the
    same here for the termcap functions used in GDB.  */
-EXTERN_C int tgetnum (const char *);
+extern "C" int tgetnum (const char *);
 #endif
 
 /* SunOS's curses.h has a '#define reg register' in it.  Thank you Sun.  */
diff --git a/gdb/maint.c b/gdb/maint.c
index 0635af3dfc4..c1154d0a54e 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -791,7 +791,7 @@  extern char etext;
 
 static int profiling_state;
 
-EXTERN_C void _mcleanup (void);
+extern "C" void _mcleanup (void);
 
 static void
 mcleanup_wrapper (void)
@@ -800,7 +800,7 @@  mcleanup_wrapper (void)
     _mcleanup ();
 }
 
-EXTERN_C void monstartup (unsigned long, unsigned long);
+extern "C" void monstartup (unsigned long, unsigned long);
 extern int main (int, char **);
 
 static void
diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
index b80c7b88893..e259f65058c 100644
--- a/gdb/nat/linux-ptrace.c
+++ b/gdb/nat/linux-ptrace.c
@@ -70,7 +70,7 @@  linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err)
 #if defined __i386__ || defined __x86_64__
 
 /* Address of the 'ret' instruction in asm code block below.  */
-EXTERN_C void linux_ptrace_test_ret_to_nx_instr (void);
+extern "C" void linux_ptrace_test_ret_to_nx_instr (void);
 
 #include <sys/reg.h>
 #include <sys/mman.h>
diff --git a/gdb/utils.c b/gdb/utils.c
index a191d26a007..f959af3219b 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -1112,7 +1112,7 @@  static bool filter_initialized = false;
 
 /* See readline's rlprivate.h.  */
 
-EXTERN_C int _rl_term_autowrap;
+extern "C" int _rl_term_autowrap;
 
 /* See utils.h.  */
 
diff --git a/gdbserver/tracepoint.cc b/gdbserver/tracepoint.cc
index 609d49a87ef..a5f58fd54eb 100644
--- a/gdbserver/tracepoint.cc
+++ b/gdbserver/tracepoint.cc
@@ -826,7 +826,7 @@  struct wstep_state
 
 #endif
 
-EXTERN_C_PUSH
+extern "C" {
 
 /* The linked list of all tracepoints.  Marked explicitly as used as
    the in-process library doesn't use it for the fast tracepoints
@@ -848,7 +848,7 @@  IP_AGENT_EXPORT_VAR int trace_buffer_is_full;
    enum eval_result_type values.  */
 IP_AGENT_EXPORT_VAR int expr_eval_result = expr_eval_no_error;
 
-EXTERN_C_POP
+}
 
 #ifndef IN_PROCESS_AGENT
 
@@ -868,9 +868,9 @@  static const char * const eval_result_names[] =
 
 /* The tracepoint in which the error occurred.  */
 
-EXTERN_C_PUSH
+extern "C" {
 IP_AGENT_EXPORT_VAR struct tracepoint *error_tracepoint;
-EXTERN_C_POP
+}
 
 struct trace_state_variable
 {
@@ -982,7 +982,7 @@  static int circular_trace_buffer;
 
 static LONGEST trace_buffer_size;
 
-EXTERN_C_PUSH
+extern "C" {
 
 /* Pointer to the block of memory that traceframes all go into.  */
 
@@ -993,7 +993,7 @@  IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_lo;
 
 IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_hi;
 
-EXTERN_C_POP
+}
 
 /* Control structure holding the read/write/etc. pointers into the
    trace buffer.  We need more than one of these to implement a
@@ -4683,9 +4683,9 @@  collect_data_at_step (struct tracepoint_hit_ctx *ctx,
 #ifdef IN_PROCESS_AGENT
 /* The target description index for IPA.  Passed from gdbserver, used
    to select ipa_tdesc.  */
-EXTERN_C_PUSH
+extern "C" {
 IP_AGENT_EXPORT_VAR int ipa_tdesc_idx;
-EXTERN_C_POP
+}
 #endif
 
 static struct regcache *
@@ -5749,9 +5749,9 @@  fast_tracepoint_collecting, returning continue-until-break at %s",
    NULL if it isn't locked.  Note that this lock *must* be set while
    executing any *function other than the jump pad.  See
    fast_tracepoint_collecting.  */
-EXTERN_C_PUSH
+extern "C" {
 IP_AGENT_EXPORT_VAR collecting_t *collecting;
-EXTERN_C_POP
+}
 
 /* This is needed for -Wmissing-declarations.  */
 IP_AGENT_EXPORT_FUNC void gdb_collect (struct tracepoint *tpoint,
@@ -5840,14 +5840,14 @@  typedef ULONGEST (*get_raw_reg_ptr_type) (const unsigned char *, int);
 typedef LONGEST (*get_trace_state_variable_value_ptr_type) (int);
 typedef void (*set_trace_state_variable_value_ptr_type) (int, LONGEST);
 
-EXTERN_C_PUSH
+extern "C" {
 IP_AGENT_EXPORT_VAR gdb_collect_ptr_type gdb_collect_ptr = gdb_collect;
 IP_AGENT_EXPORT_VAR get_raw_reg_ptr_type get_raw_reg_ptr = get_raw_reg;
 IP_AGENT_EXPORT_VAR get_trace_state_variable_value_ptr_type
   get_trace_state_variable_value_ptr = get_trace_state_variable_value;
 IP_AGENT_EXPORT_VAR set_trace_state_variable_value_ptr_type
   set_trace_state_variable_value_ptr = set_trace_state_variable_value;
-EXTERN_C_POP
+}
 
 #endif
 
@@ -6834,9 +6834,9 @@  run_inferior_command (char *cmd, int len)
 
 /* Thread ID of the helper thread.  GDBserver reads this to know which
    is the help thread.  This is an LWP id on Linux.  */
-EXTERN_C_PUSH
+extern "C" {
 IP_AGENT_EXPORT_VAR int helper_thread_id;
-EXTERN_C_POP
+}
 
 static int
 init_named_socket (const char *name)
@@ -7265,9 +7265,9 @@  gdb_agent_helper_thread (void *arg)
 #include <signal.h>
 #include <pthread.h>
 
-EXTERN_C_PUSH
+extern "C" {
 IP_AGENT_EXPORT_VAR int gdb_agent_capability = AGENT_CAPA_STATIC_TRACE;
-EXTERN_C_POP
+}
 
 static void
 gdb_agent_init (void)
diff --git a/gdbserver/tracepoint.h b/gdbserver/tracepoint.h
index 1f40d7b5177..91f757fcff6 100644
--- a/gdbserver/tracepoint.h
+++ b/gdbserver/tracepoint.h
@@ -55,12 +55,12 @@  void initialize_tracepoint (void);
    must also be exported with C linkage.  As we can't both use extern
    "C" and initialize a variable in the same statement, variables that
    don't have a separate declaration must use
-   EXTERN_C_PUSH/EXTERN_C_POP around their definition.  */
+   extern "C" {...} around their definition.  */
 
 #ifdef IN_PROCESS_AGENT
-# define IP_AGENT_EXPORT_FUNC EXTERN_C EXPORTED_SYMBOL ATTR_NOINLINE ATTR_USED
+# define IP_AGENT_EXPORT_FUNC extern "C" EXPORTED_SYMBOL ATTR_NOINLINE ATTR_USED
 # define IP_AGENT_EXPORT_VAR EXPORTED_SYMBOL ATTR_USED
-# define IP_AGENT_EXPORT_VAR_DECL EXTERN_C EXPORTED_SYMBOL
+# define IP_AGENT_EXPORT_VAR_DECL extern "C" EXPORTED_SYMBOL
 #else
 # define IP_AGENT_EXPORT_FUNC static
 # define IP_AGENT_EXPORT_VAR
diff --git a/gdbsupport/common-defs.h b/gdbsupport/common-defs.h
index 5e8ebab620c..6f0d99f949a 100644
--- a/gdbsupport/common-defs.h
+++ b/gdbsupport/common-defs.h
@@ -214,10 +214,6 @@ 
 #include "common-exceptions.h"
 #include "gdbsupport/poison.h"
 
-#define EXTERN_C extern "C"
-#define EXTERN_C_PUSH extern "C" {
-#define EXTERN_C_POP }
-
 /* Pull in gdb::unique_xmalloc_ptr.  */
 #include "gdbsupport/gdb_unique_ptr.h"
 
diff --git a/gdbsupport/gdb_proc_service.h b/gdbsupport/gdb_proc_service.h
index 19d40e0ee10..c289e87dd76 100644
--- a/gdbsupport/gdb_proc_service.h
+++ b/gdbsupport/gdb_proc_service.h
@@ -25,11 +25,11 @@ 
 
 /* glibc's proc_service.h doesn't wrap itself with extern "C".  Need
    to do it ourselves.  */
-EXTERN_C_PUSH
+extern "C" {
 
 #include <proc_service.h>
 
-EXTERN_C_POP
+}
 
 #else /* HAVE_PROC_SERVICE_H */
 
@@ -69,7 +69,7 @@  EXTERN_C_POP
 # endif
 #endif
 
-EXTERN_C_PUSH
+extern "C" {
 
 /* Functions in this interface return one of these status codes.  */
 typedef enum
@@ -166,7 +166,7 @@  extern ps_err_e ps_lsetxregs (struct ps_prochandle *ph, lwpid_t lwpid,
 /* Log a message (sends to gdb_stderr).  */
 extern void ps_plog (const char *fmt, ...);
 
-EXTERN_C_POP
+}
 
 #endif /* HAVE_PROC_SERVICE_H */