Message ID | 20200211163138.2810-1-ssbssa@yahoo.de |
---|---|
State | New |
Headers | show |
On 2020-02-11 11:31 a.m., Hannes Domani via gdb-patches wrote: > @@ -196,10 +196,10 @@ windows_get_tlb_type (struct gdbarch *gdbarch) > struct type *word_type, *wchar_type, *wchar_ptr_type; > struct type *uni_str_type, *rupp_type, *rupp_ptr_type; > > - /* Do not rebuild type if same gdbarch as last time. */ > - if (last_tlb_type && last_gdbarch == gdbarch) > - return last_tlb_type; > - > + windows_gdbarch_data = get_windows_gdbarch_data (gdbarch); You can declare the variable in place: windows_gdbarch_data *windows_gdbarch_data = get_windows_gdbarch_data (gdbarch); That code style rule changed when we switched to C++, this is why you can still see a lot of code declaring variables at the top of the functions. The patch LGTM with that fixed (if you want, it's really a detail). Thanks for doing this, it's a nice cleanup. Simon
Am Mittwoch, 12. Februar 2020, 05:06:33 MEZ hat Simon Marchi <simark@simark.ca> Folgendes geschrieben: > On 2020-02-11 11:31 a.m., Hannes Domani via gdb-patches wrote: > > @@ -196,10 +196,10 @@ windows_get_tlb_type (struct gdbarch *gdbarch) > > struct type *word_type, *wchar_type, *wchar_ptr_type; > > struct type *uni_str_type, *rupp_type, *rupp_ptr_type; > > > > - /* Do not rebuild type if same gdbarch as last time. */ > > - if (last_tlb_type && last_gdbarch == gdbarch) > > - return last_tlb_type; > > - > > + windows_gdbarch_data = get_windows_gdbarch_data (gdbarch); > > You can declare the variable in place: > > windows_gdbarch_data *windows_gdbarch_data > = get_windows_gdbarch_data (gdbarch); > > > That code style rule changed when we switched to C++, this is why you can still see > a lot of code declaring variables at the top of the functions. > > The patch LGTM with that fixed (if you want, it's really a detail). Thanks for doing > this, it's a nice cleanup. Pushed with this change, thanks.
diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c index 6eef476fb5..f3c6785218 100644 --- a/gdb/windows-tdep.c +++ b/gdb/windows-tdep.c @@ -162,6 +162,7 @@ static struct gdbarch_data *windows_gdbarch_data_handle; struct windows_gdbarch_data { struct type *siginfo_type; + struct type *tib_ptr_type; /* Type of thread information block */ }; /* Allocate windows_gdbarch_data for an arch. */ @@ -186,8 +187,7 @@ get_windows_gdbarch_data (struct gdbarch *gdbarch) static struct type * windows_get_tlb_type (struct gdbarch *gdbarch) { - static struct gdbarch *last_gdbarch = NULL; - static struct type *last_tlb_type = NULL; + struct windows_gdbarch_data *windows_gdbarch_data; struct type *dword_ptr_type, *dword32_type, *void_ptr_type; struct type *peb_ldr_type, *peb_ldr_ptr_type; struct type *peb_type, *peb_ptr_type, *list_type; @@ -196,10 +196,10 @@ windows_get_tlb_type (struct gdbarch *gdbarch) struct type *word_type, *wchar_type, *wchar_ptr_type; struct type *uni_str_type, *rupp_type, *rupp_ptr_type; - /* Do not rebuild type if same gdbarch as last time. */ - if (last_tlb_type && last_gdbarch == gdbarch) - return last_tlb_type; - + windows_gdbarch_data = get_windows_gdbarch_data (gdbarch); + if (windows_gdbarch_data->tib_ptr_type != nullptr) + return windows_gdbarch_data->tib_ptr_type; + dword_ptr_type = arch_integer_type (gdbarch, gdbarch_ptr_bit (gdbarch), 1, "DWORD_PTR"); dword32_type = arch_integer_type (gdbarch, 32, @@ -369,8 +369,7 @@ windows_get_tlb_type (struct gdbarch *gdbarch) NULL); TYPE_TARGET_TYPE (tib_ptr_type) = tib_type; - last_tlb_type = tib_ptr_type; - last_gdbarch = gdbarch; + windows_gdbarch_data->tib_ptr_type = tib_ptr_type; return tib_ptr_type; }