This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/2] Testsuite for varobj updation after symbol removal


On 04/23/2015 11:04 AM, Taimoor wrote:
Hi Vladimir,

Thanks for reviewing the patch.

On 04/17/2015 08:18 PM, Vladimir Prus wrote:


On 04/16/2015 06:32 AM, Taimoor Mirza wrote:
 > This patch provides testcases for variable object updation after
removing
 > symbols. Test programs are same as used for testing remove-symbol-file
 > command in gdb.base. sym-file-main.c is modified to just add a global
 > variable for which varible object is created in testsuite.
 >

Taimoor,

thanks for the patch, and testsuite change. Looking at it, it appears
that 'count' is
a global variable, and it's modified in one place, in the main function,
and after that
you do 'remove-symbol-files' and verify that var-update reports reports
'count' as
changed. But what does it test exactly? Since count is explicitly
modified in the
test, I'd imagine that -var-update will report it as changed even without
'remove-symbol-file'. In other words, does this testcase fail if the
code patch is not
applied?

Yes. This testcase fails without applying this patch. Below is problematic scenario:


1) Run GDB session and load symbols from file a.
2) Create varobj for some global variable test.
3) put some breakpoint in some function and run to that breakpoint.
4) Use add-symbol-file to load symbols of file b.
5) Put breakpoint on some other function that is called after updating
global variable test.
6) When this breakpoint gets hit, remove symbols of b using
'remove-symbol-file'.
7) print value of test. Its updated and different from initial value.
8) give 'var-update' command for variable object of 'test' and
changelist will be empty.

I know its not a common scenario but as long as it is valid
according to individual command specifications we have all the right to
expect it will produce the intended results.


Even if so, does it test exactly what is your real case? It's easy to
see why 'remove-symbol-files'
can make some global variables no longer present. But how it can change
value of some expression?

Its not the case of global variable not present. Its problem with properly displaying changeset for a valid global variable whose value is
changed.
Step 7 in above scenario displays updated value of variable but -var-update for varobj of that variable gives empty changeset. The reason
for this is mentioned in source code patch [PATCH 1/2].

Hi Taimoor,

thanks, so the issue is that removing a symbol file recreates *all* global varobjs, and in the process clears any change of value
since the last update. I agree the patch is fixing that.

There's a second change, it seems - to invalidate varobj that refers to types in unloaded objfile - is there a test for that?

Thanks,


--
Vladimir Prus
CodeSourcery / Mentor Embedded
http://vladimirprus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]