Annotation of /trunk/gdb/patches/gdb-6.4-1ubuntu5.patch
Parent Directory | Revision Log
Revision 144 -
(hide annotations)
(download)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 184911 byte(s)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 184911 byte(s)
-import
1 | niro | 144 | --- 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 (¤t_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 (¤t_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 (¤t_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, ¤t_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 (¤t_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, ¬ify); | ||
1775 | ++ err = current_pointers->td_ta_event_addr_p (thread_agent, event, ¬ify); | ||
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, ¤t_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 |