Skip to content

Commit a282736

Browse files
committed
gdb: remove final user of the executable_changed observer
This commit continues with the task started in the previous commit, and is similar in many ways. The goal of the next couple of commits is to expose the executable_changed observable in the Python API as an event. Before I do this I would like to remove the additional call to the executable_changed observable which can be found in the reread_symbols function in the symfile.c file, as I don't believe that this use actually corresponds to a change in the current executable. The previous commit removed one user of the executable_changed observable and replaced it with a new_obfile observer instead, and this commit does the same thing. In auxv.c we use the executable_changed observable to call invalidate_auxv_cache, which then calls: invalidate_auxv_cache_inf (current_inferior ()); The auxv cache is already (additionally) cleared when an inferior exits and when an inferior appears. As with the previous commit, I think we can safely replace the use of the executable_changed observable with a use of the new_obfile observable. All the tests still pass, and with some locally placed printf calls, I think that the cache is still being cleared in all the cases that should matter. Approved-By: Tom Tromey <tom@tromey.com>
1 parent a0a031b commit a282736

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

gdb/auxv.c

+6-4
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,14 @@ invalidate_auxv_cache_inf (struct inferior *inf)
344344
auxv_inferior_data.clear (inf);
345345
}
346346

347-
/* Invalidate current inferior's auxv cache. */
347+
/* Invalidate current inferior's auxv cache when all symbol table data is
348+
cleared (indicated by OBJFILE being nullptr). */
348349

349350
static void
350-
invalidate_auxv_cache (void)
351+
auxv_new_objfile_observer (struct objfile *objfile)
351352
{
352-
invalidate_auxv_cache_inf (current_inferior ());
353+
if (objfile == nullptr)
354+
invalidate_auxv_cache_inf (current_inferior ());
353355
}
354356

355357
/* See auxv.h. */
@@ -613,5 +615,5 @@ This is information provided by the operating system at program startup."));
613615
/* Observers used to invalidate the auxv cache when needed. */
614616
gdb::observers::inferior_exit.attach (invalidate_auxv_cache_inf, "auxv");
615617
gdb::observers::inferior_appeared.attach (invalidate_auxv_cache_inf, "auxv");
616-
gdb::observers::executable_changed.attach (invalidate_auxv_cache, "auxv");
618+
gdb::observers::new_objfile.attach (auxv_new_objfile_observer, "auxv");
617619
}

0 commit comments

Comments
 (0)