summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-03-11 09:33:28 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-03-11 09:37:36 +0100
commit24631e2263e341a5228d8444d6e557d8305c0c9e (patch)
tree04bb81dccd8a8f2847f91f2b17b026ed34325e20
parenttcpdump: Remove superfluous static variable (diff)
downloadrtems-libbsd-24631e2263e341a5228d8444d6e557d8305c0c9e.tar.bz2
tcpdump: Move static variables to special section
This fixes some issues if tcpdump is invoked a second time.
-rw-r--r--freebsd/contrib/tcpdump/addrtoname.c12
-rw-r--r--freebsd/contrib/tcpdump/print-atalk.c3
-rw-r--r--freebsd/contrib/tcpdump/print-esp.c3
-rw-r--r--freebsd/contrib/tcpdump/print-hncp.c9
-rw-r--r--freebsd/contrib/tcpdump/print-smb.c6
-rw-r--r--freebsd/contrib/tcpdump/util-print.c6
6 files changed, 39 insertions, 0 deletions
diff --git a/freebsd/contrib/tcpdump/addrtoname.c b/freebsd/contrib/tcpdump/addrtoname.c
index a47b3615..e182b22a 100644
--- a/freebsd/contrib/tcpdump/addrtoname.c
+++ b/freebsd/contrib/tcpdump/addrtoname.c
@@ -1266,7 +1266,13 @@ struct hnamemem *
newhnamemem(netdissect_options *ndo)
{
register struct hnamemem *p;
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static struct hnamemem *ptr = NULL;
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static u_int num = 0;
if (num <= 0) {
@@ -1285,7 +1291,13 @@ struct h6namemem *
newh6namemem(netdissect_options *ndo)
{
register struct h6namemem *p;
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static struct h6namemem *ptr = NULL;
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static u_int num = 0;
if (num <= 0) {
diff --git a/freebsd/contrib/tcpdump/print-atalk.c b/freebsd/contrib/tcpdump/print-atalk.c
index 5616dbc6..c8179eae 100644
--- a/freebsd/contrib/tcpdump/print-atalk.c
+++ b/freebsd/contrib/tcpdump/print-atalk.c
@@ -576,6 +576,9 @@ ataddr_string(netdissect_options *ndo,
register struct hnamemem *tp, *tp2;
register int i = (atnet << 8) | athost;
char nambuf[256+1];
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int first = 1;
FILE *fp;
diff --git a/freebsd/contrib/tcpdump/print-esp.c b/freebsd/contrib/tcpdump/print-esp.c
index c92d6fbe..a7961716 100644
--- a/freebsd/contrib/tcpdump/print-esp.c
+++ b/freebsd/contrib/tcpdump/print-esp.c
@@ -608,6 +608,9 @@ void esp_print_decodesecret(netdissect_options *ndo)
{
char *line;
char *p;
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int initialized = 0;
if (!initialized) {
diff --git a/freebsd/contrib/tcpdump/print-hncp.c b/freebsd/contrib/tcpdump/print-hncp.c
index 34297772..26224249 100644
--- a/freebsd/contrib/tcpdump/print-hncp.c
+++ b/freebsd/contrib/tcpdump/print-hncp.c
@@ -165,6 +165,9 @@ static const char *
format_nid(const u_char *data)
{
static char buf[4][11+5];
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int i = 0;
i = (i + 1) % 4;
snprintf(buf[i], 16, "%02x:%02x:%02x:%02x",
@@ -176,6 +179,9 @@ static const char *
format_256(const u_char *data)
{
static char buf[4][64+5];
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int i = 0;
i = (i + 1) % 4;
snprintf(buf[i], 28, "%016" PRIx64 "%016" PRIx64 "%016" PRIx64 "%016" PRIx64,
@@ -191,6 +197,9 @@ static const char *
format_interval(const uint32_t n)
{
static char buf[4][sizeof("0000000.000s")];
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int i = 0;
i = (i + 1) % 4;
snprintf(buf[i], sizeof(buf[i]), "%u.%03us", n / 1000, n % 1000);
diff --git a/freebsd/contrib/tcpdump/print-smb.c b/freebsd/contrib/tcpdump/print-smb.c
index 2ce8dc37..72a42b26 100644
--- a/freebsd/contrib/tcpdump/print-smb.c
+++ b/freebsd/contrib/tcpdump/print-smb.c
@@ -115,6 +115,9 @@ static void
trans2_qfsinfo(netdissect_options *ndo,
const u_char *param, const u_char *data, int pcnt, int dcnt)
{
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int level = 0;
const char *fmt="";
@@ -179,6 +182,9 @@ print_trans2(netdissect_options *ndo,
const u_char *words, const u_char *dat, const u_char *buf, const u_char *maxbuf)
{
u_int bcc;
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static const struct smbfnsint *fn = &trans2_fns[0];
const u_char *data, *param;
const u_char *w = words + 1;
diff --git a/freebsd/contrib/tcpdump/util-print.c b/freebsd/contrib/tcpdump/util-print.c
index 8a995534..ef1454a1 100644
--- a/freebsd/contrib/tcpdump/util-print.c
+++ b/freebsd/contrib/tcpdump/util-print.c
@@ -323,6 +323,9 @@ ts_print(netdissect_options *ndo,
struct tm *tm;
time_t Time;
char buf[TS_BUF_SIZE];
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static struct timeval tv_ref;
struct timeval tv_result;
int negative_offset;
@@ -510,6 +513,9 @@ tok2str(register const struct tok *lp, register const char *fmt,
register u_int v)
{
static char buf[4][TOKBUFSIZE];
+#ifdef __rtems__
+ __section(".rtemsrwset.bsd_prog_tcpdump.content")
+#endif /* __rtems__ */
static int idx = 0;
char *ret;