* RFC: printing pointers to global (data) variable on Windows...
@ 2012-08-16 15:23 Joel Brobecker
2012-08-16 20:07 ` Tom Tromey
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2012-08-16 15:23 UTC (permalink / raw)
To: gdb-patches
Hello,
I have a piece of code that defines a struct with one of the fields
being a "char *". The field gets set to a global variable:
char my_name[] = "MyName";
k = {my_name, [...]};
When trying to print key.system_name on Windows, we get:
(gdb) p k.system_name
$2 = 0x403000 "MyName"
We're missing the reference to the global "my_name". On GNU/Linux,
we get:
(gdb) p k.system_name
$3 = 0x6008e8 <my_name> "MyName"
I couldn't understand why this wasn't working, since GDB does not seem
to have any problems determining what symbol is at 0x403000:
(gdb) info symbol 0x403000
my_name in section .data of c:\[...]\lb.exe
Debugging GDB, I found the following block of code in build_address_symbolic:
if (msymbol != NULL
&& MSYMBOL_SIZE (msymbol) == 0
&& MSYMBOL_TYPE (msymbol) != mst_text
&& MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
&& MSYMBOL_TYPE (msymbol) != mst_file_text)
msymbol = NULL;
Basically, build_address_symbolic searches for symbol names two
ways: through the minimal symbols, and through the symbol table,
but only function symbols:
msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
symbol = find_pc_sect_function (addr, section);
I looked at the COFF/PE documentation, and I do not think that there
is a way to provide the size of each symbol in the symbol table.
So the block of code above discards our minimal symbol entry due to
the size (always) being zero. And since our global is not a function,
we do not find anything from the debugging info either.
Does anyone know why we have the block discarding zero-sized non-text
symbols? I ran the testsuite on x86_64-linux, and got no regression.
My second question is regarding the fact that we looking symbols for
functions only. This probably made sense if the function was used for
text addresses (like disass), but does it now? Or perhaps it's the
GNU/Linux output that should be fixed, and only text symbols should
be printed when printing addresses (somehow, I do not think that this
would be right).
At the moment, I am thinking that the proper fix would probably be
two ways: ditch the block discarding zero-sized non-text symbols
(this breaks with symbol tables whose format do not allow for symbol
sizes), and also search all global symbols, rather than just functions.
Thoughts?
Thank you,
--
Joel
PS: I do not think that the problem is specific to the fact that this
is a field inside a struct. I am pretty sure that the same would
happen with a simple "char *" variable. But that's what I used for
my investigation.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-16 15:23 RFC: printing pointers to global (data) variable on Windows Joel Brobecker
@ 2012-08-16 20:07 ` Tom Tromey
2012-08-16 22:45 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2012-08-16 20:07 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
Joel> if (msymbol != NULL
Joel> && MSYMBOL_SIZE (msymbol) == 0
Joel> && MSYMBOL_TYPE (msymbol) != mst_text
Joel> && MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
Joel> && MSYMBOL_TYPE (msymbol) != mst_file_text)
Joel> msymbol = NULL;
I think the reason for this is here:
http://sourceware.org/ml/gdb-patches/2012-04/msg00175.html
text symbols are allowed since without them (according to a later
message) asm-source.exp would regress.
Joel> I looked at the COFF/PE documentation, and I do not think that there
Joel> is a way to provide the size of each symbol in the symbol table.
Joel> So the block of code above discards our minimal symbol entry due to
Joel> the size (always) being zero. And since our global is not a function,
Joel> we do not find anything from the debugging info either.
Joel> Does anyone know why we have the block discarding zero-sized non-text
Joel> symbols? I ran the testsuite on x86_64-linux, and got no regression.
I wonder what happens if you set the symbol sizes to 1.
Ok, horrible idea. Perhaps some flag bit on the minsym instead?
Or on the objfile?
Joel> My second question is regarding the fact that we looking symbols for
Joel> functions only. This probably made sense if the function was used for
Joel> text addresses (like disass), but does it now? Or perhaps it's the
Joel> GNU/Linux output that should be fixed, and only text symbols should
Joel> be printed when printing addresses (somehow, I do not think that this
Joel> would be right).
IIRC the full symbol tables only record address information for text
symbols, not for data symbols. If so, one cannot do this lookup.
That's what I remember from when I wrote this change. It would be nice
to be wrong since the current approach means we can't always print a
sensible answer for users.
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-16 20:07 ` Tom Tromey
@ 2012-08-16 22:45 ` Joel Brobecker
2012-08-17 14:23 ` Tom Tromey
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2012-08-16 22:45 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
> I think the reason for this is here:
>
> http://sourceware.org/ml/gdb-patches/2012-04/msg00175.html
Thanks for the pointer!
> Joel> My second question is regarding the fact that we looking symbols for
> Joel> functions only. This probably made sense if the function was used for
> Joel> text addresses (like disass), but does it now? Or perhaps it's the
> Joel> GNU/Linux output that should be fixed, and only text symbols should
> Joel> be printed when printing addresses (somehow, I do not think that this
> Joel> would be right).
>
> IIRC the full symbol tables only record address information for text
> symbols, not for data symbols. If so, one cannot do this lookup.
I do not understand this part, though. Searches by name should return
global variables too, no?
> Ok, horrible idea. Perhaps some flag bit on the minsym instead?
> Or on the objfile?
You mean, setting a flag that allows us to know that sizes are not
available, and thus avoid the heuristics/filtering? I wish we could
have consistent behavior instead, but that might not be achievable.
I thought about setting the size to -1, but that would open its own
can of worms, I imagine, and that's not doable either, because the
symbol size is an unsigned value (as it should be, if you ask me).
Looking at the definition of struct minimal_symbol, it looks like
we'd have some room for an extra flag. But I am not sure I really
want to go that way. The filtering wouldn't be a problem if we were
searching for all global symbols, not just functions.
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-16 22:45 ` Joel Brobecker
@ 2012-08-17 14:23 ` Tom Tromey
2012-08-17 23:16 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2012-08-17 14:23 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
Tom> IIRC the full symbol tables only record address information for text
Tom> symbols, not for data symbols. If so, one cannot do this lookup.
Joel> I do not understand this part, though. Searches by name should return
Joel> global variables too, no?
build_address_symbolic is searching for the symbol by PC:
symbol = find_pc_sect_function (addr, section);
I think it would be reasonable, and maybe useful, if gdb could do
by-address searches for data symbols. That was a bigger change than I
wanted to make for the "set print symbol" series though.
Tom> Ok, horrible idea. Perhaps some flag bit on the minsym instead?
Tom> Or on the objfile?
Joel> You mean, setting a flag that allows us to know that sizes are not
Joel> available, and thus avoid the heuristics/filtering?
Yeah.
Joel> Looking at the definition of struct minimal_symbol, it looks like
Joel> we'd have some room for an extra flag.
Yes. pahole is super for this kind of thing... it reports a pretty big
hole after target_flag_2.
Joel> But I am not sure I really
Joel> want to go that way. The filtering wouldn't be a problem if we were
Joel> searching for all global symbols, not just functions.
That would be best, but I'm out of ideas.
I think the existing check is really what we want for ELF.
Maybe for ELF we could find some way to mark symbols we don't want.
But that's just the flag idea but the sense reversed.
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-17 14:23 ` Tom Tromey
@ 2012-08-17 23:16 ` Joel Brobecker
2012-08-20 15:09 ` Joel Brobecker
2012-08-20 17:48 ` Tom Tromey
0 siblings, 2 replies; 18+ messages in thread
From: Joel Brobecker @ 2012-08-17 23:16 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
> I think it would be reasonable, and maybe useful, if gdb could do
> by-address searches for data symbols. That was a bigger change than I
> wanted to make for the "set print symbol" series though.
As mentioned on IRC, I just realize, now, the kind of project this is...
So, I went with the other solution, which is to mark the minimal symbols
from COFF/PE as size-less, and avoid the filtering in that case.
Attached is a patch that does that.
The patch was tested on x86-windows (using AdaCore's testsuite),
as well as on x86_64-linux. But I am not proposing it's inclusion,
for several reasons:
1. I strongly dislike this patch. It feels like an intrusive change
to work around a heuristic that seems very fragile. I'd rather
get rid of the heuristic and accept the false matches.
I am wondering what would happen if we changed the code such that:
If we find a function in the debugging info that matches our
address, then use that instead of trying to see if the minimal
symbol might be closer. When would that happen, anyway?
2. Applying the patch fixes the problem in the sense that we now
get the name of the symbol next to the address. But on the
other hand, it causes us to pick up some other (unrelated)
symbols which were previously ignored by the heuristic. This
is unexpected.
After working on and off on this, I do not feel very confident that
I will be able to tune the filtering to something that would satisfy
me. So, rather than trying to do our best, I thought we might try
to do the simplest (removing the filtering of zero-sized data symbols).
Another option is for the FSF version of GDB to remain as it is,
with its bias towards GNU/Linux, while we will change AdaCore's
version to turn "set print symbol" to "off" by default...
Thoughts?
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-17 23:16 ` Joel Brobecker
@ 2012-08-20 15:09 ` Joel Brobecker
2012-08-20 17:50 ` Tom Tromey
2012-08-20 17:48 ` Tom Tromey
1 sibling, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2012-08-20 15:09 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 307 bytes --]
> As mentioned on IRC, I just realize, now, the kind of project this is...
> So, I went with the other solution, which is to mark the minimal symbols
> from COFF/PE as size-less, and avoid the filtering in that case.
> Attached is a patch that does that.
Really attached, this time. Thanks, Tom.
--
Joel
[-- Attachment #2: 0001-WIP-Minimal-symbols-with-no-size-info.patch --]
[-- Type: text/x-diff, Size: 5923 bytes --]
From 9ddc3d640a76b98814d6599327406f25535fe3bb Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Sat, 18 Aug 2012 00:32:08 +0200
Subject: [PATCH] WIP: Minimal symbols with no size info.
---
gdb/coff-pe-read.c | 6 ++++--
gdb/coffread.c | 5 ++++-
gdb/minsyms.c | 7 ++++---
gdb/minsyms.h | 19 ++++++++++++-------
gdb/printcmd.c | 1 +
gdb/symtab.h | 4 ++++
6 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/gdb/coff-pe-read.c b/gdb/coff-pe-read.c
index 66c7c82..070c8f7 100644
--- a/gdb/coff-pe-read.c
+++ b/gdb/coff-pe-read.c
@@ -108,6 +108,7 @@ add_pe_exported_sym (char *sym_name,
char *qualified_name = 0;
int dll_name_len = strlen (dll_name);
+ struct minimal_symbol *msym;
/* Generate a (hopefully unique) qualified name using the first part
of the dll name, e.g. KERNEL32!AddAtomA. This matches the style
@@ -125,8 +126,9 @@ add_pe_exported_sym (char *sym_name,
xfree (qualified_name);
/* Enter the plain name as well, which might not be unique. */
- prim_record_minimal_symbol (sym_name, vma,
- section_data->ms_type, objfile);
+ msym = prim_record_minimal_symbol (sym_name, vma,
+ section_data->ms_type, objfile);
+ MSYMBOL_HAS_SIZE (msym) = 0;
}
/* Truncate a dll_name at the first dot character. */
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 0c7e6d9..ab8bd36 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -422,15 +422,18 @@ record_minimal_symbol (struct coff_symbol *cs, CORE_ADDR address,
struct objfile *objfile)
{
struct bfd_section *bfd_section;
+ struct minimal_symbol *msym;
/* We don't want TDESC entry points in the minimal symbol table. */
if (cs->c_name[0] == '@')
return NULL;
bfd_section = cs_to_bfd_section (cs, objfile);
- return prim_record_minimal_symbol_and_info (cs->c_name, address,
+ msym = prim_record_minimal_symbol_and_info (cs->c_name, address,
type, section,
bfd_section, objfile);
+ MSYMBOL_HAS_SIZE (msym) = 0;
+ return msym;
}
\f
/* coff_symfile_init ()
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 1070fff..02b64ea 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -842,7 +842,7 @@ init_minimal_symbol_collection (void)
/* See minsyms.h. */
-void
+struct minimal_symbol *
prim_record_minimal_symbol (const char *name, CORE_ADDR address,
enum minimal_symbol_type ms_type,
struct objfile *objfile)
@@ -869,8 +869,8 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address,
section = -1;
}
- prim_record_minimal_symbol_and_info (name, address, ms_type,
- section, NULL, objfile);
+ return prim_record_minimal_symbol_and_info (name, address, ms_type,
+ section, NULL, objfile);
}
/* See minsyms.h. */
@@ -938,6 +938,7 @@ prim_record_minimal_symbol_full (const char *name, int name_len, int copy_name,
MSYMBOL_TARGET_FLAG_1 (msymbol) = 0;
MSYMBOL_TARGET_FLAG_2 (msymbol) = 0;
MSYMBOL_SIZE (msymbol) = 0;
+ MSYMBOL_HAS_SIZE (msymbol) = 1; /* See this function's documentation. */
/* The hash pointers must be cleared! If they're not,
add_minsym_to_hash_table will NOT add this msymbol to the hash table. */
diff --git a/gdb/minsyms.h b/gdb/minsyms.h
index 8f0472f..76d7082 100644
--- a/gdb/minsyms.h
+++ b/gdb/minsyms.h
@@ -60,7 +60,14 @@ struct cleanup *make_cleanup_discard_minimal_symbols (void);
though, to stash the pointer anywhere; as minimal symbols may be
moved after creation. The memory for the returned minimal symbol
is still owned by the minsyms.c code, and should not be freed.
-
+
+ By default, it is assumed that the symbol size can be determined,
+ which means that the "has_size" flag of the returned minimal symbol
+ is set to 1. But some symbol table formats such as the one used
+ in COFF/PE, for instance, do not include that piece of information.
+ In that case, the "has_size" flag of the returned symbol should be
+ unset.
+
Arguments are:
NAME - the symbol's name
@@ -89,13 +96,11 @@ struct minimal_symbol *prim_record_minimal_symbol_full
- uses strlen to compute NAME_LEN,
- passes COPY_NAME = 0,
- passes SECTION = 0,
- - and passes BFD_SECTION = NULL.
-
- This variant does not return the new symbol. */
+ - and passes BFD_SECTION = NULL. */
-void prim_record_minimal_symbol (const char *, CORE_ADDR,
- enum minimal_symbol_type,
- struct objfile *);
+struct minimal_symbol *prim_record_minimal_symbol (const char *, CORE_ADDR,
+ enum minimal_symbol_type,
+ struct objfile *);
/* Like prim_record_minimal_symbol_full, but:
- uses strlen to compute NAME_LEN,
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index d5b5b63..9e8cd65 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -680,6 +680,7 @@ build_address_symbolic (struct gdbarch *gdbarch,
}
if (msymbol != NULL
+ && MSYMBOL_HAS_SIZE (msymbol)
&& MSYMBOL_SIZE (msymbol) == 0
&& MSYMBOL_TYPE (msymbol) != mst_text
&& MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 76120a3..f45f498 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -348,6 +348,9 @@ struct minimal_symbol
unsigned int target_flag_1 : 1;
unsigned int target_flag_2 : 1;
+ /* Should be zero if the size of the minimal symbol is not available. */
+ unsigned int has_size : 1;
+
/* Minimal symbols with the same hash key are kept on a linked
list. This is the link. */
@@ -362,6 +365,7 @@ struct minimal_symbol
#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1
#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2
#define MSYMBOL_SIZE(msymbol) (msymbol)->size
+#define MSYMBOL_HAS_SIZE(msymbol) (msymbol)->has_size
#define MSYMBOL_TYPE(msymbol) (msymbol)->type
#include "minsyms.h"
--
1.7.1
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-17 23:16 ` Joel Brobecker
2012-08-20 15:09 ` Joel Brobecker
@ 2012-08-20 17:48 ` Tom Tromey
2012-08-21 15:36 ` Joel Brobecker
1 sibling, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2012-08-20 17:48 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
Joel> 1. I strongly dislike this patch. It feels like an intrusive change
Joel> to work around a heuristic that seems very fragile. I'd rather
Joel> get rid of the heuristic and accept the false matches.
I accept that, but there's another way of looking at it.
It is just a fact that some minimal symbol readers can supply size
information, while others cannot. Right now, this difference is
obscured in the gdb internals -- if you have a minimal symbol you can't
determine whether the size is "zero but valid" or "invalid".
So, supplying the flag makes gdb better model reality. In this sense it
is an improvement. Now, whether it is a *useful* improvement... :)
Joel> I am wondering what would happen if we changed the code such that:
Joel> If we find a function in the debugging info that matches our
Joel> address, then use that instead of trying to see if the minimal
Joel> symbol might be closer. When would that happen, anyway?
Yeah, I don't know.
Joel> After working on and off on this, I do not feel very confident that
Joel> I will be able to tune the filtering to something that would satisfy
Joel> me. So, rather than trying to do our best, I thought we might try
Joel> to do the simplest (removing the filtering of zero-sized data symbols).
It seems to me that the filter is correct: if you are on a platform
where minimal symbol sizes are valid, and you see a symbol of size zero,
it does not make sense to print such a symbol. It is, I think, a symbol
that doesn't name a whole object, but rather just some marker in the
assembly.
The code for the filter is actually somewhat goofier, allowing text
symbols through. That just corresponds to gdb's historical behavior; I
am not sure whether or not it is reasonable behavior, but it didn't make
sense to change it in the context of that patch. At least, the intent
is to have it provide the historical behavior; in the past I think
build_address_symbolic was only called for functions.
Joel> Another option is for the FSF version of GDB to remain as it is,
Joel> with its bias towards GNU/Linux, while we will change AdaCore's
Joel> version to turn "set print symbol" to "off" by default...
If you disable "set print symbol", how would that differ from leaving
the filter in place?
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-20 15:09 ` Joel Brobecker
@ 2012-08-20 17:50 ` Tom Tromey
2012-08-21 15:28 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2012-08-20 17:50 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
Joel> + By default, it is assumed that the symbol size can be determined,
Joel> + which means that the "has_size" flag of the returned minimal symbol
Joel> + is set to 1.
What about defaulting it to zero, applying the appended, and then fixing
up the fallout?
I could do the mechanics of this if you think it is ok; and if you plan
to go forward with this.
Tom
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 5401b22..05bc706 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -361,7 +361,12 @@ struct minimal_symbol
#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1
#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2
-#define MSYMBOL_SIZE(msymbol) (msymbol)->size
+#define MSYMBOL_SIZE(msymbol) ((msymbol)->size + 0)
+#define SET_MSYMBOL_SIZE(msymbol, sz) \
+ do { \
+ (msymbol)->size = sz; \
+ (msymbol)->has_size = 1; \
+ } while (0)
#define MSYMBOL_TYPE(msymbol) (msymbol)->type
#include "minsyms.h"
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-20 17:50 ` Tom Tromey
@ 2012-08-21 15:28 ` Joel Brobecker
0 siblings, 0 replies; 18+ messages in thread
From: Joel Brobecker @ 2012-08-21 15:28 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
> What about defaulting it to zero, applying the appended, and then fixing
> up the fallout?
I thought about that too, and got concerned about missing some places.
However, I very much like one thing about your patch, which is the fact
that it now forces the use of a "setter" to change the value of the
msymbol size, and that answers my main worry. And just because of the
"setter" alone, I'd go with this approach.
We could go with this appraoch independently of the has_size flag first,
and then add the flag. The one tiny concern is for readers that did not
set the size of zero-sized symbols because it knew that the default
was already zero.
> I could do the mechanics of this if you think it is ok; and if you plan
> to go forward with this.
Thanks for the kind offer - I brought this up, I should really be
doing the work...
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-20 17:48 ` Tom Tromey
@ 2012-08-21 15:36 ` Joel Brobecker
2012-09-05 14:44 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2012-08-21 15:36 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
> So, supplying the flag makes gdb better model reality. In this sense it
> is an improvement. Now, whether it is a *useful* improvement... :)
This is true.
> It seems to me that the filter is correct: if you are on a platform
> where minimal symbol sizes are valid, and you see a symbol of size zero,
> it does not make sense to print such a symbol.
OK, that makes sense. We might even want to go a little further and
exclude symbols if our address is past the end of the symbol. For
instance, if we have a symbol "bla" at 0x1000, and its size is 4 bytes,
and we're calling our routine with 0x1008, I am not sure it makes
much sense saying 0x1008 is <bla+8>. But maybe it does?
> Joel> Another option is for the FSF version of GDB to remain as it is,
> Joel> with its bias towards GNU/Linux, while we will change AdaCore's
> Joel> version to turn "set print symbol" to "off" by default...
>
> If you disable "set print symbol", how would that differ from leaving
> the filter in place?
I was just sweeping the problem under the rug... Not making it the
default is my way of telling the users that the feature is not
completely prime-time; and so the minor quirks you can get on some
of the systems are to be expected. It would also save me a ton of
time not having to tweak the expected output in the testsuite, but
that's a minor detail.
I haven't decided about what to do with the default, but regardless,
I tend to think that you're right about flagging size-less symbols.
It will effectively disable the filter on COFF platforms, allowing
some symbols that would otherwise be filtered, but I guess that's
better than ignoring too many symbols...
I'll try working on that today.
Thanks, Tom.
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-08-21 15:36 ` Joel Brobecker
@ 2012-09-05 14:44 ` Joel Brobecker
2012-09-06 1:28 ` asmwarrior
2012-09-10 19:08 ` Tom Tromey
0 siblings, 2 replies; 18+ messages in thread
From: Joel Brobecker @ 2012-09-05 14:44 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1170 bytes --]
Hello,
Here is a new version of the patch implementing Tom's idea of
flagging size-less minimal symbols... On platforms where he size
isn't set, i's a bit of a give-and-take, fixing the problem reported,
at the cost of finding some symbols that we were previously fitering
out (by luck or accident). I think it's for the best.
gdb/ChangeLog:
* symtab.h (struct minimal_symbol) [has_size]: New field.
(MSYMBOL_SIZE): Adjust to forbid macro from being used as lvalue.
(SET_MSYMBOL_SIZE, MSYMBOL_HAS_SIZE): New macros.
* printcmd.c (build_address_symbolic): Only filter out zero-sized
minimal symbols if the symbol's size is actually known.
* minsyms.c (prim_record_minimal_symbol_full): Adjust setting
of msymbol's size field. Add comment.
(install_minimal_symbols): Use SET_MSYMBOL_SIZE to set the
minimal symbol size.
* elfread.c (elf_symtab_read, elf_rel_plt_read): Use
SET_MSYMBOL_SIZE to set the minimal symbol size.
Tested on all of AdaCore's supported platforms via our testsuite.
Also tested on x86_64-linux using the official testsuite.
OK to commit?
Thanks,
--
Joel
[-- Attachment #2: 0001-Name-of-symbol-missing-when-printing-global-variable.patch --]
[-- Type: text/x-diff, Size: 5295 bytes --]
From b70bf2abc01142b7d93c6fd834d9926bdc9eea9c Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Wed, 22 Aug 2012 20:29:13 +0200
Subject: [PATCH] Name of symbol missing when printing global variable's address
The build_address_symbolic funnction filters out data symbols if
their size is set to zero. But the problem is that the COFF symbol
table (for instance) does not provide any size information, leaving
the size to its default value of zero, thus always triggering
the filter.
This shows up when trying to print the address of a global variable
when debugging a Windows executable, for instance.
gdb/ChangeLog:
* symtab.h (struct minimal_symbol) [has_size]: New field.
(MSYMBOL_SIZE): Adjust to forbid macro from being used as lvalue.
(SET_MSYMBOL_SIZE, MSYMBOL_HAS_SIZE): New macros.
* printcmd.c (build_address_symbolic): Only filter out zero-sized
minimal symbols if the symbol's size is actually known.
* minsyms.c (prim_record_minimal_symbol_full): Adjust setting
of msymbol's size field. Add comment.
(install_minimal_symbols): Use SET_MSYMBOL_SIZE to set the
minimal symbol size.
* elfread.c (elf_symtab_read, elf_rel_plt_read): Use
SET_MSYMBOL_SIZE to set the minimal symbol size.
---
gdb/elfread.c | 6 +++---
gdb/minsyms.c | 6 ++++--
gdb/printcmd.c | 1 +
gdb/symtab.h | 14 +++++++++++++-
4 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 76120a3..041d8cf 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -348,6 +348,11 @@ struct minimal_symbol
unsigned int target_flag_1 : 1;
unsigned int target_flag_2 : 1;
+ /* Nonzero iff the size of the minimal symbol has been set.
+ Symbol size information can sometimes not be determined, because
+ the object file format may not carry that piece of information. */
+ unsigned int has_size : 1;
+
/* Minimal symbols with the same hash key are kept on a linked
list. This is the link. */
@@ -361,7 +366,14 @@ struct minimal_symbol
#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1
#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2
-#define MSYMBOL_SIZE(msymbol) (msymbol)->size
+#define MSYMBOL_SIZE(msymbol) ((msymbol)->size + 0)
+#define SET_MSYMBOL_SIZE(msymbol, sz) \
+ do \
+ { \
+ (msymbol)->size = sz; \
+ (msymbol)->has_size = 1; \
+ } while (0)
+#define MSYMBOL_HAS_SIZE(msymbol) ((msymbol)->has_size + 0)
#define MSYMBOL_TYPE(msymbol) (msymbol)->type
#include "minsyms.h"
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index d5b5b63..9e8cd65 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -680,6 +680,7 @@ build_address_symbolic (struct gdbarch *gdbarch,
}
if (msymbol != NULL
+ && MSYMBOL_HAS_SIZE (msymbol)
&& MSYMBOL_SIZE (msymbol) == 0
&& MSYMBOL_TYPE (msymbol) != mst_text
&& MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 1070fff..2bad947 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -937,7 +937,9 @@ prim_record_minimal_symbol_full (const char *name, int name_len, int copy_name,
MSYMBOL_TYPE (msymbol) = ms_type;
MSYMBOL_TARGET_FLAG_1 (msymbol) = 0;
MSYMBOL_TARGET_FLAG_2 (msymbol) = 0;
- MSYMBOL_SIZE (msymbol) = 0;
+ /* Do not use the SET_MSYMBOL_SIZE macro to initialize the size,
+ as it would also set the has_size flag. */
+ msymbol->size = 0;
/* The hash pointers must be cleared! If they're not,
add_minsym_to_hash_table will NOT add this msymbol to the hash table. */
@@ -1233,7 +1235,7 @@ install_minimal_symbols (struct objfile *objfile)
SYMBOL_VALUE_ADDRESS (&msymbols[mcount]) = 0;
MSYMBOL_TARGET_FLAG_1 (&msymbols[mcount]) = 0;
MSYMBOL_TARGET_FLAG_2 (&msymbols[mcount]) = 0;
- MSYMBOL_SIZE (&msymbols[mcount]) = 0;
+ SET_MSYMBOL_SIZE (&msymbols[mcount], 0);
MSYMBOL_TYPE (&msymbols[mcount]) = mst_unknown;
SYMBOL_SET_LANGUAGE (&msymbols[mcount], language_unknown);
diff --git a/gdb/elfread.c b/gdb/elfread.c
index f3967d7..516cbd0 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -570,7 +570,7 @@ elf_symtab_read (struct objfile *objfile, int type,
elf_sym = (elf_symbol_type *) sym->udata.p;
if (elf_sym)
- MSYMBOL_SIZE(msym) = elf_sym->internal_elf_sym.st_size;
+ SET_MSYMBOL_SIZE (msym, elf_sym->internal_elf_sym.st_size);
msym->filename = filesymname;
gdbarch_elf_make_msymbol_special (gdbarch, sym, msym);
@@ -594,7 +594,7 @@ elf_symtab_read (struct objfile *objfile, int type,
sym->section, objfile);
if (mtramp)
{
- MSYMBOL_SIZE (mtramp) = MSYMBOL_SIZE (msym);
+ SET_MSYMBOL_SIZE (mtramp, MSYMBOL_SIZE (msym));
mtramp->created_by_gdb = 1;
mtramp->filename = filesymname;
gdbarch_elf_make_msymbol_special (gdbarch, sym, mtramp);
@@ -689,7 +689,7 @@ elf_rel_plt_read (struct objfile *objfile, asymbol **dyn_symbol_table)
1, address, mst_slot_got_plt, got_plt,
objfile);
if (msym)
- MSYMBOL_SIZE (msym) = ptr_size;
+ SET_MSYMBOL_SIZE (msym, ptr_size);
}
do_cleanups (back_to);
--
1.7.1
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-05 14:44 ` Joel Brobecker
@ 2012-09-06 1:28 ` asmwarrior
2012-09-06 1:44 ` Joel Brobecker
2012-09-10 19:08 ` Tom Tromey
1 sibling, 1 reply; 18+ messages in thread
From: asmwarrior @ 2012-09-06 1:28 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
On 2012-9-5 22:44, Joel Brobecker wrote:
> Nonzero iff the size of the minimal symbol has been set.
^^^
Typo in comments.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-06 1:28 ` asmwarrior
@ 2012-09-06 1:44 ` Joel Brobecker
2012-09-06 2:03 ` asmwarrior
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2012-09-06 1:44 UTC (permalink / raw)
To: asmwarrior; +Cc: gdb-patches
> >Nonzero iff the size of the minimal symbol has been set.
> ^^^
> Typo in comments.
That's actually not a typo: "iff" means "if and only if".
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-06 1:44 ` Joel Brobecker
@ 2012-09-06 2:03 ` asmwarrior
0 siblings, 0 replies; 18+ messages in thread
From: asmwarrior @ 2012-09-06 2:03 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
On 2012-9-6 9:44, Joel Brobecker wrote:
>>> Nonzero iff the size of the minimal symbol has been set.
>> > ^^^
>> >Typo in comments.
> That's actually not a typo: "iff" means "if and only if".
Oh, I see. Thanks.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-05 14:44 ` Joel Brobecker
2012-09-06 1:28 ` asmwarrior
@ 2012-09-10 19:08 ` Tom Tromey
2012-09-10 22:13 ` Joel Brobecker
1 sibling, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2012-09-10 19:08 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
Joel> * symtab.h (struct minimal_symbol) [has_size]: New field.
Joel> (MSYMBOL_SIZE): Adjust to forbid macro from being used as lvalue.
Joel> (SET_MSYMBOL_SIZE, MSYMBOL_HAS_SIZE): New macros.
Joel> * printcmd.c (build_address_symbolic): Only filter out zero-sized
Joel> minimal symbols if the symbol's size is actually known.
Joel> * minsyms.c (prim_record_minimal_symbol_full): Adjust setting
Joel> of msymbol's size field. Add comment.
Joel> (install_minimal_symbols): Use SET_MSYMBOL_SIZE to set the
Joel> minimal symbol size.
Joel> * elfread.c (elf_symtab_read, elf_rel_plt_read): Use
Joel> SET_MSYMBOL_SIZE to set the minimal symbol size.
Joel> OK to commit?
Joel> @@ -1233,7 +1235,7 @@ install_minimal_symbols (struct objfile *objfile)
Joel> SYMBOL_VALUE_ADDRESS (&msymbols[mcount]) = 0;
Joel> MSYMBOL_TARGET_FLAG_1 (&msymbols[mcount]) = 0;
Joel> MSYMBOL_TARGET_FLAG_2 (&msymbols[mcount]) = 0;
Joel> - MSYMBOL_SIZE (&msymbols[mcount]) = 0;
Joel> + SET_MSYMBOL_SIZE (&msymbols[mcount], 0);
I tend to think this hunk should not use SET_MSYMBOL_SIZE.
Maybe it even ought to use memset instead of what it currently does.
Or, if SET_MSYMBOL_SIZE is correct here, a comment would be helpful.
The rest looked good to me.
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-10 19:08 ` Tom Tromey
@ 2012-09-10 22:13 ` Joel Brobecker
2012-09-11 13:49 ` Tom Tromey
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2012-09-10 22:13 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1779 bytes --]
> Joel> @@ -1233,7 +1235,7 @@ install_minimal_symbols (struct objfile *objfile)
> Joel> SYMBOL_VALUE_ADDRESS (&msymbols[mcount]) = 0;
> Joel> MSYMBOL_TARGET_FLAG_1 (&msymbols[mcount]) = 0;
> Joel> MSYMBOL_TARGET_FLAG_2 (&msymbols[mcount]) = 0;
> Joel> - MSYMBOL_SIZE (&msymbols[mcount]) = 0;
> Joel> + SET_MSYMBOL_SIZE (&msymbols[mcount], 0);
>
> I tend to think this hunk should not use SET_MSYMBOL_SIZE.
> Maybe it even ought to use memset instead of what it currently does.
>
> Or, if SET_MSYMBOL_SIZE is correct here, a comment would be helpful.
Intuitively, I do not think that it really matters. But I prefer
the idea of memset-ting the whole object to zero, and it's actually
something I have been wanting to do anyways. So here are two patches.
The first one just adjusts install_minimal_symbols to use memset instead
of the various macros.
gdb/ChangeLog:
* minsyms.c (install_minimal_symbols): Use memset to fill entire
minimal_symbol struct object, rather than setting some of its
fields one by one.
And the second is the initial patch, adjusted to the first one.
gdb/ChangeLog:
* symtab.h (struct minimal_symbol) [has_size]: New field.
(MSYMBOL_SIZE): Adjust to forbid macro from being used as lvalue.
(SET_MSYMBOL_SIZE, MSYMBOL_HAS_SIZE): New macros.
* printcmd.c (build_address_symbolic): Only filter out zero-sized
minimal symbols if the symbol's size is actually known.
* minsyms.c (prim_record_minimal_symbol_full): Adjust setting
of msymbol's size field. Add comment.
* elfread.c (elf_symtab_read, elf_rel_plt_read): Use
SET_MSYMBOL_SIZE to set the minimal symbol size.
Tested on x86_64-linux. OK to apply?
Thanks!
--
Joel
[-- Attachment #2: 0001-install_minimal_symbols-use-memset-instead-of-settin.patch --]
[-- Type: text/x-diff, Size: 1440 bytes --]
From 258f4f2dfdf021acb91bffd1f0ac95ebbaa7fbe6 Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Mon, 10 Sep 2012 16:31:28 -0400
Subject: [PATCH 1/2] install_minimal_symbols: use memset instead of setting each field.
gdb/ChangeLog:
* minsyms.c (install_minimal_symbols): Use memset to fill entire
minimal_symbol struct object, rather than setting some of its
fields one by one.
---
gdb/minsyms.c | 8 +-------
1 files changed, 1 insertions(+), 7 deletions(-)
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 1070fff..b6df4ea 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -1229,13 +1229,7 @@ install_minimal_symbols (struct objfile *objfile)
symbol count does *not* include this null symbol, which is why it
is indexed by mcount and not mcount-1. */
- SYMBOL_LINKAGE_NAME (&msymbols[mcount]) = NULL;
- SYMBOL_VALUE_ADDRESS (&msymbols[mcount]) = 0;
- MSYMBOL_TARGET_FLAG_1 (&msymbols[mcount]) = 0;
- MSYMBOL_TARGET_FLAG_2 (&msymbols[mcount]) = 0;
- MSYMBOL_SIZE (&msymbols[mcount]) = 0;
- MSYMBOL_TYPE (&msymbols[mcount]) = mst_unknown;
- SYMBOL_SET_LANGUAGE (&msymbols[mcount], language_unknown);
+ memset (&msymbols[mcount], 0, sizeof (struct minimal_symbol));
/* Attach the minimal symbol table to the specified objfile.
The strings themselves are also located in the objfile_obstack
--
1.7.0.4
[-- Attachment #3: 0002-Name-of-symbol-missing-when-printing-global-variable.patch --]
[-- Type: text/x-diff, Size: 4754 bytes --]
From 0da12186cb6f455a43f8937cb2b5dfcc39c2953c Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Wed, 22 Aug 2012 20:29:13 +0200
Subject: [PATCH 2/2] Name of symbol missing when printing global variable's address
The build_address_symbolic funnction filters out data symbols if
their size is set to zero. But the problem is that the COFF symbol
table (for instance) does not provide any size information, leaving
the size to its default value of zero, thus always triggering
the filter.
This shows up when trying to print the address of a global variable
when debugging a Windows executable, for instance.
gdb/ChangeLog:
* symtab.h (struct minimal_symbol) [has_size]: New field.
(MSYMBOL_SIZE): Adjust to forbid macro from being used as lvalue.
(SET_MSYMBOL_SIZE, MSYMBOL_HAS_SIZE): New macros.
* printcmd.c (build_address_symbolic): Only filter out zero-sized
minimal symbols if the symbol's size is actually known.
* minsyms.c (prim_record_minimal_symbol_full): Adjust setting
of msymbol's size field. Add comment.
* elfread.c (elf_symtab_read, elf_rel_plt_read): Use
SET_MSYMBOL_SIZE to set the minimal symbol size.
---
gdb/elfread.c | 6 +++---
gdb/minsyms.c | 4 +++-
gdb/printcmd.c | 1 +
gdb/symtab.h | 14 +++++++++++++-
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/gdb/elfread.c b/gdb/elfread.c
index f3967d7..516cbd0 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -570,7 +570,7 @@ elf_symtab_read (struct objfile *objfile, int type,
elf_sym = (elf_symbol_type *) sym->udata.p;
if (elf_sym)
- MSYMBOL_SIZE(msym) = elf_sym->internal_elf_sym.st_size;
+ SET_MSYMBOL_SIZE (msym, elf_sym->internal_elf_sym.st_size);
msym->filename = filesymname;
gdbarch_elf_make_msymbol_special (gdbarch, sym, msym);
@@ -594,7 +594,7 @@ elf_symtab_read (struct objfile *objfile, int type,
sym->section, objfile);
if (mtramp)
{
- MSYMBOL_SIZE (mtramp) = MSYMBOL_SIZE (msym);
+ SET_MSYMBOL_SIZE (mtramp, MSYMBOL_SIZE (msym));
mtramp->created_by_gdb = 1;
mtramp->filename = filesymname;
gdbarch_elf_make_msymbol_special (gdbarch, sym, mtramp);
@@ -689,7 +689,7 @@ elf_rel_plt_read (struct objfile *objfile, asymbol **dyn_symbol_table)
1, address, mst_slot_got_plt, got_plt,
objfile);
if (msym)
- MSYMBOL_SIZE (msym) = ptr_size;
+ SET_MSYMBOL_SIZE (msym, ptr_size);
}
do_cleanups (back_to);
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index b6df4ea..a3a376c 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -937,7 +937,9 @@ prim_record_minimal_symbol_full (const char *name, int name_len, int copy_name,
MSYMBOL_TYPE (msymbol) = ms_type;
MSYMBOL_TARGET_FLAG_1 (msymbol) = 0;
MSYMBOL_TARGET_FLAG_2 (msymbol) = 0;
- MSYMBOL_SIZE (msymbol) = 0;
+ /* Do not use the SET_MSYMBOL_SIZE macro to initialize the size,
+ as it would also set the has_size flag. */
+ msymbol->size = 0;
/* The hash pointers must be cleared! If they're not,
add_minsym_to_hash_table will NOT add this msymbol to the hash table. */
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index d5b5b63..9e8cd65 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -680,6 +680,7 @@ build_address_symbolic (struct gdbarch *gdbarch,
}
if (msymbol != NULL
+ && MSYMBOL_HAS_SIZE (msymbol)
&& MSYMBOL_SIZE (msymbol) == 0
&& MSYMBOL_TYPE (msymbol) != mst_text
&& MSYMBOL_TYPE (msymbol) != mst_text_gnu_ifunc
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 76120a3..041d8cf 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -348,6 +348,11 @@ struct minimal_symbol
unsigned int target_flag_1 : 1;
unsigned int target_flag_2 : 1;
+ /* Nonzero iff the size of the minimal symbol has been set.
+ Symbol size information can sometimes not be determined, because
+ the object file format may not carry that piece of information. */
+ unsigned int has_size : 1;
+
/* Minimal symbols with the same hash key are kept on a linked
list. This is the link. */
@@ -361,7 +366,14 @@ struct minimal_symbol
#define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1
#define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2
-#define MSYMBOL_SIZE(msymbol) (msymbol)->size
+#define MSYMBOL_SIZE(msymbol) ((msymbol)->size + 0)
+#define SET_MSYMBOL_SIZE(msymbol, sz) \
+ do \
+ { \
+ (msymbol)->size = sz; \
+ (msymbol)->has_size = 1; \
+ } while (0)
+#define MSYMBOL_HAS_SIZE(msymbol) ((msymbol)->has_size + 0)
#define MSYMBOL_TYPE(msymbol) (msymbol)->type
#include "minsyms.h"
--
1.7.0.4
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-10 22:13 ` Joel Brobecker
@ 2012-09-11 13:49 ` Tom Tromey
2012-09-11 21:27 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2012-09-11 13:49 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
Joel> Intuitively, I do not think that it really matters. But I prefer
Joel> the idea of memset-ting the whole object to zero, and it's actually
Joel> something I have been wanting to do anyways. So here are two patches.
Joel> The first one just adjusts install_minimal_symbols to use memset instead
Joel> of the various macros.
Thanks, Joel.
Joel> Tested on x86_64-linux. OK to apply?
Looks good to me.
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: RFC: printing pointers to global (data) variable on Windows...
2012-09-11 13:49 ` Tom Tromey
@ 2012-09-11 21:27 ` Joel Brobecker
0 siblings, 0 replies; 18+ messages in thread
From: Joel Brobecker @ 2012-09-11 21:27 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
> Joel> Tested on x86_64-linux. OK to apply?
>
> Looks good to me.
Thanks, Tom. Both patches now checked in :).
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2012-09-11 21:27 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-16 15:23 RFC: printing pointers to global (data) variable on Windows Joel Brobecker
2012-08-16 20:07 ` Tom Tromey
2012-08-16 22:45 ` Joel Brobecker
2012-08-17 14:23 ` Tom Tromey
2012-08-17 23:16 ` Joel Brobecker
2012-08-20 15:09 ` Joel Brobecker
2012-08-20 17:50 ` Tom Tromey
2012-08-21 15:28 ` Joel Brobecker
2012-08-20 17:48 ` Tom Tromey
2012-08-21 15:36 ` Joel Brobecker
2012-09-05 14:44 ` Joel Brobecker
2012-09-06 1:28 ` asmwarrior
2012-09-06 1:44 ` Joel Brobecker
2012-09-06 2:03 ` asmwarrior
2012-09-10 19:08 ` Tom Tromey
2012-09-10 22:13 ` Joel Brobecker
2012-09-11 13:49 ` Tom Tromey
2012-09-11 21:27 ` Joel Brobecker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox