From 0e4c80225fc77cfa5b830ddac3f60a28d47ce7bb Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Tue, 24 Feb 2009 21:36:32 -0500 Subject: Skip generating empty struct global Impact: trivial cleanup. Avoid emitting empty struct global code that is harmless. Signed-off-by: Wenji Huang --- translate.cxx | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/translate.cxx b/translate.cxx index 135830df..655937d7 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4954,21 +4954,23 @@ translate_pass (systemtap_session& s) s.op->newline() << s.embeds[i]->code << "\n"; } - s.op->newline() << "static struct {"; - s.op->indent(1); - for (unsigned i=0; iemit_global (s.globals[i]); - } - s.op->newline(-1) << "} global = {"; - s.op->newline(1); - for (unsigned i=0; iemit_global_init (s.globals[i]); - } - s.op->newline(-1) << "};"; - s.op->assert_0_indent(); + if (s.globals.size()>0) { + s.op->newline() << "static struct {"; + s.op->indent(1); + for (unsigned i=0; iemit_global (s.globals[i]); + } + s.op->newline(-1) << "} global = {"; + s.op->newline(1); + for (unsigned i=0; iemit_global_init (s.globals[i]); + } + s.op->newline(-1) << "};"; + s.op->assert_0_indent(); + } for (map::iterator it = s.functions.begin(); it != s.functions.end(); it++) { -- cgit From bec508deffdb39affbd6e93a7ce1d2c92d653a12 Mon Sep 17 00:00:00 2001 From: Ananth N Mavinakayanahalli Date: Wed, 25 Feb 2009 15:48:50 +0530 Subject: PR9896: Fix SystemTap build on Ubuntu Intrepid. The gcc on Ubuntu doesn't like fprintf() without format arguments --- tapsets.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tapsets.cxx b/tapsets.cxx index 77e2efcc..b2419b62 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -2297,9 +2297,9 @@ struct dwflpp assert(memstream); fprintf(memstream, "{\n"); - fprintf(memstream, prelude.c_str()); + fprintf(memstream, "%s", prelude.c_str()); bool deref = c_emit_location (memstream, head, 1); - fprintf(memstream, postlude.c_str()); + fprintf(memstream, "%s", postlude.c_str()); fprintf(memstream, " goto out;\n"); // dummy use of deref_fault label, to disable warning if deref() not used -- cgit From a8394af5f2db2bbb57414ffa4d4fc260e2aac3e9 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 25 Feb 2009 17:11:51 +0100 Subject: Guard _struct_sigaction32_u with ifdef CONFIG_COMPAT. * tapset/aux_syscalls.stp (_struct_sigaction_u): Only needed and compiles when CONFIG_COMPAT defined. --- tapset/aux_syscalls.stp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp index 42b2abf8..d2e43903 100644 --- a/tapset/aux_syscalls.stp +++ b/tapset/aux_syscalls.stp @@ -1790,6 +1790,7 @@ function _struct_sigaction_u:string(uaddr:long) function _struct_sigaction32_u:string(uaddr:long) %{ /* pure */ +#ifdef CONFIG_COMPAT #include // There seems to be no public cross arch header that defines this. @@ -1831,4 +1832,5 @@ function _struct_sigaction32_u:string(uaddr:long) else strlcpy (THIS->__retvalue, "UNKNOWN", MAXSTRINGLEN); } +#endif %} -- cgit From 2dc53f24ad2470750a04f869e9cbf5f167e9eb31 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 27 Feb 2009 13:31:25 +0100 Subject: Remove unnecessary embedded C include. * tapset/networking.stp: Remove include. --- tapset/networking.stp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tapset/networking.stp b/tapset/networking.stp index d6e90259..a147441a 100644 --- a/tapset/networking.stp +++ b/tapset/networking.stp @@ -6,10 +6,6 @@ // Public License (GPL); either version 2, or (at your option) any // later version. -%{ -#include -%} - /** * probe netdev.receive - Data recieved from network device. * @dev_name: The name of the device. e.g: eth0, ath1. -- cgit From 820e7ac7a68952d88cc8ff702f18e8c4b7eae822 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 27 Feb 2009 15:16:52 +0100 Subject: Use @cast where possible for examining inet_sock. * tapset/inet_sock.stp: Remove includes. (inet_get_local_port): No embedded C, use @cast. (inet_get_ip_source): Likewise. (daddr_to_string): New function, still some embedded C used. --- tapset/inet_sock.stp | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tapset/inet_sock.stp b/tapset/inet_sock.stp index 59ce7fea..f889ccd7 100644 --- a/tapset/inet_sock.stp +++ b/tapset/inet_sock.stp @@ -1,42 +1,42 @@ // inet_sock information tapset // Copyright (C) 2006 IBM Corp. // Copyright (C) 2006 Intel Corporation. +// Copyright (C) 2009 Red Hat, Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. -%{ -#include -#include -#include -#include - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) -#define LPORT (inet->inet.num) -#define DADDR (&inet->inet.daddr) -#else -#define LPORT (inet->num) -#define DADDR (&inet->daddr) -#endif -%} - -// Get local port number +// Get local port number given a pointer to a kernel socket, +// as for example kernel.function("tcp_accept").return will +// return. function inet_get_local_port:long(sock:long) -%{ /* pure */ - struct inet_sock *inet = (struct inet_sock *) (long) THIS->sock; - THIS->__retvalue = kread(&(LPORT)); - CATCH_DEREF_FAULT(); -%} +{ +%(kernel_v < "2.6.21" %? + port = @cast(sock, "inet_sock", "kernel")->inet->num; +%: + port = @cast(sock, "inet_sock", "kernel")->num; +%) + return port; +} -// Get IP source address string +// Get IP source address string given a pointer to a kernel socket. function inet_get_ip_source:string(sock:long) +{ +%(kernel_v < "2.6.21" %? + daddr = @cast(sock, "inet_sock", "kernel")->inet->daddr; +%: + daddr = @cast(sock, "inet_sock", "kernel")->daddr; +%) + return daddr_to_string(daddr); +} + +// Turns a daddr as found in an inet_sock into a dotted ip string. +function daddr_to_string:string(daddr:long) %{ /* pure */ - struct inet_sock *inet = (struct inet_sock *) (long) THIS->sock; union { __u32 d; unsigned char addr[4]; } u; - u.d = kread(DADDR); + u.d = THIS->daddr; sprintf(THIS->__retvalue, "%d.%d.%d.%d", u.addr[0], u.addr[1], u.addr[2], u.addr[3]); - CATCH_DEREF_FAULT(); %} -- cgit