Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
ltrace
ltrace.trunk-r33.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ltrace.trunk-r33.patch of Package ltrace
------------------------------------------------------------------------ r33 | pgilliam-guest | 2006-03-13 17:43:13 +0000 (Mon, 13 Mar 2006) | 3 lines Changed paths: M /ltrace/trunk/elf.c M /ltrace/trunk/options.c M /ltrace/trunk/options.h fix the -x processing to get rid of bad waring. ------------------------------------------------------------------------ --- elf.c | 29 ++++++++++++++++------------- options.c | 7 ++++--- options.h | 8 +++++++- 3 files changed, 27 insertions(+), 17 deletions(-) Index: options.h =================================================================== --- options.h.orig +++ options.h @@ -31,11 +31,17 @@ struct opt_e_t { struct opt_e_t *next; }; +struct opt_x_t { + char *name; + int found; + struct opt_x_t *next; +}; + extern struct opt_p_t *opt_p; /* attach to process with a given pid */ extern struct opt_e_t *opt_e; /* list of function names to display */ extern int opt_e_enable; /* 0 if '!' is used, 1 otherwise */ -extern struct opt_e_t *opt_x; /* list of functions to break at */ +extern struct opt_x_t *opt_x; /* list of functions to break at */ extern char **process_options(int argc, char **argv); Index: elf.c =================================================================== --- elf.c.orig +++ elf.c @@ -351,9 +351,10 @@ struct library_symbol *read_elf(struct p struct library_symbol *library_symbols = NULL; struct ltelf lte[MAX_LIBRARY + 1]; size_t i; - struct opt_e_t *xptr; + struct opt_x_t *xptr; struct library_symbol **lib_tail = NULL; - struct opt_e_t *main_cheat; + struct opt_x_t *main_cheat; + int exit_out = 0; elf_version(EV_CURRENT); @@ -440,22 +441,24 @@ struct library_symbol *read_elf(struct p add_library_symbol(elf_plt2addr (lte, (void *)addr), name, lib_tail, 1, 0); + xptr->found = 1; break; } } for (xptr = opt_x; xptr; xptr = xptr->next) - if (xptr->name) { - if (strcmp(xptr->name, E_ENTRY_NAME) == 0) - add_library_symbol(elf_plt2addr - (lte, - (void *)lte->ehdr.e_entry), - "_start", lib_tail, 1, 0); - else - fprintf(stderr, - "Warning: Couldn't get symbol \"%s\" " - "from \"%s\" or it's a duplicate", - xptr->name, proc->filename); + if ( ! xptr->found) { + char *badthing = "WARNING"; + if (E_ENTRY_NAME && strcmp(xptr->name, E_ENTRY_NAME)) { + badthing = "ERROR"; + exit_out = 1; + } + fprintf (stderr, + "%s: Couldn't find symbol \"%s\" in file \"%s\"\n", + badthing, xptr->name, proc->filename); } + if (exit_out) { + exit (1); + } for (i = 0; i < library_num + 1; ++i) do_close_elf(<e[i]); Index: options.c =================================================================== --- options.c.orig +++ options.c @@ -51,7 +51,7 @@ struct opt_e_t *opt_e = NULL; int opt_e_enable = 1; /* List of global function names given to -x: */ -struct opt_e_t *opt_x = NULL; +struct opt_x_t *opt_x = NULL; /* Set a break on the routine named here in order to re-initialize breakpoints after all the PLTs have been initialzed */ @@ -323,7 +323,7 @@ char **process_options(int argc, char ** case 'x': { - struct opt_e_t *p = opt_x; + struct opt_x_t *p = opt_x; /* First, check for duplicate. */ while (p && strcmp(p->name, optarg)) { @@ -334,12 +334,13 @@ char **process_options(int argc, char ** } /* If not duplicate, add to list. */ - p = malloc(sizeof(struct opt_e_t)); + p = malloc(sizeof(struct opt_x_t)); if (!p) { perror("ltrace: malloc"); exit(1); } p->name = optarg; + p->found = 0; p->next = opt_x; opt_x = p; break;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor