* [RFA]: Fix objc/1236 - printing non-debuggable symbols
@ 2003-06-07 2:41 Adam Fedor
2003-06-17 3:30 ` Adam Fedor
2004-02-17 0:05 ` Elena Zannoni
0 siblings, 2 replies; 5+ messages in thread
From: Adam Fedor @ 2003-06-07 2:41 UTC (permalink / raw)
To: GDB Patches
[-- Attachment #1: Type: text/plain, Size: 20 bytes --]
Fixes PR objc/1236
[-- Attachment #2: debugover.patch --]
[-- Type: text/plain, Size: 3825 bytes --]
2003-06-06 Adam Fedor <fedor@gnu.org>
Fix objc/1236.
* gdb/linespec.c (decode_line_2): Print non-debuggable (minimal)
symbols.
(decode_objc): Update for change in arguments to decode_line_2
(find_methods): Likewise.
Index: linespec.c
===================================================================
RCS file: /cvs/src/src/gdb/linespec.c,v
retrieving revision 1.48
diff -u -p -r1.48 linespec.c
--- linespec.c 3 Jun 2003 02:56:04 -0000 1.48
+++ linespec.c 7 Jun 2003 02:30:50 -0000
@@ -94,7 +94,7 @@ static void build_canonical_line_spec (s
static char *find_toplevel_char (char *s, char c);
static struct symtabs_and_lines decode_line_2 (struct symbol *[],
- int, int, char ***);
+ int, int, int, char ***);
static struct symtab *symtab_from_filename (char **argptr,
char *p, int is_quote_enclosed);
@@ -442,13 +442,19 @@ find_toplevel_char (char *s, char c)
return 0;
}
-/* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
- operate on (ask user if necessary).
- If CANONICAL is non-NULL return a corresponding array of mangled names
- as canonical line specs there. */
+/* Given a list of NSYM symbols in SYM_ARR, return a list of lines to
+ operate on (ask user if necessary). After processing the first
+ NELTS symbols in sym_arr, continue processing entries until you
+ find a NULL entry -- but treat these entries as minimal_symbols
+ instead of full symbols. This allows us to add functions to the
+ list from non-debugging modules. So, sym_arr will now contain:
+ sym_arr[0..NELTS-1]: struct symbol * sym_arr[NELTS..<first NULL
+ entry>]: struct minimal_symbol. If CANONICAL is non-NULL return a
+ corresponding array of mangled names as canonical line specs
+ there. */
static struct symtabs_and_lines
-decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
+decode_line_2 (struct symbol *sym_arr[], int nelts, int nsym, int funfirstline,
char ***canonical)
{
struct symtabs_and_lines values, return_values;
@@ -475,7 +481,7 @@ decode_line_2 (struct symbol *sym_arr[],
i = 0;
printf_unfiltered ("[0] cancel\n[1] all\n");
- while (i < nelts)
+ for (i = 0; i < nsym; i++)
{
init_sal (&return_values.sals[i]); /* Initialize to zeroes. */
init_sal (&values.sals[i]);
@@ -489,10 +495,28 @@ decode_line_2 (struct symbol *sym_arr[],
values.sals[i].line);
}
else
- printf_unfiltered ("?HERE\n");
- i++;
+ printf_filtered ("[%d] %s\n",
+ (i + 2),
+ SYMBOL_PRINT_NAME (sym_arr[i]) ?
+ SYMBOL_PRINT_NAME (sym_arr[i]) : "?HERE?");
}
-
+
+ if (nelts != nsym)
+ printf_filtered ("\nNon-debugging symbols:\n");
+
+ /* handle minimal_symbols */
+ for (i = nsym; i < nelts; i++)
+ {
+ /* assert (sym_arr[i] != NULL); */
+ values.sals[i].symtab = 0;
+ values.sals[i].line = 0;
+ values.sals[i].end = 0;
+ values.sals[i].pc = SYMBOL_VALUE_ADDRESS (sym_arr[i]);
+ printf_filtered ("[%d] %s\n",
+ (i + 2),
+ SYMBOL_PRINT_NAME (sym_arr[i]));
+ }
+
prompt = getenv ("PS2");
if (prompt == NULL)
{
@@ -1095,7 +1119,7 @@ decode_objc (char **argptr, int funfirst
if (i1 > 1)
{
/* More than one match. The user must choose one or more. */
- return decode_line_2 (sym_arr, i2, funfirstline, canonical);
+ return decode_line_2 (sym_arr, i1, i2, funfirstline, canonical);
}
return values;
@@ -1335,7 +1359,7 @@ find_method (int funfirstline, char ***c
{
/* There is more than one field with that name
(overloaded). Ask the user which one to use. */
- return decode_line_2 (sym_arr, i1, funfirstline, canonical);
+ return decode_line_2 (sym_arr, i1, i1, funfirstline, canonical);
}
else
{
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFA]: Fix objc/1236 - printing non-debuggable symbols
2003-06-07 2:41 [RFA]: Fix objc/1236 - printing non-debuggable symbols Adam Fedor
@ 2003-06-17 3:30 ` Adam Fedor
2004-02-17 0:05 ` Elena Zannoni
1 sibling, 0 replies; 5+ messages in thread
From: Adam Fedor @ 2003-06-17 3:30 UTC (permalink / raw)
To: GDB Patches
Adam Fedor wrote:
> Fixes PR objc/1236
>
>
> ------------------------------------------------------------------------
>
> 2003-06-06 Adam Fedor <fedor@gnu.org>
>
> Fix objc/1236.
> * gdb/linespec.c (decode_line_2): Print non-debuggable (minimal)
> symbols.
> (decode_objc): Update for change in arguments to decode_line_2
> (find_methods): Likewise.
>
I haven't seen any response to this. It would be nice to get this in
before the branch (or know why not...)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFA]: Fix objc/1236 - printing non-debuggable symbols
2003-06-07 2:41 [RFA]: Fix objc/1236 - printing non-debuggable symbols Adam Fedor
2003-06-17 3:30 ` Adam Fedor
@ 2004-02-17 0:05 ` Elena Zannoni
2004-02-24 15:56 ` Adam Fedor
1 sibling, 1 reply; 5+ messages in thread
From: Elena Zannoni @ 2004-02-17 0:05 UTC (permalink / raw)
To: Adam Fedor; +Cc: GDB Patches
Adam Fedor writes:
> Fixes PR objc/1236
>
> 2003-06-06 Adam Fedor <fedor@gnu.org>
>
> Fix objc/1236.
> * gdb/linespec.c (decode_line_2): Print non-debuggable (minimal)
> symbols.
> (decode_objc): Update for change in arguments to decode_line_2
> (find_methods): Likewise.
>
sorry for the delay, this got lost in my pile. I see what you are
doing, but could you have 2 separate arrays of symbol pointers and of
msymbol pointers instead of concatenating the two? This way you would
also simplify the find_imps code (no need to swap the symbols and the
msymbols) and also the call to decode_line_2 in the c++ code would
look less weird, it could just pass NULL's.
elena
> Index: linespec.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/linespec.c,v
> retrieving revision 1.48
> diff -u -p -r1.48 linespec.c
> --- linespec.c 3 Jun 2003 02:56:04 -0000 1.48
> +++ linespec.c 7 Jun 2003 02:30:50 -0000
> @@ -94,7 +94,7 @@ static void build_canonical_line_spec (s
> static char *find_toplevel_char (char *s, char c);
>
> static struct symtabs_and_lines decode_line_2 (struct symbol *[],
> - int, int, char ***);
> + int, int, int, char ***);
>
> static struct symtab *symtab_from_filename (char **argptr,
> char *p, int is_quote_enclosed);
> @@ -442,13 +442,19 @@ find_toplevel_char (char *s, char c)
> return 0;
> }
>
> -/* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
> - operate on (ask user if necessary).
> - If CANONICAL is non-NULL return a corresponding array of mangled names
> - as canonical line specs there. */
> +/* Given a list of NSYM symbols in SYM_ARR, return a list of lines to
> + operate on (ask user if necessary). After processing the first
> + NELTS symbols in sym_arr, continue processing entries until you
> + find a NULL entry -- but treat these entries as minimal_symbols
> + instead of full symbols. This allows us to add functions to the
> + list from non-debugging modules. So, sym_arr will now contain:
> + sym_arr[0..NELTS-1]: struct symbol * sym_arr[NELTS..<first NULL
> + entry>]: struct minimal_symbol. If CANONICAL is non-NULL return a
> + corresponding array of mangled names as canonical line specs
> + there. */
>
> static struct symtabs_and_lines
> -decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
> +decode_line_2 (struct symbol *sym_arr[], int nelts, int nsym, int funfirstline,
> char ***canonical)
> {
> struct symtabs_and_lines values, return_values;
> @@ -475,7 +481,7 @@ decode_line_2 (struct symbol *sym_arr[],
>
> i = 0;
> printf_unfiltered ("[0] cancel\n[1] all\n");
> - while (i < nelts)
> + for (i = 0; i < nsym; i++)
> {
> init_sal (&return_values.sals[i]); /* Initialize to zeroes. */
> init_sal (&values.sals[i]);
> @@ -489,10 +495,28 @@ decode_line_2 (struct symbol *sym_arr[],
> values.sals[i].line);
> }
> else
> - printf_unfiltered ("?HERE\n");
> - i++;
> + printf_filtered ("[%d] %s\n",
> + (i + 2),
> + SYMBOL_PRINT_NAME (sym_arr[i]) ?
> + SYMBOL_PRINT_NAME (sym_arr[i]) : "?HERE?");
> }
> -
> +
> + if (nelts != nsym)
> + printf_filtered ("\nNon-debugging symbols:\n");
> +
> + /* handle minimal_symbols */
> + for (i = nsym; i < nelts; i++)
> + {
> + /* assert (sym_arr[i] != NULL); */
> + values.sals[i].symtab = 0;
> + values.sals[i].line = 0;
> + values.sals[i].end = 0;
> + values.sals[i].pc = SYMBOL_VALUE_ADDRESS (sym_arr[i]);
> + printf_filtered ("[%d] %s\n",
> + (i + 2),
> + SYMBOL_PRINT_NAME (sym_arr[i]));
> + }
> +
> prompt = getenv ("PS2");
> if (prompt == NULL)
> {
> @@ -1095,7 +1119,7 @@ decode_objc (char **argptr, int funfirst
> if (i1 > 1)
> {
> /* More than one match. The user must choose one or more. */
> - return decode_line_2 (sym_arr, i2, funfirstline, canonical);
> + return decode_line_2 (sym_arr, i1, i2, funfirstline, canonical);
> }
>
> return values;
> @@ -1335,7 +1359,7 @@ find_method (int funfirstline, char ***c
> {
> /* There is more than one field with that name
> (overloaded). Ask the user which one to use. */
> - return decode_line_2 (sym_arr, i1, funfirstline, canonical);
> + return decode_line_2 (sym_arr, i1, i1, funfirstline, canonical);
> }
> else
> {
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFA]: Fix objc/1236 - printing non-debuggable symbols
2004-02-17 0:05 ` Elena Zannoni
@ 2004-02-24 15:56 ` Adam Fedor
2004-03-22 4:30 ` Adam Fedor
0 siblings, 1 reply; 5+ messages in thread
From: Adam Fedor @ 2004-02-24 15:56 UTC (permalink / raw)
To: Elena Zannoni; +Cc: GDB Patches
[-- Attachment #1: Type: text/plain, Size: 975 bytes --]
On Mon, 2004-02-16 at 17:01, Elena Zannoni wrote:
> Adam Fedor writes:
> > Fixes PR objc/1236
> >
> > 2003-06-06 Adam Fedor <fedor@gnu.org>
> >
> > Fix objc/1236.
> > * gdb/linespec.c (decode_line_2): Print non-debuggable (minimal)
> > symbols.
> > (decode_objc): Update for change in arguments to decode_line_2
> > (find_methods): Likewise.
> >
>
>
> sorry for the delay, this got lost in my pile. I see what you are
> doing, but could you have 2 separate arrays of symbol pointers and of
> msymbol pointers instead of concatenating the two? This way you would
> also simplify the find_imps code (no need to swap the symbols and the
> msymbols) and also the call to decode_line_2 in the c++ code would
> look less weird, it could just pass NULL's.
>
Well I looked into doing this, but splitting up the arrays looks pretty
ugly and more error prone than the other approach. Plus the arrays have
to be combined eventually in decode_line_2 anyway.
[-- Attachment #2: splitdebugover.patch --]
[-- Type: text/x-patch, Size: 11089 bytes --]
Index: linespec.c
===================================================================
RCS file: /cvs/src/src/gdb/linespec.c,v
retrieving revision 1.56
diff -u -p -r1.56 linespec.c
--- linespec.c 11 Feb 2004 18:04:14 -0000 1.56
+++ linespec.c 24 Feb 2004 15:54:21 -0000
@@ -96,8 +96,9 @@ static char *find_toplevel_char (char *s
static int is_objc_method_format (const char *s);
-static struct symtabs_and_lines decode_line_2 (struct symbol *[],
- int, int, char ***);
+static struct symtabs_and_lines decode_line_2 (struct symbol *[], int,
+ struct minimal_symbol *[], int,
+ int, char ***);
static struct symtab *symtab_from_filename (char **argptr,
char *p, int is_quote_enclosed,
@@ -467,13 +468,16 @@ is_objc_method_format (const char *s)
}
/* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
- operate on (ask user if necessary).
+ operate on (ask user if necessary). After processing the symbols,
+ process the minimal_symbols as well (if any). This allows us to add
+ functions to the list from non-debugging modules.
If CANONICAL is non-NULL return a corresponding array of mangled names
as canonical line specs there. */
static struct symtabs_and_lines
-decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
- char ***canonical)
+decode_line_2 (struct symbol *sym_arr[], int nelts,
+ struct minimal_symbol *msym_arr[], int nmsym,
+ int funfirstline, char ***canonical)
{
struct symtabs_and_lines values, return_values;
char *args, *arg1;
@@ -484,9 +488,9 @@ decode_line_2 (struct symbol *sym_arr[],
char **canonical_arr = (char **) NULL;
values.sals = (struct symtab_and_line *)
- alloca (nelts * sizeof (struct symtab_and_line));
+ alloca ((nelts+nmsym) * sizeof (struct symtab_and_line));
return_values.sals = (struct symtab_and_line *)
- xmalloc (nelts * sizeof (struct symtab_and_line));
+ xmalloc ((nelts+nmsym) * sizeof (struct symtab_and_line));
old_chain = make_cleanup (xfree, return_values.sals);
if (canonical)
@@ -523,7 +527,21 @@ decode_line_2 (struct symbol *sym_arr[],
printf_unfiltered ("?HERE\n");
i++;
}
-
+
+ /* handle minimal_symbols */
+ if (nmsym > 0)
+ printf_filtered ("\nNon-debugging symbols:\n");
+ for (i = 0; i < nmsym; i++)
+ {
+ values.sals[nelts+i].symtab = 0;
+ values.sals[nelts+i].line = 0;
+ values.sals[nelts+i].end = 0;
+ values.sals[nelts+i].pc = SYMBOL_VALUE_ADDRESS (msym_arr[i]);
+ printf_filtered ("[%d] %s\n",
+ (nelts + i + 2),
+ SYMBOL_PRINT_NAME (msym_arr[i]));
+ }
+
prompt = getenv ("PS2");
if (prompt == NULL)
{
@@ -553,7 +571,7 @@ decode_line_2 (struct symbol *sym_arr[],
{
if (canonical_arr)
{
- for (i = 0; i < nelts; i++)
+ for (i = 0; i < (nelts+nmsym); i++)
{
if (canonical_arr[i] == NULL)
{
@@ -563,13 +581,13 @@ decode_line_2 (struct symbol *sym_arr[],
}
}
memcpy (return_values.sals, values.sals,
- (nelts * sizeof (struct symtab_and_line)));
- return_values.nelts = nelts;
+ ((nelts+nmsym) * sizeof (struct symtab_and_line)));
+ return_values.nelts = (nelts+nmsym);
discard_cleanups (old_chain);
return return_values;
}
- if (num >= nelts + 2)
+ if (num >= (nelts+nmsym) + 2)
{
printf_unfiltered ("No choice number %d.\n", num);
}
@@ -1075,6 +1093,7 @@ decode_objc (char **argptr, int funfirst
{
struct symtabs_and_lines values;
struct symbol **sym_arr = NULL;
+ struct minimal_symbol **msym_arr = NULL;
struct symbol *sym = NULL;
char *copy = NULL;
struct block *block = NULL;
@@ -1089,25 +1108,29 @@ decode_objc (char **argptr, int funfirst
else
block = get_selected_block (0);
- copy = find_imps (file_symtab, block, *argptr, NULL, &i1, &i2);
+ copy = find_imps (file_symtab, block, *argptr, NULL, &i1, NULL, &i2);
if (i1 > 0)
{
- sym_arr = (struct symbol **) alloca ((i1 + 1) * sizeof (struct symbol *));
+ sym_arr = (struct symbol **)
+ alloca ((i1 + 1) * sizeof (struct symbol *));
sym_arr[i1] = 0;
-
- copy = find_imps (file_symtab, block, *argptr, sym_arr, &i1, &i2);
+ }
+ if (i2 > 0)
+ {
+ msym_arr = (struct minimal_symbol **)
+ alloca ((i2 + 1) * sizeof (struct minimal_symbol *));
+ msym_arr[i2] = 0;
+ }
+ if (i1 > 0 || i2 > 0)
+ {
+ copy = find_imps (file_symtab, block, *argptr, sym_arr, &i1, msym_arr, &i2);
*argptr = copy;
}
- /* i1 now represents the TOTAL number of matches found.
- i2 represents how many HIGH-LEVEL (struct symbol) matches,
- which will come first in the sym_arr array. Any low-level
- (minimal_symbol) matches will follow those. */
-
- if (i1 == 1)
+ if ((i1+i2) == 1)
{
- if (i2 > 0)
+ if (i1 > 0)
{
/* Already a struct symbol. */
sym = sym_arr[0];
@@ -1142,10 +1165,10 @@ decode_objc (char **argptr, int funfirst
return values;
}
- if (i1 > 1)
+ if ((i1+i2) > 1)
{
/* More than one match. The user must choose one or more. */
- return decode_line_2 (sym_arr, i2, funfirstline, canonical);
+ return decode_line_2 (sym_arr, i1, msym_arr, i2, funfirstline, canonical);
}
return values;
@@ -1433,7 +1456,7 @@ find_method (int funfirstline, char ***c
{
/* There is more than one field with that name
(overloaded). Ask the user which one to use. */
- return decode_line_2 (sym_arr, i1, funfirstline, canonical);
+ return decode_line_2 (sym_arr, i1, NULL, 0, funfirstline, canonical);
}
else
{
Index: objc-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/objc-lang.c,v
retrieving revision 1.34
diff -u -p -r1.34 objc-lang.c
--- objc-lang.c 18 Feb 2004 04:22:35 -0000 1.34
+++ objc-lang.c 24 Feb 2004 15:54:22 -0000
@@ -1277,7 +1277,8 @@ static void
find_methods (struct symtab *symtab, char type,
const char *class, const char *category,
const char *selector, struct symbol **syms,
- unsigned int *nsym, unsigned int *ndebug)
+ unsigned int *ndebug, struct minimal_symbol **msyms,
+ unsigned int *nsym)
{
struct objfile *objfile = NULL;
struct minimal_symbol *msymbol = NULL;
@@ -1361,10 +1362,8 @@ find_methods (struct symtab *symtab, cha
lower part of sym_arr (below num_debuggable). */
if (syms != NULL)
{
- syms[csym] = syms[cdebug];
syms[cdebug] = sym;
}
- csym++;
cdebug++;
}
else
@@ -1372,16 +1371,16 @@ find_methods (struct symtab *symtab, cha
warning (
"debugging symbol \"%s\" does not match minimal symbol (\"%s\"); ignoring",
newsymname, symname);
- if (syms != NULL)
- syms[csym] = (struct symbol *) msymbol;
+ if (msyms != NULL)
+ msyms[csym] = msymbol;
csym++;
}
}
else
{
/* Found a non-debuggable method symbol. */
- if (syms != NULL)
- syms[csym] = (struct symbol *) msymbol;
+ if (msyms != NULL)
+ msyms[csym] = msymbol;
csym++;
}
}
@@ -1394,7 +1393,8 @@ find_methods (struct symtab *symtab, cha
char *find_imps (struct symtab *symtab, struct block *block,
char *method, struct symbol **syms,
- unsigned int *nsym, unsigned int *ndebug)
+ unsigned int *ndebug, struct minimal_symbol **msyms,
+ unsigned int *nsym)
{
char type = '\0';
char *class = NULL;
@@ -1437,8 +1437,7 @@ char *find_imps (struct symtab *symtab,
if (sym != NULL)
{
if (syms)
- syms[csym] = sym;
- csym++;
+ syms[cdebug] = sym;
cdebug++;
}
@@ -1447,51 +1446,23 @@ char *find_imps (struct symtab *symtab,
if (msym != NULL)
{
- if (syms)
- syms[csym] = (struct symbol *)msym;
+ if (msyms)
+ msyms[csym] = msym;
csym++;
}
}
- if (syms != NULL)
+ if (syms != NULL || msyms != NULL)
find_methods (symtab, type, class, category, selector,
- syms + csym, &ncsym, &ncdebug);
+ syms + cdebug, &ncdebug, msyms + csym, &ncsym);
else
find_methods (symtab, type, class, category, selector,
- NULL, &ncsym, &ncdebug);
+ NULL, &ncdebug, NULL, &ncsym);
/* If we didn't find any methods, just return. */
if (ncsym == 0 && ncdebug == 0)
return method;
- /* Take debug symbols from the second batch of symbols and swap them
- * with debug symbols from the first batch. Repeat until either the
- * second section is out of debug symbols or the first section is
- * full of debug symbols. Either way we have all debug symbols
- * packed to the beginning of the buffer.
- */
-
- if (syms != NULL)
- {
- while ((cdebug < csym) && (ncdebug > 0))
- {
- struct symbol *s = NULL;
- /* First non-debugging symbol. */
- unsigned int i = cdebug;
- /* Last of second batch of debug symbols. */
- unsigned int j = csym + ncdebug - 1;
-
- s = syms[j];
- syms[j] = syms[i];
- syms[i] = s;
-
- /* We've moved a symbol from the second debug section to the
- first one. */
- cdebug++;
- ncdebug--;
- }
- }
-
csym += ncsym;
cdebug += ncdebug;
@@ -1500,23 +1471,20 @@ char *find_imps (struct symtab *symtab,
if (ndebug != NULL)
*ndebug = cdebug;
- if (syms == NULL)
+ if (syms == NULL && msyms == NULL)
return method + (tmp - buf);
- if (csym > 1)
- {
- /* Sort debuggable symbols. */
- if (cdebug > 1)
- qsort (syms, cdebug, sizeof (struct minimal_symbol *),
- compare_classes);
+ /* Sort debuggable symbols. */
+ if (cdebug > 1)
+ qsort (syms, cdebug, sizeof (struct minimal_symbol *), compare_classes);
- /* Sort minimal_symbols. */
- if ((csym - cdebug) > 1)
- qsort (&syms[cdebug], csym - cdebug,
- sizeof (struct minimal_symbol *), compare_classes);
- }
- /* Terminate the sym_arr list. */
- syms[csym] = 0;
+ /* Sort minimal_symbols. */
+ if (csym > 1)
+ qsort (msyms, csym, sizeof (struct minimal_symbol *), compare_classes);
+
+ /* Terminate the sym_arr lists. */
+ syms[cdebug] = 0;
+ msyms[csym] = 0;
return method + (tmp - buf);
}
Index: objc-lang.h
===================================================================
RCS file: /cvs/src/src/gdb/objc-lang.h,v
retrieving revision 1.11
diff -u -p -r1.11 objc-lang.h
--- objc-lang.h 18 Feb 2004 04:22:35 -0000 1.11
+++ objc-lang.h 24 Feb 2004 15:54:22 -0000
@@ -53,7 +53,8 @@ extern char *parse_method (char *method,
extern char *find_imps (struct symtab *symtab, struct block *block,
char *method, struct symbol **syms,
- unsigned int *nsym, unsigned int *ndebug);
+ unsigned int *ndebug, struct minimal_symbol **msyms,
+ unsigned int *nsym);
extern struct value *value_nsstring (char *ptr, int len);
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFA]: Fix objc/1236 - printing non-debuggable symbols
2004-02-24 15:56 ` Adam Fedor
@ 2004-03-22 4:30 ` Adam Fedor
0 siblings, 0 replies; 5+ messages in thread
From: Adam Fedor @ 2004-03-22 4:30 UTC (permalink / raw)
To: Elena Zannoni; +Cc: GDB Patches
On Tue, 2004-02-24 at 08:56, Adam Fedor wrote:
> On Mon, 2004-02-16 at 17:01, Elena Zannoni wrote:
> > Adam Fedor writes:
> > > Fixes PR objc/1236
> > >
> > > 2003-06-06 Adam Fedor <fedor@gnu.org>
> > >
> > > Fix objc/1236.
> > > * gdb/linespec.c (decode_line_2): Print non-debuggable (minimal)
> > > symbols.
> > > (decode_objc): Update for change in arguments to decode_line_2
> > > (find_methods): Likewise.
> > >
> >
> >
> > sorry for the delay, this got lost in my pile. I see what you are
> > doing, but could you have 2 separate arrays of symbol pointers and of
> > msymbol pointers instead of concatenating the two? This way you would
> > also simplify the find_imps code (no need to swap the symbols and the
> > msymbols) and also the call to decode_line_2 in the c++ code would
> > look less weird, it could just pass NULL's.
> >
>
> Well I looked into doing this, but splitting up the arrays looks pretty
> ugly and more error prone than the other approach. Plus the arrays have
> to be combined eventually in decode_line_2 anyway.
Ping.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2004-03-22 4:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-06-07 2:41 [RFA]: Fix objc/1236 - printing non-debuggable symbols Adam Fedor
2003-06-17 3:30 ` Adam Fedor
2004-02-17 0:05 ` Elena Zannoni
2004-02-24 15:56 ` Adam Fedor
2004-03-22 4:30 ` Adam Fedor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox