Contents of /trunk/gdb/patches/gdb-6.4-1ubuntu5.patch
Parent Directory | Revision Log
Revision 144 -
(show 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 | --- 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 |