Magellan Linux

Contents of /trunk/gdb/patches/gdb-6.4-1ubuntu5.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (show annotations) (download)
Tue May 8 20:06:05 2007 UTC (17 years ago) by niro
File size: 184911 byte(s)
-import

1 --- gdb-6.4.orig/debian/control.in
2 +++ gdb-6.4/debian/control.in
3 @@ -0,0 +1,19 @@
4 +Source: gdb
5 +Maintainer: Daniel Jacobowitz <dan@debian.org>
6 +Section: devel
7 +Priority: standard
8 +Standards-Version: 3.5.3
9 +Build-Depends: autoconf, libtool, texinfo (>= 4.7-2.2), tetex-bin, libncurses5-dev, libreadline4-dev (>= 4.2a-1), bison, gettext, debhelper (>= 4.9.0), dejagnu, gcj [!mips !mipsel !hurd-i386], gobjc, mig [@gnu@], cdbs (>= 0.4.17), quilt (>= 0.30-1), libkvm-dev [@kfreebsd@], type-handling (>= 0.2.1), libunwind7-dev [ia64], flex | flex-old
10 +
11 +Package: gdb
12 +Architecture: any
13 +Section: devel
14 +Depends: ${shlibs:Depends}
15 +Conflicts: gdb-arm
16 +Replaces: gdb-arm, insight (<< 6.1+cvs.2004.04.07-1)
17 +Description: The GNU Debugger
18 + GDB is a source-level debugger, capable of breaking programs at
19 + any specific line, displaying variable values, and determining
20 + where errors occurred. Currently, it works for C, C++, Fortran
21 + Modula 2 and Java programs. A must-have for any serious
22 + programmer.
23 --- gdb-6.4.orig/debian/patches/series
24 +++ gdb-6.4/debian/patches/series
25 @@ -0,0 +1,25 @@
26 +10.selected-frame.patch
27 +13.use-dynamic-readline.patch
28 +static-thread-db.patch
29 +34.info-section.patch
30 +sim-destdir.patch
31 +member-field-symtab.patch
32 +cp-pass-by-reference.patch
33 +thread-db-multiple-libraries.patch
34 +static-threads-test.patch
35 +dwarf2-cfi-warning.patch
36 +gdbinit-ownership.patch
37 +pending-breakpoints-and-sigttou.patch
38 +gdb-pascal-support.patch
39 +gdb-nptl-cancellation.patch
40 +gdb-fortran-main.patch
41 +gdb-powerpc-pic-prologue.patch
42 +linux-clear-thread-list.patch
43 +fix-attach-inferior-notification.patch
44 +gdb-sparclinux-threads.patch
45 +sparc32-dwarf2.patch
46 +sparc-dwarf2-unimp.patch
47 +sparclinux-dwarf2-unwind.patch
48 +sparclinux-core-regset.patch
49 +linux-nat-core-regset.patch
50 +linux_nat_do_thread_registers.patch
51 --- gdb-6.4.orig/debian/patches/sparclinux-dwarf2-unwind.patch
52 +++ gdb-6.4/debian/patches/sparclinux-dwarf2-unwind.patch
53 @@ -0,0 +1,43 @@
54 +2006-04-05 David S. Miller <davem@sunset.davemloft.net>
55 +
56 + * sparc-linux-tdep.c (sparc32_linux_init_abi): Append
57 + dwarf2 frame sniffer.
58 + * Makefile.in (sparc-linux-tdep.o): Update dependencies.
59 +
60 +--- gdb-6.4/gdb/Makefile.in.~1~ 2006-05-01 00:18:42.000000000 -0700
61 ++++ gdb-6.4/gdb/Makefile.in 2006-05-01 00:18:45.000000000 -0700
62 +@@ -2617,10 +2617,10 @@ sparc64-tdep.o: sparc64-tdep.c $(defs_h)
63 + $(gdb_string_h) $(sparc64_tdep_h)
64 + sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(inferior_h) $(target_h) \
65 + $(linux_nat_h)
66 +-sparc-linux-tdep.o: sparc-linux-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \
67 +- $(frame_unwind_h) $(gdbarch_h) $(gdbcore_h) $(osabi_h) $(regcache_h) \
68 +- $(solib_svr4_h) $(symtab_h) $(trad_frame_h) $(tramp_frame_h) \
69 +- $(sparc_tdep_h)
70 ++sparc-linux-tdep.o: sparc-linux-tdep.c $(defs_h) $(dwarf2_frame_h) \
71 ++ $(floatformat_h) $(frame_h) $(frame_unwind_h) $(gdbarch_h) \
72 ++ $(gdbcore_h) $(osabi_h) $(regcache_h) $(solib_svr4_h) $(symtab_h) \
73 ++ $(trad_frame_h) $(tramp_frame_h) $(sparc_tdep_h)
74 + sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(regcache_h) $(target_h) \
75 + $(gdb_assert_h) $(gdb_string_h) $(gdb_wait_h) $(sparc_tdep_h) \
76 + $(sparc_nat_h) $(inf_ptrace_h)
77 +--- gdb-6.4/gdb/sparc-linux-tdep.c.~1~ 2006-05-01 00:18:42.000000000 -0700
78 ++++ gdb-6.4/gdb/sparc-linux-tdep.c 2006-05-01 00:18:45.000000000 -0700
79 +@@ -20,6 +20,7 @@
80 + Boston, MA 02111-1307, USA. */
81 +
82 + #include "defs.h"
83 ++#include "dwarf2-frame.h"
84 + #include "floatformat.h"
85 + #include "frame.h"
86 + #include "frame-unwind.h"
87 +@@ -147,6 +148,9 @@ sparc32_linux_init_abi (struct gdbarch_i
88 + /* Enable TLS support. */
89 + set_gdbarch_fetch_tls_load_module_address (gdbarch,
90 + svr4_fetch_objfile_link_map);
91 ++
92 ++ /* Hook in the DWARF CFI frame unwinder. */
93 ++ frame_unwind_append_sniffer (gdbarch, dwarf2_frame_sniffer);
94 + }
95 +
96 + /* Provide a prototype to silence -Wmissing-prototypes. */
97 --- gdb-6.4.orig/debian/patches/sparc32-dwarf2.patch
98 +++ gdb-6.4/debian/patches/sparc32-dwarf2.patch
99 @@ -0,0 +1,78 @@
100 +2006-04-04 David S. Miller <davem@sunset.davemloft.net>
101 +
102 + * sparc-tdep.c (sparc32_dwarf2_frame_init_reg): New.
103 + (sparc32_gdbarch_init): Pass it to dwarf2_frame_set_init_reg.
104 + * Makefile.in (sparc-tdep.o): Update dependencies.
105 +
106 +--- gdb-6.4/gdb/Makefile.in.~1~ 2006-04-30 23:25:58.000000000 -0700
107 ++++ gdb-6.4/gdb/Makefile.in 2006-04-30 23:26:01.000000000 -0700
108 +@@ -2641,10 +2641,10 @@ sparc-sol2-tdep.o: sparc-sol2-tdep.c $(d
109 + $(sparc_tdep_h) $(solib_svr4_h)
110 + sparc-stub.o: sparc-stub.c
111 + sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(dis_asm_h) \
112 +- $(floatformat_h) $(frame_h) $(frame_base_h) $(frame_unwind_h) \
113 +- $(gdbcore_h) $(gdbtypes_h) $(inferior_h) $(symtab_h) $(objfiles_h) \
114 +- $(osabi_h) $(regcache_h) $(target_h) $(value_h) $(gdb_assert_h) \
115 +- $(gdb_string_h) $(sparc_tdep_h)
116 ++ $(dwarf2_frame_h) $(floatformat_h) $(frame_h) $(frame_base_h) \
117 ++ $(frame_unwind_h) $(gdbcore_h) $(gdbtypes_h) $(inferior_h) \
118 ++ $(symtab_h) $(objfiles_h) $(osabi_h) $(regcache_h) $(target_h) \
119 ++ $(value_h) $(gdb_assert_h) $(gdb_string_h) $(sparc_tdep_h)
120 + stabsread.o: stabsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(gdb_obstack_h) \
121 + $(symtab_h) $(gdbtypes_h) $(expression_h) $(symfile_h) $(objfiles_h) \
122 + $(aout_stab_gnu_h) $(libaout_h) $(aout_aout64_h) $(gdb_stabs_h) \
123 +--- gdb-6.4/gdb/sparc-tdep.c.~1~ 2006-04-30 23:25:58.000000000 -0700
124 ++++ gdb-6.4/gdb/sparc-tdep.c 2006-04-30 23:26:56.000000000 -0700
125 +@@ -22,6 +22,7 @@
126 + #include "defs.h"
127 + #include "arch-utils.h"
128 + #include "dis-asm.h"
129 ++#include "dwarf2-frame.h"
130 + #include "floatformat.h"
131 + #include "frame.h"
132 + #include "frame-base.h"
133 +@@ -1001,6 +1002,32 @@ sparc32_stabs_argument_has_addr (struct
134 + || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16));
135 + }
136 +
137 ++static void
138 ++sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
139 ++ struct dwarf2_frame_state_reg *reg)
140 ++{
141 ++ switch (regnum)
142 ++ {
143 ++ case SPARC_G0_REGNUM:
144 ++ /* Since %g0 is always zero, there is no point in saving it, and
145 ++ people will be inclined omit it from the CFI. Make sure we
146 ++ don't warn about that. */
147 ++ reg->how = DWARF2_FRAME_REG_SAME_VALUE;
148 ++ break;
149 ++ case SPARC_SP_REGNUM:
150 ++ reg->how = DWARF2_FRAME_REG_CFA;
151 ++ break;
152 ++ case SPARC32_PC_REGNUM:
153 ++ reg->how = DWARF2_FRAME_REG_RA_OFFSET;
154 ++ reg->loc.offset = 8;
155 ++ break;
156 ++ case SPARC32_NPC_REGNUM:
157 ++ reg->how = DWARF2_FRAME_REG_RA_OFFSET;
158 ++ reg->loc.offset = 12;
159 ++ break;
160 ++ }
161 ++}
162 ++
163 +
164 + /* The SPARC Architecture doesn't have hardware single-step support,
165 + and most operating systems don't implement it either, so we provide
166 +@@ -1240,6 +1267,11 @@ sparc32_gdbarch_init (struct gdbarch_inf
167 +
168 + frame_base_set_default (gdbarch, &sparc32_frame_base);
169 +
170 ++ /* Hook in the DWARF CFI frame unwinder. */
171 ++ dwarf2_frame_set_init_reg (gdbarch, sparc32_dwarf2_frame_init_reg);
172 ++ /* FIXME: kettenis/20050423: Don't enable the unwinder until the
173 ++ StackGhost issues have been resolved. */
174 ++
175 + /* Hook in ABI-specific overrides, if they have been registered. */
176 + gdbarch_init_osabi (info, gdbarch);
177 +
178 --- gdb-6.4.orig/debian/patches/sparc-dwarf2-unimp.patch
179 +++ gdb-6.4/debian/patches/sparc-dwarf2-unimp.patch
180 @@ -0,0 +1,213 @@
181 +2006-04-05 David S. Miller <davem@sunset.davemloft.net>
182 +
183 + * dwarf2-frame.c (dwarf2_frame_ops init_reg): Add "next_frame"
184 + argument.
185 + (dwarf2_frame_default_init_reg): Likewise.
186 + (dwarf2_frame_set_init_reg): Update init_reg arg.
187 + (dwarf2_frame_init_reg): Take "next_frame" and pass it to
188 + ops->init_reg().
189 + (dwarf2_frame_cache): Pass next_frame to dwarf2_frame_init_reg.
190 + * dwarf2-frame.h (dwarf2-frame_set_init_reg): Update declaration.
191 + * cris-tdep.c (cris_dwarf2_frame_init_reg): Add next_frame arg.
192 + * s390-tdep.c (s390_dwarf2_frame_init_reg): Likewise.
193 + * sparc64-tdep.c (sparc64_dwarf2_frame_init_reg): Likewise.
194 + * sparc-tdep.c (sparc32_struct_return_from_sym): New function.
195 + (sparc32_frame_cache): Call it.
196 + (sparc32_dwarf2_struct_return_p): New function.
197 + (sparc_dwarf2_frame_init_reg): Use it to determine if the function
198 + returns a structure and thus we have to indicate the return PC and
199 + NPC are 4 bytes later than usual.
200 +
201 +--- gdb-6.4/gdb/cris-tdep.c.~1~ 2006-04-30 23:32:22.000000000 -0700
202 ++++ gdb-6.4/gdb/cris-tdep.c 2006-04-30 23:32:25.000000000 -0700
203 +@@ -1851,7 +1851,8 @@ cris_dwarf2_reg_to_regnum (int reg)
204 +
205 + static void
206 + cris_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
207 +- struct dwarf2_frame_state_reg *reg)
208 ++ struct dwarf2_frame_state_reg *reg,
209 ++ struct frame_info *next_frame)
210 + {
211 + /* The return address column. */
212 + if (regnum == PC_REGNUM)
213 +--- gdb-6.4/gdb/dwarf2-frame.c.~1~ 2006-04-30 23:32:22.000000000 -0700
214 ++++ gdb-6.4/gdb/dwarf2-frame.c 2006-04-30 23:32:24.000000000 -0700
215 +@@ -506,7 +506,8 @@ static struct gdbarch_data *dwarf2_frame
216 + struct dwarf2_frame_ops
217 + {
218 + /* Pre-initialize the register state REG for register REGNUM. */
219 +- void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *);
220 ++ void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *,
221 ++ struct frame_info *);
222 +
223 + /* Check whether the frame preceding NEXT_FRAME will be a signal
224 + trampoline. */
225 +@@ -518,7 +519,8 @@ struct dwarf2_frame_ops
226 +
227 + static void
228 + dwarf2_frame_default_init_reg (struct gdbarch *gdbarch, int regnum,
229 +- struct dwarf2_frame_state_reg *reg)
230 ++ struct dwarf2_frame_state_reg *reg,
231 ++ struct frame_info *next_frame)
232 + {
233 + /* If we have a register that acts as a program counter, mark it as
234 + a destination for the return address. If we have a register that
235 +@@ -570,7 +572,8 @@ dwarf2_frame_init (struct obstack *obsta
236 + void
237 + dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
238 + void (*init_reg) (struct gdbarch *, int,
239 +- struct dwarf2_frame_state_reg *))
240 ++ struct dwarf2_frame_state_reg *,
241 ++ struct frame_info *))
242 + {
243 + struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data);
244 +
245 +@@ -581,11 +584,12 @@ dwarf2_frame_set_init_reg (struct gdbarc
246 +
247 + static void
248 + dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
249 +- struct dwarf2_frame_state_reg *reg)
250 ++ struct dwarf2_frame_state_reg *reg,
251 ++ struct frame_info *next_frame)
252 + {
253 + struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data);
254 +
255 +- ops->init_reg (gdbarch, regnum, reg);
256 ++ ops->init_reg (gdbarch, regnum, reg, next_frame);
257 + }
258 +
259 + /* Set the architecture-specific signal trampoline recognition
260 +@@ -713,7 +717,7 @@ dwarf2_frame_cache (struct frame_info *n
261 + int regnum;
262 +
263 + for (regnum = 0; regnum < num_regs; regnum++)
264 +- dwarf2_frame_init_reg (gdbarch, regnum, &cache->reg[regnum]);
265 ++ dwarf2_frame_init_reg (gdbarch, regnum, &cache->reg[regnum], next_frame);
266 + }
267 +
268 + /* Go through the DWARF2 CFI generated table and save its register
269 +--- gdb-6.4/gdb/dwarf2-frame.h.~1~ 2006-04-30 23:32:22.000000000 -0700
270 ++++ gdb-6.4/gdb/dwarf2-frame.h 2006-04-30 23:32:24.000000000 -0700
271 +@@ -78,7 +78,8 @@ struct dwarf2_frame_state_reg
272 +
273 + extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
274 + void (*init_reg) (struct gdbarch *, int,
275 +- struct dwarf2_frame_state_reg *));
276 ++ struct dwarf2_frame_state_reg *,
277 ++ struct frame_info *));
278 +
279 + /* Set the architecture-specific signal trampoline recognition
280 + function for GDBARCH to SIGNAL_FRAME_P. */
281 +--- gdb-6.4/gdb/s390-tdep.c.~1~ 2006-04-30 23:32:22.000000000 -0700
282 ++++ gdb-6.4/gdb/s390-tdep.c 2006-04-30 23:32:25.000000000 -0700
283 +@@ -2281,7 +2281,8 @@ s390_unwind_sp (struct gdbarch *gdbarch,
284 +
285 + static void
286 + s390_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
287 +- struct dwarf2_frame_state_reg *reg)
288 ++ struct dwarf2_frame_state_reg *reg,
289 ++ struct frame_info *next_frame)
290 + {
291 + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
292 +
293 +--- gdb-6.4/gdb/sparc-tdep.c.~1~ 2006-04-30 23:32:22.000000000 -0700
294 ++++ gdb-6.4/gdb/sparc-tdep.c 2006-04-30 23:32:25.000000000 -0700
295 +@@ -680,6 +680,23 @@ sparc_frame_cache (struct frame_info *ne
296 + return cache;
297 + }
298 +
299 ++static int
300 ++sparc32_struct_return_from_sym (struct symbol *sym)
301 ++{
302 ++ struct type *type = check_typedef (SYMBOL_TYPE (sym));
303 ++ enum type_code code = TYPE_CODE (type);
304 ++
305 ++ if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
306 ++ {
307 ++ type = check_typedef (TYPE_TARGET_TYPE (type));
308 ++ if (sparc_structure_or_union_p (type)
309 ++ || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16))
310 ++ return 1;
311 ++ }
312 ++
313 ++ return 0;
314 ++}
315 ++
316 + struct sparc_frame_cache *
317 + sparc32_frame_cache (struct frame_info *next_frame, void **this_cache)
318 + {
319 +@@ -694,16 +711,7 @@ sparc32_frame_cache (struct frame_info *
320 + sym = find_pc_function (cache->pc);
321 + if (sym)
322 + {
323 +- struct type *type = check_typedef (SYMBOL_TYPE (sym));
324 +- enum type_code code = TYPE_CODE (type);
325 +-
326 +- if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
327 +- {
328 +- type = check_typedef (TYPE_TARGET_TYPE (type));
329 +- if (sparc_structure_or_union_p (type)
330 +- || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16))
331 +- cache->struct_return_p = 1;
332 +- }
333 ++ cache->struct_return_p = sparc32_struct_return_from_sym (sym);
334 + }
335 + else
336 + {
337 +@@ -1002,10 +1010,24 @@ sparc32_stabs_argument_has_addr (struct
338 + || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16));
339 + }
340 +
341 ++static int
342 ++sparc32_dwarf2_struct_return_p (struct frame_info *next_frame)
343 ++{
344 ++ CORE_ADDR pc = frame_unwind_address_in_block (next_frame);
345 ++ struct symbol *sym = find_pc_function (pc);
346 ++
347 ++ if (sym)
348 ++ return sparc32_struct_return_from_sym (sym);
349 ++ return 0;
350 ++}
351 ++
352 + static void
353 + sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
354 +- struct dwarf2_frame_state_reg *reg)
355 ++ struct dwarf2_frame_state_reg *reg,
356 ++ struct frame_info *next_frame)
357 + {
358 ++ int off;
359 ++
360 + switch (regnum)
361 + {
362 + case SPARC_G0_REGNUM:
363 +@@ -1018,12 +1040,14 @@ sparc32_dwarf2_frame_init_reg (struct gd
364 + reg->how = DWARF2_FRAME_REG_CFA;
365 + break;
366 + case SPARC32_PC_REGNUM:
367 +- reg->how = DWARF2_FRAME_REG_RA_OFFSET;
368 +- reg->loc.offset = 8;
369 +- break;
370 + case SPARC32_NPC_REGNUM:
371 + reg->how = DWARF2_FRAME_REG_RA_OFFSET;
372 +- reg->loc.offset = 12;
373 ++ off = 8;
374 ++ if (sparc32_dwarf2_struct_return_p (next_frame))
375 ++ off += 4;
376 ++ if (regnum == SPARC32_NPC_REGNUM)
377 ++ off += 4;
378 ++ reg->loc.offset = off;
379 + break;
380 + }
381 + }
382 +--- gdb-6.4/gdb/sparc64-tdep.c.~1~ 2006-04-30 23:32:22.000000000 -0700
383 ++++ gdb-6.4/gdb/sparc64-tdep.c 2006-04-30 23:32:25.000000000 -0700
384 +@@ -1106,7 +1106,8 @@ sparc64_return_value (struct gdbarch *gd
385 +
386 + static void
387 + sparc64_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
388 +- struct dwarf2_frame_state_reg *reg)
389 ++ struct dwarf2_frame_state_reg *reg,
390 ++ struct frame_info *next_frame)
391 + {
392 + switch (regnum)
393 + {
394 --- gdb-6.4.orig/debian/patches/gdb-sparclinux-threads.patch
395 +++ gdb-6.4/debian/patches/gdb-sparclinux-threads.patch
396 @@ -0,0 +1,121 @@
397 +2006-04-01 David S. Miller <davem@davemloft.net>
398 +
399 + * config/linux.mh (NATDEPFILES): Remove sparc-sol2-nat.o
400 + * config/linux64.h (NATDEPFILES): Likewise
401 + * sparc-linux-nat.c (supply_gregset, supply_fpregset, fill_gregset,
402 + fill_fpregset): New.
403 + * sparc64-linux-nat.c (supply_gregset, supply_fpregset, fill_gregset,
404 + fill_fpregset): New.
405 +%patch
406 +--- gdb-6.4/gdb/config/sparc/linux.mh.~1~ 2005-09-10 11:11:13.000000000 -0700
407 ++++ gdb-6.4/gdb/config/sparc/linux.mh 2006-04-01 22:33:54.000000000 -0800
408 +@@ -1,6 +1,6 @@
409 + # Host: GNU/Linux SPARC
410 + NAT_FILE= nm-linux.h
411 +-NATDEPFILES= sparc-nat.o sparc-sol2-nat.o sparc-linux-nat.o \
412 ++NATDEPFILES= sparc-nat.o sparc-linux-nat.o \
413 + corelow.o core-regset.o fork-child.o inf-ptrace.o \
414 + proc-service.o linux-thread-db.o \
415 + gcore.o linux-nat.o
416 +--- gdb-6.4/gdb/config/sparc/linux64.mh.~1~ 2005-09-10 11:11:14.000000000 -0700
417 ++++ gdb-6.4/gdb/config/sparc/linux64.mh 2006-04-01 22:45:49.000000000 -0800
418 +@@ -1,6 +1,6 @@
419 + # Host: GNU/Linux UltraSPARC
420 + NAT_FILE= nm-linux.h
421 +-NATDEPFILES= sparc-nat.o sparc64-nat.o sparc-sol2-nat.o sparc64-linux-nat.o \
422 ++NATDEPFILES= sparc-nat.o sparc64-nat.o sparc64-linux-nat.o \
423 + corelow.o core-regset.o \
424 + fork-child.o inf-ptrace.o \
425 + proc-service.o linux-thread-db.o \
426 +--- gdb-6.4/gdb/sparc-linux-nat.c.~1~ 2005-09-10 11:11:05.000000000 -0700
427 ++++ gdb-6.4/gdb/sparc-linux-nat.c 2006-04-01 22:38:48.000000000 -0800
428 +@@ -20,9 +20,38 @@
429 + Boston, MA 02111-1307, USA. */
430 +
431 + #include "defs.h"
432 ++#include "regcache.h"
433 + #include "inferior.h"
434 + #include "target.h"
435 ++#include <sys/procfs.h>
436 ++#include "gregset.h"
437 + #include "linux-nat.h"
438 ++#include "sparc-nat.h"
439 ++#include "sparc-tdep.h"
440 ++
441 ++void
442 ++supply_gregset (prgregset_t *gregs)
443 ++{
444 ++ sparc32_supply_gregset (sparc_gregset, current_regcache, -1, gregs);
445 ++}
446 ++
447 ++void
448 ++supply_fpregset (prfpregset_t *fpregs)
449 ++{
450 ++ sparc32_supply_fpregset (current_regcache, -1, fpregs);
451 ++}
452 ++
453 ++void
454 ++fill_gregset (prgregset_t *gregs, int regnum)
455 ++{
456 ++ sparc32_collect_gregset (sparc_gregset, current_regcache, regnum, gregs);
457 ++}
458 ++
459 ++void
460 ++fill_fpregset (prfpregset_t *fpregs, int regnum)
461 ++{
462 ++ sparc32_collect_fpregset (current_regcache, regnum, fpregs);
463 ++}
464 +
465 + void _initialialize_sparc_linux_nat (void);
466 +
467 +--- gdb-6.4/gdb/sparc64-linux-nat.c.~1~ 2005-09-10 11:11:05.000000000 -0700
468 ++++ gdb-6.4/gdb/sparc64-linux-nat.c 2006-04-01 22:39:29.000000000 -0800
469 +@@ -20,12 +20,14 @@
470 + Boston, MA 02111-1307, USA. */
471 +
472 + #include "defs.h"
473 +-
474 +-#include "sparc64-tdep.h"
475 +-#include "sparc-nat.h"
476 ++#include "regcache.h"
477 + #include "inferior.h"
478 + #include "target.h"
479 ++#include <sys/procfs.h>
480 ++#include "sparc64-tdep.h"
481 ++#include "sparc-nat.h"
482 + #include "linux-nat.h"
483 ++#include "sparc-tdep.h"
484 +
485 + static const struct sparc_gregset sparc64_linux_ptrace_gregset =
486 + {
487 +@@ -41,6 +43,30 @@ static const struct sparc_gregset sparc6
488 + };
489 +
490 +
491 ++void
492 ++supply_gregset (prgregset_t *gregs)
493 ++{
494 ++ sparc64_supply_gregset (sparc_gregset, current_regcache, -1, gregs);
495 ++}
496 ++
497 ++void
498 ++supply_fpregset (prfpregset_t *fpregs)
499 ++{
500 ++ sparc64_supply_fpregset (current_regcache, -1, fpregs);
501 ++}
502 ++
503 ++void
504 ++fill_gregset (prgregset_t *gregs, int regnum)
505 ++{
506 ++ sparc64_collect_gregset (sparc_gregset, current_regcache, regnum, gregs);
507 ++}
508 ++
509 ++void
510 ++fill_fpregset (prfpregset_t *fpregs, int regnum)
511 ++{
512 ++ sparc64_collect_fpregset (current_regcache, regnum, fpregs);
513 ++}
514 ++
515 + /* Provide a prototype to silence -Wmissing-prototypes. */
516 + void _initialize_sparc64_linux_nat (void);
517 +
518 --- gdb-6.4.orig/debian/patches/13.use-dynamic-readline.patch
519 +++ gdb-6.4/debian/patches/13.use-dynamic-readline.patch
520 @@ -0,0 +1,29 @@
521 +Debian local - Use system readline to build.
522 +
523 +It would be nice to add a configure argument for this upstream.
524 +
525 +Index: gdb-6.3/gdb/Makefile.in
526 +===================================================================
527 +--- gdb-6.3.orig/gdb/Makefile.in 2004-11-03 21:18:49.000000000 -0500
528 ++++ gdb-6.3/gdb/Makefile.in 2004-11-09 23:04:57.204160812 -0500
529 +@@ -121,10 +121,16 @@ BFD_SRC = $(srcdir)/$(BFD_DIR)
530 + BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC)
531 +
532 + # Where is the READLINE library? Typically in ../readline.
533 +-READLINE_DIR = ../readline
534 +-READLINE = $(READLINE_DIR)/libreadline.a
535 +-READLINE_SRC = $(srcdir)/$(READLINE_DIR)
536 +-READLINE_CFLAGS = -I$(READLINE_SRC)/..
537 ++#READLINE_DIR = ../readline
538 ++#READLINE = $(READLINE_DIR)/libreadline.a
539 ++#READLINE_SRC = $(srcdir)/$(READLINE_DIR)
540 ++#READLINE_CFLAGS = -I$(READLINE_SRC)/..
541 ++#
542 ++# Debian has a perfectly fine readline - use it.
543 ++READLINE_SRC=/usr/include/readline
544 ++READLINE=-lreadline
545 ++READLINE_CFLAGS=
546 ++READLINE_DIR=
547 +
548 + WARN_CFLAGS = @WARN_CFLAGS@
549 + WERROR_CFLAGS = @WERROR_CFLAGS@
550 --- gdb-6.4.orig/debian/patches/34.info-section.patch
551 +++ gdb-6.4/debian/patches/34.info-section.patch
552 @@ -0,0 +1,42 @@
553 +Debian-local:
554 + Use the Development section, for consistency with other Debian packages.
555 +
556 +Index: gdb-6.3/gdb/doc/gdb.texinfo
557 +===================================================================
558 +--- gdb-6.3.orig/gdb/doc/gdb.texinfo 2004-10-08 15:19:03.000000000 -0400
559 ++++ gdb-6.3/gdb/doc/gdb.texinfo 2004-11-10 00:38:00.343924014 -0500
560 +@@ -38,7 +38,7 @@
561 +
562 + @c This is a dir.info fragment to support semi-automated addition of
563 + @c manuals to an info tree.
564 +-@dircategory Software development
565 ++@dircategory Development
566 + @direntry
567 + * Gdb: (gdb). The GNU debugger.
568 + @end direntry
569 +Index: gdb-6.3/gdb/doc/gdbint.texinfo
570 +===================================================================
571 +--- gdb-6.3.orig/gdb/doc/gdbint.texinfo 2004-10-12 15:14:31.000000000 -0400
572 ++++ gdb-6.3/gdb/doc/gdbint.texinfo 2004-11-10 00:37:59.165154226 -0500
573 +@@ -1,7 +1,7 @@
574 + \input texinfo @c -*- texinfo -*-
575 + @setfilename gdbint.info
576 + @include gdb-cfg.texi
577 +-@dircategory Software development
578 ++@dircategory Development
579 + @direntry
580 + * Gdb-Internals: (gdbint). The GNU debugger's internals.
581 + @end direntry
582 +Index: gdb-6.3/gdb/doc/stabs.texinfo
583 +===================================================================
584 +--- gdb-6.3.orig/gdb/doc/stabs.texinfo 2004-09-21 17:06:37.000000000 -0400
585 ++++ gdb-6.3/gdb/doc/stabs.texinfo 2004-11-10 00:37:59.874015787 -0500
586 +@@ -5,7 +5,7 @@
587 +
588 + @c This is a dir.info fragment to support semi-automated addition of
589 + @c manuals to an info tree.
590 +-@dircategory Software development
591 ++@dircategory Development
592 + @direntry
593 + * Stabs: (stabs). The "stabs" debugging information format.
594 + @end direntry
595 --- gdb-6.4.orig/debian/patches/sim-destdir.patch
596 +++ gdb-6.4/debian/patches/sim-destdir.patch
597 @@ -0,0 +1,29 @@
598 +Fix some missing uses of DESTDIR in the sim/ directories. The Debian
599 +packages use DESTDIR to build.
600 +
601 +%patch
602 +Index: gdb-6.3/sim/Makefile.in
603 +===================================================================
604 +--- gdb-6.3.orig/sim/Makefile.in 2003-09-03 14:46:52.000000000 -0400
605 ++++ gdb-6.3/sim/Makefile.in 2004-11-10 00:39:25.381315738 -0500
606 +@@ -93,6 +93,7 @@ FLAGS_TO_PASS = \
607 + "CC=$(CC)" \
608 + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
609 + "CFLAGS=$(CFLAGS)" \
610 ++ "DESTDIR=$(DESTDIR)" \
611 + "RANLIB=$(RANLIB)" \
612 + "MAKEINFO=$(MAKEINFO)" \
613 + "INSTALL=$(INSTALL)" \
614 +Index: gdb-6.3/sim/erc32/Makefile.in
615 +===================================================================
616 +--- gdb-6.3.orig/sim/erc32/Makefile.in 2000-03-07 10:32:49.000000000 -0500
617 ++++ gdb-6.3/sim/erc32/Makefile.in 2004-11-10 00:39:25.385314957 -0500
618 +@@ -53,7 +53,7 @@ end.h: end
619 + # Copy the files into directories where they will be run.
620 + install-sis: installdirs
621 + n=`echo sis | sed '$(program_transform_name)'`; \
622 +- $(INSTALL_PROGRAM) sis$(EXEEXT) $(bindir)/$$n$(EXEEXT)
623 ++ $(INSTALL_PROGRAM) sis$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
624 +
625 + clean-sis:
626 + rm -f sis end end.h
627 --- gdb-6.4.orig/debian/patches/member-field-symtab.patch
628 +++ gdb-6.4/debian/patches/member-field-symtab.patch
629 @@ -0,0 +1,35 @@
630 +Status: unsubmitted
631 +
632 +This patch was for Debian bug #239535. It needs to be tested, and
633 +submitted.
634 +
635 +Index: gdb-6.3.90.20051119/gdb/valops.c
636 +===================================================================
637 +--- gdb-6.3.90.20051119.orig/gdb/valops.c 2005-11-19 22:42:02.000000000 -0500
638 ++++ gdb-6.3.90.20051119/gdb/valops.c 2005-11-19 22:42:40.000000000 -0500
639 +@@ -2256,8 +2256,10 @@ check_field_in (struct type *type, const
640 + return 1;
641 + }
642 +
643 ++ /* Check each baseclass. Call check_typedef, which will follow typedefs
644 ++ and do opaque/stub type resolution. */
645 + for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
646 +- if (check_field_in (TYPE_BASECLASS (type, i), name))
647 ++ if (check_field_in (check_typedef (TYPE_BASECLASS (type, i)), name))
648 + return 1;
649 +
650 + return 0;
651 +Index: gdb-6.3.90.20051119/gdb/dwarf2read.c
652 +===================================================================
653 +--- gdb-6.3.90.20051119.orig/gdb/dwarf2read.c 2005-11-19 22:38:17.000000000 -0500
654 ++++ gdb-6.3.90.20051119/gdb/dwarf2read.c 2005-11-19 22:42:40.000000000 -0500
655 +@@ -2098,8 +2098,8 @@ guess_structure_name (struct partial_die
656 + strlen (actual_class_name),
657 + &cu->comp_unit_obstack);
658 + xfree (actual_class_name);
659 ++ break;
660 + }
661 +- break;
662 + }
663 +
664 + child_pdi = child_pdi->die_sibling;
665 --- gdb-6.4.orig/debian/patches/dwarf2-cfi-warning.patch
666 +++ gdb-6.4/debian/patches/dwarf2-cfi-warning.patch
667 @@ -0,0 +1,32 @@
668 +Status: Unsuitable for upstream (at least, without a lot of arguing).
669 +
670 +GCC does not specify the state of every last register in the CIE. Since
671 +GCC's focus is on correctness of runtime unwinding, any registers which
672 +have to be unwound will be specified; but unmodified registers will not
673 +be explicitly marked. (How about modified, call-clobbered registers?
674 +I'm not sure if they are marked as unavailable.)
675 +
676 +GDB issues a noisy warning about this. The warning is generally not useful,
677 +and we can get it extremely frequently (any time we load a new CIE).
678 +
679 +This patch disables the warning. Alternately we could set the complaints
680 +threshold to zero, or implement a default frame init-register method for
681 +every architecture. But someday the compiler will support using different
682 +calling conventions for internal functions, so that's not much of a stopgap.
683 +ARM has a complex algorithm for handling this, involving scanning all CIEs -
684 +benefit not completely clear outside of the ARM context of flexible register
685 +sets.
686 +
687 +Index: gdb-6.3.90.20051119/gdb/dwarf2-frame.c
688 +===================================================================
689 +--- gdb-6.3.90.20051119.orig/gdb/dwarf2-frame.c 2005-08-01 00:06:27.000000000 -0400
690 ++++ gdb-6.3.90.20051119/gdb/dwarf2-frame.c 2005-11-20 00:11:37.000000000 -0500
691 +@@ -738,7 +738,7 @@ dwarf2_frame_cache (struct frame_info *n
692 + DWARF2 register numbers. */
693 + if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
694 + {
695 +- if (cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED)
696 ++ if (0 && cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED)
697 + complaint (&symfile_complaints, _("\
698 + incomplete CFI data; unspecified registers (e.g., %s) at 0x%s"),
699 + gdbarch_register_name (gdbarch, regnum),
700 --- gdb-6.4.orig/debian/patches/fix-attach-inferior-notification.patch
701 +++ gdb-6.4/debian/patches/fix-attach-inferior-notification.patch
702 @@ -0,0 +1,60 @@
703 +Index: gdb-6.4/gdb/inf-ptrace.c
704 +===================================================================
705 +--- gdb-6.4.orig/gdb/inf-ptrace.c 2005-11-21 04:16:07.000000000 -0500
706 ++++ gdb-6.4/gdb/inf-ptrace.c 2005-12-11 13:08:51.000000000 -0500
707 +@@ -228,10 +228,6 @@ inf_ptrace_attach (char *args, int from_
708 +
709 + inferior_ptid = pid_to_ptid (pid);
710 + push_target (ptrace_ops_hack);
711 +-
712 +- /* Do this first, before anything has had a chance to query the
713 +- inferior's symbol table or similar. */
714 +- observer_notify_inferior_created (&current_target, from_tty);
715 + }
716 +
717 + #ifdef PT_GET_PROCESS_STATE
718 +Index: gdb-6.4/gdb/inf-ttrace.c
719 +===================================================================
720 +--- gdb-6.4.orig/gdb/inf-ttrace.c 2005-10-29 17:22:39.000000000 -0400
721 ++++ gdb-6.4/gdb/inf-ttrace.c 2005-12-11 13:10:29.000000000 -0500
722 +@@ -727,10 +727,6 @@ inf_ttrace_attach (char *args, int from_
723 +
724 + inferior_ptid = pid_to_ptid (pid);
725 + push_target (ttrace_ops_hack);
726 +-
727 +- /* Do this first, before anything has had a chance to query the
728 +- inferior's symbol table or similar. */
729 +- observer_notify_inferior_created (&current_target, from_tty);
730 + }
731 +
732 + static void
733 +Index: gdb-6.4/gdb/infcmd.c
734 +===================================================================
735 +--- gdb-6.4.orig/gdb/infcmd.c 2005-12-07 20:37:42.000000000 -0500
736 ++++ gdb-6.4/gdb/infcmd.c 2005-12-11 13:09:33.000000000 -0500
737 +@@ -1878,6 +1878,10 @@ attach_command (char *args, int from_tty
738 + reread_symbols ();
739 + }
740 +
741 ++ /* Do this first, before anything has had a chance to query the
742 ++ inferior's symbol table or similar. */
743 ++ observer_notify_inferior_created (&current_target, from_tty);
744 ++
745 + #ifdef SOLIB_ADD
746 + /* Add shared library symbols from the newly attached process, if any. */
747 + SOLIB_ADD ((char *) 0, from_tty, &current_target, auto_solib_add);
748 +Index: gdb-6.4/gdb/inftarg.c
749 +===================================================================
750 +--- gdb-6.4.orig/gdb/inftarg.c 2005-09-04 12:18:19.000000000 -0400
751 ++++ gdb-6.4/gdb/inftarg.c 2005-12-11 13:10:37.000000000 -0500
752 +@@ -211,10 +211,6 @@ child_attach (char *args, int from_tty)
753 +
754 + inferior_ptid = pid_to_ptid (pid);
755 + push_target (&deprecated_child_ops);
756 +-
757 +- /* Do this first, before anything has had a chance to query the
758 +- inferior's symbol table or similar. */
759 +- observer_notify_inferior_created (&current_target, from_tty);
760 + }
761 +
762 + #if !defined(CHILD_POST_ATTACH)
763 --- gdb-6.4.orig/debian/patches/gdb-fortran-main.patch
764 +++ gdb-6.4/debian/patches/gdb-fortran-main.patch
765 @@ -0,0 +1,100 @@
766 +Daniel,
767 +
768 +Although the proper way of adding case insensitivity to symbol lookup is
769 +still under discussion, I think it might be desirable to set the main
770 +function of Fortran programs to "MAIN__" first. Because it can at least
771 +let GDB recognize that the language is Fortran after loading a Fortran
772 +executable only. What is your idea on this? Please comments. TIA!
773 +
774 +Here is the patch to set the main function in Fortran programs to
775 +"MAIN__". And followed is a patch to verify this. Tested with g77 and
776 +gfortran on x86, and g77 on ppc64. With the first patch, it reported
777 +PASS; without, report FAIL. No regression is found in gdb.fortran
778 +testcases.
779 +
780 +P.S: if there is a symbol named "MAIN__" in sources of other languages, it
781 +might disturb the debugging. But I am not sure how much it is.
782 +
783 +Index: gdb/symtab.c
784 +===================================================================
785 +RCS file: /cvs/src/src/gdb/symtab.c,v
786 +retrieving revision 1.145
787 +diff -c -p -r1.145 symtab.c
788 +*** lalalla/gdb/symtab.c 8 Mar 2005 04:34:44 -0000 1.145
789 +--- lalala/gdb/symtab.c 28 Jul 2005 03:16:48 -0000
790 +*************** find_main_name (void)
791 +*** 4125,4132 ****
792 + }
793 +
794 + /* The languages above didn't identify the name of the main procedure.
795 +! Fallback to "main". */
796 +! set_main_name ("main");
797 + }
798 +
799 + char *
800 +--- 4125,4136 ----
801 + }
802 +
803 + /* The languages above didn't identify the name of the main procedure.
804 +! Fallback to "MAIN__" (g77 and gfortran) if we can find it in the
805 +! minimal symtab, to "main" otherwise. */
806 +! if (lookup_minimal_symbol ("MAIN__", NULL, NULL))
807 +! set_main_name ("MAIN__");
808 +! else
809 +! set_main_name ("main");
810 + }
811 +
812 + char *
813 +
814 +Testcase lang.exp to verify the above patch:
815 +===========================================================
816 +*** /dev/null Mon Jul 25 13:51:17 2005
817 +--- lalal/gdb/testsuite/gdb.fortran/lang.exp Mon Jul 25 06:50:20 2005
818 +***************
819 +*** 0 ****
820 +--- 1,40 ----
821 ++ # Copyright 2005 Free Software Foundation, Inc.
822 ++
823 ++ # This program is free software; you can redistribute it and/or modify
824 ++ # it under the terms of the GNU General Public License as published by
825 ++ # the Free Software Foundation; either version 2 of the License, or
826 ++ # (at your option) any later version.
827 ++ #
828 ++ # This program is distributed in the hope that it will be useful,
829 ++ # but WITHOUT ANY WARRANTY; without even the implied warranty of
830 ++ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
831 ++ # GNU General Public License for more details.
832 ++ #
833 ++ # You should have received a copy of the GNU General Public License
834 ++ # along with this program; if not, write to the Free Software
835 ++ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
836 ++
837 ++ # This file was written by Wu Zhou. (woodzltc@cn.ibm.com)
838 ++
839 ++ # This file is part of the gdb testsuite. It is intended to test that gdb
840 ++ # could recognize the Fortran language after loading the binary
841 ++
842 ++ if $tracelevel then {
843 ++ strace $tracelevel
844 ++ }
845 ++
846 ++ set testfile "array-element"
847 ++ set srcfile ${srcdir}/${subdir}/${testfile}.f
848 ++ set binfile ${objdir}/${subdir}/${testfile}
849 ++
850 ++ if { [gdb_compile "${srcfile}" "${binfile}" executable {debug f77}] != "" } {
851 ++ untested "Couldn't compile ${srcfile}"
852 ++ return -1
853 ++ }
854 ++
855 ++ gdb_exit
856 ++ gdb_start
857 ++ gdb_reinitialize_dir $srcdir/$subdir
858 ++ gdb_load ${binfile}
859 ++
860 ++ gdb_test "show language" ".*currently fortran.*" "show language(fortran)"
861 +
862 +
863 +Regards
864 +- Wu Zhou
865 +
866 --- gdb-6.4.orig/debian/patches/gdbinit-ownership.patch
867 +++ gdb-6.4/debian/patches/gdbinit-ownership.patch
868 @@ -0,0 +1,121 @@
869 +This patch was not popular upstream; there was no fundamental objection, but
870 +several problems with the implementation. It needs to be revisited.
871 +
872 +Index: gdb-6.3.90.20051119/gdb/cli/cli-cmds.c
873 +===================================================================
874 +--- gdb-6.3.90.20051119.orig/gdb/cli/cli-cmds.c 2005-11-19 22:56:43.000000000 -0500
875 ++++ gdb-6.3.90.20051119/gdb/cli/cli-cmds.c 2005-11-20 00:17:15.000000000 -0500
876 +@@ -37,6 +37,7 @@
877 + #include "objfiles.h"
878 + #include "source.h"
879 + #include "disasm.h"
880 ++#include "gdb_stat.h"
881 +
882 + #include "ui-out.h"
883 +
884 +@@ -50,6 +51,8 @@
885 + #include "tui/tui.h" /* For tui_active et.al. */
886 + #endif
887 +
888 ++#include <fcntl.h>
889 ++
890 + /* Prototypes for local command functions */
891 +
892 + static void complete_command (char *, int);
893 +@@ -420,30 +423,54 @@ cd_command (char *dir, int from_tty)
894 + pwd_command ((char *) 0, 1);
895 + }
896 +
897 ++/* Load a GDB command file whose name is given in ARGS. FROM_TTY may
898 ++ be -1, in which case we are loading a gdbinit file; in that case,
899 ++ be paranoid about unsafe files. */
900 ++
901 + void
902 + source_command (char *args, int from_tty)
903 + {
904 +- FILE *stream;
905 ++ FILE *stream = NULL;
906 ++ int fd;
907 + struct cleanup *old_cleanups;
908 + char *file = args;
909 +
910 + if (file == NULL)
911 +- {
912 +- error (_("source command requires pathname of file to source."));
913 +- }
914 ++ error (_("source command requires pathname of file to source."));
915 +
916 + file = tilde_expand (file);
917 + old_cleanups = make_cleanup (xfree, file);
918 +
919 +- stream = fopen (file, FOPEN_RT);
920 +- if (!stream)
921 ++ fd = open (file, O_RDONLY);
922 ++ if (fd != -1)
923 ++ stream = fdopen (fd, FOPEN_RT);
924 ++ if (stream == NULL)
925 + {
926 +- if (from_tty)
927 ++ if (from_tty > 0)
928 + perror_with_name (file);
929 + else
930 + return;
931 + }
932 +
933 ++#ifdef HAVE_GETUID
934 ++ if (from_tty == -1)
935 ++ {
936 ++ struct stat statbuf;
937 ++ if (fstat (fd, &statbuf) < 0)
938 ++ {
939 ++ perror_with_name (file);
940 ++ fclose (stream);
941 ++ return;
942 ++ }
943 ++ if (statbuf.st_uid != getuid () || (statbuf.st_mode & S_IWOTH))
944 ++ {
945 ++ warning ("not using untrusted file \"%s\"", file);
946 ++ fclose (stream);
947 ++ return;
948 ++ }
949 ++ }
950 ++#endif
951 ++
952 + script_from_file (stream, file);
953 +
954 + do_cleanups (old_cleanups);
955 +Index: gdb-6.3.90.20051119/gdb/main.c
956 +===================================================================
957 +--- gdb-6.3.90.20051119.orig/gdb/main.c 2005-11-14 10:53:06.000000000 -0500
958 ++++ gdb-6.3.90.20051119/gdb/main.c 2005-11-20 00:14:13.000000000 -0500
959 +@@ -638,7 +638,7 @@ extern int gdbtk_test (char *);
960 +
961 + if (!inhibit_gdbinit)
962 + {
963 +- catch_command_errors (source_command, homeinit, 0, RETURN_MASK_ALL);
964 ++ catch_command_errors (source_command, homeinit, -1, RETURN_MASK_ALL);
965 + }
966 +
967 + /* Do stats; no need to do them elsewhere since we'll only
968 +@@ -725,7 +725,7 @@ extern int gdbtk_test (char *);
969 + || memcmp ((char *) &homebuf, (char *) &cwdbuf, sizeof (struct stat)))
970 + if (!inhibit_gdbinit)
971 + {
972 +- catch_command_errors (source_command, gdbinit, 0, RETURN_MASK_ALL);
973 ++ catch_command_errors (source_command, gdbinit, -1, RETURN_MASK_ALL);
974 + }
975 +
976 + for (i = 0; i < ncmd; i++)
977 +Index: gdb-6.3.90.20051119/gdb/Makefile.in
978 +===================================================================
979 +--- gdb-6.3.90.20051119.orig/gdb/Makefile.in 2005-11-19 22:56:43.000000000 -0500
980 ++++ gdb-6.3.90.20051119/gdb/Makefile.in 2005-11-20 00:14:13.000000000 -0500
981 +@@ -2794,7 +2794,7 @@ cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(d
982 + $(expression_h) $(frame_h) $(value_h) $(language_h) $(filenames_h) \
983 + $(objfiles_h) $(source_h) $(disasm_h) $(ui_out_h) $(top_h) \
984 + $(cli_decode_h) $(cli_script_h) $(cli_setshow_h) $(cli_cmds_h) \
985 +- $(tui_h)
986 ++ $(tui_h) $(gdb_stat_h)
987 + $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-cmds.c
988 + cli-decode.o: $(srcdir)/cli/cli-decode.c $(defs_h) $(symtab_h) \
989 + $(gdb_regex_h) $(gdb_string_h) $(ui_out_h) $(cli_cmds_h) \
990 --- gdb-6.4.orig/debian/patches/linux-clear-thread-list.patch
991 +++ gdb-6.4/debian/patches/linux-clear-thread-list.patch
992 @@ -0,0 +1,24 @@
993 +Index: gdb-6.4/gdb/linux-thread-db.c
994 +===================================================================
995 +--- gdb-6.4.orig/gdb/linux-thread-db.c 2005-12-07 20:37:42.000000000 -0500
996 ++++ gdb-6.4/gdb/linux-thread-db.c 2005-12-11 12:33:04.000000000 -0500
997 +@@ -842,6 +842,9 @@ thread_db_detach (char *args, int from_t
998 + inferior is supposed to be survive this function call. */
999 + inferior_ptid = lwp_from_thread (inferior_ptid);
1000 +
1001 ++ /* Destroy thread info; it's no longer valid. */
1002 ++ init_thread_list ();
1003 ++
1004 + /* Forget about the child's process ID. We shouldn't need it
1005 + anymore. */
1006 + proc_handle.pid = 0;
1007 +@@ -1138,6 +1141,9 @@ thread_db_mourn_inferior (void)
1008 + {
1009 + remove_thread_event_breakpoints ();
1010 +
1011 ++ /* Destroy thread info; it's no longer valid. */
1012 ++ init_thread_list ();
1013 ++
1014 + /* Forget about the child's process ID. We shouldn't need it
1015 + anymore. */
1016 + proc_handle.pid = 0;
1017 --- gdb-6.4.orig/debian/patches/static-threads-test.patch
1018 +++ gdb-6.4/debian/patches/static-threads-test.patch
1019 @@ -0,0 +1,17 @@
1020 +Update staticthreads.exp to handle debugging info in libpthread.a.
1021 +
1022 +Index: gdb-6.3.90.20051119/gdb/testsuite/gdb.threads/staticthreads.exp
1023 +===================================================================
1024 +--- gdb-6.3.90.20051119.orig/gdb/testsuite/gdb.threads/staticthreads.exp 2005-11-19 22:56:59.000000000 -0500
1025 ++++ gdb-6.3.90.20051119/gdb/testsuite/gdb.threads/staticthreads.exp 2005-11-20 00:01:11.000000000 -0500
1026 +@@ -53,6 +53,10 @@ gdb_test_multiple "continue" "$test" {
1027 + -re " sem_post .*$gdb_prompt " {
1028 + pass "$test"
1029 + }
1030 ++ -re " (.*_)sem_post .*$gdb_prompt " {
1031 ++ # Glibc uses aliases for internal symbols; match __new_sem_post.
1032 ++ pass "$test"
1033 ++ }
1034 + -re "Program received signal .*$gdb_prompt " {
1035 + kfail gdb/1328 "$test"
1036 + }
1037 --- gdb-6.4.orig/debian/patches/10.selected-frame.patch
1038 +++ gdb-6.4/debian/patches/10.selected-frame.patch
1039 @@ -0,0 +1,437 @@
1040 +2004-10-11
1041 +
1042 +This patch is not submitted. Many of these functions should be passing
1043 +a frame around rather than calling get_selected_frame, but at least it
1044 +is an improvement over deprecated_selected_frame.
1045 +
1046 +2005-11-20
1047 +
1048 +Patch updated, but still not submitted.
1049 +
1050 +Index: gdb-6.3.90.20051119/gdb/breakpoint.c
1051 +===================================================================
1052 +--- gdb-6.3.90.20051119.orig/gdb/breakpoint.c 2005-11-20 11:39:21.000000000 -0500
1053 ++++ gdb-6.3.90.20051119/gdb/breakpoint.c 2005-11-20 11:39:22.000000000 -0500
1054 +@@ -932,7 +932,7 @@ insert_bp_location (struct bp_location *
1055 + /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1056 + took a frame parameter, so that we didn't have to change the
1057 + selected frame. */
1058 +- saved_frame_id = get_frame_id (deprecated_selected_frame);
1059 ++ saved_frame_id = get_frame_id (get_selected_frame (NULL));
1060 +
1061 + /* Determine if the watchpoint is within scope. */
1062 + if (bpt->owner->exp_valid_block == NULL)
1063 +@@ -5927,7 +5927,7 @@ until_break_command (char *arg, int from
1064 + {
1065 + struct symtabs_and_lines sals;
1066 + struct symtab_and_line sal;
1067 +- struct frame_info *prev_frame = get_prev_frame (deprecated_selected_frame);
1068 ++ struct frame_info *prev_frame = get_prev_frame (get_selected_frame (NULL));
1069 + struct breakpoint *breakpoint;
1070 + struct cleanup *old_chain;
1071 + struct continuation_arg *arg1;
1072 +@@ -5964,7 +5964,7 @@ until_break_command (char *arg, int from
1073 + /* Otherwise, specify the current frame, because we want to stop only
1074 + at the very same frame. */
1075 + breakpoint = set_momentary_breakpoint (sal,
1076 +- get_frame_id (deprecated_selected_frame),
1077 ++ get_frame_id (get_selected_frame (NULL)),
1078 + bp_until);
1079 +
1080 + if (!target_can_async_p ())
1081 +Index: gdb-6.3.90.20051119/gdb/cli/cli-cmds.c
1082 +===================================================================
1083 +--- gdb-6.3.90.20051119.orig/gdb/cli/cli-cmds.c 2005-11-20 11:39:21.000000000 -0500
1084 ++++ gdb-6.3.90.20051119/gdb/cli/cli-cmds.c 2005-11-20 11:39:22.000000000 -0500
1085 +@@ -846,10 +846,7 @@ disassemble_command (char *arg, int from
1086 + name = NULL;
1087 + if (!arg)
1088 + {
1089 +- if (!deprecated_selected_frame)
1090 +- error (_("No frame selected."));
1091 +-
1092 +- pc = get_frame_pc (deprecated_selected_frame);
1093 ++ pc = get_frame_pc (get_selected_frame (_("No frame selected.")));
1094 + if (find_pc_partial_function (pc, &name, &low, &high) == 0)
1095 + error (_("No function contains program counter for selected frame."));
1096 + #if defined(TUI)
1097 +Index: gdb-6.3.90.20051119/gdb/f-valprint.c
1098 +===================================================================
1099 +--- gdb-6.3.90.20051119.orig/gdb/f-valprint.c 2005-11-20 11:39:21.000000000 -0500
1100 ++++ gdb-6.3.90.20051119/gdb/f-valprint.c 2005-11-20 11:39:22.000000000 -0500
1101 +@@ -71,7 +71,7 @@ f77_get_dynamic_lowerbound (struct type
1102 + switch (TYPE_ARRAY_LOWER_BOUND_TYPE (type))
1103 + {
1104 + case BOUND_BY_VALUE_ON_STACK:
1105 +- current_frame_addr = get_frame_base (deprecated_selected_frame);
1106 ++ current_frame_addr = get_frame_base (get_selected_frame (NULL));
1107 + if (current_frame_addr > 0)
1108 + {
1109 + *lower_bound =
1110 +@@ -95,7 +95,7 @@ f77_get_dynamic_lowerbound (struct type
1111 + break;
1112 +
1113 + case BOUND_BY_REF_ON_STACK:
1114 +- current_frame_addr = get_frame_base (deprecated_selected_frame);
1115 ++ current_frame_addr = get_frame_base (get_selected_frame (NULL));
1116 + if (current_frame_addr > 0)
1117 + {
1118 + ptr_to_lower_bound =
1119 +@@ -129,7 +129,7 @@ f77_get_dynamic_upperbound (struct type
1120 + switch (TYPE_ARRAY_UPPER_BOUND_TYPE (type))
1121 + {
1122 + case BOUND_BY_VALUE_ON_STACK:
1123 +- current_frame_addr = get_frame_base (deprecated_selected_frame);
1124 ++ current_frame_addr = get_frame_base (get_selected_frame (NULL));
1125 + if (current_frame_addr > 0)
1126 + {
1127 + *upper_bound =
1128 +@@ -158,7 +158,7 @@ f77_get_dynamic_upperbound (struct type
1129 + break;
1130 +
1131 + case BOUND_BY_REF_ON_STACK:
1132 +- current_frame_addr = get_frame_base (deprecated_selected_frame);
1133 ++ current_frame_addr = get_frame_base (get_selected_frame (NULL));
1134 + if (current_frame_addr > 0)
1135 + {
1136 + ptr_to_upper_bound =
1137 +@@ -619,10 +619,7 @@ info_common_command (char *comname, int
1138 + first make sure that it is visible and if so, let
1139 + us display its contents */
1140 +
1141 +- fi = deprecated_selected_frame;
1142 +-
1143 +- if (fi == NULL)
1144 +- error (_("No frame selected"));
1145 ++ fi = get_selected_frame (_("No frame selected"));
1146 +
1147 + /* The following is generally ripped off from stack.c's routine
1148 + print_frame_info() */
1149 +@@ -711,10 +708,7 @@ there_is_a_visible_common_named (char *c
1150 + if (comname == NULL)
1151 + error (_("Cannot deal with NULL common name!"));
1152 +
1153 +- fi = deprecated_selected_frame;
1154 +-
1155 +- if (fi == NULL)
1156 +- error (_("No frame selected"));
1157 ++ fi = get_selected_frame (_("No frame selected"));
1158 +
1159 + /* The following is generally ripped off from stack.c's routine
1160 + print_frame_info() */
1161 +Index: gdb-6.3.90.20051119/gdb/infcmd.c
1162 +===================================================================
1163 +--- gdb-6.3.90.20051119.orig/gdb/infcmd.c 2005-11-20 11:39:21.000000000 -0500
1164 ++++ gdb-6.3.90.20051119/gdb/infcmd.c 2005-11-20 11:39:22.000000000 -0500
1165 +@@ -1244,10 +1244,8 @@ finish_command (char *arg, int from_tty)
1166 + error (_("The \"finish\" command does not take any arguments."));
1167 + if (!target_has_execution)
1168 + error (_("The program is not running."));
1169 +- if (deprecated_selected_frame == NULL)
1170 +- error (_("No selected frame."));
1171 +
1172 +- frame = get_prev_frame (deprecated_selected_frame);
1173 ++ frame = get_prev_frame (get_selected_frame (_("No selected frame.")));
1174 + if (frame == 0)
1175 + error (_("\"finish\" not meaningful in the outermost frame."));
1176 +
1177 +@@ -1265,7 +1263,7 @@ finish_command (char *arg, int from_tty)
1178 +
1179 + /* Find the function we will return from. */
1180 +
1181 +- function = find_pc_function (get_frame_pc (deprecated_selected_frame));
1182 ++ function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));
1183 +
1184 + /* Print info on the selected frame, including level number but not
1185 + source. */
1186 +@@ -1631,13 +1629,12 @@ registers_info (char *addr_exp, int fpre
1187 +
1188 + if (!target_has_registers)
1189 + error (_("The program has no registers now."));
1190 +- if (deprecated_selected_frame == NULL)
1191 +- error (_("No selected frame."));
1192 +
1193 + if (!addr_exp)
1194 + {
1195 + gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1196 +- deprecated_selected_frame, -1, fpregs);
1197 ++ get_selected_frame (_("No selected frame.")),
1198 ++ -1, fpregs);
1199 + return;
1200 + }
1201 +
1202 +@@ -1670,12 +1667,12 @@ registers_info (char *addr_exp, int fpre
1203 +
1204 + /* A register name? */
1205 + {
1206 +- int regnum = frame_map_name_to_regnum (deprecated_selected_frame,
1207 ++ int regnum = frame_map_name_to_regnum (get_selected_frame (_("No selected frame.")),
1208 + start, end - start);
1209 + if (regnum >= 0)
1210 + {
1211 + gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1212 +- deprecated_selected_frame, regnum, fpregs);
1213 ++ get_selected_frame (NULL), regnum, fpregs);
1214 + continue;
1215 + }
1216 + }
1217 +@@ -1689,7 +1686,7 @@ registers_info (char *addr_exp, int fpre
1218 + && regnum < NUM_REGS + NUM_PSEUDO_REGS)
1219 + {
1220 + gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1221 +- deprecated_selected_frame, regnum, fpregs);
1222 ++ get_selected_frame (NULL), regnum, fpregs);
1223 + continue;
1224 + }
1225 + }
1226 +@@ -1715,7 +1712,7 @@ registers_info (char *addr_exp, int fpre
1227 + if (gdbarch_register_reggroup_p (current_gdbarch, regnum,
1228 + group))
1229 + gdbarch_print_registers_info (current_gdbarch,
1230 +- gdb_stdout, deprecated_selected_frame,
1231 ++ gdb_stdout, get_selected_frame (NULL),
1232 + regnum, fpregs);
1233 + }
1234 + continue;
1235 +@@ -1745,8 +1742,6 @@ print_vector_info (struct gdbarch *gdbar
1236 + {
1237 + if (!target_has_registers)
1238 + error (_("The program has no registers now."));
1239 +- if (deprecated_selected_frame == NULL)
1240 +- error (_("No selected frame."));
1241 +
1242 + if (gdbarch_print_vector_info_p (gdbarch))
1243 + gdbarch_print_vector_info (gdbarch, file, frame, args);
1244 +@@ -1771,7 +1766,7 @@ print_vector_info (struct gdbarch *gdbar
1245 + static void
1246 + vector_info (char *args, int from_tty)
1247 + {
1248 +- print_vector_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
1249 ++ print_vector_info (current_gdbarch, gdb_stdout, get_selected_frame (NULL), args);
1250 + }
1251 +
1252 +
1253 +@@ -1965,8 +1960,6 @@ print_float_info (struct gdbarch *gdbarc
1254 + {
1255 + if (!target_has_registers)
1256 + error (_("The program has no registers now."));
1257 +- if (deprecated_selected_frame == NULL)
1258 +- error (_("No selected frame."));
1259 +
1260 + if (gdbarch_print_float_info_p (gdbarch))
1261 + gdbarch_print_float_info (gdbarch, file, frame, args);
1262 +@@ -1993,7 +1986,7 @@ static void
1263 + float_info (char *args, int from_tty)
1264 + {
1265 + print_float_info (current_gdbarch, gdb_stdout,
1266 +- deprecated_selected_frame, args);
1267 ++ get_selected_frame (NULL), args);
1268 + }
1269 +
1270 + static void
1271 +Index: gdb-6.3.90.20051119/gdb/inflow.c
1272 +===================================================================
1273 +--- gdb-6.3.90.20051119.orig/gdb/inflow.c 2005-11-20 11:39:21.000000000 -0500
1274 ++++ gdb-6.3.90.20051119/gdb/inflow.c 2005-11-20 11:45:45.000000000 -0500
1275 +@@ -591,7 +591,7 @@ kill_command (char *arg, int from_tty)
1276 + if (target_has_stack)
1277 + {
1278 + printf_filtered (_("In %s,\n"), target_longname);
1279 +- if (deprecated_selected_frame == NULL)
1280 ++ if (deprecated_safe_get_selected_frame () == NULL)
1281 + fputs_filtered ("No selected stack frame.\n", gdb_stdout);
1282 + else
1283 + print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
1284 +Index: gdb-6.3.90.20051119/gdb/infrun.c
1285 +===================================================================
1286 +--- gdb-6.3.90.20051119.orig/gdb/infrun.c 2005-11-20 11:39:21.000000000 -0500
1287 ++++ gdb-6.3.90.20051119/gdb/infrun.c 2005-11-20 11:39:22.000000000 -0500
1288 +@@ -3584,7 +3584,7 @@ save_inferior_status (int restore_stack_
1289 +
1290 + inf_status->registers = regcache_dup (current_regcache);
1291 +
1292 +- inf_status->selected_frame_id = get_frame_id (deprecated_selected_frame);
1293 ++ inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL));
1294 + return inf_status;
1295 + }
1296 +
1297 +Index: gdb-6.3.90.20051119/gdb/stack.c
1298 +===================================================================
1299 +--- gdb-6.3.90.20051119.orig/gdb/stack.c 2005-11-20 11:39:21.000000000 -0500
1300 ++++ gdb-6.3.90.20051119/gdb/stack.c 2005-11-20 11:39:22.000000000 -0500
1301 +@@ -1909,7 +1909,7 @@ func_command (char *arg, int from_tty)
1302 +
1303 + if (!found)
1304 + printf_filtered (_("'%s' not within current stack frame.\n"), arg);
1305 +- else if (frame != deprecated_selected_frame)
1306 ++ else if (frame != get_selected_frame (NULL))
1307 + select_and_print_frame (frame);
1308 + }
1309 +
1310 +@@ -1918,7 +1918,7 @@ func_command (char *arg, int from_tty)
1311 + enum language
1312 + get_frame_language (void)
1313 + {
1314 +- struct frame_info *frame = deprecated_selected_frame;
1315 ++ struct frame_info *frame = deprecated_safe_get_selected_frame ();
1316 +
1317 + if (frame)
1318 + {
1319 +Index: gdb-6.3.90.20051119/gdb/tui/tui-disasm.c
1320 +===================================================================
1321 +--- gdb-6.3.90.20051119.orig/gdb/tui/tui-disasm.c 2005-11-20 11:39:21.000000000 -0500
1322 ++++ gdb-6.3.90.20051119/gdb/tui/tui-disasm.c 2005-11-20 11:39:22.000000000 -0500
1323 +@@ -386,7 +386,7 @@ tui_vertical_disassem_scroll (enum tui_s
1324 +
1325 + content = (tui_win_content) TUI_DISASM_WIN->generic.content;
1326 + if (cursal.symtab == (struct symtab *) NULL)
1327 +- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
1328 ++ s = find_pc_symtab (get_frame_pc (get_selected_frame (NULL)));
1329 + else
1330 + s = cursal.symtab;
1331 +
1332 +Index: gdb-6.3.90.20051119/gdb/tui/tui-source.c
1333 +===================================================================
1334 +--- gdb-6.3.90.20051119.orig/gdb/tui/tui-source.c 2005-11-20 11:39:21.000000000 -0500
1335 ++++ gdb-6.3.90.20051119/gdb/tui/tui-source.c 2005-11-20 11:39:22.000000000 -0500
1336 +@@ -330,7 +330,7 @@ tui_vertical_source_scroll (enum tui_scr
1337 + struct symtab_and_line cursal = get_current_source_symtab_and_line ();
1338 +
1339 + if (cursal.symtab == (struct symtab *) NULL)
1340 +- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
1341 ++ s = find_pc_symtab (get_frame_pc (get_selected_frame (NULL)));
1342 + else
1343 + s = cursal.symtab;
1344 +
1345 +Index: gdb-6.3.90.20051119/gdb/tui/tui-winsource.c
1346 +===================================================================
1347 +--- gdb-6.3.90.20051119.orig/gdb/tui/tui-winsource.c 2005-11-20 11:39:21.000000000 -0500
1348 ++++ gdb-6.3.90.20051119/gdb/tui/tui-winsource.c 2005-11-20 11:39:22.000000000 -0500
1349 +@@ -314,7 +314,7 @@ tui_horizontal_source_scroll (struct tui
1350 + struct symtab_and_line cursal = get_current_source_symtab_and_line ();
1351 +
1352 + if (cursal.symtab == (struct symtab *) NULL)
1353 +- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
1354 ++ s = find_pc_symtab (get_frame_pc (get_selected_frame (NULL)));
1355 + else
1356 + s = cursal.symtab;
1357 +
1358 +Index: gdb-6.3.90.20051119/gdb/valops.c
1359 +===================================================================
1360 +--- gdb-6.3.90.20051119.orig/gdb/valops.c 2005-11-20 11:39:21.000000000 -0500
1361 ++++ gdb-6.3.90.20051119/gdb/valops.c 2005-11-20 11:49:37.000000000 -0500
1362 +@@ -544,7 +544,7 @@ value_assign (struct value *toval, struc
1363 + /* Since modifying a register can trash the frame chain, and modifying memory
1364 + can trash the frame cache, we save the old frame and then restore the new
1365 + frame afterwards. */
1366 +- old_frame = get_frame_id (deprecated_selected_frame);
1367 ++ old_frame = get_frame_id (deprecated_safe_get_selected_frame ());
1368 +
1369 + switch (VALUE_LVAL (toval))
1370 + {
1371 +@@ -2605,16 +2605,18 @@ value_of_local (const char *name, int co
1372 + struct symbol *func, *sym;
1373 + struct block *b;
1374 + struct value * ret;
1375 ++ struct frame_info *frame;
1376 +
1377 +- if (deprecated_selected_frame == 0)
1378 ++ if (complain)
1379 ++ frame = get_selected_frame (_("no frame selected"));
1380 ++ else
1381 + {
1382 +- if (complain)
1383 +- error (_("no frame selected"));
1384 +- else
1385 ++ frame = deprecated_safe_get_selected_frame ();
1386 ++ if (frame == 0)
1387 + return 0;
1388 + }
1389 +
1390 +- func = get_frame_function (deprecated_selected_frame);
1391 ++ func = get_frame_function (frame);
1392 + if (!func)
1393 + {
1394 + if (complain)
1395 +@@ -2643,7 +2645,7 @@ value_of_local (const char *name, int co
1396 + return NULL;
1397 + }
1398 +
1399 +- ret = read_var_value (sym, deprecated_selected_frame);
1400 ++ ret = read_var_value (sym, frame);
1401 + if (ret == 0 && complain)
1402 + error (_("`%s' argument unreadable"), name);
1403 + return ret;
1404 +Index: gdb-6.3.90.20051119/gdb/varobj.c
1405 +===================================================================
1406 +--- gdb-6.3.90.20051119.orig/gdb/varobj.c 2005-11-20 11:39:21.000000000 -0500
1407 ++++ gdb-6.3.90.20051119/gdb/varobj.c 2005-11-20 11:39:22.000000000 -0500
1408 +@@ -498,7 +498,7 @@ varobj_create (char *objname,
1409 + if (fi != NULL)
1410 + {
1411 + var->root->frame = get_frame_id (fi);
1412 +- old_fi = deprecated_selected_frame;
1413 ++ old_fi = get_selected_frame (NULL);
1414 + select_frame (fi);
1415 + }
1416 +
1417 +Index: gdb-6.3.90.20051119/gdb/testsuite/gdb.base/default.exp
1418 +===================================================================
1419 +--- gdb-6.3.90.20051119.orig/gdb/testsuite/gdb.base/default.exp 2005-11-20 11:39:21.000000000 -0500
1420 ++++ gdb-6.3.90.20051119/gdb/testsuite/gdb.base/default.exp 2005-11-20 11:39:22.000000000 -0500
1421 +@@ -167,7 +167,7 @@ gdb_test "disable breakpoints" "" "disab
1422 + #test disable display
1423 + gdb_test "disable display" "" "disable display"
1424 + #test disassemble
1425 +-gdb_test "disassemble" "No frame selected." "disassemble"
1426 ++gdb_test "disassemble" "No (frame selected|registers)." "disassemble"
1427 + #test display
1428 + gdb_test "display" "" "display"
1429 + #test do
1430 +@@ -229,9 +229,9 @@ gdb_expect {
1431 + }
1432 +
1433 + #test frame "f" abbreviation
1434 +-gdb_test "f" "No stack." "frame \"f\" abbreviation"
1435 ++gdb_test "f" "No (stack|registers)." "frame \"f\" abbreviation"
1436 + #test frame
1437 +-gdb_test "frame" "No stack." "frame"
1438 ++gdb_test "frame" "No (stack|registers)." "frame"
1439 + #test fg
1440 + gdb_test "fg" "The program is not being run." "fg"
1441 + # FIXME: fg kills the udi connection
1442 +@@ -294,9 +294,9 @@ gdb_test "ignore" "Argument required .a
1443 + #test info address
1444 + gdb_test "info address" "Argument required." "info address"
1445 + #test info all-registers
1446 +-gdb_test "info all-registers" "The program has no registers now." "info all-registers"
1447 ++gdb_test "info all-registers" "(The program has no registers now|No registers)." "info all-registers"
1448 + #test info args
1449 +-gdb_test "info args" "No frame selected." "info args"
1450 ++gdb_test "info args" "No (frame selected|registers)." "info args"
1451 + #test info bogus-gdb-command
1452 + gdb_test "info bogus-gdb-command" "Undefined info command: \"bogus-gdb-command\". Try \"help info\".*" "info bogus-gdb-command"
1453 + #test info breakpoints
1454 +@@ -320,11 +320,11 @@ gdb_test "info frame" "No stack.|No sele
1455 + #test info files
1456 + gdb_test "info files" "" "info files"
1457 + #test info float
1458 +-gdb_test "info float" "The program has no registers now." "info float"
1459 ++gdb_test "info float" "(The program has no registers now|No registers)." "info float"
1460 + #test info functions
1461 + gdb_test "info functions" "All defined functions:" "info functions"
1462 + #test info locals
1463 +-gdb_test "info locals" "No frame selected." "info locals"
1464 ++gdb_test "info locals" "(No frame selected|No registers)." "info locals"
1465 + #test info program
1466 + gdb_test "info program" "The program being debugged is not being run." "info program"
1467 + #test info registers
1468 +@@ -352,7 +352,7 @@ gdb_test "info types" "All defined types
1469 + #test info variables
1470 + gdb_test "info variables" "All defined variables:" "info variables"
1471 + #test info vector
1472 +-gdb_test "info vector" "The program has no registers now." "info vector"
1473 ++gdb_test "info vector" "(The program has no registers now|No registers)." "info vector"
1474 + #test info warranty
1475 + gdb_test "info warranty" "NO WARRANTY(\[^\r\n\]*\[\r\n\])+ *11. *BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY(\[^\r\n\]*\[\r\n\])+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN(\[^\r\n\]*\[\r\n\])+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES(\[^\r\n\]*\[\r\n\])+PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED(\[^\r\n\]*\[\r\n\])+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF(\[^\r\n\]*\[\r\n\])+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS(\[^\r\n\]*\[\r\n\])+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE(\[^\r\n\]*\[\r\n\])+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,(\[^\r\n\]*\[\r\n\])+REPAIR OR CORRECTION.(\[^\r\n\]*\[\r\n\])+ *12. *IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING(\[^\r\n\]*\[\r\n\])+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR(\[^\r\n\]*\[\r\n\])+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,(\[^\r\n\]*\[\r\n\])+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING(\[^\r\n\]*\[\r\n\])+OUT OF THE USE OR INABILITY TO USE THE PROGRAM .INCLUDING BUT NOT LIMITED(\[^\r\n\]*\[\r\n\])+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY(\[^\r\n\]*\[\r\n\])+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER(\[^\r\n\]*\[\r\n\])+PROGRAMS., EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE(\[^\r\n\]*\[\r\n\])+POSSIBILITY OF SUCH DAMAGES.*" "info warranty"
1476 + #test info watchpoints
1477 --- gdb-6.4.orig/debian/patches/thread-db-multiple-libraries.patch
1478 +++ gdb-6.4/debian/patches/thread-db-multiple-libraries.patch
1479 @@ -0,0 +1,593 @@
1480 +Support loading two libthread_db DSOs. In this case, the LinuxThreads
1481 +and NPTL ones.
1482 +
1483 +Index: gdb-6.3.90.20051119/gdb/linux-thread-db.c
1484 +===================================================================
1485 +--- gdb-6.3.90.20051119.orig/gdb/linux-thread-db.c 2005-11-19 22:42:24.000000000 -0500
1486 ++++ gdb-6.3.90.20051119/gdb/linux-thread-db.c 2005-11-19 22:53:02.000000000 -0500
1487 +@@ -82,53 +82,63 @@ static td_thragent_t *thread_agent;
1488 +
1489 + /* Pointers to the libthread_db functions. */
1490 +
1491 +-static td_err_e (*td_init_p) (void);
1492 ++struct thread_db_pointers
1493 ++{
1494 ++ const char *filename;
1495 ++
1496 ++ td_err_e (*td_init_p) (void);
1497 +
1498 +-static td_err_e (*td_ta_new_p) (struct ps_prochandle * ps,
1499 +- td_thragent_t **ta);
1500 +-static td_err_e (*td_ta_map_id2thr_p) (const td_thragent_t *ta, thread_t pt,
1501 +- td_thrhandle_t *__th);
1502 +-static td_err_e (*td_ta_map_lwp2thr_p) (const td_thragent_t *ta,
1503 +- lwpid_t lwpid, td_thrhandle_t *th);
1504 +-static td_err_e (*td_ta_thr_iter_p) (const td_thragent_t *ta,
1505 +- td_thr_iter_f *callback, void *cbdata_p,
1506 +- td_thr_state_e state, int ti_pri,
1507 +- sigset_t *ti_sigmask_p,
1508 +- unsigned int ti_user_flags);
1509 +-static td_err_e (*td_ta_event_addr_p) (const td_thragent_t *ta,
1510 +- td_event_e event, td_notify_t *ptr);
1511 +-static td_err_e (*td_ta_set_event_p) (const td_thragent_t *ta,
1512 +- td_thr_events_t *event);
1513 +-static td_err_e (*td_ta_event_getmsg_p) (const td_thragent_t *ta,
1514 +- td_event_msg_t *msg);
1515 +-
1516 +-static td_err_e (*td_thr_validate_p) (const td_thrhandle_t *th);
1517 +-static td_err_e (*td_thr_get_info_p) (const td_thrhandle_t *th,
1518 +- td_thrinfo_t *infop);
1519 +-static td_err_e (*td_thr_getfpregs_p) (const td_thrhandle_t *th,
1520 +- gdb_prfpregset_t *regset);
1521 +-static td_err_e (*td_thr_getgregs_p) (const td_thrhandle_t *th,
1522 +- prgregset_t gregs);
1523 +-static td_err_e (*td_thr_setfpregs_p) (const td_thrhandle_t *th,
1524 +- const gdb_prfpregset_t *fpregs);
1525 +-static td_err_e (*td_thr_setgregs_p) (const td_thrhandle_t *th,
1526 +- prgregset_t gregs);
1527 +-static td_err_e (*td_thr_event_enable_p) (const td_thrhandle_t *th,
1528 +- int event);
1529 +-
1530 +-static td_err_e (*td_thr_tls_get_addr_p) (const td_thrhandle_t *th,
1531 +- void *map_address,
1532 +- size_t offset, void **address);
1533 ++ td_err_e (*td_ta_new_p) (struct ps_prochandle * ps,
1534 ++ td_thragent_t **ta);
1535 ++ td_err_e (*td_ta_map_id2thr_p) (const td_thragent_t *ta, thread_t pt,
1536 ++ td_thrhandle_t *__th);
1537 ++ td_err_e (*td_ta_map_lwp2thr_p) (const td_thragent_t *ta,
1538 ++ lwpid_t lwpid, td_thrhandle_t *th);
1539 ++
1540 ++ td_err_e (*td_ta_thr_iter_p) (const td_thragent_t *ta,
1541 ++ td_thr_iter_f *callback, void *cbdata_p,
1542 ++ td_thr_state_e state, int ti_pri,
1543 ++ sigset_t *ti_sigmask_p,
1544 ++ unsigned int ti_user_flags);
1545 ++ td_err_e (*td_ta_event_addr_p) (const td_thragent_t *ta,
1546 ++ td_event_e event, td_notify_t *ptr);
1547 ++ td_err_e (*td_ta_set_event_p) (const td_thragent_t *ta,
1548 ++ td_thr_events_t *event);
1549 ++ td_err_e (*td_ta_event_getmsg_p) (const td_thragent_t *ta,
1550 ++ td_event_msg_t *msg);
1551 ++
1552 ++ td_err_e (*td_thr_validate_p) (const td_thrhandle_t *th);
1553 ++ td_err_e (*td_thr_get_info_p) (const td_thrhandle_t *th,
1554 ++ td_thrinfo_t *infop);
1555 ++ td_err_e (*td_thr_getfpregs_p) (const td_thrhandle_t *th,
1556 ++ gdb_prfpregset_t *regset);
1557 ++ td_err_e (*td_thr_getgregs_p) (const td_thrhandle_t *th,
1558 ++ prgregset_t gregs);
1559 ++ td_err_e (*td_thr_setfpregs_p) (const td_thrhandle_t *th,
1560 ++ const gdb_prfpregset_t *fpregs);
1561 ++ td_err_e (*td_thr_setgregs_p) (const td_thrhandle_t *th,
1562 ++ prgregset_t gregs);
1563 ++ td_err_e (*td_thr_event_enable_p) (const td_thrhandle_t *th,
1564 ++ int event);
1565 ++
1566 ++ td_err_e (*td_thr_tls_get_addr_p) (const td_thrhandle_t *th,
1567 ++ void *map_address,
1568 ++ size_t offset, void **address);
1569 ++
1570 ++ struct thread_db_pointers *next;
1571 ++};
1572 +
1573 + /* Location of the thread creation event breakpoint. The code at this
1574 + location in the child process will be called by the pthread library
1575 + whenever a new thread is created. By setting a special breakpoint
1576 + at this location, GDB can detect when a new thread is created. We
1577 + obtain this location via the td_ta_event_addr call. */
1578 +-static CORE_ADDR td_create_bp_addr;
1579 ++CORE_ADDR td_create_bp_addr;
1580 +
1581 + /* Location of the thread death event breakpoint. */
1582 +-static CORE_ADDR td_death_bp_addr;
1583 ++CORE_ADDR td_death_bp_addr;
1584 ++
1585 ++static struct thread_db_pointers *current_pointers, *all_pointers;
1586 +
1587 + /* Prototypes for local functions. */
1588 + static void thread_db_find_new_threads (void);
1589 +@@ -264,7 +274,7 @@ thread_get_info_callback (const td_thrha
1590 + struct thread_info *thread_info;
1591 + ptid_t thread_ptid;
1592 +
1593 +- err = td_thr_get_info_p (thp, &ti);
1594 ++ err = current_pointers->td_thr_get_info_p (thp, &ti);
1595 + if (err != TD_OK)
1596 + error (_("thread_get_info_callback: cannot get thread info: %s"),
1597 + thread_db_err_str (err));
1598 +@@ -318,8 +328,9 @@ thread_db_map_id2thr (struct thread_info
1599 + if (thread_info->private->th_valid)
1600 + return;
1601 +
1602 +- err = td_ta_map_id2thr_p (thread_agent, GET_THREAD (thread_info->ptid),
1603 +- &thread_info->private->th);
1604 ++ err = current_pointers->td_ta_map_id2thr_p (thread_agent,
1605 ++ GET_THREAD (thread_info->ptid),
1606 ++ &thread_info->private->th);
1607 + if (err != TD_OK)
1608 + {
1609 + if (fatal)
1610 +@@ -342,8 +353,8 @@ thread_db_get_info (struct thread_info *
1611 + if (!thread_info->private->th_valid)
1612 + thread_db_map_id2thr (thread_info, 1);
1613 +
1614 +- err =
1615 +- td_thr_get_info_p (&thread_info->private->th, &thread_info->private->ti);
1616 ++ err = current_pointers->td_thr_get_info_p (&thread_info->private->th,
1617 ++ &thread_info->private->ti);
1618 + if (err != TD_OK)
1619 + error (_("thread_db_get_info: cannot get thread info: %s"),
1620 + thread_db_err_str (err));
1621 +@@ -367,7 +378,8 @@ thread_from_lwp (ptid_t ptid)
1622 +
1623 + gdb_assert (is_lwp (ptid));
1624 +
1625 +- err = td_ta_map_lwp2thr_p (thread_agent, GET_LWP (ptid), &th);
1626 ++ err = current_pointers->td_ta_map_lwp2thr_p (thread_agent, GET_LWP (ptid),
1627 ++ &th);
1628 + if (err != TD_OK)
1629 + error (_("Cannot find user-level thread for LWP %ld: %s"),
1630 + GET_LWP (ptid), thread_db_err_str (err));
1631 +@@ -414,85 +426,102 @@ verbose_dlsym (void *handle, const char
1632 + return sym;
1633 + }
1634 +
1635 +-static int
1636 +-thread_db_load (void)
1637 ++static struct thread_db_pointers *
1638 ++thread_db_load (const char *name)
1639 + {
1640 ++ struct thread_db_pointers *ptrs;
1641 ++ Dl_info info;
1642 + void *handle;
1643 + td_err_e err;
1644 +
1645 +- handle = dlopen (LIBTHREAD_DB_SO, RTLD_NOW);
1646 ++ ptrs = xcalloc (1, sizeof (struct thread_db_pointers));
1647 ++
1648 ++ handle = dlopen (name, RTLD_NOW);
1649 + if (handle == NULL)
1650 + {
1651 +- fprintf_filtered (gdb_stderr, "\n\ndlopen failed on '%s' - %s\n",
1652 +- LIBTHREAD_DB_SO, dlerror ());
1653 +- fprintf_filtered (gdb_stderr,
1654 +- "GDB will not be able to debug pthreads.\n\n");
1655 ++ if (all_pointers == NULL)
1656 ++ {
1657 ++ fprintf_filtered (gdb_stderr, "\n\ndlopen failed on '%s' - %s\n",
1658 ++ name, dlerror ());
1659 ++ fprintf_filtered (gdb_stderr,
1660 ++ "GDB will not be able to debug pthreads.\n\n");
1661 ++ }
1662 + return 0;
1663 + }
1664 +
1665 + /* Initialize pointers to the dynamic library functions we will use.
1666 + Essential functions first. */
1667 +
1668 +- td_init_p = verbose_dlsym (handle, "td_init");
1669 +- if (td_init_p == NULL)
1670 ++ ptrs->td_init_p = verbose_dlsym (handle, "td_init");
1671 ++ if (ptrs->td_init_p == NULL)
1672 + return 0;
1673 +
1674 +- td_ta_new_p = verbose_dlsym (handle, "td_ta_new");
1675 +- if (td_ta_new_p == NULL)
1676 ++ ptrs->td_ta_new_p = verbose_dlsym (handle, "td_ta_new");
1677 ++ if (ptrs->td_ta_new_p == NULL)
1678 + return 0;
1679 +
1680 +- td_ta_map_id2thr_p = verbose_dlsym (handle, "td_ta_map_id2thr");
1681 +- if (td_ta_map_id2thr_p == NULL)
1682 ++ ptrs->td_ta_map_id2thr_p = verbose_dlsym (handle, "td_ta_map_id2thr");
1683 ++ if (ptrs->td_ta_map_id2thr_p == NULL)
1684 + return 0;
1685 +
1686 +- td_ta_map_lwp2thr_p = verbose_dlsym (handle, "td_ta_map_lwp2thr");
1687 +- if (td_ta_map_lwp2thr_p == NULL)
1688 ++ ptrs->td_ta_map_lwp2thr_p = verbose_dlsym (handle, "td_ta_map_lwp2thr");
1689 ++ if (ptrs->td_ta_map_lwp2thr_p == NULL)
1690 + return 0;
1691 +
1692 +- td_ta_thr_iter_p = verbose_dlsym (handle, "td_ta_thr_iter");
1693 +- if (td_ta_thr_iter_p == NULL)
1694 ++ ptrs->td_ta_thr_iter_p = verbose_dlsym (handle, "td_ta_thr_iter");
1695 ++ if (ptrs->td_ta_thr_iter_p == NULL)
1696 + return 0;
1697 +
1698 +- td_thr_validate_p = verbose_dlsym (handle, "td_thr_validate");
1699 +- if (td_thr_validate_p == NULL)
1700 ++ ptrs->td_thr_validate_p = verbose_dlsym (handle, "td_thr_validate");
1701 ++ if (ptrs->td_thr_validate_p == NULL)
1702 + return 0;
1703 +
1704 +- td_thr_get_info_p = verbose_dlsym (handle, "td_thr_get_info");
1705 +- if (td_thr_get_info_p == NULL)
1706 ++ ptrs->td_thr_get_info_p = verbose_dlsym (handle, "td_thr_get_info");
1707 ++ if (ptrs->td_thr_get_info_p == NULL)
1708 + return 0;
1709 +
1710 +- td_thr_getfpregs_p = verbose_dlsym (handle, "td_thr_getfpregs");
1711 +- if (td_thr_getfpregs_p == NULL)
1712 ++ ptrs->td_thr_getfpregs_p = verbose_dlsym (handle, "td_thr_getfpregs");
1713 ++ if (ptrs->td_thr_getfpregs_p == NULL)
1714 + return 0;
1715 +
1716 +- td_thr_getgregs_p = verbose_dlsym (handle, "td_thr_getgregs");
1717 +- if (td_thr_getgregs_p == NULL)
1718 ++ ptrs->td_thr_getgregs_p = verbose_dlsym (handle, "td_thr_getgregs");
1719 ++ if (ptrs->td_thr_getgregs_p == NULL)
1720 + return 0;
1721 +
1722 +- td_thr_setfpregs_p = verbose_dlsym (handle, "td_thr_setfpregs");
1723 +- if (td_thr_setfpregs_p == NULL)
1724 ++ ptrs->td_thr_setfpregs_p = verbose_dlsym (handle, "td_thr_setfpregs");
1725 ++ if (ptrs->td_thr_setfpregs_p == NULL)
1726 + return 0;
1727 +
1728 +- td_thr_setgregs_p = verbose_dlsym (handle, "td_thr_setgregs");
1729 +- if (td_thr_setgregs_p == NULL)
1730 ++ ptrs->td_thr_setgregs_p = verbose_dlsym (handle, "td_thr_setgregs");
1731 ++ if (ptrs->td_thr_setgregs_p == NULL)
1732 + return 0;
1733 +
1734 + /* Initialize the library. */
1735 +- err = td_init_p ();
1736 ++ err = ptrs->td_init_p ();
1737 + if (err != TD_OK)
1738 + {
1739 + warning (_("Cannot initialize libthread_db: %s"), thread_db_err_str (err));
1740 ++ xfree (ptrs);
1741 + return 0;
1742 + }
1743 +
1744 + /* These are not essential. */
1745 +- td_ta_event_addr_p = dlsym (handle, "td_ta_event_addr");
1746 +- td_ta_set_event_p = dlsym (handle, "td_ta_set_event");
1747 +- td_ta_event_getmsg_p = dlsym (handle, "td_ta_event_getmsg");
1748 +- td_thr_event_enable_p = dlsym (handle, "td_thr_event_enable");
1749 +- td_thr_tls_get_addr_p = dlsym (handle, "td_thr_tls_get_addr");
1750 ++ ptrs->td_ta_event_addr_p = dlsym (handle, "td_ta_event_addr");
1751 ++ ptrs->td_ta_set_event_p = dlsym (handle, "td_ta_set_event");
1752 ++ ptrs->td_ta_event_getmsg_p = dlsym (handle, "td_ta_event_getmsg");
1753 ++ ptrs->td_thr_event_enable_p = dlsym (handle, "td_thr_event_enable");
1754 ++ ptrs->td_thr_tls_get_addr_p = dlsym (handle, "td_thr_tls_get_addr");
1755 ++
1756 ++ if (dladdr (ptrs->td_ta_new_p, &info) != 0)
1757 ++ ptrs->filename = info.dli_fname;
1758 ++
1759 ++ /* Try dlinfo? */
1760 ++
1761 ++ if (ptrs->filename == NULL)
1762 ++ /* Paranoid - don't let a NULL path slip through. */
1763 ++ ptrs->filename = name;
1764 +
1765 +- return 1;
1766 ++ return ptrs;
1767 + }
1768 +
1769 + static td_err_e
1770 +@@ -502,7 +531,7 @@ enable_thread_event (td_thragent_t *thre
1771 + td_err_e err;
1772 +
1773 + /* Get the breakpoint address for thread EVENT. */
1774 +- err = td_ta_event_addr_p (thread_agent, event, &notify);
1775 ++ err = current_pointers->td_ta_event_addr_p (thread_agent, event, &notify);
1776 + if (err != TD_OK)
1777 + return err;
1778 +
1779 +@@ -533,8 +562,10 @@ enable_thread_event_reporting (void)
1780 +
1781 + /* We cannot use the thread event reporting facility if these
1782 + functions aren't available. */
1783 +- if (td_ta_event_addr_p == NULL || td_ta_set_event_p == NULL
1784 +- || td_ta_event_getmsg_p == NULL || td_thr_event_enable_p == NULL)
1785 ++ if (current_pointers->td_ta_event_addr_p == NULL
1786 ++ || current_pointers->td_ta_set_event_p == NULL
1787 ++ || current_pointers->td_ta_event_getmsg_p == NULL
1788 ++ || current_pointers->td_thr_event_enable_p == NULL)
1789 + return;
1790 +
1791 + /* Set the process wide mask saying which events we're interested in. */
1792 +@@ -551,7 +582,7 @@ enable_thread_event_reporting (void)
1793 + #endif
1794 + td_event_addset (&events, TD_DEATH);
1795 +
1796 +- err = td_ta_set_event_p (thread_agent, &events);
1797 ++ err = current_pointers->td_ta_set_event_p (thread_agent, &events);
1798 + if (err != TD_OK)
1799 + {
1800 + warning (_("Unable to set global thread event mask: %s"),
1801 +@@ -591,7 +622,7 @@ disable_thread_event_reporting (void)
1802 + /* Set the process wide mask saying we aren't interested in any
1803 + events anymore. */
1804 + td_event_emptyset (&events);
1805 +- td_ta_set_event_p (thread_agent, &events);
1806 ++ current_pointers->td_ta_set_event_p (thread_agent, &events);
1807 +
1808 + /* Delete thread event breakpoints, if any. */
1809 + remove_thread_event_breakpoints ();
1810 +@@ -634,7 +665,6 @@ check_thread_signals (void)
1811 + static void
1812 + check_for_thread_db (void)
1813 + {
1814 +- td_err_e err;
1815 + static int already_loaded;
1816 +
1817 + /* First time through, report that libthread_db was successfuly
1818 +@@ -643,19 +673,8 @@ check_for_thread_db (void)
1819 +
1820 + if (!already_loaded)
1821 + {
1822 +- Dl_info info;
1823 +- const char *library = NULL;
1824 +- if (dladdr ((*td_ta_new_p), &info) != 0)
1825 +- library = info.dli_fname;
1826 +-
1827 +- /* Try dlinfo? */
1828 +-
1829 +- if (library == NULL)
1830 +- /* Paranoid - don't let a NULL path slip through. */
1831 +- library = LIBTHREAD_DB_SO;
1832 +-
1833 + printf_unfiltered (_("Using host libthread_db library \"%s\".\n"),
1834 +- library);
1835 ++ all_pointers->filename);
1836 + already_loaded = 1;
1837 + }
1838 +
1839 +@@ -673,28 +692,34 @@ check_for_thread_db (void)
1840 + proc_handle.pid = GET_PID (inferior_ptid);
1841 +
1842 + /* Now attempt to open a connection to the thread library. */
1843 +- err = td_ta_new_p (&proc_handle, &thread_agent);
1844 +- switch (err)
1845 ++ for (current_pointers = all_pointers;
1846 ++ current_pointers != NULL;
1847 ++ current_pointers = current_pointers->next)
1848 + {
1849 +- case TD_NOLIBTHREAD:
1850 +- /* No thread library was detected. */
1851 +- break;
1852 +-
1853 +- case TD_OK:
1854 +- printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n"));
1855 ++ td_err_e err;
1856 ++ err = current_pointers->td_ta_new_p (&proc_handle, &thread_agent);
1857 ++ switch (err)
1858 ++ {
1859 ++ case TD_NOLIBTHREAD:
1860 ++ /* No thread library was detected. */
1861 ++ break;
1862 +
1863 +- /* The thread library was detected. Activate the thread_db target. */
1864 +- push_target (&thread_db_ops);
1865 +- using_thread_db = 1;
1866 ++ case TD_OK:
1867 ++ printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n"));
1868 +
1869 +- enable_thread_event_reporting ();
1870 +- thread_db_find_new_threads ();
1871 +- break;
1872 ++ /* The thread library was detected. Activate the thread_db target. */
1873 ++ push_target (&thread_db_ops);
1874 ++ using_thread_db = 1;
1875 ++
1876 ++ enable_thread_event_reporting ();
1877 ++ thread_db_find_new_threads ();
1878 ++ return;
1879 +
1880 +- default:
1881 +- warning (_("Cannot initialize thread debugging library: %s"),
1882 +- thread_db_err_str (err));
1883 +- break;
1884 ++ default:
1885 ++ warning (_("Cannot initialize thread debugging library: %s"),
1886 ++ thread_db_err_str (err));
1887 ++ break;
1888 ++ }
1889 + }
1890 + }
1891 +
1892 +@@ -765,7 +790,7 @@ attach_thread (ptid_t ptid, const td_thr
1893 + #endif
1894 +
1895 + /* Enable thread event reporting for this thread. */
1896 +- err = td_thr_event_enable_p (th_p, 1);
1897 ++ err = current_pointers->td_thr_event_enable_p (th_p, 1);
1898 + if (err != TD_OK)
1899 + error (_("Cannot enable thread event reporting for %s: %s"),
1900 + target_pid_to_str (ptid), thread_db_err_str (err));
1901 +@@ -891,7 +916,7 @@ check_event (ptid_t ptid)
1902 +
1903 + do
1904 + {
1905 +- err = td_ta_event_getmsg_p (thread_agent, &msg);
1906 ++ err = current_pointers->td_ta_event_getmsg_p (thread_agent, &msg);
1907 + if (err != TD_OK)
1908 + {
1909 + if (err == TD_NOMSG)
1910 +@@ -901,7 +926,7 @@ check_event (ptid_t ptid)
1911 + thread_db_err_str (err));
1912 + }
1913 +
1914 +- err = td_thr_get_info_p (msg.th_p, &ti);
1915 ++ err = current_pointers->td_thr_get_info_p (msg.th_p, &ti);
1916 + if (err != TD_OK)
1917 + error (_("Cannot get thread info: %s"), thread_db_err_str (err));
1918 +
1919 +@@ -1014,12 +1039,14 @@ thread_db_fetch_registers (int regno)
1920 + thread_info = find_thread_pid (inferior_ptid);
1921 + thread_db_map_id2thr (thread_info, 1);
1922 +
1923 +- err = td_thr_getgregs_p (&thread_info->private->th, gregset);
1924 ++ err = current_pointers->td_thr_getgregs_p (&thread_info->private->th,
1925 ++ gregset);
1926 + if (err != TD_OK)
1927 + error (_("Cannot fetch general-purpose registers for thread %ld: %s"),
1928 + (long) GET_THREAD (inferior_ptid), thread_db_err_str (err));
1929 +
1930 +- err = td_thr_getfpregs_p (&thread_info->private->th, &fpregset);
1931 ++ err = current_pointers->td_thr_getfpregs_p (&thread_info->private->th,
1932 ++ &fpregset);
1933 + if (err != TD_OK)
1934 + error (_("Cannot get floating-point registers for thread %ld: %s"),
1935 + (long) GET_THREAD (inferior_ptid), thread_db_err_str (err));
1936 +@@ -1061,11 +1088,13 @@ thread_db_store_registers (int regno)
1937 + fill_gregset ((gdb_gregset_t *) gregset, -1);
1938 + fill_fpregset (&fpregset, -1);
1939 +
1940 +- err = td_thr_setgregs_p (&thread_info->private->th, gregset);
1941 ++ err = current_pointers->td_thr_setgregs_p (&thread_info->private->th,
1942 ++ gregset);
1943 + if (err != TD_OK)
1944 + error (_("Cannot store general-purpose registers for thread %ld: %s"),
1945 + (long) GET_THREAD (inferior_ptid), thread_db_err_str (err));
1946 +- err = td_thr_setfpregs_p (&thread_info->private->th, &fpregset);
1947 ++ err = current_pointers->td_thr_setfpregs_p (&thread_info->private->th,
1948 ++ &fpregset);
1949 + if (err != TD_OK)
1950 + error (_("Cannot store floating-point registers for thread %ld: %s"),
1951 + (long) GET_THREAD (inferior_ptid), thread_db_err_str (err));
1952 +@@ -1135,15 +1164,14 @@ thread_db_thread_alive (ptid_t ptid)
1953 + if (!thread_info->private->th_valid)
1954 + return 0;
1955 +
1956 +- err = td_thr_validate_p (&thread_info->private->th);
1957 ++ err = current_pointers->td_thr_validate_p (&thread_info->private->th);
1958 + if (err != TD_OK)
1959 + return 0;
1960 +
1961 + if (!thread_info->private->ti_valid)
1962 + {
1963 +- err =
1964 +- td_thr_get_info_p (&thread_info->private->th,
1965 +- &thread_info->private->ti);
1966 ++ err = current_pointers->td_thr_get_info_p
1967 ++ (&thread_info->private->th, &thread_info->private->ti);
1968 + if (err != TD_OK)
1969 + return 0;
1970 + thread_info->private->ti_valid = 1;
1971 +@@ -1169,7 +1197,7 @@ find_new_threads_callback (const td_thrh
1972 + td_err_e err;
1973 + ptid_t ptid;
1974 +
1975 +- err = td_thr_get_info_p (th_p, &ti);
1976 ++ err = current_pointers->td_thr_get_info_p (th_p, &ti);
1977 + if (err != TD_OK)
1978 + error (_("find_new_threads_callback: cannot get thread info: %s"),
1979 + thread_db_err_str (err));
1980 +@@ -1191,9 +1219,10 @@ thread_db_find_new_threads (void)
1981 + td_err_e err;
1982 +
1983 + /* Iterate over all user-space threads to discover new threads. */
1984 +- err = td_ta_thr_iter_p (thread_agent, find_new_threads_callback, NULL,
1985 +- TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY,
1986 +- TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS);
1987 ++ err = current_pointers->td_ta_thr_iter_p
1988 ++ (thread_agent, find_new_threads_callback, NULL,
1989 ++ TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY,
1990 ++ TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS);
1991 + if (err != TD_OK)
1992 + error (_("Cannot find new threads: %s"), thread_db_err_str (err));
1993 + }
1994 +@@ -1255,7 +1284,7 @@ thread_db_get_thread_local_address (ptid
1995 + struct thread_info *thread_info;
1996 +
1997 + /* glibc doesn't provide the needed interface. */
1998 +- if (!td_thr_tls_get_addr_p)
1999 ++ if (!current_pointers->td_thr_tls_get_addr_p)
2000 + throw_error (TLS_NO_LIBRARY_SUPPORT_ERROR,
2001 + _("No TLS library support"));
2002 +
2003 +@@ -1267,8 +1296,8 @@ thread_db_get_thread_local_address (ptid
2004 + thread_db_map_id2thr (thread_info, 1);
2005 +
2006 + /* Finally, get the address of the variable. */
2007 +- err = td_thr_tls_get_addr_p (&thread_info->private->th, (void *) lm,
2008 +- offset, &address);
2009 ++ err = current_pointers->td_thr_tls_get_addr_p
2010 ++ (&thread_info->private->th, (void *) lm, offset, &address);
2011 +
2012 + #ifdef THREAD_DB_HAS_TD_NOTALLOC
2013 + /* The memory hasn't been allocated, yet. */
2014 +@@ -1330,17 +1359,49 @@ init_thread_db_ops (void)
2015 + void
2016 + _initialize_thread_db (void)
2017 + {
2018 ++ struct thread_db_pointers *ptrs;
2019 ++ const char *p;
2020 ++
2021 + /* Only initialize the module if we can load libthread_db. */
2022 +- if (thread_db_load ())
2023 +- {
2024 +- init_thread_db_ops ();
2025 +- add_target (&thread_db_ops);
2026 ++ ptrs = thread_db_load (LIBTHREAD_DB_SO);
2027 ++ if (ptrs == NULL)
2028 ++ return;
2029 ++
2030 ++ all_pointers = ptrs;
2031 +
2032 +- /* Add ourselves to objfile event chain. */
2033 +- target_new_objfile_chain = deprecated_target_new_objfile_hook;
2034 +- deprecated_target_new_objfile_hook = thread_db_new_objfile;
2035 ++ /* Some GNU/Linux systems have more than one binary-compatible copy
2036 ++ of libthread_db. If we can find a second one, load that too.
2037 ++ The inferior may force the use of a different threading package
2038 ++ than we expect. Our guess for the location is somewhat hokey:
2039 ++ strip out anything between /lib (or /lib64) and LIBTHREAD_DB_SO.
2040 ++ If we loaded the NPTL libthread_db by default, this may find us
2041 ++ the LinuxThreads copy. */
2042 ++ p = strrchr (ptrs->filename, '/');
2043 ++ while (p != NULL && p > ptrs->filename)
2044 ++ {
2045 ++ const char *component;
2046 +
2047 +- /* Register ourselves for the new inferior observer. */
2048 +- observer_attach_inferior_created (check_for_thread_db_observer);
2049 ++ component = memrchr (ptrs->filename, '/', p - ptrs->filename);
2050 ++ if (component != NULL && strncmp (component, "/lib", 4) == 0)
2051 ++ {
2052 ++ char *new_name = xmalloc (p - ptrs->filename + 2
2053 ++ + strlen (LIBTHREAD_DB_SO));
2054 ++ memcpy (new_name, ptrs->filename, p - ptrs->filename + 1);
2055 ++ strcpy (new_name + (p - ptrs->filename) + 1, LIBTHREAD_DB_SO);
2056 ++ ptrs->next = thread_db_load (new_name);
2057 ++ xfree (new_name);
2058 ++ break;
2059 ++ }
2060 ++ p = component;
2061 + }
2062 ++
2063 ++ init_thread_db_ops ();
2064 ++ add_target (&thread_db_ops);
2065 ++
2066 ++ /* Add ourselves to objfile event chain. */
2067 ++ target_new_objfile_chain = deprecated_target_new_objfile_hook;
2068 ++ deprecated_target_new_objfile_hook = thread_db_new_objfile;
2069 ++
2070 ++ /* Register ourselves for the new inferior observer. */
2071 ++ observer_attach_inferior_created (check_for_thread_db_observer);
2072 + }
2073 --- gdb-6.4.orig/debian/patches/gdb-nptl-cancellation.patch
2074 +++ gdb-6.4/debian/patches/gdb-nptl-cancellation.patch
2075 @@ -0,0 +1,31 @@
2076 +2005-12-07 Daniel Jacobowitz <dan@codesourcery.com>
2077 +
2078 + * linux-nat.c (lin_thread_get_thread_signals): Default to __SIGRTMIN
2079 + and __SIGRTMIN + 1.
2080 +
2081 +Index: gdb-6.4/gdb/linux-nat.c
2082 +===================================================================
2083 +--- gdb-6.4.orig/gdb/linux-nat.c 2005-11-03 14:51:40.000000000 -0500
2084 ++++ gdb-6.4/gdb/linux-nat.c 2005-12-07 21:44:12.000000000 -0500
2085 +@@ -3284,12 +3284,18 @@ lin_thread_get_thread_signals (sigset_t
2086 + sigemptyset (set);
2087 +
2088 + restart = get_signo ("__pthread_sig_restart");
2089 ++ cancel = get_signo ("__pthread_sig_cancel");
2090 ++
2091 ++ /* LinuxThreads normally uses the first two RT signals, but in some legacy
2092 ++ cases may use SIGUSR1/SIGUSR2. NPTL always uses RT signals, but does
2093 ++ not provide any way for the debugger to query the signal numbers -
2094 ++ fortunately they don't change! */
2095 ++
2096 + if (restart == 0)
2097 +- return;
2098 ++ restart = __SIGRTMIN;
2099 +
2100 +- cancel = get_signo ("__pthread_sig_cancel");
2101 + if (cancel == 0)
2102 +- return;
2103 ++ cancel = __SIGRTMIN + 1;
2104 +
2105 + sigaddset (set, restart);
2106 + sigaddset (set, cancel);
2107 --- gdb-6.4.orig/debian/patches/pending-breakpoints-and-sigttou.patch
2108 +++ gdb-6.4/debian/patches/pending-breakpoints-and-sigttou.patch
2109 @@ -0,0 +1,21 @@
2110 +Don't generate SIGTTOU when resolving a pending breakpoint.
2111 +
2112 +Index: gdb-6.3.90.20051119/gdb/infrun.c
2113 +===================================================================
2114 +--- gdb-6.3.90.20051119.orig/gdb/infrun.c 2005-11-19 22:56:43.000000000 -0500
2115 ++++ gdb-6.3.90.20051119/gdb/infrun.c 2005-11-20 00:19:55.000000000 -0500
2116 +@@ -2171,12 +2171,13 @@ process_event_stop_test:
2117 + #else
2118 + solib_add (NULL, 0, &current_target, auto_solib_add);
2119 + #endif
2120 +- target_terminal_inferior ();
2121 +
2122 + /* Try to reenable shared library breakpoints, additional
2123 + code segments in shared libraries might be mapped in now. */
2124 + re_enable_breakpoints_in_shlibs ();
2125 +
2126 ++ target_terminal_inferior ();
2127 ++
2128 + /* If requested, stop when the dynamic linker notifies
2129 + gdb of events. This allows the user to get control
2130 + and place breakpoints in initializer routines for
2131 --- gdb-6.4.orig/debian/patches/cp-pass-by-reference.patch
2132 +++ gdb-6.4/debian/patches/cp-pass-by-reference.patch
2133 @@ -0,0 +1,426 @@
2134 +This patch needs to be submitted for the FSF. Also, there may be testcases
2135 +already in the GDB testsuite (currently disabled) that it would probably fix.
2136 +
2137 +2005-11-20
2138 +
2139 +Patch updated, but still not submitted.
2140 +
2141 +Index: gdb-6.3.90.20051119/gdb/infcall.c
2142 +===================================================================
2143 +--- gdb-6.3.90.20051119.orig/gdb/infcall.c 2005-11-20 11:39:20.000000000 -0500
2144 ++++ gdb-6.3.90.20051119/gdb/infcall.c 2005-11-20 12:42:22.000000000 -0500
2145 +@@ -36,6 +36,7 @@
2146 + #include "gdb_string.h"
2147 + #include "infcall.h"
2148 + #include "dummy-frame.h"
2149 ++#include "cp-abi.h"
2150 +
2151 + /* NOTE: cagney/2003-04-16: What's the future of this code?
2152 +
2153 +@@ -314,8 +315,8 @@ call_function_by_hand (struct value *fun
2154 + {
2155 + CORE_ADDR sp;
2156 + CORE_ADDR dummy_addr;
2157 +- struct type *values_type;
2158 +- unsigned char struct_return;
2159 ++ struct type *values_type, *target_values_type;
2160 ++ unsigned char struct_return = 0, cp_struct_return = 0;
2161 + CORE_ADDR struct_addr = 0;
2162 + struct regcache *retbuf;
2163 + struct cleanup *retbuf_cleanup;
2164 +@@ -329,6 +330,7 @@ call_function_by_hand (struct value *fun
2165 + struct regcache *caller_regcache;
2166 + struct cleanup *caller_regcache_cleanup;
2167 + struct frame_id dummy_id;
2168 ++ struct cleanup *args_cleanup;
2169 +
2170 + if (!target_has_execution)
2171 + noprocess ();
2172 +@@ -430,10 +432,31 @@ call_function_by_hand (struct value *fun
2173 + using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
2174 + }
2175 +
2176 +- /* Are we returning a value using a structure return or a normal
2177 +- value return? */
2178 ++ /* Are we returning a value using a structure return (passing a
2179 ++ hidden argument pointing to storage) or a normal value return?
2180 ++ There are two cases: C++ ABI mandated structure return and
2181 ++ target ABI structure return. The variable STRUCT_RETURN only
2182 ++ describes the latter. The C++ version is handled by passing
2183 ++ the return location as the first parameter to the function,
2184 ++ even preceding "this". This is different from the target
2185 ++ ABI version, which is target-specific; for instance, on ia64
2186 ++ the first argument is passed in out0 but the hidden structure
2187 ++ return pointer would normally be passed in r8. */
2188 +
2189 +- struct_return = using_struct_return (values_type, using_gcc);
2190 ++ if (current_language->la_language == language_cplus
2191 ++ && cp_pass_by_reference (values_type))
2192 ++ {
2193 ++ cp_struct_return = 1;
2194 ++
2195 ++ /* Tell the target specific argument pushing routine not to
2196 ++ expect a value. */
2197 ++ target_values_type = builtin_type_void;
2198 ++ }
2199 ++ else
2200 ++ {
2201 ++ struct_return = using_struct_return (values_type, using_gcc);
2202 ++ target_values_type = values_type;
2203 ++ }
2204 +
2205 + /* Determine the location of the breakpoint (and possibly other
2206 + stuff) that the called function will return to. The SPARC, for a
2207 +@@ -452,7 +475,7 @@ call_function_by_hand (struct value *fun
2208 + if (INNER_THAN (1, 2))
2209 + {
2210 + sp = push_dummy_code (current_gdbarch, sp, funaddr,
2211 +- using_gcc, args, nargs, values_type,
2212 ++ using_gcc, args, nargs, target_values_type,
2213 + &real_pc, &bp_addr);
2214 + dummy_addr = sp;
2215 + }
2216 +@@ -460,7 +483,7 @@ call_function_by_hand (struct value *fun
2217 + {
2218 + dummy_addr = sp;
2219 + sp = push_dummy_code (current_gdbarch, sp, funaddr,
2220 +- using_gcc, args, nargs, values_type,
2221 ++ using_gcc, args, nargs, target_values_type,
2222 + &real_pc, &bp_addr);
2223 + }
2224 + break;
2225 +@@ -527,9 +550,15 @@ call_function_by_hand (struct value *fun
2226 + param_type = TYPE_FIELD_TYPE (ftype, i);
2227 + else
2228 + param_type = NULL;
2229 +-
2230 ++
2231 + args[i] = value_arg_coerce (args[i], param_type, prototyped);
2232 +
2233 ++ /* FIXME: Is current_language the right language? */
2234 ++ if (current_language->la_language == language_cplus
2235 ++ && param_type != NULL
2236 ++ && cp_pass_by_reference (param_type))
2237 ++ args[i] = value_addr (args[i]);
2238 ++
2239 + /* elz: this code is to handle the case in which the function
2240 + to be called has a pointer to function as parameter and the
2241 + corresponding actual argument is the address of a function
2242 +@@ -628,7 +657,7 @@ You must use a pointer to function type
2243 + stack, if necessary. Make certain that the value is correctly
2244 + aligned. */
2245 +
2246 +- if (struct_return)
2247 ++ if (struct_return || cp_struct_return)
2248 + {
2249 + int len = TYPE_LENGTH (values_type);
2250 + if (INNER_THAN (1, 2))
2251 +@@ -653,6 +682,22 @@ You must use a pointer to function type
2252 + }
2253 + }
2254 +
2255 ++ if (cp_struct_return)
2256 ++ {
2257 ++ struct value **new_args;
2258 ++
2259 ++ /* Add the new argument to the front of the argument list. */
2260 ++ new_args = xmalloc (sizeof (struct value *) * (nargs + 1));
2261 ++ new_args[0] = value_from_pointer (lookup_pointer_type (values_type),
2262 ++ struct_addr);
2263 ++ memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs);
2264 ++ args = new_args;
2265 ++ nargs++;
2266 ++ args_cleanup = make_cleanup (xfree, args);
2267 ++ }
2268 ++ else
2269 ++ args_cleanup = make_cleanup (null_cleanup, NULL);
2270 ++
2271 + /* Create the dummy stack frame. Pass in the call dummy address as,
2272 + presumably, the ABI code knows where, in the call dummy, the
2273 + return address should be pointed. */
2274 +@@ -660,6 +705,8 @@ You must use a pointer to function type
2275 + bp_addr, nargs, args, sp, struct_return,
2276 + struct_addr);
2277 +
2278 ++ do_cleanups (args_cleanup);
2279 ++
2280 + /* Set up a frame ID for the dummy frame so we can pass it to
2281 + set_momentary_breakpoint. We need to give the breakpoint a frame
2282 + ID so that the breakpoint code can correctly re-identify the
2283 +@@ -851,7 +898,9 @@ the function call)."), name);
2284 + {
2285 + struct value *retval = NULL;
2286 +
2287 +- if (TYPE_CODE (values_type) == TYPE_CODE_VOID)
2288 ++ if (cp_struct_return)
2289 ++ retval = value_at (values_type, struct_addr);
2290 ++ else if (TYPE_CODE (target_values_type) == TYPE_CODE_VOID)
2291 + {
2292 + /* If the function returns void, don't bother fetching the
2293 + return value. */
2294 +@@ -861,7 +910,7 @@ the function call)."), name);
2295 + {
2296 + struct gdbarch *arch = current_gdbarch;
2297 +
2298 +- switch (gdbarch_return_value (arch, values_type, NULL, NULL, NULL))
2299 ++ switch (gdbarch_return_value (arch, target_values_type, NULL, NULL, NULL))
2300 + {
2301 + case RETURN_VALUE_REGISTER_CONVENTION:
2302 + case RETURN_VALUE_ABI_RETURNS_ADDRESS:
2303 +Index: gdb-6.3.90.20051119/gdb/cp-abi.h
2304 +===================================================================
2305 +--- gdb-6.3.90.20051119.orig/gdb/cp-abi.h 2005-11-20 11:39:20.000000000 -0500
2306 ++++ gdb-6.3.90.20051119/gdb/cp-abi.h 2005-11-20 11:50:11.000000000 -0500
2307 +@@ -147,6 +147,10 @@ extern struct type *value_rtti_type (str
2308 + extern int baseclass_offset (struct type *type, int index,
2309 + const bfd_byte *valaddr, CORE_ADDR address);
2310 +
2311 ++/* Return non-zero if an argument of type TYPE should be passed by reference
2312 ++ instead of value. */
2313 ++extern int cp_pass_by_reference (struct type *type);
2314 ++
2315 + struct cp_abi_ops
2316 + {
2317 + const char *shortname;
2318 +@@ -164,6 +168,7 @@ struct cp_abi_ops
2319 + int *using_enc);
2320 + int (*baseclass_offset) (struct type *type, int index,
2321 + const bfd_byte *valaddr, CORE_ADDR address);
2322 ++ int (*pass_by_reference) (struct type *type);
2323 + };
2324 +
2325 +
2326 +Index: gdb-6.3.90.20051119/gdb/cp-abi.c
2327 +===================================================================
2328 +--- gdb-6.3.90.20051119.orig/gdb/cp-abi.c 2005-11-20 11:39:20.000000000 -0500
2329 ++++ gdb-6.3.90.20051119/gdb/cp-abi.c 2005-11-20 11:50:11.000000000 -0500
2330 +@@ -95,6 +95,14 @@ value_rtti_type (struct value *v, int *f
2331 + return (*current_cp_abi.rtti_type) (v, full, top, using_enc);
2332 + }
2333 +
2334 ++int
2335 ++cp_pass_by_reference (struct type *type)
2336 ++{
2337 ++ if ((current_cp_abi.pass_by_reference) == NULL)
2338 ++ return 0;
2339 ++ return (*current_cp_abi.pass_by_reference) (type);
2340 ++}
2341 ++
2342 + /* Set the current C++ ABI to SHORT_NAME. */
2343 +
2344 + static int
2345 +Index: gdb-6.3.90.20051119/gdb/gnu-v3-abi.c
2346 +===================================================================
2347 +--- gdb-6.3.90.20051119.orig/gdb/gnu-v3-abi.c 2005-11-20 11:39:20.000000000 -0500
2348 ++++ gdb-6.3.90.20051119/gdb/gnu-v3-abi.c 2005-11-20 11:50:11.000000000 -0500
2349 +@@ -416,6 +416,84 @@ gnuv3_baseclass_offset (struct type *typ
2350 + return base_offset;
2351 + }
2352 +
2353 ++/* Return nonzero if a type should be passed by reference.
2354 ++
2355 ++ The rule in the v3 ABI document comes from section 3.1.1. If the
2356 ++ type has a non-trivial copy constructor or destructor, then the
2357 ++ caller must make a copy (by calling the copy constructor if there
2358 ++ is one or perform the copy itself otherwise), pass the address of
2359 ++ the copy, and then destroy the temporary (if necessary).
2360 ++
2361 ++ For return values with non-trivial copy constructors or
2362 ++ destructors, space will be allocated in the caller, and a pointer
2363 ++ will be passed as the first argument (preceding "this").
2364 ++
2365 ++ We don't have a bulletproof mechanism for determining whether a
2366 ++ constructor or destructor is trivial. For GCC and DWARF2 debug
2367 ++ information, we can check the artificial flag.
2368 ++
2369 ++ We don't do anything with the constructors or destructors yet,
2370 ++ but we have to get the argument passing right anyway. */
2371 ++static int
2372 ++gnuv3_pass_by_reference (struct type *type)
2373 ++{
2374 ++ int fieldnum, fieldelem, basenum;
2375 ++
2376 ++ CHECK_TYPEDEF (type);
2377 ++
2378 ++ /* We're only interested in things that can have methods. */
2379 ++ if (TYPE_CODE (type) != TYPE_CODE_STRUCT
2380 ++ && TYPE_CODE (type) != TYPE_CODE_CLASS
2381 ++ && TYPE_CODE (type) != TYPE_CODE_UNION)
2382 ++ return 0;
2383 ++
2384 ++ for (fieldnum = 0; fieldnum < TYPE_NFN_FIELDS (type); fieldnum++)
2385 ++ for (fieldelem = 0; fieldelem < TYPE_FN_FIELDLIST_LENGTH (type, fieldnum);
2386 ++ fieldelem++)
2387 ++ {
2388 ++ struct fn_field *fn = TYPE_FN_FIELDLIST1 (type, fieldnum);
2389 ++ char *name = TYPE_FN_FIELDLIST_NAME (type, fieldnum);
2390 ++ struct type *fieldtype = TYPE_FN_FIELD_TYPE (fn, fieldelem);
2391 ++
2392 ++ /* If this function is marked as artificial, it is compiler-generated,
2393 ++ and we assume it is trivial. */
2394 ++ if (TYPE_FN_FIELD_ARTIFICIAL (fn, fieldelem))
2395 ++ continue;
2396 ++
2397 ++ /* If we've found a destructor, we must pass this by reference. */
2398 ++ if (name[0] == '~')
2399 ++ return 1;
2400 ++
2401 ++ /* If the mangled name of this method doesn't indicate that it
2402 ++ is a constructor, we're not interested.
2403 ++
2404 ++ FIXME drow/2004-05-27: We could do this using the name of
2405 ++ the method and the name of the class instead of dealing
2406 ++ with the mangled name. We don't have a convenient function
2407 ++ to strip off both leading scope qualifiers and trailing
2408 ++ template arguments yet. */
2409 ++ if (!is_constructor_name (TYPE_FN_FIELD_PHYSNAME (fn, fieldelem)))
2410 ++ continue;
2411 ++
2412 ++ /* If this method takes two arguments, and the second argument is
2413 ++ a reference to this class, then it is a copy constructor. */
2414 ++ if (TYPE_NFIELDS (fieldtype) == 2
2415 ++ && TYPE_CODE (TYPE_FIELD_TYPE (fieldtype, 1)) == TYPE_CODE_REF
2416 ++ && check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (fieldtype, 1))) == type)
2417 ++ return 1;
2418 ++ }
2419 ++
2420 ++ /* Even if all the constructors and destructors were artificial, one
2421 ++ of them may have invoked a non-artificial constructor or
2422 ++ destructor in a base class. If any base class needs to be passed
2423 ++ by reference, so does this class. */
2424 ++ for (basenum = 0; basenum < TYPE_N_BASECLASSES (type); basenum++)
2425 ++ if (gnuv3_pass_by_reference (TYPE_BASECLASS (type, basenum)))
2426 ++ return 1;
2427 ++
2428 ++ return 0;
2429 ++}
2430 ++
2431 + static void
2432 + init_gnuv3_ops (void)
2433 + {
2434 +@@ -433,6 +511,7 @@ init_gnuv3_ops (void)
2435 + gnu_v3_abi_ops.rtti_type = gnuv3_rtti_type;
2436 + gnu_v3_abi_ops.virtual_fn_field = gnuv3_virtual_fn_field;
2437 + gnu_v3_abi_ops.baseclass_offset = gnuv3_baseclass_offset;
2438 ++ gnu_v3_abi_ops.pass_by_reference = gnuv3_pass_by_reference;
2439 + }
2440 +
2441 + extern initialize_file_ftype _initialize_gnu_v3_abi; /* -Wmissing-prototypes */
2442 +Index: gdb-6.3.90.20051119/gdb/Makefile.in
2443 +===================================================================
2444 +--- gdb-6.3.90.20051119.orig/gdb/Makefile.in 2005-11-20 11:50:11.000000000 -0500
2445 ++++ gdb-6.3.90.20051119/gdb/Makefile.in 2005-11-20 12:41:06.000000000 -0500
2446 +@@ -2114,7 +2114,7 @@ ia64-tdep.o: ia64-tdep.c $(defs_h) $(inf
2447 + infcall.o: infcall.c $(defs_h) $(breakpoint_h) $(target_h) $(regcache_h) \
2448 + $(inferior_h) $(gdb_assert_h) $(block_h) $(gdbcore_h) $(language_h) \
2449 + $(objfiles_h) $(gdbcmd_h) $(command_h) $(gdb_string_h) $(infcall_h) \
2450 +- $(dummy_frame_h)
2451 ++ $(dummy_frame_h) $(cp_abi_h)
2452 + inf-child.o: inf-child.c $(defs_h) $(regcache_h) $(memattr_h) $(symtab_h) \
2453 + $(target_h) $(inferior_h) $(gdb_string_h)
2454 + infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
2455 +Index: gdb-6.3.90.20051119/gdb/testsuite/gdb.cp/pass-by-ref.exp
2456 +===================================================================
2457 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2458 ++++ gdb-6.3.90.20051119/gdb/testsuite/gdb.cp/pass-by-ref.exp 2005-11-20 12:29:39.000000000 -0500
2459 +@@ -0,0 +1,38 @@
2460 ++# This testcase is part of GDB, the GNU debugger.
2461 ++
2462 ++# Copyright 2004 Free Software Foundation, Inc.
2463 ++
2464 ++# This program is free software; you can redistribute it and/or modify
2465 ++# it under the terms of the GNU General Public License as published by
2466 ++# the Free Software Foundation; either version 2 of the License, or
2467 ++# (at your option) any later version.
2468 ++#
2469 ++# This program is distributed in the hope that it will be useful,
2470 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
2471 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2472 ++# GNU General Public License for more details.
2473 ++#
2474 ++# You should have received a copy of the GNU General Public License
2475 ++# along with this program; if not, write to the Free Software
2476 ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2477 ++
2478 ++# Check that GDB can call C++ functions whose parameters have
2479 ++# object type, but are passed by reference.
2480 ++
2481 ++set testfile "pass-by-ref"
2482 ++set srcfile ${testfile}.cc
2483 ++set binfile ${objdir}/${subdir}/${testfile}
2484 ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
2485 ++ return -1
2486 ++}
2487 ++
2488 ++gdb_exit
2489 ++gdb_start
2490 ++gdb_reinitialize_dir $srcdir/$subdir
2491 ++gdb_load ${binfile}
2492 ++
2493 ++if ![runto_main] then {
2494 ++ return -1
2495 ++}
2496 ++
2497 ++gdb_test "print foo (global_obj)" " = 3" "call function"
2498 +Index: gdb-6.3.90.20051119/gdb/testsuite/gdb.cp/pass-by-ref.cc
2499 +===================================================================
2500 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2501 ++++ gdb-6.3.90.20051119/gdb/testsuite/gdb.cp/pass-by-ref.cc 2005-11-20 11:50:11.000000000 -0500
2502 +@@ -0,0 +1,57 @@
2503 ++/* This testcase is part of GDB, the GNU debugger.
2504 ++
2505 ++ Copyright 2004 Free Software Foundation, Inc.
2506 ++
2507 ++ This program is free software; you can redistribute it and/or modify
2508 ++ it under the terms of the GNU General Public License as published by
2509 ++ the Free Software Foundation; either version 2 of the License, or
2510 ++ (at your option) any later version.
2511 ++
2512 ++ This program is distributed in the hope that it will be useful,
2513 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
2514 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2515 ++ GNU General Public License for more details.
2516 ++
2517 ++ You should have received a copy of the GNU General Public License
2518 ++ along with this program; if not, write to the Free Software
2519 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
2520 ++ USA. */
2521 ++
2522 ++class Obj {
2523 ++public:
2524 ++ Obj ();
2525 ++ Obj (const Obj &);
2526 ++ ~Obj ();
2527 ++ int var[2];
2528 ++};
2529 ++
2530 ++int foo (Obj arg)
2531 ++{
2532 ++ return arg.var[0] + arg.var[1];
2533 ++}
2534 ++
2535 ++Obj::Obj ()
2536 ++{
2537 ++ var[0] = 1;
2538 ++ var[1] = 2;
2539 ++}
2540 ++
2541 ++Obj::Obj (const Obj &obj)
2542 ++{
2543 ++ var[0] = obj.var[0];
2544 ++ var[1] = obj.var[1];
2545 ++}
2546 ++
2547 ++Obj::~Obj ()
2548 ++{
2549 ++
2550 ++}
2551 ++
2552 ++Obj global_obj;
2553 ++
2554 ++int
2555 ++main ()
2556 ++{
2557 ++ int bar = foo (global_obj);
2558 ++ return bar;
2559 ++}
2560 --- gdb-6.4.orig/debian/patches/gdb-pascal-support.patch
2561 +++ gdb-6.4/debian/patches/gdb-pascal-support.patch
2562 @@ -0,0 +1,94 @@
2563 +From:
2564 + http://www.math.uni.wroc.pl/~hebisch/gpc/
2565 +
2566 +I believe this patch was posted to gdb-patches and never reviewed.
2567 +
2568 +Index: gdb-6.3.90.20051119/gdb/dwarf2read.c
2569 +===================================================================
2570 +--- gdb-6.3.90.20051119.orig/gdb/dwarf2read.c 2005-11-20 13:15:44.000000000 -0500
2571 ++++ gdb-6.3.90.20051119/gdb/dwarf2read.c 2005-11-20 13:36:49.000000000 -0500
2572 +@@ -911,6 +911,8 @@ static const char *namespace_name (struc
2573 +
2574 + static void read_enumeration_type (struct die_info *, struct dwarf2_cu *);
2575 +
2576 ++static void read_set_type (struct die_info *, struct dwarf2_cu *);
2577 ++
2578 + static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
2579 +
2580 + static struct type *dwarf_base_type (int, int, struct dwarf2_cu *);
2581 +@@ -2648,6 +2650,9 @@ process_die (struct die_info *die, struc
2582 + read_enumeration_type (die, cu);
2583 + process_enumeration_scope (die, cu);
2584 + break;
2585 ++ case DW_TAG_set_type:
2586 ++ read_set_type (die, cu);
2587 ++ break;
2588 +
2589 + /* FIXME drow/2004-03-14: These initialize die->type, but do not create
2590 + a symbol or process any children. Therefore it doesn't do anything
2591 +@@ -4031,6 +4036,24 @@ determine_class_name (struct die_info *d
2592 + return new_prefix;
2593 + }
2594 +
2595 ++static void
2596 ++read_set_type (struct die_info * die, struct dwarf2_cu *cu)
2597 ++{
2598 ++ struct type *domain_type;
2599 ++
2600 ++ /* Return if we've already decoded this type. */
2601 ++ if (die->type)
2602 ++ {
2603 ++ return;
2604 ++ }
2605 ++
2606 ++ domain_type = die_type (die, cu);
2607 ++
2608 ++ die->type = create_set_type (NULL, domain_type);
2609 ++
2610 ++}
2611 ++
2612 ++
2613 + /* Given a pointer to a die which begins an enumeration, process all
2614 + the dies that define the members of the enumeration, and create the
2615 + symbol for the enumeration type.
2616 +@@ -6113,9 +6136,11 @@ set_cu_language (unsigned int lang, stru
2617 + case DW_LANG_Ada95:
2618 + cu->language = language_ada;
2619 + break;
2620 ++ case DW_LANG_Pascal83:
2621 ++ cu->language = language_pascal;
2622 ++ break;
2623 + case DW_LANG_Cobol74:
2624 + case DW_LANG_Cobol85:
2625 +- case DW_LANG_Pascal83:
2626 + case DW_LANG_Modula2:
2627 + default:
2628 + cu->language = language_minimal;
2629 +@@ -6904,6 +6929,7 @@ new_symbol (struct die_info *die, struct
2630 + case DW_TAG_structure_type:
2631 + case DW_TAG_union_type:
2632 + case DW_TAG_enumeration_type:
2633 ++ case DW_TAG_set_type:
2634 + SYMBOL_CLASS (sym) = LOC_TYPEDEF;
2635 + SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
2636 +
2637 +@@ -7225,6 +7251,9 @@ read_type_die (struct die_info *die, str
2638 + case DW_TAG_enumeration_type:
2639 + read_enumeration_type (die, cu);
2640 + break;
2641 ++ case DW_TAG_set_type:
2642 ++ read_set_type (die, cu);
2643 ++ break;
2644 + case DW_TAG_subprogram:
2645 + case DW_TAG_subroutine_type:
2646 + read_subroutine_type (die, cu);
2647 +@@ -7282,7 +7311,8 @@ determine_prefix (struct die_info *die,
2648 + struct die_info *parent;
2649 +
2650 + if (cu->language != language_cplus
2651 +- && cu->language != language_java)
2652 ++ && cu->language != language_java
2653 ++ && cu->language != language_pascal)
2654 + return NULL;
2655 +
2656 + parent = die->parent;
2657 --- gdb-6.4.orig/debian/patches/gdb-powerpc-pic-prologue.patch
2658 +++ gdb-6.4/debian/patches/gdb-powerpc-pic-prologue.patch
2659 @@ -0,0 +1,34 @@
2660 +2005-12-10 Daniel Jacobowitz <dan@codesourcery.com>
2661 +
2662 + PR tdep/2029
2663 + Suggested by Till Straumann <strauman@slac.stanford.edu>:
2664 + * rs6000-tdep.c (skip_prologue): Update check for later mtlr
2665 + instructions. Handle PIC bcl.
2666 +
2667 +Index: gdb-6.4/gdb/rs6000-tdep.c
2668 +===================================================================
2669 +--- gdb-6.4.orig/gdb/rs6000-tdep.c 2005-11-01 14:32:36.000000000 -0500
2670 ++++ gdb-6.4/gdb/rs6000-tdep.c 2005-12-10 00:22:15.000000000 -0500
2671 +@@ -911,7 +911,7 @@ skip_prologue (CORE_ADDR pc, CORE_ADDR l
2672 +
2673 + remember just the first one, but skip over additional
2674 + ones. */
2675 +- if (lr_reg < 0)
2676 ++ if (lr_reg == -1)
2677 + lr_reg = (op & 0x03e00000);
2678 + if (lr_reg == 0)
2679 + r0_contains_arg = 0;
2680 +@@ -1024,6 +1024,13 @@ skip_prologue (CORE_ADDR pc, CORE_ADDR l
2681 + continue;
2682 +
2683 + }
2684 ++ else if ((op & 0xfe80ffff) == 0x42800005 && lr_reg != -1)
2685 ++ {
2686 ++ /* bcl 20,xx,.+4 is used to get the current PC, with or without
2687 ++ prediction bits. If the LR has already been saved, we can
2688 ++ skip it. */
2689 ++ continue;
2690 ++ }
2691 + else if (op == 0x48000005)
2692 + { /* bl .+4 used in
2693 + -mrelocatable */
2694 --- gdb-6.4.orig/debian/patches/static-thread-db.patch
2695 +++ gdb-6.4/debian/patches/static-thread-db.patch
2696 @@ -0,0 +1,155 @@
2697 +Status: submitted similar patch 2004-12-08
2698 +
2699 +This patch cleans up the initialization of thread_db. It works for static
2700 +binaries now. The vsyscall patches hide this problem, since new static
2701 +binaries will load the vsyscall DSO and then trigger thread_db; but
2702 +this is still a good cleanup.
2703 +
2704 +Index: gdb-6.3.90.20051119/gdb/linux-thread-db.c
2705 +===================================================================
2706 +--- gdb-6.3.90.20051119.orig/gdb/linux-thread-db.c 2005-10-13 05:31:59.000000000 -0400
2707 ++++ gdb-6.3.90.20051119/gdb/linux-thread-db.c 2005-11-19 15:15:55.000000000 -0500
2708 +@@ -37,6 +37,7 @@
2709 + #include "regcache.h"
2710 + #include "solib-svr4.h"
2711 + #include "gdbcore.h"
2712 ++#include "observer.h"
2713 +
2714 + #ifdef HAVE_GNU_LIBC_VERSION_H
2715 + #include <gnu/libc-version.h>
2716 +@@ -626,59 +627,49 @@ check_thread_signals (void)
2717 + #endif
2718 + }
2719 +
2720 ++/* Check whether thread_db is usable. This function is called when
2721 ++ an inferior is created (or otherwise acquired, e.g. attached to)
2722 ++ and when new shared libraries are loaded into a running process. */
2723 ++
2724 + static void
2725 +-thread_db_new_objfile (struct objfile *objfile)
2726 ++check_for_thread_db (void)
2727 + {
2728 + td_err_e err;
2729 ++ static int already_loaded;
2730 +
2731 + /* First time through, report that libthread_db was successfuly
2732 + loaded. Can't print this in in thread_db_load as, at that stage,
2733 +- the interpreter and it's console haven't started. The real
2734 +- problem here is that libthread_db is loaded too early - it should
2735 +- only be loaded when there is a program to debug. */
2736 +- {
2737 +- static int dejavu;
2738 +- if (!dejavu)
2739 +- {
2740 +- Dl_info info;
2741 +- const char *library = NULL;
2742 +- /* Try dladdr. */
2743 +- if (dladdr ((*td_ta_new_p), &info) != 0)
2744 +- library = info.dli_fname;
2745 +- /* Try dlinfo? */
2746 +- if (library == NULL)
2747 +- /* Paranoid - don't let a NULL path slip through. */
2748 +- library = LIBTHREAD_DB_SO;
2749 +- printf_unfiltered (_("Using host libthread_db library \"%s\".\n"),
2750 +- library);
2751 +- dejavu = 1;
2752 +- }
2753 +- }
2754 ++ the interpreter and it's console haven't started. */
2755 +
2756 +- /* Don't attempt to use thread_db on targets which can not run
2757 +- (core files). */
2758 +- if (objfile == NULL || !target_has_execution)
2759 ++ if (!already_loaded)
2760 + {
2761 +- /* All symbols have been discarded. If the thread_db target is
2762 +- active, deactivate it now. */
2763 +- if (using_thread_db)
2764 +- {
2765 +- gdb_assert (proc_handle.pid == 0);
2766 +- unpush_target (&thread_db_ops);
2767 +- using_thread_db = 0;
2768 +- }
2769 ++ Dl_info info;
2770 ++ const char *library = NULL;
2771 ++ if (dladdr ((*td_ta_new_p), &info) != 0)
2772 ++ library = info.dli_fname;
2773 ++
2774 ++ /* Try dlinfo? */
2775 +
2776 +- goto quit;
2777 ++ if (library == NULL)
2778 ++ /* Paranoid - don't let a NULL path slip through. */
2779 ++ library = LIBTHREAD_DB_SO;
2780 ++
2781 ++ printf_unfiltered (_("Using host libthread_db library \"%s\".\n"),
2782 ++ library);
2783 ++ already_loaded = 1;
2784 + }
2785 +
2786 + if (using_thread_db)
2787 + /* Nothing to do. The thread library was already detected and the
2788 + target vector was already activated. */
2789 +- goto quit;
2790 ++ return;
2791 ++
2792 ++ /* Don't attempt to use thread_db on targets which can not run
2793 ++ (executables not running yet, core files) for now. */
2794 ++ if (!target_has_execution)
2795 ++ return;
2796 +
2797 +- /* Initialize the structure that identifies the child process. Note
2798 +- that at this point there is no guarantee that we actually have a
2799 +- child process. */
2800 ++ /* Initialize the structure that identifies the child process. */
2801 + proc_handle.pid = GET_PID (inferior_ptid);
2802 +
2803 + /* Now attempt to open a connection to the thread library. */
2804 +@@ -705,12 +696,24 @@ thread_db_new_objfile (struct objfile *o
2805 + thread_db_err_str (err));
2806 + break;
2807 + }
2808 ++}
2809 ++
2810 ++static void
2811 ++thread_db_new_objfile (struct objfile *objfile)
2812 ++{
2813 ++ if (objfile != NULL)
2814 ++ check_for_thread_db ();
2815 +
2816 +-quit:
2817 + if (target_new_objfile_chain)
2818 + target_new_objfile_chain (objfile);
2819 + }
2820 +
2821 ++static void
2822 ++check_for_thread_db_observer (struct target_ops *target, int from_tty)
2823 ++{
2824 ++ check_for_thread_db ();
2825 ++}
2826 ++
2827 + /* Attach to a new thread. This function is called when we receive a
2828 + TD_CREATE event or when we iterate over all threads and find one
2829 + that wasn't already in our list. */
2830 +@@ -1336,5 +1339,8 @@ _initialize_thread_db (void)
2831 + /* Add ourselves to objfile event chain. */
2832 + target_new_objfile_chain = deprecated_target_new_objfile_hook;
2833 + deprecated_target_new_objfile_hook = thread_db_new_objfile;
2834 ++
2835 ++ /* Register ourselves for the new inferior observer. */
2836 ++ observer_attach_inferior_created (check_for_thread_db_observer);
2837 + }
2838 + }
2839 +Index: gdb-6.3.90.20051119/gdb/Makefile.in
2840 +===================================================================
2841 +--- gdb-6.3.90.20051119.orig/gdb/Makefile.in 2005-11-19 15:11:23.000000000 -0500
2842 ++++ gdb-6.3.90.20051119/gdb/Makefile.in 2005-11-19 15:13:21.000000000 -0500
2843 +@@ -2189,7 +2189,7 @@ linux-nat.o: linux-nat.c $(defs_h) $(inf
2844 + linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
2845 + $(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(exceptions_h) \
2846 + $(gdbthread_h) $(inferior_h) $(symfile_h) $(objfiles_h) $(target_h) \
2847 +- $(regcache_h) $(solib_svr4_h) $(gdbcore_h)
2848 ++ $(regcache_h) $(solib_svr4_h) $(gdbcore_h) $(observer_h)
2849 + lynx-nat.o: lynx-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
2850 + $(gdbcore_h) $(regcache_h)
2851 + m2-exp.o: m2-exp.c $(defs_h) $(gdb_string_h) $(expression_h) $(language_h) \
2852 --- gdb-6.4.orig/debian/patches/sparclinux-core-regset.patch
2853 +++ gdb-6.4/debian/patches/sparclinux-core-regset.patch
2854 @@ -0,0 +1,180 @@
2855 +--- gdb-6.4/gdb/Makefile.in.~1~ 2006-05-05 16:09:44.000000000 -0700
2856 ++++ gdb-6.4/gdb/Makefile.in 2006-05-05 16:09:49.000000000 -0700
2857 +@@ -2594,7 +2594,7 @@ sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $
2858 + sparc64-linux-nat.o: sparc64-linux-nat.c $(defs_h) $(sparc64_tdep_h) \
2859 + $(sparc_nat_h) $(inferior_h) $(target_h) $(linux_nat_h)
2860 + sparc64-linux-tdep.o: sparc64-linux-tdep.c $(defs_h) $(frame_h) \
2861 +- $(frame_unwind_h) $(gdbarch_h) $(osabi_h) $(solib_svr4_h) \
2862 ++ $(frame_unwind_h) $(regset_h) $(gdbarch_h) $(osabi_h) $(solib_svr4_h) \
2863 + $(symtab_h) $(trad_frame_h) $(tramp_frame_h) $(sparc64_tdep_h)
2864 + sparc64-nat.o: sparc64-nat.c $(defs_h) $(gdbarch_h) $(sparc64_tdep_h) \
2865 + $(sparc_nat_h)
2866 +@@ -2618,9 +2618,9 @@ sparc64-tdep.o: sparc64-tdep.c $(defs_h)
2867 + sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(inferior_h) $(target_h) \
2868 + $(linux_nat_h)
2869 + sparc-linux-tdep.o: sparc-linux-tdep.c $(defs_h) $(dwarf2_frame_h) \
2870 +- $(floatformat_h) $(frame_h) $(frame_unwind_h) $(gdbarch_h) \
2871 +- $(gdbcore_h) $(osabi_h) $(regcache_h) $(solib_svr4_h) $(symtab_h) \
2872 +- $(trad_frame_h) $(tramp_frame_h) $(sparc_tdep_h)
2873 ++ $(floatformat_h) $(frame_h) $(frame_unwind_h) $(regset_h) \
2874 ++ $(gdbarch_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(solib_svr4_h) \
2875 ++ $(symtab_h) $(trad_frame_h) $(tramp_frame_h) $(sparc_tdep_h)
2876 + sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(regcache_h) $(target_h) \
2877 + $(gdb_assert_h) $(gdb_string_h) $(gdb_wait_h) $(sparc_tdep_h) \
2878 + $(sparc_nat_h) $(inf_ptrace_h)
2879 +--- gdb-6.4/gdb/sparc-linux-tdep.c.~1~ 2006-05-05 16:09:44.000000000 -0700
2880 ++++ gdb-6.4/gdb/sparc-linux-tdep.c 2006-05-05 16:09:49.000000000 -0700
2881 +@@ -24,6 +24,7 @@
2882 + #include "floatformat.h"
2883 + #include "frame.h"
2884 + #include "frame-unwind.h"
2885 ++#include "regset.h"
2886 + #include "gdbarch.h"
2887 + #include "gdbcore.h"
2888 + #include "osabi.h"
2889 +@@ -124,11 +125,67 @@ sparc32_linux_sigframe_init (const struc
2890 + }
2891 +
2892 +
2893 ++const struct sparc_gregset sparc32_linux_core_gregset =
2894 ++{
2895 ++ 32 * 4, /* %psr */
2896 ++ 33 * 4, /* %pc */
2897 ++ 34 * 4, /* %npc */
2898 ++ 35 * 4, /* %y */
2899 ++ -1, /* %wim */
2900 ++ -1, /* %tbr */
2901 ++ 1 * 4, /* %g1 */
2902 ++ 16 * 4, /* %l0 */
2903 ++ 4, /* y size */
2904 ++};
2905 ++
2906 ++
2907 ++static void
2908 ++sparc32_linux_supply_core_gregset (const struct regset *regset,
2909 ++ struct regcache *regcache,
2910 ++ int regnum, const void *gregs, size_t len)
2911 ++{
2912 ++ sparc32_supply_gregset (&sparc32_linux_core_gregset, regcache, regnum, gregs);
2913 ++}
2914 ++
2915 ++static void
2916 ++sparc32_linux_collect_core_gregset (const struct regset *regset,
2917 ++ const struct regcache *regcache,
2918 ++ int regnum, void *gregs, size_t len)
2919 ++{
2920 ++ sparc32_collect_gregset (&sparc32_linux_core_gregset, regcache, regnum, gregs);
2921 ++}
2922 ++
2923 ++static void
2924 ++sparc32_linux_supply_core_fpregset (const struct regset *regset,
2925 ++ struct regcache *regcache,
2926 ++ int regnum, const void *fpregs, size_t len)
2927 ++{
2928 ++ sparc32_supply_fpregset (regcache, regnum, fpregs);
2929 ++}
2930 ++
2931 ++static void
2932 ++sparc32_linux_collect_core_fpregset (const struct regset *regset,
2933 ++ const struct regcache *regcache,
2934 ++ int regnum, void *fpregs, size_t len)
2935 ++{
2936 ++ sparc32_collect_fpregset (regcache, regnum, fpregs);
2937 ++}
2938 ++
2939 ++
2940 ++
2941 + static void
2942 + sparc32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
2943 + {
2944 + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2945 +
2946 ++ tdep->gregset = regset_alloc (gdbarch, sparc32_linux_supply_core_gregset,
2947 ++ sparc32_linux_collect_core_gregset);
2948 ++ tdep->sizeof_gregset = 152;
2949 ++
2950 ++ tdep->fpregset = regset_alloc (gdbarch, sparc32_linux_supply_core_fpregset,
2951 ++ sparc32_linux_collect_core_fpregset);
2952 ++ tdep->sizeof_fpregset = 396;
2953 ++
2954 + tramp_frame_prepend_unwinder (gdbarch, &sparc32_linux_sigframe);
2955 + tramp_frame_prepend_unwinder (gdbarch, &sparc32_linux_rt_sigframe);
2956 +
2957 +--- gdb-6.4/gdb/sparc64-linux-tdep.c.~1~ 2006-05-05 16:09:44.000000000 -0700
2958 ++++ gdb-6.4/gdb/sparc64-linux-tdep.c 2006-05-05 16:09:49.000000000 -0700
2959 +@@ -22,6 +22,7 @@
2960 + #include "defs.h"
2961 + #include "frame.h"
2962 + #include "frame-unwind.h"
2963 ++#include "regset.h"
2964 + #include "gdbarch.h"
2965 + #include "osabi.h"
2966 + #include "solib-svr4.h"
2967 +@@ -95,11 +96,67 @@ sparc64_linux_sigframe_init (const struc
2968 + }
2969 +
2970 +
2971 ++const struct sparc_gregset sparc64_linux_core_gregset =
2972 ++{
2973 ++ 32 * 8, /* %tstate */
2974 ++ 33 * 8, /* %tpc */
2975 ++ 34 * 8, /* %tnpc */
2976 ++ 35 * 8, /* %y */
2977 ++ -1, /* %wim */
2978 ++ -1, /* %tbr */
2979 ++ 1 * 8, /* %g1 */
2980 ++ 16 * 8, /* %l0 */
2981 ++ 8, /* y size */
2982 ++};
2983 ++
2984 ++
2985 ++static void
2986 ++sparc64_linux_supply_core_gregset (const struct regset *regset,
2987 ++ struct regcache *regcache,
2988 ++ int regnum, const void *gregs, size_t len)
2989 ++{
2990 ++ sparc64_supply_gregset (&sparc64_linux_core_gregset, regcache, regnum, gregs);
2991 ++}
2992 ++
2993 ++static void
2994 ++sparc64_linux_collect_core_gregset (const struct regset *regset,
2995 ++ const struct regcache *regcache,
2996 ++ int regnum, void *gregs, size_t len)
2997 ++{
2998 ++ sparc64_collect_gregset (&sparc64_linux_core_gregset, regcache, regnum, gregs);
2999 ++}
3000 ++
3001 ++static void
3002 ++sparc64_linux_supply_core_fpregset (const struct regset *regset,
3003 ++ struct regcache *regcache,
3004 ++ int regnum, const void *fpregs, size_t len)
3005 ++{
3006 ++ sparc64_supply_fpregset (regcache, regnum, fpregs);
3007 ++}
3008 ++
3009 ++static void
3010 ++sparc64_linux_collect_core_fpregset (const struct regset *regset,
3011 ++ const struct regcache *regcache,
3012 ++ int regnum, void *fpregs, size_t len)
3013 ++{
3014 ++ sparc64_collect_fpregset (regcache, regnum, fpregs);
3015 ++}
3016 ++
3017 ++
3018 ++
3019 + static void
3020 + sparc64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
3021 + {
3022 + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
3023 +
3024 ++ tdep->gregset = regset_alloc (gdbarch, sparc64_linux_supply_core_gregset,
3025 ++ sparc64_linux_collect_core_gregset);
3026 ++ tdep->sizeof_gregset = 288;
3027 ++
3028 ++ tdep->fpregset = regset_alloc (gdbarch, sparc64_linux_supply_core_fpregset,
3029 ++ sparc64_linux_collect_core_fpregset);
3030 ++ tdep->sizeof_fpregset = 280;
3031 ++
3032 + tramp_frame_prepend_unwinder (gdbarch, &sparc64_linux_rt_sigframe);
3033 +
3034 + sparc64_init_abi (info, gdbarch);
3035 --- gdb-6.4.orig/debian/patches/linux-nat-core-regset.patch
3036 +++ gdb-6.4/debian/patches/linux-nat-core-regset.patch
3037 @@ -0,0 +1,113 @@
3038 +--- gdb-6.4/gdb/Makefile.in.~1~ 2006-05-05 16:18:11.000000000 -0700
3039 ++++ gdb-6.4/gdb/Makefile.in 2006-05-05 16:19:26.000000000 -0700
3040 +@@ -2184,8 +2184,8 @@ linespec.o: linespec.c $(defs_h) $(symta
3041 + $(objc_lang_h) $(linespec_h) $(exceptions_h)
3042 + linux-nat.o: linux-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdb_string_h) \
3043 + $(gdb_wait_h) $(gdb_assert_h) $(linux_nat_h) $(gdbthread_h) \
3044 +- $(gdbcmd_h) $(regcache_h) $(inf_ptrace.h) $(auxv.h) $(elf_bfd_h) \
3045 +- $(gregset_h) $(gdbcore_h) $(gdbthread_h) $(gdb_stat_h)
3046 ++ $(gdbcmd_h) $(regcache_h) $(regset_h) $(inf_ptrace.h) $(auxv.h) \
3047 ++ $(elf_bfd_h) $(gregset_h) $(gdbcore_h) $(gdbthread_h) $(gdb_stat_h)
3048 + linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
3049 + $(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(exceptions_h) \
3050 + $(gdbthread_h) $(inferior_h) $(symfile_h) $(objfiles_h) $(target_h) \
3051 +--- gdb-6.4/gdb/linux-nat.c.~1~ 2006-05-05 16:18:11.000000000 -0700
3052 ++++ gdb-6.4/gdb/linux-nat.c 2006-05-05 16:18:14.000000000 -0700
3053 +@@ -34,6 +34,7 @@
3054 + #include "gdbthread.h"
3055 + #include "gdbcmd.h"
3056 + #include "regcache.h"
3057 ++#include "regset.h"
3058 + #include "inf-ptrace.h"
3059 + #include "auxv.h"
3060 + #include <sys/param.h> /* for MAXPATHLEN */
3061 +@@ -2602,25 +2603,72 @@ linux_nat_do_thread_registers (bfd *obfd
3062 + gdb_fpxregset_t fpxregs;
3063 + #endif
3064 + unsigned long lwp = ptid_get_lwp (ptid);
3065 ++ struct gdbarch *gdbarch = current_gdbarch;
3066 ++ const struct regset *regset;
3067 ++ int core_regset_p, record_reg_p;
3068 ++
3069 ++ core_regset_p = gdbarch_regset_from_core_section_p (gdbarch);
3070 ++ record_reg_p = 1;
3071 ++ if (core_regset_p)
3072 ++ {
3073 ++ regset = gdbarch_regset_from_core_section (gdbarch, ".reg",
3074 ++ sizeof (gregs));
3075 ++ if (regset)
3076 ++ regset->collect_regset (regset, current_regcache, -1,
3077 ++ &gregs, sizeof (gregs));
3078 ++ else
3079 ++ record_reg_p = 0;
3080 ++ }
3081 ++ else
3082 ++ fill_gregset (&gregs, -1);
3083 ++
3084 ++ if (record_reg_p)
3085 ++ note_data = (char *) elfcore_write_prstatus (obfd,
3086 ++ note_data,
3087 ++ note_size,
3088 ++ lwp,
3089 ++ stop_signal, &gregs);
3090 ++
3091 ++ record_reg_p = 1;
3092 ++ if (core_regset_p)
3093 ++ {
3094 ++ regset = gdbarch_regset_from_core_section (gdbarch, ".reg2",
3095 ++ sizeof (fpregs));
3096 ++ if (regset)
3097 ++ regset->collect_regset (regset, current_regcache, -1,
3098 ++ &fpregs, sizeof (fpregs));
3099 ++ else
3100 ++ record_reg_p = 0;
3101 ++ }
3102 ++ else
3103 ++ fill_fpregset (&fpregs, -1);
3104 ++
3105 ++ if (record_reg_p)
3106 ++ note_data = (char *) elfcore_write_prfpreg (obfd,
3107 ++ note_data,
3108 ++ note_size,
3109 ++ &fpregs, sizeof (fpregs));
3110 +
3111 +- fill_gregset (&gregs, -1);
3112 +- note_data = (char *) elfcore_write_prstatus (obfd,
3113 +- note_data,
3114 +- note_size,
3115 +- lwp,
3116 +- stop_signal, &gregs);
3117 +-
3118 +- fill_fpregset (&fpregs, -1);
3119 +- note_data = (char *) elfcore_write_prfpreg (obfd,
3120 +- note_data,
3121 +- note_size,
3122 +- &fpregs, sizeof (fpregs));
3123 + #ifdef FILL_FPXREGSET
3124 +- fill_fpxregset (&fpxregs, -1);
3125 +- note_data = (char *) elfcore_write_prxfpreg (obfd,
3126 +- note_data,
3127 +- note_size,
3128 +- &fpxregs, sizeof (fpxregs));
3129 ++ record_reg_p = 1;
3130 ++ if (core_regset_p)
3131 ++ {
3132 ++ regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp",
3133 ++ sizeof (fpxregs));
3134 ++ if (regset)
3135 ++ regset->collect_regset (regset, current_regcache, -1,
3136 ++ &fpxregs, sizeof (fpxregs));
3137 ++ else
3138 ++ record_reg_p = 0;
3139 ++ }
3140 ++ else
3141 ++ fill_fpxregset (&fpxregs, -1);
3142 ++
3143 ++ if (record_reg_p)
3144 ++ note_data = (char *) elfcore_write_prxfpreg (obfd,
3145 ++ note_data,
3146 ++ note_size,
3147 ++ &fpxregs, sizeof (fpxregs));
3148 + #endif
3149 + return note_data;
3150 + }
3151 --- gdb-6.4.orig/debian/patches/linux_nat_do_thread_registers.patch
3152 +++ gdb-6.4/debian/patches/linux_nat_do_thread_registers.patch
3153 @@ -0,0 +1,111 @@
3154 +2006-05-05 David S. Miller <davem@sunset.davemloft.net>
3155 +
3156 + * linux-nat.c (linux_nat_do_thread_registers): Check for
3157 + NULL collect_regset method.
3158 +
3159 +--- gdb-6.4/gdb/linux-nat.c.~1~ 2006-05-07 22:42:28.000000000 -0700
3160 ++++ gdb-6.4/gdb/linux-nat.c 2006-05-07 22:42:32.000000000 -0700
3161 +@@ -2605,70 +2605,52 @@
3162 + unsigned long lwp = ptid_get_lwp (ptid);
3163 + struct gdbarch *gdbarch = current_gdbarch;
3164 + const struct regset *regset;
3165 +- int core_regset_p, record_reg_p;
3166 ++ int core_regset_p;
3167 +
3168 + core_regset_p = gdbarch_regset_from_core_section_p (gdbarch);
3169 +- record_reg_p = 1;
3170 +- if (core_regset_p)
3171 +- {
3172 +- regset = gdbarch_regset_from_core_section (gdbarch, ".reg",
3173 +- sizeof (gregs));
3174 +- if (regset)
3175 +- regset->collect_regset (regset, current_regcache, -1,
3176 +- &gregs, sizeof (gregs));
3177 +- else
3178 +- record_reg_p = 0;
3179 +- }
3180 ++ if (core_regset_p
3181 ++ && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg",
3182 ++ sizeof (gregs))) != NULL
3183 ++ && regset->collect_regset != NULL)
3184 ++ regset->collect_regset (regset, current_regcache, -1,
3185 ++ &gregs, sizeof (gregs));
3186 + else
3187 + fill_gregset (&gregs, -1);
3188 +
3189 +- if (record_reg_p)
3190 +- note_data = (char *) elfcore_write_prstatus (obfd,
3191 +- note_data,
3192 +- note_size,
3193 +- lwp,
3194 +- stop_signal, &gregs);
3195 +-
3196 +- record_reg_p = 1;
3197 +- if (core_regset_p)
3198 +- {
3199 +- regset = gdbarch_regset_from_core_section (gdbarch, ".reg2",
3200 +- sizeof (fpregs));
3201 +- if (regset)
3202 +- regset->collect_regset (regset, current_regcache, -1,
3203 +- &fpregs, sizeof (fpregs));
3204 +- else
3205 +- record_reg_p = 0;
3206 +- }
3207 ++ note_data = (char *) elfcore_write_prstatus (obfd,
3208 ++ note_data,
3209 ++ note_size,
3210 ++ lwp,
3211 ++ stop_signal, &gregs);
3212 ++
3213 ++ if (core_regset_p
3214 ++ && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2",
3215 ++ sizeof (fpregs))) != NULL
3216 ++ && regset->collect_regset != NULL)
3217 ++ regset->collect_regset (regset, current_regcache, -1,
3218 ++ &fpregs, sizeof (fpregs));
3219 + else
3220 + fill_fpregset (&fpregs, -1);
3221 +
3222 +- if (record_reg_p)
3223 +- note_data = (char *) elfcore_write_prfpreg (obfd,
3224 +- note_data,
3225 +- note_size,
3226 +- &fpregs, sizeof (fpregs));
3227 ++ note_data = (char *) elfcore_write_prfpreg (obfd,
3228 ++ note_data,
3229 ++ note_size,
3230 ++ &fpregs, sizeof (fpregs));
3231 +
3232 + #ifdef FILL_FPXREGSET
3233 +- record_reg_p = 1;
3234 +- if (core_regset_p)
3235 +- {
3236 +- regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp",
3237 +- sizeof (fpxregs));
3238 +- if (regset)
3239 +- regset->collect_regset (regset, current_regcache, -1,
3240 +- &fpxregs, sizeof (fpxregs));
3241 +- else
3242 +- record_reg_p = 0;
3243 +- }
3244 ++ if (core_regset_p
3245 ++ && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp",
3246 ++ sizeof (fpxregs))) != NULL
3247 ++ && regset->collect_regset != NULL)
3248 ++ regset->collect_regset (regset, current_regcache, -1,
3249 ++ &fpxregs, sizeof (fpxregs));
3250 + else
3251 + fill_fpxregset (&fpxregs, -1);
3252 +
3253 +- if (record_reg_p)
3254 +- note_data = (char *) elfcore_write_prxfpreg (obfd,
3255 +- note_data,
3256 +- note_size,
3257 +- &fpxregs, sizeof (fpxregs));
3258 ++ note_data = (char *) elfcore_write_prxfpreg (obfd,
3259 ++ note_data,
3260 ++ note_size,
3261 ++ &fpxregs, sizeof (fpxregs));
3262 + #endif
3263 + return note_data;
3264 + }
3265 --- gdb-6.4.orig/debian/gdb.menu
3266 +++ gdb-6.4/debian/gdb.menu
3267 @@ -0,0 +1,3 @@
3268 +?package(gdb):needs="text" title="GDB" section="Apps/Programming"\
3269 + hints="Debuggers" command="/usr/bin/gdb"
3270 +
3271 --- gdb-6.4.orig/debian/changelog
3272 +++ gdb-6.4/debian/changelog
3273 @@ -0,0 +1,887 @@
3274 +gdb (6.4-1ubuntu5) dapper; urgency=low
3275 +
3276 + Changes by David S. Miller:
3277 +
3278 + * Fix linux_nat regression introduced with the last upload.
3279 +
3280 + -- Fabio M. Di Nitto <fabbione@ubuntu.com> Tue, 09 May 2006 07:48:51 +0200
3281 +
3282 +gdb (6.4-1ubuntu4) dapper; urgency=low
3283 +
3284 + Changes by David S. Miller:
3285 +
3286 + * Fix core file generation on sparc.
3287 +
3288 + * sparc patches split and clean up as applied upstream.
3289 +
3290 + -- Fabio M. Di Nitto <fabbione@ubuntu.com> Sat, 06 May 2006 06:44:31 +0200
3291 +
3292 +gdb (6.4-1ubuntu3) dapper; urgency=low
3293 +
3294 + Changes by David S. Miller:
3295 +
3296 + * Fix signal frame handling on sparc and use dwarf2 frame unwinding on
3297 + sparc/linux:
3298 + - Add patch sparc-dwarf2-and-sigframe.patch.
3299 + - Update debian/patches/series.
3300 +
3301 + -- Fabio M. Di Nitto <fabbione@ubuntu.com> Thu, 06 Apr 2006 07:16:23 +0200
3302 +
3303 +gdb (6.4-1ubuntu2) dapper; urgency=low
3304 +
3305 + Changes by David S. Miller:
3306 +
3307 + * Fix sparc threads support:
3308 + - Add patch gdb-sparclinux-threads.patch.
3309 + - Update debian/patches/series.
3310 +
3311 + NOTE: the patch will work only with properly patched kernel.
3312 + The patch should be in 2.6.15-20 kernel serie.
3313 +
3314 + -- Fabio M. Di Nitto <fabbione@ubuntu.com> Sun, 02 Apr 2006 09:42:13 +0200
3315 +
3316 +gdb (6.4-1ubuntu1) dapper; urgency=low
3317 +
3318 + * merged with debian,
3319 + * debian/control, debian/rules: Remove type-handling.
3320 +
3321 + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 28 Dec 2005 11:19:23 +0100
3322 +
3323 +gdb (6.4-1) unstable; urgency=low
3324 +
3325 + * New upstream release.
3326 + * Reset core ulimit before running the testsuite (Closes: #342343).
3327 + * Ignore cancellation signal for NPTL by default (Closes: #324683).
3328 + * Include a description of the front cover texts, et cetera for the
3329 + manual in the copyright file (Closes: #321803).
3330 + * Set the default name of main to MAIN__ for Fortran programs
3331 + (Closes: #319520).
3332 + * Handle PowerPC PIC prologues a little better (Closes: #312059).
3333 + * Cope with attaching to threaded programs after the exit of a threaded
3334 + program (Closes: #303736).
3335 +
3336 + -- Daniel Jacobowitz <dan@debian.org> Sun, 11 Dec 2005 13:14:04 -0500
3337 +
3338 +gdb (6.3.90.20051119-1ubuntu1) dapper; urgency=low
3339 +
3340 + * debian/control, debian/rules: Remove type-handling.
3341 +
3342 + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 21 Nov 2005 19:50:49 +0000
3343 +
3344 +gdb (6.3.90.20051119-1) unstable; urgency=low
3345 +
3346 + * New upstream snapshot (6.4 branch prerelease).
3347 + - Many Debian patches merged.
3348 + - Selected frame and C++ pass-by-reference patches updated.
3349 + - Fixes segfault when executing malformed TUI window commands
3350 + (Closes: #317317).
3351 + - Behaves more gracefully when the executable disappears, et cetera
3352 + (Closes: #293637, #323217, #332184).
3353 + - Handle vfork from threaded programs using NPTL (Closes: #320391).
3354 + * Do not rebuild bfd.info.
3355 + * Build depend on a version of debhelper which will put menu fils
3356 + in /usr/share.
3357 + * Don't build depend on gcj on the Hurd (Closes: #298088).
3358 + * Prevent unnecessary SIGTTOU when resolving pending breakpoints
3359 + (Closes: #306267).
3360 + * Enable the testsuite on amd64.
3361 + * Use libreadline5 instead of libreadline4 (Closes: #309538, #326358).
3362 + * Install gdb_gcore.sh as gcore (Closes: #328580).
3363 + * Add GPC support (Closes: #261330).
3364 +
3365 + -- Daniel Jacobowitz <dan@debian.org> Sun, 20 Nov 2005 13:40:44 -0500
3366 +
3367 +gdb (6.3-6) unstable; urgency=high
3368 +
3369 + * Do not crash on certain malformed input files [CAN-2005-1704]
3370 + (Closes: #308624, #310972).
3371 + * Do not load untrusted .gdbinit files [CAN-2005-1705] (Closes: #310728).
3372 +
3373 + -- Daniel Jacobowitz <dan@debian.org> Sun, 29 May 2005 18:55:44 -0400
3374 +
3375 +gdb (6.3-5) unstable; urgency=low
3376 +
3377 + * Fix NPTL debugging using gdbserver.
3378 + * Disable the "Incomplete CFI data" warning.
3379 + * Really include the menu file this time (Closes: #80010).
3380 + * Include a patch to handle strange binaries produced by Kylix
3381 + (Closes: #249008).
3382 + * Fix printing of fork status messages, and disable them by default
3383 + (Closes: #254039).
3384 +
3385 + -- Daniel Jacobowitz <dan@debian.org> Wed, 8 Dec 2004 18:35:02 -0500
3386 +
3387 +gdb (6.3-4) unstable; urgency=low
3388 +
3389 + * Backport a patch for a warning about the vsyscall DSO.
3390 + * Backport a spelling fix for PTRACE_EVENT_VFORK_DONE to fix S/390
3391 + build failure.
3392 +
3393 + -- Daniel Jacobowitz <dan@debian.org> Mon, 15 Nov 2004 11:52:13 -0500
3394 +
3395 +gdb (6.3-3) unstable; urgency=low
3396 +
3397 + * Add flex to build dependencies for ada-lex.l.
3398 +
3399 + -- Daniel Jacobowitz <dan@debian.org> Sun, 14 Nov 2004 00:28:18 -0500
3400 +
3401 +gdb (6.3-2) unstable; urgency=low
3402 +
3403 + * Backport a patch for a C++ / stabs debug info crash (Closes: #251322).
3404 + * Correct build dependency for gcj (missed a !).
3405 + * Correct build dependency for libunwind (it's libunwind7-dev now).
3406 + * Update fix for fork tracing. This removes a warning on 2.4 kernels,
3407 + and fixes UML debugging (Closes: #271069).
3408 + * Fix single-stepping through a call to NULL on SPARC (Closes: #256012).
3409 +
3410 + -- Daniel Jacobowitz <dan@debian.org> Sat, 13 Nov 2004 16:50:55 -0500
3411 +
3412 +gdb (6.3-1) unstable; urgency=low
3413 +
3414 + * New upstream release (Closes: #259219).
3415 + - Give an error for division by 0 (Closes: #280051).
3416 + - Includes support for -feliminate-dwarf2-dups.
3417 + - Limited support for Ada is included; more to come
3418 + (Closes: #39516, #46470, #57876, #85947).
3419 + * Update build dependency on texinfo; 4.7-1 could not build GDB.
3420 + * Build depend on gcj on all architectures other than mips and mipsel
3421 + (Closes: #272327).
3422 + * Build depend on libkvm-dev for kfreebsd-gnu (Closes: #264103).
3423 + * Add libunwind support on ia64 (Closes: #279596).
3424 + * Make the fork tracing checks more robust. Prevents stray processes
3425 + on 2.6.10-rc1.
3426 + * Add a Debian menu entry for GDB (Closes: #80010).
3427 +
3428 + -- Daniel Jacobowitz <dan@debian.org> Fri, 12 Nov 2004 18:45:46 -0500
3429 +
3430 +gdb (6.1-3) unstable; urgency=low
3431 +
3432 + * Fix passing and returning of non-trivial C++ objects (Closes: #160459).
3433 + * Update hppa patches (Closes: #247948).
3434 + * Add a patch for finding C++ member variables in base classes
3435 + (Closes: #239535).
3436 + * Replace versions of insight which contain gdbtui. Partial fix for
3437 + #242498.
3438 +
3439 + -- Daniel Jacobowitz <dan@debian.org> Thu, 27 May 2004 11:30:23 -0400
3440 +
3441 +gdb (6.1-2) unstable; urgency=low
3442 +
3443 + * Add an NPTL thread-exit patch. Short-lived threads could cause GDB
3444 + to leave unattached threads, which would crash as soon as they hit
3445 + a breakpoint.
3446 + * Testsuite patches - no unexpected FAILs on i386-linux.
3447 +
3448 + -- Daniel Jacobowitz <dan@debian.org> Mon, 19 Apr 2004 11:43:07 -0400
3449 +
3450 +gdb (6.1-1) unstable; urgency=low
3451 +
3452 + * New upstream version.
3453 + * Re-add the -debian suffix to GDB's version number. This got lost in the
3454 + transition to CDBS.
3455 + * Revised HPPA port. Thanks to Randolph Chung, as usual.
3456 + * Run the testsuite on SPARC again. The SPARC port is much improved
3457 + (it has been basically rewritten from scratch).
3458 +
3459 + -- Daniel Jacobowitz <dan@debian.org> Tue, 6 Apr 2004 00:13:00 -0400
3460 +
3461 +gdb (6.0-6) unstable; urgency=low
3462 +
3463 + * Also add DESTDIR to the ranlib invocation.
3464 + * Fix typo in moving run.1 manpage.
3465 + * Link linux-nat.o on HPPA.
3466 +
3467 + -- Daniel Jacobowitz <dan@debian.org> Tue, 3 Feb 2004 11:07:27 -0500
3468 +
3469 +gdb (6.0-5) unstable; urgency=low
3470 +
3471 + * Add DESTDIR support to sim/, to fix build failures on targets with a
3472 + simulator.
3473 +
3474 + -- Daniel Jacobowitz <dan@debian.org> Mon, 2 Feb 2004 15:32:23 -0500
3475 +
3476 +gdb (6.0-4) unstable; urgency=low
3477 +
3478 + * Switch to CDBS and quilt.
3479 + * Suppress warning about "<in-memory>" on re-run with a vsyscall DSO.
3480 + * Import gdb 6.0 CVS branch; fixes a segfault with development GCC
3481 + and frequent segfaults when rereading changed binaries
3482 + (Closes: #230550).
3483 +
3484 + -- Daniel Jacobowitz <dan@debian.org> Mon, 2 Feb 2004 10:03:19 -0500
3485 +
3486 +gdb (6.0-3) unstable; urgency=low
3487 +
3488 + * Include <asm/offsets.h> instead of <asm/offset.h> on HPPA
3489 + (Closes: #208928).
3490 + * Support backtraces through the vsyscall DSO on i386.
3491 + * Do not run testsuite on hurd-i386 (Closes: #221956).
3492 + * Fix up texinfo files so that dh_installinfo puts them in the right
3493 + section.
3494 + * Update build dependency on texinfo (Closes: #219337).
3495 +
3496 + -- Daniel Jacobowitz <dan@debian.org> Sun, 25 Jan 2004 18:04:24 -0500
3497 +
3498 +gdb (6.0-2) unstable; urgency=low
3499 +
3500 + * Add build dependency on mig for hurd-i386 (Closes: #216428).
3501 + * Don't paginate symbol file progress messages. In combination
3502 + with recent changes to dwarf2-frame.c this fixes some potential
3503 + internal errors (Closes: #199889).
3504 + - 28.symfile-unfiltered.patch
3505 +
3506 + -- Daniel Jacobowitz <dan@debian.org> Mon, 27 Oct 2003 23:32:39 -0500
3507 +
3508 +gdb (6.0-1) unstable; urgency=low
3509 +
3510 + * New upstream release
3511 + - 11.read-var-value.patch merged upstream.
3512 + - 12.dwarf-loc-register.patch merged upstream.
3513 + - -data-list-changed-registers no longer segfaults (Closes: #204561).
3514 + * Include the text of the GFDL in the copyright file (Closes: #212890).
3515 + * Include a threading patch which may fix #212949.
3516 + - 26.lin-lwp-assert.patch
3517 + * Include a patch which should improve Control-C handling for LinuxThreads
3518 + on 2.6 kernels.
3519 + - 27.lin-lwp-2.6.patch
3520 +
3521 + -- Daniel Jacobowitz <dan@debian.org> Sat, 4 Oct 2003 17:47:35 -0400
3522 +
3523 +gdb (5.3.20030824-1) unstable; urgency=low
3524 +
3525 + * New upstream CVS snapshot, from the GDB 6.0 branch.
3526 + - 27.tui-paginate-backtrace.patch merged upstream.
3527 + - 28.minsym-section.patch merged upstream.
3528 + - Watchpoint handling bug for ia64 fixed (Closes: #205241).
3529 + * Squash some warnings for HPPA.
3530 +
3531 + -- Daniel Jacobowitz <dan@debian.org> Sun, 24 Aug 2003 14:26:52 -0400
3532 +
3533 +gdb (5.3.20030801-1) unstable; urgency=low
3534 +
3535 + * New upstream CVS snapshot, from the GDB 6.0 branch.
3536 + - 26.fix-sparc-build-two.patch merged upstream.
3537 + - Includes a fix for backtracing from noreturn functions like abort ().
3538 + - Insert a space between the address and code when disassembling,
3539 + even if we don't have a function name (Closes: #199672).
3540 + * Update HPPA patch again; is anyone ever going to submit this
3541 + upstream? Better do it soon. (Closes: #200980).
3542 + * Make filtered output paginate correctly again.
3543 + - 27.tui-paginate-backtrace.patch
3544 + * Fix an internal error on -data-list-changed-registers, and possibly
3545 + many others (Closes: #203553).
3546 + - 10.selected-frame.patch
3547 + * Add two patches for watchpoints in optimized programs (Closes: #203000).
3548 + - 11.read-var-value.patch
3549 + - 12.dwarf-loc-register.patch
3550 + * Add a patch for several shared library single-stepping bugs.
3551 + - 28.minsym-section.patch
3552 +
3553 + -- Daniel Jacobowitz <dan@debian.org> Sun, 3 Aug 2003 23:09:56 -0400
3554 +
3555 +gdb (5.3.20030629-2) unstable; urgency=low
3556 +
3557 + * Yet another sparc build fix.
3558 + - 26.fix-sparc-build-two.patch
3559 +
3560 + -- Daniel Jacobowitz <dan@debian.org> Sun, 29 Jun 2003 17:11:12 -0400
3561 +
3562 +gdb (5.3.20030629-1) unstable; urgency=low
3563 +
3564 + * New upstream CVS snapshot, from the GDB 6.0 branch.
3565 + - Remote debugging isn't totally broken any more.
3566 + * Remove merge or obsoleted patches.
3567 + - Parts of 23.static-thread-apps.patch
3568 + - 26.fix-tui-build.patch
3569 + - 27.fix-sparc-build-two.patch
3570 + - 28.dwarf2-reread-segv.patch
3571 +
3572 + -- Daniel Jacobowitz <dan@debian.org> Sat, 28 Jun 2003 21:17:13 -0400
3573 +
3574 +gdb (5.3.20030606-3) unstable; urgency=low
3575 +
3576 + * Fix build failure on HPPA.
3577 + * Fix a segfault when reread applications (Closes: #197226).
3578 + - 28.dwarf2-reread-segv.patch
3579 +
3580 + -- Daniel Jacobowitz <dan@debian.org> Sun, 22 Jun 2003 14:30:49 -0400
3581 +
3582 +gdb (5.3.20030606-2) unstable; urgency=low
3583 +
3584 + * Add 27.fix-sparc-build-two.patch to fix build failure on sparc.
3585 + * Disable the testsuite on sparc, since it's completely broken.
3586 + * Conditionalize gcj build dependency for architectures which both
3587 + have gcj and run the testsuite.
3588 +
3589 + -- Daniel Jacobowitz <dan@debian.org> Sat, 14 Jun 2003 12:30:33 -0400
3590 +
3591 +gdb (5.3.20030606-1) unstable; urgency=low
3592 +
3593 + * New upstream snapshot, with lots of nice features.
3594 + - Improved prologue analyzer and DWARF-2 frame unwind support for i386.
3595 + - Overhauled Alpha support.
3596 + - More C++ namespace support (still not complete).
3597 + - DW_AT_ranges support - if you've noticed local variables in your code
3598 + being missing in GDB, this is the most likely cause.
3599 + - Integrated Objective C support, finally! It's got some rough edges
3600 + but it works (Closes: #62081, #24598, #57824, #86506).
3601 + - "set cp-abi" command for debugging combined v2 and v3 C++ code.
3602 + - Some bug fixes in the parsing for gdb --args (Closes: #33361, #193413).
3603 + - Support for debug info in separate files, coming soon to a Debian
3604 + near you.
3605 + * Removed integrated or obsoleted patches:
3606 + - 01.const-tilde_expand.patch
3607 + - 05.i386-backtrace-to-main.patch
3608 + - 08.max-ui-out.patch
3609 + - 12.tui-readline.patch
3610 + - 15.m68k-build.patch
3611 + - 16.use-rl-prefixed-function.patch
3612 + - 19.alpha-doublest-correction.patch
3613 + - 21.lin-lwp-schedlock.patch
3614 + * Disabled some patches which I hope are no longer needed:
3615 + - 06.java-testsuite-jmisc.patch
3616 + - 11.thread-confused-exit.patch
3617 + - 20.alpha-testsuite.patch
3618 + - 22.alpha-proc-desc-stack.patch
3619 + * Updated HPPA patches for this snapshot.
3620 + - 02.gdb-hppa.patch
3621 + - 03.hppa-core.patch
3622 + - 04.hppa-func-returns.patch
3623 + * Add some build fixes for TUI.
3624 + - 26.fix-tui-build.patch
3625 + * Build with an absolute path to configure, to work around three failing
3626 + MI tests.
3627 + * Don't bother running the testsuite for two debug formats any more.
3628 + * Add build-dependencies for gcj and gobjc, for the testsuite.
3629 + * Adjust configure --mandir argument to match more stupid quoting.
3630 + * Re-enable thread testsuite on Alpha.
3631 + * Enable the testsuite on ia64, hppa, and s390.
3632 +
3633 + -- Daniel Jacobowitz <dan@debian.org> Sun, 8 Jun 2003 20:15:55 -0400
3634 +
3635 +gdb (5.3-2) unstable; urgency=low
3636 +
3637 + * Fix build on SPARC.
3638 + * Fix buid on HPPA.
3639 +
3640 + -- Daniel Jacobowitz <dan@debian.org> Sat, 4 Jan 2003 01:02:36 -0500
3641 +
3642 +gdb (5.3-1) unstable; urgency=low
3643 +
3644 + * New upstream release.
3645 + * Patches updated for new release.
3646 + - Patch 14.gdb-maint-its-typo.patch included.
3647 + - Patch 17.tui-fixes.patch included.
3648 + - Patch 18.threads-much-faster.patch included.
3649 +
3650 + -- Daniel Jacobowitz <dan@debian.org> Mon, 16 Dec 2002 14:43:03 -0500
3651 +
3652 +gdb (5.2.debian90.cvs20021120-4) unstable; urgency=low
3653 +
3654 + * Fix thread debugging for statically linked applications
3655 + (Closes: #170107).
3656 + * Prevent a segfault when entering tracepoint actions if you hit EOF
3657 + (Closes: #167997).
3658 +
3659 + -- Daniel Jacobowitz <dan@debian.org> Tue, 3 Dec 2002 14:46:07 -0500
3660 +
3661 +gdb (5.2.debian90.cvs20021120-3) unstable; urgency=low
3662 +
3663 + * Add another Alpha patch for setting breakpoints after the process exits.
3664 + * Disable running the thread tests on Alpha (ew). It hangs the build
3665 + daemon; the problem appears to be in glibc. It returns nonexistant
3666 + and duplicate threads.
3667 +
3668 + -- Daniel Jacobowitz <dan@debian.org> Sun, 24 Nov 2002 23:16:36 -0500
3669 +
3670 +gdb (5.2.debian90.cvs20021120-2) unstable; urgency=low
3671 +
3672 + * Add patch for testsuite false failures on Alpha.
3673 + * Add patch for floating point support on Alpha.
3674 + * Add a patch from the CVS HEAD for schedule-lock mode and for software
3675 + single step platforms.
3676 + * Correct the testsuite to match "help maint dump-me".
3677 +
3678 + -- Daniel Jacobowitz <dan@debian.org> Sun, 24 Nov 2002 18:11:26 -0500
3679 +
3680 +gdb (5.2.debian90.cvs20021120-1) unstable; urgency=low
3681 +
3682 + * New upstream CVS snapshot from 5.3 CVS branch.
3683 + - Builds with new bison (Closes: #169656).
3684 + - Fixes crashes without SSE support or when loading core files without
3685 + applications.
3686 + - TUI no longer crashes if there is no debugging information for main
3687 + (Closes: #141491).
3688 + - GDB no longer crashes on "info win" if there are no windows
3689 + (Closes: #158186).
3690 + - Setting some C++ breakpoints works the first time instead of having
3691 + to do it twice (Closes: #110684).
3692 + * Patches updated for new release.
3693 + - Patch 07.manual-vector.dpatch included in CVS.
3694 + - Patch 09.mips-linux-buildfixes-aug02.patch included in CVS.
3695 + - Patch 10.no-readline-docs.patch removed - we still use readline,
3696 + I believe that leaving it as an appendix to the GDB manual is
3697 + appropriate.
3698 + - Patch 12.tui-readline.patch updated.
3699 + - Patch 17.tui-fixes.patch added to fix a TUI problem with -i=mi.
3700 + * Remove useless --enable-shared.
3701 + * Fix a typo in "help maint dump-me" (Closes: #168495).
3702 + * Add a patch to fix build on m68k, from Michael Fedrowitz
3703 + <michaelf@debian.org> (Closes: #163543).
3704 + * Added a patch to call rl_filename_completion_function instead of
3705 + filename_completion_function, from Matt Chapman
3706 + <matthewc@cse.unsw.edu.au> (Closes: #165366).
3707 + * Tag GDB version with "-debian" because we apply patches.
3708 + * Add a patch which makes debugging threaded applications drastically
3709 + (5x - 10x) faster. Whee!
3710 +
3711 + -- Daniel Jacobowitz <dan@debian.org> Fri, 22 Nov 2002 17:30:26 -0500
3712 +
3713 +gdb (5.2.cvs20020818-3) unstable; urgency=low
3714 +
3715 + * HPPA fix from Randolph Chung (Closes: #158055).
3716 +
3717 + -- Daniel Jacobowitz <dan@debian.org> Sun, 25 Aug 2002 00:37:34 -0400
3718 +
3719 +gdb (5.2.cvs20020818-2) unstable; urgency=low
3720 +
3721 + * MIPS and MIPSel build fixes.
3722 + * Apply and remove patches in numbered order.
3723 + * HPPA build fixes.
3724 +
3725 + -- Daniel Jacobowitz <dan@debian.org> Mon, 19 Aug 2002 10:49:40 -0400
3726 +
3727 +gdb (5.2.cvs20020818-1) unstable; urgency=low
3728 +
3729 + * New upstream CVS snapshot.
3730 + - Don't include <termio.h> in TUI (Closes: #145040).
3731 + - Don't use libthread_db with core files (Closes: #133778).
3732 + * Recompile against current readline package (Closes: #153972).
3733 + * Reduce some thread-db errors to warnings
3734 + (Closes: #123675, #126614, #134693).
3735 + * Bump MAX_UI_OUT_LEVELS for the Hurd (Closes: #145630).
3736 + * Include patch from Richard Hirst to improve function return printing
3737 + on HPPA. It looks like there's finally a little progress on getting
3738 + the HPPA code in upstream... (Closes: #148672).
3739 + * Mention Peter Jay Salzman's GDB tutorial in the documentation
3740 + (Closes: #151128).
3741 +
3742 + -- Daniel Jacobowitz <dan@debian.org> Sun, 18 Aug 2002 23:09:46 -0400
3743 +
3744 +gdb (5.2.cvs20020401-6) unstable; urgency=medium
3745 +
3746 + * More HPPA build fixes - I forgot linux-proc.o again
3747 + (Closes: #143707).
3748 + * Add support for HPPA core files, patch from Randolph Chung
3749 + (Closes: #137316).
3750 +
3751 + -- Daniel Jacobowitz <dan@debian.org> Sun, 21 Apr 2002 10:29:40 -0400
3752 +
3753 +gdb (5.2.cvs20020401-5) unstable; urgency=low
3754 +
3755 + * More HPPA build fixes.
3756 +
3757 + -- Daniel Jacobowitz <dan@debian.org> Fri, 19 Apr 2002 12:43:56 -0400
3758 +
3759 +gdb (5.2.cvs20020401-4) unstable; urgency=medium
3760 +
3761 + * Add linux-proc.o to NATDEPFILES for S/390; should fix S/390 build.
3762 + * Change `value_ptr' to `struct value *' in HPPA patch. Should fix
3763 + HPPA build in combination with libc6 2.2.5-4.0.2.
3764 +
3765 + -- Daniel Jacobowitz <dan@debian.org> Wed, 17 Apr 2002 00:43:32 -0400
3766 +
3767 +gdb (5.2.cvs20020401-3) unstable; urgency=low
3768 +
3769 + * Add a patch to fix initialization on non-multi-arch targets
3770 + (particularly Alpha and Sparc).
3771 + * Enable testsuite on Alpha and Sparc.
3772 +
3773 + -- Daniel Jacobowitz <dan@debian.org> Thu, 4 Apr 2002 21:49:24 -0500
3774 +
3775 +gdb (5.2.cvs20020401-2) unstable; urgency=low
3776 +
3777 + * My apologies to all you autobuilders out there. Results were worse than
3778 + I feared. Testsuite is now run only on PowerPC and i386 until I can
3779 + clean up the results everywhere else.
3780 +
3781 + -- Daniel Jacobowitz <dan@debian.org> Wed, 3 Apr 2002 17:24:17 -0500
3782 +
3783 +gdb (5.2.cvs20020401-1) unstable; urgency=low
3784 +
3785 + * The "Ahhhhhhhhhhhhhhhhhh!" Release.
3786 + * New snapshot from CVS (post-5.2) (yes, I know 5.2 isn't out yet).
3787 + - Fixes crash on printing large types
3788 + (Closes: #111017, #130592, #131033).
3789 + - In one upstream patch and one pending patch, greatly improve
3790 + debugging with GCC 2.95. If you've ever breakpointed the
3791 + beginning of a function and been frustrated when arguments
3792 + printed incorrectly, this release is for you! It should fix most
3793 + occurances of that problem.
3794 + * Patches from J.H.M. Dassen to use system readline. Slightly tweaked.
3795 + - [debian/rules] Build the refcard; figure out patches automatically.
3796 + - [debian/use-dynamic-readline.patch] Link against dynamic readline again.
3797 + - [debian/no-readline-docs.patch] Remove readline documentation.
3798 + - [debian/const-tilde_expand.patch] Bring extern declaration of tilde_expand
3799 + in sync with current readline headers.
3800 + - [debian/rules] Ensure we don't build against the local readline copy by
3801 + mistake; remove generated config.status files.
3802 + * Include gdbserver if it is built.
3803 + * Include a version of GDB with the TUI interface enabled
3804 + (Closes: #137503).
3805 + * Run 'make check' during build, for stabs and DWARF-2.
3806 + * Add --disable-gdbtk (Closes: #115429).
3807 + * Add a patch to prevent a hang while running the Java testsuite if
3808 + gcj-3.0 is installed.
3809 + * Include simulator in the binary package if one is built (PPC, ARM,
3810 + MIPS) (Closes: #123185).
3811 +
3812 + -- Daniel Jacobowitz <dan@debian.org> Mon, 1 Apr 2002 17:17:30 -0500
3813 +
3814 +gdb (5.1.1-1) unstable; urgency=low
3815 +
3816 + * New upstream release (Closes: #132314).
3817 + - Corrected manual licenses (Closes: #129311).
3818 + * Apply HPPA patch (Closes: #127301).
3819 + * Add <stdbool.h> patch to fix conflict with new ncurses.
3820 +
3821 + -- Daniel Jacobowitz <dan@debian.org> Wed, 13 Feb 2002 16:39:32 -0500
3822 +
3823 +gdb (5.1-1) unstable; urgency=low
3824 +
3825 + * New upstream release.
3826 + * All patches merged upstream, including (hopefully) everything needed
3827 + for S/390.
3828 +
3829 + -- Daniel Jacobowitz <dan@debian.org> Fri, 7 Dec 2001 13:04:15 -0500
3830 +
3831 +gdb (5.0.cvs20011007-3) unstable; urgency=low
3832 +
3833 + * Add ARM patch (committed to upstream CVS).
3834 +
3835 + -- Daniel Jacobowitz <dan@debian.org> Wed, 31 Oct 2001 10:59:21 -0500
3836 +
3837 +gdb (5.0.cvs20011007-2) unstable; urgency=low
3838 +
3839 + * Updated S/390 patch from Gerhard Tonn.
3840 +
3841 + -- Daniel Jacobowitz <dan@debian.org> Mon, 8 Oct 2001 13:55:06 -0400
3842 +
3843 +gdb (5.0.cvs20011007-1) unstable; urgency=low
3844 +
3845 + * New upstream release.
3846 + * Remove obsolete patches (gdb-docs, gdb-ppc-core).
3847 + * Add S/390 support patch.
3848 + * Configure for $(DEB_HOST_GNU_TYPE) (Closes: #109715).
3849 +
3850 + -- Daniel Jacobowitz <dan@debian.org> Sun, 7 Oct 2001 14:06:20 -0400
3851 +
3852 +gdb (5.0.cvs20010729-2) unstable; urgency=low
3853 +
3854 + * Fix m68k build. Again. (Closes: #107807).
3855 +
3856 + -- Daniel Jacobowitz <dan@debian.org> Sat, 25 Aug 2001 15:32:16 -0700
3857 +
3858 +gdb (5.0.cvs20010729-1) unstable; urgency=low
3859 +
3860 + * Call dh_installinfo from rules file (Closes: #107119).
3861 + * Put info files in "Development" to match other Debian development tools.
3862 + * Fix malformed gdbint.info file.
3863 + * Use DH_COMPAT=3 to make dh_installinfo work better with wildcards,
3864 + and bump debhelper build dependency.
3865 + * Update to 5.1 release branch (Closes: #103992).
3866 + * Fix PowerPC core files (Re: bug #107072).
3867 + * Fix up patch handling in rules file a little bit.
3868 +
3869 + -- Daniel Jacobowitz <dan@debian.org> Mon, 30 Jul 2001 13:48:27 -0700
3870 +
3871 +gdb (5.0.cvs20010704-1) unstable; urgency=low
3872 +
3873 + * The "Independence Day" release - CVS snapshot from July 4th.
3874 + * New maintainer.
3875 + * Update build-depends (Closes: #96835, #96897).
3876 + * New version includes thread support - for some platforms. I'm not going
3877 + to close the related bugs until I've verified it on a few more targets.
3878 + * Debhelperize (Closes: #97715, #97593).
3879 + * Add Replaces: gdb-arm for upgrades (Closes: #79992).
3880 +
3881 + -- Daniel Jacobowitz <dan@debian.org> Thu, 5 Jul 2001 12:46:06 -0700
3882 +
3883 +gdb (5.0-4) unstable; urgency=low
3884 +
3885 + * Made almost lintian clean:
3886 + - added Section: and Priority: fields in gdb binary package
3887 + - info files are now installed in /usr/share/info
3888 + - binaries get now stripped
3889 + - debian/copyright now refers to '/usr/share/common-licenses' for
3890 + full GPL license text
3891 + (patch by Domenico Andreoli <cavok@debian.org>)
3892 + * added texinfo & tetex-bin to the build-dependencies.
3893 +
3894 + -- Vincent Renardias <vincent@debian.org> Sun, 6 May 2001 21:19:16 +0200
3895 +
3896 +gdb (5.0-3) unstable; urgency=low
3897 +
3898 + * Include upstream README & NEWS files.
3899 + closes: #37978 gdb documentation.
3900 + * s|usr/doc|usr/share/doc|g.
3901 + closes: #69272: gdb: docs should be in /usr/share/doc according policy.
3902 + * Fix description.
3903 +
3904 + -- Vincent Renardias <vincent@debian.org> Wed, 16 Aug 2000 21:58:45 +0200
3905 +
3906 +gdb (5.0-2) unstable; urgency=low
3907 +
3908 + * Include patch to get it to work on m68k.
3909 + closes: #69185: gdb doesn't build on m68k.
3910 +
3911 + -- Vincent Renardias <vincent@debian.org> Wed, 16 Aug 2000 19:33:16 +0200
3912 +
3913 +gdb (5.0-1) unstable; urgency=low
3914 +
3915 + * New upstream code.
3916 + (Foreign patches not re-applied for now. Will see if they
3917 + are necessary)
3918 + closes: #66221 New major upstream version (5.0) out.
3919 + closes: #63337 gdb: Recompilation with libncurse5 needed.
3920 + closes: #58450 gdb: Won't compile on PowerPC.
3921 + closes: #54738 gdb does not compile on i386 under current glibc.
3922 +
3923 + -- Vincent Renardias <vincent@debian.org> Sun, 13 Aug 2000 01:27:40 +0200
3924 +
3925 +gdb (4.18.19990928-1) unstable; urgency=low
3926 +
3927 + * New upstream code.
3928 + Fixes some problems related to the C++ code:
3929 + closes: #46125: gdb seg faults calling C++ functions.
3930 + closes: #46195: gdb is broken for C++
3931 + closes: #43955: gdb can't resolve virtual methods with new g++
3932 + closes: #36341: gdb: Gives a parse error when casting an expression
3933 + * Include patch from David N. Welton <davidw@linuxcare.com>:
3934 + closes: #45308: gdb: Patch for gdb debian/rules
3935 + * ACK NMU:
3936 + closes: #39661: gdb is broken on ppc arch.
3937 + * Now compiles on non-i386 archs:
3938 + closes: #32267
3939 + * Updated my email address.
3940 +
3941 + -- Vincent Renardias <vincent@debian.org> Wed, 29 Sep 1999 17:39:17 +0200
3942 +
3943 +gdb (4.18-1.1) unstable; urgency=low
3944 +
3945 + * Applied some ppc patch i got from the linuxppc gdb.
3946 +
3947 + -- Sven LUTHER <luther@debian.org> Mon, 14 Jun 1999 19:54:49 +0200
3948 +
3949 +gdb (4.18-1) unstable; urgency=low
3950 +
3951 + * New upstream version!
3952 +
3953 + -- Vincent Renardias <vincent@waw.com> Thu, 22 Apr 1999 17:35:41 +0200
3954 +
3955 +gdb (4.17.19981224-3.m68k.objc.threads.hwwp.fpu.gnat) unstable; urgency=low
3956 +
3957 + * Upgrade to new code.
3958 + * Apply HJL's 4.17.0.4 -> 4.17.0.8 patch.
3959 + * Fix #30463.
3960 +
3961 + -- Vincent Renardias <vincent@waw.com> Mon, 18 Jan 1999 23:38:36 +0100
3962 +
3963 +gdb (4.17-4.m68k.objc.threads.hwwp.fpu.gnat.3) frozen unstable; urgency=low
3964 +
3965 + * Non-maintainer upload.
3966 + * Apply threads patch (dynamically) only if building on i386; the patch
3967 + works currently only correct on i386 and breaks compilation at least
3968 + on m68k and sparc.
3969 +
3970 + -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de> Fri, 11 Dec 1998 13:56:00 +0100
3971 +
3972 +gdb (4.17-4.m68k.objc.threads.hwwp.fpu.gnat.2) unstable; urgency=low
3973 +
3974 + * Non-maintainer upload.
3975 + * debian/rules (checkroot): use tab not spaces, thanks to Roman Hodek
3976 + <Roman.Hodek@informatik.uni-erlangen.de>. [#26798]
3977 +
3978 + -- James Troup <james@nocrew.org> Tue, 20 Oct 1998 02:41:26 +0100
3979 +
3980 +gdb (4.17-4.m68k.objc.threads.hwwp.fpu.gnat.1) unstable; urgency=low
3981 +
3982 + * NMU with yet more hideous revision.
3983 + * PowerPC support via Matt McLean.
3984 + * Clean up corrupted m68k files a little bit - move config/m68k/* to
3985 + gdb/config/m68k/* and remove literal ^L's.
3986 +
3987 + -- Daniel Jacobowitz <dan@debian.org> Fri, 11 Sep 1998 22:40:22 -0400
3988 +
3989 +gdb (4.17-4.m68k.objc.threads.hwwp.fpu.gnat) unstable; urgency=low
3990 +
3991 + * Apply yet another patch to improve Objective-C support (Fix #24599).
3992 +
3993 + -- Vincent Renardias <vincent@waw.com> Wed, 15 Jul 1998 12:34:47 +0200
3994 +
3995 +gdb (4.17-3.m68k.objc.threads.hwwp.fpu.gnat) unstable; urgency=low
3996 +
3997 + * re-integrated gnat support.
3998 + (Was repported as a bug against 4.16, patch had been integrated then,
3999 + but dropped while switching to version 4.17).
4000 + (NB: Not being an ADA expert, I'd appreciate if s/o could confirm
4001 + it now works properly, thanx)
4002 +
4003 + -- Vincent Renardias <vincent@waw.com> Fri, 3 Jul 1998 18:46:28 +0200
4004 +
4005 +gdb (4.17-2.m68k.objc.threads.hwwp.fpu) unstable; urgency=low
4006 +
4007 + * Include patch to support debugging of multithreaded programs
4008 + (Bug #23823)
4009 + Note: Needs a patch to libc6 to work (submitted as #24213).
4010 + * Include JH Lu patch to have hardware watchpoint and FPU support
4011 + (Fix bug #660!! (40 months old!!!) & bug #16435)
4012 + * Bug #8861 also appears to be fixed... Isn't that great? :)
4013 + * Now provide the reference card (Bug #20772).
4014 +
4015 + -- Vincent Renardias <vincent@waw.com> Fri, 3 Jul 1998 18:46:28 +0200
4016 +
4017 +gdb (4.17-1) unstable; urgency=low
4018 +
4019 + * Fix #22555 (enable building on sparc)
4020 + * Fix #21932 (acknowledge NMU)
4021 +
4022 + -- Vincent Renardias <vincent@waw.com> Mon, 18 May 1998 17:56:10 +0200
4023 +
4024 +gdb (4.17-0.1) frozen unstable; urgency=low
4025 +
4026 + * New upstream release (differences with upstream 4.16.98 are negligable).
4027 + * Non-maintainer upload.
4028 + * Disabled linking -rpath:
4029 + * bfd/configure.in, opcodes/configure.in: applied libtool-rpath-workaround
4030 + * gdb/configure.in, gdb/configure: don't use -rpath on Linux.
4031 + * regenerate "configure" scripts involved.
4032 +
4033 + -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl> Thu, 30 Apr 1998 19:47:34 +0200
4034 +
4035 +gdb (4.16.98-1) frozen unstable; urgency=low
4036 +
4037 + * New upstream code. Only change relevant on Linux: Patch by
4038 + H.J. Lu so debugging of shared library works properly (That was
4039 + the important patch motivating this upload).
4040 + This release _is_ supposed to be the final gdb-4.17 (from the announce:
4041 + 'I wanted to make a "this is the release unless something is
4042 + very wrong" release and then kick 4.17 out').
4043 +
4044 + -- Vincent Renardias <vincent@waw.com> Thu, 23 Apr 1998 20:44:36 +0200
4045 +
4046 +gdb (4.16.86-1) unstable; urgency=low
4047 +
4048 + * New upstream code. (still unreleased).
4049 + * Re-added the m68k stuff that didn't make it upstream (Bug #19539, #19635).
4050 + * Re-added the Objective-C stuff (Bug #19630)
4051 +
4052 + -- Vincent Renardias <vincent@waw.com> Sat, 14 Mar 1998 23:40:06 +0100
4053 +
4054 +gdb (4.16.85-2) unstable; urgency=low
4055 +
4056 + * debian/rules: Also remove gdb/doc/GDBvn.texi and config.log when cleaning up.
4057 + * The following has been done by <jdassen@wi.LeidenUniv.nl>:
4058 + * TODO: this version of gdb uses an evil new version of libtool which
4059 + forces -rpath. With lesstif, I got around this by replacing the libtool
4060 + scripts with those from the Debian libtool package.
4061 + * Use dynamic readline library.
4062 + * Install with preserved timestamps.
4063 + * Clean out .tab.c files missed by "make distclean", so the .diff.gz is
4064 + smaller.
4065 + * Clean out symlinks, so dpkg-source works after debian/rules build clean.
4066 + * Several other minor clean-ups of the rules file.
4067 + * Updated FSF address (lintian).
4068 + * Bumped Standards-Version.
4069 +
4070 + -- Vincent Renardias <vincent@waw.com> Fri, 6 Mar 1998 20:49:54 +0100
4071 +
4072 +gdb (4.16.85-1) unstable; urgency=low
4073 +
4074 + * New upstream code (Although not released yet).
4075 +
4076 + -- Vincent Renardias <vincent@waw.com> Thu, 5 Mar 1998 20:19:14 +0100
4077 +
4078 +gdb (4.16-12) unstable; urgency=low
4079 +
4080 + * Applied alpha patches (#11841).
4081 +
4082 + -- Vincent Renardias <vincent@waw.com> Mon, 4 Aug 1997 22:28:54 +0200
4083 +
4084 +gdb (4.16-11) unstable; urgency=low
4085 +
4086 + * Included patch to fix bugs (#11552,#11324).
4087 +
4088 + -- Vincent Renardias <vincent@waw.com> Wed, 30 Jul 1997 20:40:01 +0200
4089 +
4090 +gdb (4.16-10) unstable; urgency=low
4091 +
4092 + * Fixed #11136 (support for Ada;
4093 + Thanx to Marc Eichin for pointing this patch).
4094 +
4095 + -- Vincent Renardias <vincent@waw.com> Thu, 10 Jul 1997 19:38:07 +0200
4096 +
4097 +gdb (4.16-9) unstable; urgency=low
4098 +
4099 + * Fixed #11037 (compilation on m68k).
4100 +
4101 + -- Vincent Renardias <vincent@waw.com> Sat, 5 Jul 1997 16:14:39 +0200
4102 +
4103 +gdb (4.16-8) unstable; urgency=low
4104 +
4105 + * Compiled with libc6/ncurses3.4/libreadline2.1.
4106 + * Fixed #9654 (cosmetic fix).
4107 + * Updated debian/control file (now supports Objective-C).
4108 +
4109 + -- Vincent Renardias <vincent@waw.com> Sat, 21 Jun 1997 15:15:13 +0200
4110 +
4111 +gdb (4.16-7) unstable; urgency=low
4112 +
4113 + * Fixed typo. in documentation (Fixes bug #5477).
4114 +
4115 + -- Vincent Renardias <vincent@waw.com> Mon, 7 Apr 1997 16:35:53 +0200
4116 +
4117 +gdb (4.16-6) unstable; urgency=low
4118 +
4119 + * Corrected texinfo documentation (Fixes bug #3823).
4120 + * Added upstream ChangeLog file.
4121 +
4122 + -- Vincent Renardias <vincent@waw.com> Sun, 16 Mar 1997 18:32:23 +0100
4123 +
4124 +gdb (4.16-5) unstable; urgency=low
4125 +
4126 + * Included patch for glibc-2.0 support.
4127 +
4128 + -- Vincent Renardias <vincent@waw.com> Sun, 16 Mar 1997 07:46:29 +0100
4129 +
4130 +gdb (4.16-4) unstable; urgency=low
4131 +
4132 + * Included patch for Objective-C support (Fixes bug #7063).
4133 +
4134 + -- Vincent Renardias <vincent@waw.com> Sun, 16 Mar 1997 03:12:13 +0100
4135 +
4136 +gdb (4.16-3) unstable; urgency=low
4137 +
4138 + * New maintainer.
4139 + * Included patches for m68k support.
4140 +
4141 + -- Vincent Renardias <vincent@waw.com> Fri, 14 Mar 1997 22:07:58 +0100
4142 +
4143 +gdb (4.16-2) unstable; urgency=MEDIUM
4144 +
4145 + * New caretaker: Stuart Lamble (note: this package is still up
4146 + for adoption, as I would prefer not to be maintaining it
4147 + full-time.)
4148 + * Upgraded to the 2.1.1.0 source format.
4149 + * Recompiled, with a corrected procfs.h, to correct problems with
4150 + ELF coredumps.
4151 + * Reformatted the changelog :-)
4152 +
4153 + -- Stuart Lamble <lamble@yoyo.cc.monash.edu.au> Sun, 20 Oct 1996 18:48:40 +1000
4154 +
4155 +gdb (4.16-1) unstable; urgency=low
4156 +
4157 + * Updated to new upstream version (Bug#4373)
4158 + * Added a simple extended description (Bug#3599)
4159 +
4160 + -- David Engel
4161 --- gdb-6.4.orig/debian/control
4162 +++ gdb-6.4/debian/control
4163 @@ -0,0 +1,19 @@
4164 +Source: gdb
4165 +Maintainer: Daniel Jacobowitz <dan@debian.org>
4166 +Section: devel
4167 +Priority: standard
4168 +Standards-Version: 3.5.3
4169 +Build-Depends: autoconf, libtool, texinfo (>= 4.7-2.2), tetex-bin, libncurses5-dev, libreadline5-dev, bison, gettext, debhelper (>= 4.9.0), dejagnu, gcj [!mips !mipsel !hurd-i386], gobjc, cdbs (>= 0.4.17), quilt (>= 0.30-1), libunwind7-dev [ia64], flex | flex-old
4170 +
4171 +Package: gdb
4172 +Architecture: any
4173 +Section: devel
4174 +Depends: ${shlibs:Depends}
4175 +Conflicts: gdb-arm
4176 +Replaces: gdb-arm, insight (<< 6.1+cvs.2004.04.07-1)
4177 +Description: The GNU Debugger
4178 + GDB is a source-level debugger, capable of breaking programs at
4179 + any specific line, displaying variable values, and determining
4180 + where errors occurred. Currently, it works for C, C++, Fortran
4181 + Modula 2 and Java programs. A must-have for any serious
4182 + programmer.
4183 --- gdb-6.4.orig/debian/compat
4184 +++ gdb-6.4/debian/compat
4185 @@ -0,0 +1 @@
4186 +4
4187 --- gdb-6.4.orig/debian/gdb.info
4188 +++ gdb-6.4/debian/gdb.info
4189 @@ -0,0 +1,3 @@
4190 +objdir/gdb/doc/gdb.info*
4191 +objdir/gdb/doc/gdbint.info*
4192 +objdir/gdb/doc/stabs.info*
4193 --- gdb-6.4.orig/debian/README.Debian
4194 +++ gdb-6.4/debian/README.Debian
4195 @@ -0,0 +1,6 @@
4196 +GDB is a complex program. It comes with an Info manual (`info gdb' or your
4197 +favorite other info browser), which serves as a good command reference.
4198 +
4199 +There are also a number of books and tutorials devoted to GDB. One
4200 +particularly useful guide is Peter Jay Salzman's, at:
4201 + http://www.dirac.org/linux/gdb/
4202 --- gdb-6.4.orig/debian/copyright
4203 +++ gdb-6.4/debian/copyright
4204 @@ -0,0 +1,414 @@
4205 +This is the Debian GNU/Linux packaged version of the GNU debugger, GDB.
4206 +
4207 +Earlier versions of this package were assembled by David Engel
4208 +<david@ods.com>, Stuart Lamble <lamble@yoyo.cc.monash.edu.au>, and others.
4209 +
4210 +GDB is Copyright (C) Free Software Foundation, Inc.
4211 +
4212 + This program is free software; you can redistribute it and/or modify
4213 + it under the terms of the GNU General Public License as published by
4214 + the Free Software Foundation; either version 2 of the License, or
4215 + (at your option) any later version.
4216 +
4217 + This program is distributed in the hope that it will be useful,
4218 + but WITHOUT ANY WARRANTY; without even the implied warranty of
4219 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4220 + GNU General Public License for more details.
4221 +
4222 + You should have received a copy of the GNU General Public License
4223 + along with this program; if not, write to the Free Software
4224 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4225 +
4226 +On Debian GNU/Linux systems, the complete text of the GNU General
4227 +Public License can be found in `/usr/share/common-licenses'.
4228 +
4229 +===
4230 +
4231 +The GDB manual and associated documentation are also Copyright (C) Free
4232 +Software Foundation, Inc. They are distributed under the GNU Free
4233 +Documentation License, shown below, with these terms:
4234 +
4235 +
4236 + Permission is granted to copy, distribute and/or modify this document
4237 +under the terms of the GNU Free Documentation License, Version 1.1 or
4238 +any later version published by the Free Software Foundation; with the
4239 +Invariant Sections being "Free Software" and "Free Software Needs Free
4240 +Documentation", with the Front-Cover Texts being "A GNU Manual," and
4241 +with the Back-Cover Texts as in (a) below.
4242 +
4243 + (a) The Free Software Foundation's Back-Cover Text is: "You have
4244 +freedom to copy and modify this GNU Manual, like GNU software. Copies
4245 +published by the Free Software Foundation raise funds for GNU
4246 +development."
4247 +
4248 +
4249 +GNU Free Documentation License
4250 +******************************
4251 +
4252 + Version 1.1, March 2000
4253 + Copyright (C) 2000 Free Software Foundation, Inc.
4254 + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4255 +
4256 + Everyone is permitted to copy and distribute verbatim copies
4257 + of this license document, but changing it is not allowed.
4258 +
4259 +
4260 + 0. PREAMBLE
4261 +
4262 + The purpose of this License is to make a manual, textbook, or other
4263 + written document "free" in the sense of freedom: to assure everyone
4264 + the effective freedom to copy and redistribute it, with or without
4265 + modifying it, either commercially or noncommercially. Secondarily,
4266 + this License preserves for the author and publisher a way to get
4267 + credit for their work, while not being considered responsible for
4268 + modifications made by others.
4269 +
4270 + This License is a kind of "copyleft", which means that derivative
4271 + works of the document must themselves be free in the same sense.
4272 + It complements the GNU General Public License, which is a copyleft
4273 + license designed for free software.
4274 +
4275 + We have designed this License in order to use it for manuals for
4276 + free software, because free software needs free documentation: a
4277 + free program should come with manuals providing the same freedoms
4278 + that the software does. But this License is not limited to
4279 + software manuals; it can be used for any textual work, regardless
4280 + of subject matter or whether it is published as a printed book.
4281 + We recommend this License principally for works whose purpose is
4282 + instruction or reference.
4283 +
4284 +
4285 + 1. APPLICABILITY AND DEFINITIONS
4286 +
4287 + This License applies to any manual or other work that contains a
4288 + notice placed by the copyright holder saying it can be distributed
4289 + under the terms of this License. The "Document", below, refers to
4290 + any such manual or work. Any member of the public is a licensee,
4291 + and is addressed as "you."
4292 +
4293 + A "Modified Version" of the Document means any work containing the
4294 + Document or a portion of it, either copied verbatim, or with
4295 + modifications and/or translated into another language.
4296 +
4297 + A "Secondary Section" is a named appendix or a front-matter
4298 + section of the Document that deals exclusively with the
4299 + relationship of the publishers or authors of the Document to the
4300 + Document's overall subject (or to related matters) and contains
4301 + nothing that could fall directly within that overall subject.
4302 + (For example, if the Document is in part a textbook of
4303 + mathematics, a Secondary Section may not explain any mathematics.)
4304 + The relationship could be a matter of historical connection with
4305 + the subject or with related matters, or of legal, commercial,
4306 + philosophical, ethical or political position regarding them.
4307 +
4308 + The "Invariant Sections" are certain Secondary Sections whose
4309 + titles are designated, as being those of Invariant Sections, in
4310 + the notice that says that the Document is released under this
4311 + License.
4312 +
4313 + The "Cover Texts" are certain short passages of text that are
4314 + listed, as Front-Cover Texts or Back-Cover Texts, in the notice
4315 + that says that the Document is released under this License.
4316 +
4317 + A "Transparent" copy of the Document means a machine-readable copy,
4318 + represented in a format whose specification is available to the
4319 + general public, whose contents can be viewed and edited directly
4320 + and straightforwardly with generic text editors or (for images
4321 + composed of pixels) generic paint programs or (for drawings) some
4322 + widely available drawing editor, and that is suitable for input to
4323 + text formatters or for automatic translation to a variety of
4324 + formats suitable for input to text formatters. A copy made in an
4325 + otherwise Transparent file format whose markup has been designed
4326 + to thwart or discourage subsequent modification by readers is not
4327 + Transparent. A copy that is not "Transparent" is called "Opaque."
4328 +
4329 + Examples of suitable formats for Transparent copies include plain
4330 + ASCII without markup, Texinfo input format, LaTeX input format,
4331 + SGML or XML using a publicly available DTD, and
4332 + standard-conforming simple HTML designed for human modification.
4333 + Opaque formats include PostScript, PDF, proprietary formats that
4334 + can be read and edited only by proprietary word processors, SGML
4335 + or XML for which the DTD and/or processing tools are not generally
4336 + available, and the machine-generated HTML produced by some word
4337 + processors for output purposes only.
4338 +
4339 + The "Title Page" means, for a printed book, the title page itself,
4340 + plus such following pages as are needed to hold, legibly, the
4341 + material this License requires to appear in the title page. For
4342 + works in formats which do not have any title page as such, "Title
4343 + Page" means the text near the most prominent appearance of the
4344 + work's title, preceding the beginning of the body of the text.
4345 +
4346 + 2. VERBATIM COPYING
4347 +
4348 + You may copy and distribute the Document in any medium, either
4349 + commercially or noncommercially, provided that this License, the
4350 + copyright notices, and the license notice saying this License
4351 + applies to the Document are reproduced in all copies, and that you
4352 + add no other conditions whatsoever to those of this License. You
4353 + may not use technical measures to obstruct or control the reading
4354 + or further copying of the copies you make or distribute. However,
4355 + you may accept compensation in exchange for copies. If you
4356 + distribute a large enough number of copies you must also follow
4357 + the conditions in section 3.
4358 +
4359 + You may also lend copies, under the same conditions stated above,
4360 + and you may publicly display copies.
4361 +
4362 + 3. COPYING IN QUANTITY
4363 +
4364 + If you publish printed copies of the Document numbering more than
4365 + 100, and the Document's license notice requires Cover Texts, you
4366 + must enclose the copies in covers that carry, clearly and legibly,
4367 + all these Cover Texts: Front-Cover Texts on the front cover, and
4368 + Back-Cover Texts on the back cover. Both covers must also clearly
4369 + and legibly identify you as the publisher of these copies. The
4370 + front cover must present the full title with all words of the
4371 + title equally prominent and visible. You may add other material
4372 + on the covers in addition. Copying with changes limited to the
4373 + covers, as long as they preserve the title of the Document and
4374 + satisfy these conditions, can be treated as verbatim copying in
4375 + other respects.
4376 +
4377 + If the required texts for either cover are too voluminous to fit
4378 + legibly, you should put the first ones listed (as many as fit
4379 + reasonably) on the actual cover, and continue the rest onto
4380 + adjacent pages.
4381 +
4382 + If you publish or distribute Opaque copies of the Document
4383 + numbering more than 100, you must either include a
4384 + machine-readable Transparent copy along with each Opaque copy, or
4385 + state in or with each Opaque copy a publicly-accessible
4386 + computer-network location containing a complete Transparent copy
4387 + of the Document, free of added material, which the general
4388 + network-using public has access to download anonymously at no
4389 + charge using public-standard network protocols. If you use the
4390 + latter option, you must take reasonably prudent steps, when you
4391 + begin distribution of Opaque copies in quantity, to ensure that
4392 + this Transparent copy will remain thus accessible at the stated
4393 + location until at least one year after the last time you
4394 + distribute an Opaque copy (directly or through your agents or
4395 + retailers) of that edition to the public.
4396 +
4397 + It is requested, but not required, that you contact the authors of
4398 + the Document well before redistributing any large number of
4399 + copies, to give them a chance to provide you with an updated
4400 + version of the Document.
4401 +
4402 + 4. MODIFICATIONS
4403 +
4404 + You may copy and distribute a Modified Version of the Document
4405 + under the conditions of sections 2 and 3 above, provided that you
4406 + release the Modified Version under precisely this License, with
4407 + the Modified Version filling the role of the Document, thus
4408 + licensing distribution and modification of the Modified Version to
4409 + whoever possesses a copy of it. In addition, you must do these
4410 + things in the Modified Version:
4411 +
4412 + A. Use in the Title Page (and on the covers, if any) a title
4413 + distinct from that of the Document, and from those of previous
4414 + versions (which should, if there were any, be listed in the
4415 + History section of the Document). You may use the same title
4416 + as a previous version if the original publisher of that version
4417 + gives permission.
4418 + B. List on the Title Page, as authors, one or more persons or
4419 + entities responsible for authorship of the modifications in the
4420 + Modified Version, together with at least five of the principal
4421 + authors of the Document (all of its principal authors, if it
4422 + has less than five).
4423 + C. State on the Title page the name of the publisher of the
4424 + Modified Version, as the publisher.
4425 + D. Preserve all the copyright notices of the Document.
4426 + E. Add an appropriate copyright notice for your modifications
4427 + adjacent to the other copyright notices.
4428 + F. Include, immediately after the copyright notices, a license
4429 + notice giving the public permission to use the Modified Version
4430 + under the terms of this License, in the form shown in the
4431 + Addendum below.
4432 + G. Preserve in that license notice the full lists of Invariant
4433 + Sections and required Cover Texts given in the Document's
4434 + license notice.
4435 + H. Include an unaltered copy of this License.
4436 + I. Preserve the section entitled "History", and its title, and add
4437 + to it an item stating at least the title, year, new authors, and
4438 + publisher of the Modified Version as given on the Title Page.
4439 + If there is no section entitled "History" in the Document,
4440 + create one stating the title, year, authors, and publisher of
4441 + the Document as given on its Title Page, then add an item
4442 + describing the Modified Version as stated in the previous
4443 + sentence.
4444 + J. Preserve the network location, if any, given in the Document for
4445 + public access to a Transparent copy of the Document, and
4446 + likewise the network locations given in the Document for
4447 + previous versions it was based on. These may be placed in the
4448 + "History" section. You may omit a network location for a work
4449 + that was published at least four years before the Document
4450 + itself, or if the original publisher of the version it refers
4451 + to gives permission.
4452 + K. In any section entitled "Acknowledgements" or "Dedications",
4453 + preserve the section's title, and preserve in the section all the
4454 + substance and tone of each of the contributor acknowledgements
4455 + and/or dedications given therein.
4456 + L. Preserve all the Invariant Sections of the Document,
4457 + unaltered in their text and in their titles. Section numbers
4458 + or the equivalent are not considered part of the section titles.
4459 + M. Delete any section entitled "Endorsements." Such a section
4460 + may not be included in the Modified Version.
4461 + N. Do not retitle any existing section as "Endorsements" or to
4462 + conflict in title with any Invariant Section.
4463 +
4464 + If the Modified Version includes new front-matter sections or
4465 + appendices that qualify as Secondary Sections and contain no
4466 + material copied from the Document, you may at your option
4467 + designate some or all of these sections as invariant. To do this,
4468 + add their titles to the list of Invariant Sections in the Modified
4469 + Version's license notice. These titles must be distinct from any
4470 + other section titles.
4471 +
4472 + You may add a section entitled "Endorsements", provided it contains
4473 + nothing but endorsements of your Modified Version by various
4474 + parties-for example, statements of peer review or that the text has
4475 + been approved by an organization as the authoritative definition
4476 + of a standard.
4477 +
4478 + You may add a passage of up to five words as a Front-Cover Text,
4479 + and a passage of up to 25 words as a Back-Cover Text, to the end
4480 + of the list of Cover Texts in the Modified Version. Only one
4481 + passage of Front-Cover Text and one of Back-Cover Text may be
4482 + added by (or through arrangements made by) any one entity. If the
4483 + Document already includes a cover text for the same cover,
4484 + previously added by you or by arrangement made by the same entity
4485 + you are acting on behalf of, you may not add another; but you may
4486 + replace the old one, on explicit permission from the previous
4487 + publisher that added the old one.
4488 +
4489 + The author(s) and publisher(s) of the Document do not by this
4490 + License give permission to use their names for publicity for or to
4491 + assert or imply endorsement of any Modified Version.
4492 +
4493 + 5. COMBINING DOCUMENTS
4494 +
4495 + You may combine the Document with other documents released under
4496 + this License, under the terms defined in section 4 above for
4497 + modified versions, provided that you include in the combination
4498 + all of the Invariant Sections of all of the original documents,
4499 + unmodified, and list them all as Invariant Sections of your
4500 + combined work in its license notice.
4501 +
4502 + The combined work need only contain one copy of this License, and
4503 + multiple identical Invariant Sections may be replaced with a single
4504 + copy. If there are multiple Invariant Sections with the same name
4505 + but different contents, make the title of each such section unique
4506 + by adding at the end of it, in parentheses, the name of the
4507 + original author or publisher of that section if known, or else a
4508 + unique number. Make the same adjustment to the section titles in
4509 + the list of Invariant Sections in the license notice of the
4510 + combined work.
4511 +
4512 + In the combination, you must combine any sections entitled
4513 + "History" in the various original documents, forming one section
4514 + entitled "History"; likewise combine any sections entitled
4515 + "Acknowledgements", and any sections entitled "Dedications." You
4516 + must delete all sections entitled "Endorsements."
4517 +
4518 + 6. COLLECTIONS OF DOCUMENTS
4519 +
4520 + You may make a collection consisting of the Document and other
4521 + documents released under this License, and replace the individual
4522 + copies of this License in the various documents with a single copy
4523 + that is included in the collection, provided that you follow the
4524 + rules of this License for verbatim copying of each of the
4525 + documents in all other respects.
4526 +
4527 + You may extract a single document from such a collection, and
4528 + distribute it individually under this License, provided you insert
4529 + a copy of this License into the extracted document, and follow
4530 + this License in all other respects regarding verbatim copying of
4531 + that document.
4532 +
4533 + 7. AGGREGATION WITH INDEPENDENT WORKS
4534 +
4535 + A compilation of the Document or its derivatives with other
4536 + separate and independent documents or works, in or on a volume of
4537 + a storage or distribution medium, does not as a whole count as a
4538 + Modified Version of the Document, provided no compilation
4539 + copyright is claimed for the compilation. Such a compilation is
4540 + called an "aggregate", and this License does not apply to the
4541 + other self-contained works thus compiled with the Document, on
4542 + account of their being thus compiled, if they are not themselves
4543 + derivative works of the Document.
4544 +
4545 + If the Cover Text requirement of section 3 is applicable to these
4546 + copies of the Document, then if the Document is less than one
4547 + quarter of the entire aggregate, the Document's Cover Texts may be
4548 + placed on covers that surround only the Document within the
4549 + aggregate. Otherwise they must appear on covers around the whole
4550 + aggregate.
4551 +
4552 + 8. TRANSLATION
4553 +
4554 + Translation is considered a kind of modification, so you may
4555 + distribute translations of the Document under the terms of section
4556 + 4. Replacing Invariant Sections with translations requires special
4557 + permission from their copyright holders, but you may include
4558 + translations of some or all Invariant Sections in addition to the
4559 + original versions of these Invariant Sections. You may include a
4560 + translation of this License provided that you also include the
4561 + original English version of this License. In case of a
4562 + disagreement between the translation and the original English
4563 + version of this License, the original English version will prevail.
4564 +
4565 + 9. TERMINATION
4566 +
4567 + You may not copy, modify, sublicense, or distribute the Document
4568 + except as expressly provided for under this License. Any other
4569 + attempt to copy, modify, sublicense or distribute the Document is
4570 + void, and will automatically terminate your rights under this
4571 + License. However, parties who have received copies, or rights,
4572 + from you under this License will not have their licenses
4573 + terminated so long as such parties remain in full compliance.
4574 +
4575 + 10. FUTURE REVISIONS OF THIS LICENSE
4576 +
4577 + The Free Software Foundation may publish new, revised versions of
4578 + the GNU Free Documentation License from time to time. Such new
4579 + versions will be similar in spirit to the present version, but may
4580 + differ in detail to address new problems or concerns. See
4581 + http://www.gnu.org/copyleft/.
4582 +
4583 + Each version of the License is given a distinguishing version
4584 + number. If the Document specifies that a particular numbered
4585 + version of this License "or any later version" applies to it, you
4586 + have the option of following the terms and conditions either of
4587 + that specified version or of any later version that has been
4588 + published (not as a draft) by the Free Software Foundation. If
4589 + the Document does not specify a version number of this License,
4590 + you may choose any version ever published (not as a draft) by the
4591 + Free Software Foundation.
4592 +
4593 +
4594 +ADDENDUM: How to use this License for your documents
4595 +====================================================
4596 +
4597 +To use this License in a document you have written, include a copy of
4598 +the License in the document and put the following copyright and license
4599 +notices just after the title page:
4600 +
4601 + Copyright (C) YEAR YOUR NAME.
4602 + Permission is granted to copy, distribute and/or modify this document
4603 + under the terms of the GNU Free Documentation License, Version 1.1
4604 + or any later version published by the Free Software Foundation;
4605 + with the Invariant Sections being LIST THEIR TITLES, with the
4606 + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
4607 + A copy of the license is included in the section entitled "GNU
4608 + Free Documentation License."
4609 +
4610 + If you have no Invariant Sections, write "with no Invariant Sections"
4611 +instead of saying which ones are invariant. If you have no Front-Cover
4612 +Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
4613 +LIST"; likewise for Back-Cover Texts.
4614 +
4615 + If your document contains nontrivial examples of program code, we
4616 +recommend releasing these examples in parallel under your choice of
4617 +free software license, such as the GNU General Public License, to
4618 +permit their use in free software.
4619 --- gdb-6.4.orig/debian/rules
4620 +++ gdb-6.4/debian/rules
4621 @@ -0,0 +1,128 @@
4622 +#!/usr/bin/make -f
4623 +
4624 +DEB_BUILDDIR := $(shell pwd)/objdir
4625 +
4626 +# This implements the .deb package creation using debhelper.
4627 +include /usr/share/cdbs/1/rules/debhelper.mk
4628 +
4629 +# This implements building using a configure script and Makefile.
4630 +include /usr/share/cdbs/1/class/autotools.mk
4631 +
4632 +# Quilt-based patches in debian/patches.
4633 +include /usr/share/cdbs/1/rules/patchsys-quilt.mk
4634 +
4635 +
4636 +install = /usr/bin/install -p
4637 +
4638 +# Rather paranoid than sorry. Make the shell exit with an error if an
4639 +# untested command fails.
4640 +SHELL += -e
4641 +
4642 +DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
4643 +DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
4644 +DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
4645 +
4646 +run_tests := yes
4647 +run_thread_tests := yes
4648 +
4649 +ifneq ($(DEB_HOST_GNU_SYSTEM),linux-gnu)
4650 + run_tests := no
4651 +endif
4652 +
4653 +ifeq ($(filter $(DEB_HOST_GNU_CPU),alpha i486 hppa ia64 powerpc s390 sparc x86_64),)
4654 + run_tests := no
4655 +endif
4656 +
4657 +ifeq ($(DEB_HOST_GNU_CPU),ia64)
4658 + arch_config_args := --with-libunwind
4659 +endif
4660 +
4661 +INSTALL = $(install)
4662 +export INSTALL
4663 +
4664 +# We pass srcdir explicitly to avoid an extra '/.' at the end of it. That
4665 +# causes a harmless, but ugly, testsuite failure in maint.exp.
4666 +DEB_CONFIGURE_EXTRA_FLAGS := $(DEB_HOST_GNU_TYPE) --disable-gdbtk \
4667 + --disable-shared --enable-tui --srcdir=$(shell pwd) \
4668 + $(arch_config_args)
4669 +
4670 +DEB_MAKE_BUILD_TARGET = all info
4671 +
4672 +post-patches::
4673 + if ! test -f gdb/version.in.backup; then \
4674 + mv -f gdb/version.in gdb/version.in.backup; \
4675 + sed -e 's/$$/-debian/' < gdb/version.in.backup > gdb/version.in; \
4676 + fi
4677 +
4678 +# This should probably be common-post-build-arch, but that runs during
4679 +# install, under fakeroot, in CDBS 0.4.21.
4680 +build/gdb:: check-stamp
4681 + $(MAKE) -C objdir/gdb/doc refcard.dvi refcard.ps
4682 +
4683 +check-stamp:
4684 +ifeq ($(run_tests),yes)
4685 +ifeq ($(run_thread_tests),no)
4686 + echo " $(foreach exp,$(wildcard gdb/testsuite/gdb.threads/*.exp),mv $(exp) $(exp).disabled;)"
4687 + $(foreach exp,$(wildcard gdb/testsuite/gdb.threads/*.exp),mv $(exp) $(exp).disabled;)
4688 +endif
4689 + -ulimit -c unlimited; \
4690 + $(MAKE) -C objdir/gdb check \
4691 + 2>&1 | tee objdir/check.log
4692 +ifeq ($(run_thread_tests),no)
4693 + $(foreach exp,$(wildcard gdb/testsuite/gdb.threads/*.exp.disabled),mv $(exp) $(subst .disabled,,$(exp);))
4694 +endif
4695 +endif
4696 + touch $@
4697 +
4698 +clean::
4699 + rm -rf objdir
4700 +
4701 + if test -f gdb/version.in.backup; then \
4702 + mv -f gdb/version.in.backup gdb/version.in; \
4703 + fi
4704 +
4705 +# # For snapshots this is appropriate; careful of release tarballs
4706 +# # which include .gmo files.
4707 +# find -type f -name '*.gmo' | xargs rm -f
4708 +
4709 + # Prevent gratuitous rebuilds of the BFD documentation, since it
4710 + # updates the copy in the source directory.
4711 + find bfd -name bfd.info\* | xargs --no-run-if-empty touch
4712 +
4713 + rm -f check-stamp
4714 +
4715 +binary-post-install/gdb ::
4716 + if [ -x debian/gdb/usr/bin/run ]; then \
4717 + mv debian/gdb/usr/bin/run \
4718 + debian/gdb/usr/bin/$(DEB_HOST_GNU_TYPE)-run; \
4719 + mv debian/gdb/usr/share/man/man1/run.1 \
4720 + debian/gdb/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-run.1; \
4721 + fi
4722 +ifeq ($(run_tests),yes)
4723 + install -d debian/gdb/usr/share/doc/gdb
4724 + install -m 644 objdir/check.log \
4725 + debian/gdb/usr/share/doc/gdb/check.log
4726 +endif
4727 +
4728 + $(INSTALL) -m 755 -o root -g root \
4729 + gdb/gdb_gcore.sh debian/gdb/usr/bin/gcore
4730 +
4731 + rm -rf debian/gdb/usr/include \
4732 + debian/gdb/usr/lib/lib*.* \
4733 + debian/gdb/usr/share/info/annotate.info* \
4734 + debian/gdb/usr/share/info/bfd.info* \
4735 + debian/gdb/usr/share/info/configure.info* \
4736 + debian/gdb/usr/share/info/mmalloc.info* \
4737 + debian/gdb/usr/share/info/standards.info* \
4738 + debian/gdb/usr/share/locale
4739 +
4740 +#debian/control:: debian/control.in
4741 +# cat debian/control.in \
4742 +# | sed "s/@kfreebsd@/`type-handling any kfreebsd-gnu`/g" \
4743 +# | sed "s/@gnu@/`type-handling any gnu`/g" \
4744 +# > debian/control
4745 +
4746 +DEB_INSTALL_DOCS_gdb = gdb/NEWS gdb/README gdb/doc/refcard.tex \
4747 + objdir/gdb/doc/refcard.dvi objdir/gdb/doc/refcard.ps
4748 +
4749 +DEB_INSTALL_CHANGELOGS_gdb = gdb/ChangeLog