server: gdb: export gdb_actual_connections through a function
The internal variable 'gdb_actual_connections' is used by log and by semihosting to determine if there are active GDB connections. Keep the variable local in server's code and only export its value through a dedicated function. This solves the issue detected by 'parse' of the variable defined as global but not declared in any include file. Change-Id: I6e14f4cb1097787404094636f8a2a291340222dd Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7673 Tested-by: jenkins
This commit is contained in:
parent
7fa29dc519
commit
d5c177cd3d
|
@ -19,6 +19,7 @@
|
|||
#include "command.h"
|
||||
#include "replacements.h"
|
||||
#include "time_support.h"
|
||||
#include <server/gdb_server.h>
|
||||
#include <server/server.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
|
@ -399,9 +400,7 @@ char *alloc_printf(const char *format, ...)
|
|||
|
||||
static void gdb_timeout_warning(int64_t delta_time)
|
||||
{
|
||||
extern int gdb_actual_connections;
|
||||
|
||||
if (gdb_actual_connections)
|
||||
if (gdb_get_actual_connections())
|
||||
LOG_WARNING("keep_alive() was not invoked in the "
|
||||
"%d ms timelimit. GDB alive packet not "
|
||||
"sent! (%" PRId64 " ms). Workaround: increase "
|
||||
|
|
|
@ -117,7 +117,7 @@ static void gdb_sig_halted(struct connection *connection);
|
|||
|
||||
/* number of gdb connections, mainly to suppress gdb related debugging spam
|
||||
* in helper/log.c when no gdb connections are actually active */
|
||||
int gdb_actual_connections;
|
||||
static int gdb_actual_connections;
|
||||
|
||||
/* set if we are sending a memory map to gdb
|
||||
* via qXfer:memory-map:read packet */
|
||||
|
@ -4105,3 +4105,8 @@ void gdb_service_free(void)
|
|||
free(gdb_port);
|
||||
free(gdb_port_next);
|
||||
}
|
||||
|
||||
int gdb_get_actual_connections(void)
|
||||
{
|
||||
return gdb_actual_connections;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
struct image;
|
||||
struct reg;
|
||||
#include <target/target.h>
|
||||
#include <server/server.h>
|
||||
|
||||
#define GDB_BUFFER_SIZE 16384
|
||||
|
||||
|
@ -29,6 +30,8 @@ void gdb_service_free(void);
|
|||
|
||||
int gdb_put_packet(struct connection *connection, char *buffer, int len);
|
||||
|
||||
int gdb_get_actual_connections(void);
|
||||
|
||||
static inline struct target *get_target_from_connection(struct connection *connection)
|
||||
{
|
||||
struct gdb_service *gdb_service = connection->service->priv;
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
#include <helper/binarybuffer.h>
|
||||
#include <helper/log.h>
|
||||
#include <server/gdb_server.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/**
|
||||
|
@ -92,9 +93,6 @@ static int semihosting_common_fileio_info(struct target *target,
|
|||
static int semihosting_common_fileio_end(struct target *target, int result,
|
||||
int fileio_errno, bool ctrl_c);
|
||||
|
||||
/* Attempts to include gdb_server.h failed. */
|
||||
extern int gdb_actual_connections;
|
||||
|
||||
/**
|
||||
* Initialize common semihosting support.
|
||||
*
|
||||
|
@ -493,7 +491,7 @@ int semihosting_common(struct target *target)
|
|||
int code = semihosting_get_field(target, 1, fields);
|
||||
|
||||
if (type == ADP_STOPPED_APPLICATION_EXIT) {
|
||||
if (!gdb_actual_connections)
|
||||
if (!gdb_get_actual_connections())
|
||||
exit(code);
|
||||
else {
|
||||
fprintf(stderr,
|
||||
|
@ -508,7 +506,7 @@ int semihosting_common(struct target *target)
|
|||
}
|
||||
} else {
|
||||
if (semihosting->param == ADP_STOPPED_APPLICATION_EXIT) {
|
||||
if (!gdb_actual_connections)
|
||||
if (!gdb_get_actual_connections())
|
||||
exit(0);
|
||||
else {
|
||||
fprintf(stderr,
|
||||
|
@ -517,14 +515,14 @@ int semihosting_common(struct target *target)
|
|||
} else if (semihosting->param == ADP_STOPPED_RUN_TIME_ERROR) {
|
||||
/* Chosen more or less arbitrarily to have a nicer message,
|
||||
* otherwise all other return the same exit code 1. */
|
||||
if (!gdb_actual_connections)
|
||||
if (!gdb_get_actual_connections())
|
||||
exit(1);
|
||||
else {
|
||||
fprintf(stderr,
|
||||
"semihosting: *** application exited with error ***\n");
|
||||
}
|
||||
} else {
|
||||
if (!gdb_actual_connections)
|
||||
if (!gdb_get_actual_connections())
|
||||
exit(1);
|
||||
else {
|
||||
fprintf(stderr,
|
||||
|
@ -584,7 +582,7 @@ int semihosting_common(struct target *target)
|
|||
int code = semihosting_get_field(target, 1, fields);
|
||||
|
||||
if (type == ADP_STOPPED_APPLICATION_EXIT) {
|
||||
if (!gdb_actual_connections)
|
||||
if (!gdb_get_actual_connections())
|
||||
exit(code);
|
||||
else {
|
||||
fprintf(stderr,
|
||||
|
|
Loading…
Reference in New Issue