diff options
author | Pierre Muller <muller@sourceware.org> | 2010-04-30 15:38:42 +0000 |
---|---|---|
committer | Pierre Muller <muller@sourceware.org> | 2010-04-30 15:38:42 +0000 |
commit | ea1fae46d894fe78aec8a26e8e167b5352265624 (patch) | |
tree | 151b941f6b5dd6c134b143e65ede949c37ae01b6 /gdb/windows-tdep.c | |
parent | 13a985e120647fb8664baf7eeab498c1e367b54e (diff) | |
download | gdb-ea1fae46d894fe78aec8a26e8e167b5352265624.zip gdb-ea1fae46d894fe78aec8a26e8e167b5352265624.tar.gz gdb-ea1fae46d894fe78aec8a26e8e167b5352265624.tar.bz2 |
* windows-tdep.c (windows_get_tlb_type): Remember last GDBARCH
and created type for re-use.
Diffstat (limited to 'gdb/windows-tdep.c')
-rw-r--r-- | gdb/windows-tdep.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c index 50dfbe2..84f42e0 100644 --- a/gdb/windows-tdep.c +++ b/gdb/windows-tdep.c @@ -97,12 +97,18 @@ static int maint_display_all_tib = 0; static struct type * windows_get_tlb_type (struct gdbarch *gdbarch) { + static struct gdbarch *last_gdbarch = NULL; + static struct type *last_tlb_type = NULL; 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, *list_ptr_type; struct type *module_list_ptr_type; struct type *tib_type, *seh_type, *tib_ptr_type, *seh_ptr_type; + /* Do not rebuild type if same gdbarch as last time. */ + if (last_tlb_type && last_gdbarch == gdbarch) + return last_tlb_type; + dword_ptr_type = arch_integer_type (gdbarch, gdbarch_ptr_bit (gdbarch), 1, "DWORD_PTR"); dword32_type = arch_integer_type (gdbarch, 32, @@ -211,6 +217,9 @@ windows_get_tlb_type (struct gdbarch *gdbarch) TYPE_LENGTH (void_ptr_type), NULL); TYPE_TARGET_TYPE (tib_ptr_type) = tib_type; + last_tlb_type = tib_ptr_type; + last_gdbarch = gdbarch; + return tib_ptr_type; } |