diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/ppc/kernel/find_name.c |
Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/ppc/kernel/find_name.c')
-rw-r--r-- | arch/ppc/kernel/find_name.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/ppc/kernel/find_name.c b/arch/ppc/kernel/find_name.c new file mode 100644 index 00000000000..3c0fa8e0c07 --- /dev/null +++ b/arch/ppc/kernel/find_name.c @@ -0,0 +1,48 @@ +#include <stdio.h> +#include <asm/page.h> +#include <sys/mman.h> +#include <strings.h> +/* + * Finds a given address in the System.map and prints it out + * with its neighbors. -- Cort + */ + +int main(int argc, char **argv) +{ + unsigned long addr, cmp, i; + FILE *f; + char s[256], last[256]; + + if ( argc < 2 ) + { + fprintf(stderr, "Usage: %s <address>\n", argv[0]); + return -1; + } + + for ( i = 1 ; argv[i] ; i++ ) + { + sscanf( argv[i], "%0lx", &addr ); + /* adjust if addr is relative to kernelbase */ + if ( addr < PAGE_OFFSET ) + addr += PAGE_OFFSET; + + if ( (f = fopen( "System.map", "r" )) == NULL ) + { + perror("fopen()\n"); + exit(-1); + } + + while ( !feof(f) ) + { + fgets(s, 255 , f); + sscanf( s, "%0lx", &cmp ); + if ( addr < cmp ) + break; + strcpy( last, s); + } + + printf( "%s%s", last, s ); + } + fclose(f); + return 0; +} |