# HG changeset patch # User Michael Spacefalcon # Date 1404443229 0 # Node ID ddbfc1a1a8112dcc90ab79238b805eac9783a1fb # Parent 13a9ce1590fc785d1dd0da270cddfbb3d769dea2 objgrep: -s implemented diff -r 13a9ce1590fc -r ddbfc1a1a811 objgrep/Makefile --- a/objgrep/Makefile Fri Jul 04 02:56:21 2014 +0000 +++ b/objgrep/Makefile Fri Jul 04 03:07:09 2014 +0000 @@ -1,7 +1,7 @@ CC= gcc CFLAGS= -O2 PROG= objgrep -OBJS= globals.o grep.o lowlevel.o main.o mkpattern.o tables.o +OBJS= dumpmatch.o globals.o grep.o lowlevel.o main.o mkpattern.o tables.o HDRS= coffconst.h filestruct.h globals.h intstruct.h all: ${PROG} diff -r 13a9ce1590fc -r ddbfc1a1a811 objgrep/dumpmatch.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/objgrep/dumpmatch.c Fri Jul 04 03:07:09 2014 +0000 @@ -0,0 +1,40 @@ +/* + * objgrep: output on matches + */ + +#include +#include +#include +#include +#include +#include +#include "intstruct.h" +#include "coffconst.h" +#include "globals.h" + +extern unsigned get_u16(), get_u32(); + +dump_symtab_on_match() +{ + unsigned n; + struct internal_syment *sym; + + printf("\nThis source section's symbols:\n\n"); + for (n = 0; n < nsymtab; n++) { + sym = symtab[n]; + if (!sym) + continue; + if (sym->section != grep_section) + continue; + switch (sym->class) { + case C_EXT: + printf("%s = %08X\n", sym->name, + sym->value + match_offset); + continue; + case C_STAT: + printf("%s:%s = %08X\n", objfilename, sym->name, + sym->value + match_offset); + continue; + } + } +} diff -r 13a9ce1590fc -r ddbfc1a1a811 objgrep/main.c --- a/objgrep/main.c Fri Jul 04 02:56:21 2014 +0000 +++ b/objgrep/main.c Fri Jul 04 03:07:09 2014 +0000 @@ -66,5 +66,7 @@ } printf("%s:%s found in %s at 0x%x\n", objfilename, grep_section->name, binfilename, match_offset); + if (sflag) + dump_symtab_on_match(); exit(0); }