WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] xenctx: misc adjustments

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] xenctx: misc adjustments
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 17 Jan 2011 07:59:36 -0800
Delivery-date: Mon, 17 Jan 2011 08:13:07 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1294746099 0
# Node ID 7926538a633297d65a5d6324bf9bd0eb158a6aff
# Parent  2ff199e2842b7e4f08ea99558afc32536a77280c
xenctx: misc adjustments

- fix off-by-one errors during symbol insertion and lookup
- don't store the symbol type, as it wasn't needed at all so far and
  is only needed now at parsing time
- don't insert certain kinds of symbols

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 tools/xentrace/xenctx.c |   41 ++++++++++++++++++++++++++++-------------
 1 files changed, 28 insertions(+), 13 deletions(-)

diff -r 2ff199e2842b -r 7926538a6332 tools/xentrace/xenctx.c
--- a/tools/xentrace/xenctx.c   Tue Jan 11 11:40:50 2011 +0000
+++ b/tools/xentrace/xenctx.c   Tue Jan 11 11:41:39 2011 +0000
@@ -19,6 +19,7 @@
 #include <unistd.h>
 #include <errno.h>
 #include <signal.h>
+#include <ctype.h>
 #include <string.h>
 #include <inttypes.h>
 #include <getopt.h>
@@ -58,7 +59,6 @@ int disp_tlb;
 
 struct symbol {
     guest_word_t address;
-    char type;
     char *name;
     struct symbol *next;
 } *symbol_table = NULL;
@@ -112,12 +112,12 @@ static void insert_symbol(struct symbol 
 
     /* The System.map is usually already sorted... */
     if (prev
-        && prev->address < symbol->address
+        && prev->address <= symbol->address
         && (!prev->next || prev->next->address > symbol->address)) {
         s = prev;
     } else {
         /* ... otherwise do crappy/slow search for the correct place */
-        while(s && s->next && s->next->address < symbol->address)
+        while (s->next && s->next->address <= symbol->address)
             s = s->next;
     }
 
@@ -130,13 +130,13 @@ static struct symbol *lookup_symbol(gues
 {
     struct symbol *s = symbol_table;
 
-    while(s && s->next && s->next->address < address)
+    if (!s)
+        return NULL;
+
+    while (s->next && s->next->address < address)
         s = s->next;
 
-    if (s && s->address < address)
-        return s;
-
-    return NULL;
+    return s->next && s->next->address <= address ? s->next : s;
 }
 
 static void print_symbol(guest_word_t addr)
@@ -159,7 +159,7 @@ static void print_symbol(guest_word_t ad
 
 static void read_symbol_table(const char *symtab)
 {
-    char line[256];
+    char type, line[256];
     char *p;
     struct symbol *symbol;
     FILE *f;
@@ -178,9 +178,13 @@ static void read_symbol_table(const char
 
         /* need more checks for syntax here... */
         symbol->address = strtoull(line, &p, 16);
-        p++;
-        symbol->type = *p++;
-        p++;
+        if (!isspace(*p++))
+            continue;
+        type = *p++;
+        if (!isalpha(type) && type != '?')
+            continue;
+        if (!isspace(*p++))
+            continue;
 
         /* in the future we should handle the module name
          * being appended here, this would allow us to use
@@ -190,7 +194,18 @@ static void read_symbol_table(const char
             p[strlen(p)-1] = '\0';
         symbol->name = strdup(p);
 
-        insert_symbol(symbol);
+        switch (type) {
+        case 'A': /* global absolute */
+        case 'a': /* local absolute */
+            break;
+        case 'U': /* undefined */
+        case 'v': /* undefined weak object */
+        case 'w': /* undefined weak function */
+            continue;
+        default:
+            insert_symbol(symbol);
+            break;
+        }
 
         if (strcmp(symbol->name, "_stext") == 0)
             kernel_stext = symbol->address;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] xenctx: misc adjustments, Xen patchbot-unstable <=