]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blob - gdb/patches/gdb-upstream.patch
Merge remote-tracking branch 'stevee/audit'
[people/ms/ipfire-3.x.git] / gdb / patches / gdb-upstream.patch
1 http://sourceware.org/ml/binutils-cvs/2011-07/msg00116.html
2
3 ### src/include/ChangeLog 2011/07/22 14:37:50 1.546
4 ### src/include/ChangeLog 2011/07/22 20:37:50 1.547
5 ## -1,5 +1,8 @@
6 2011-07-22 Jakub Jelinek <jakub@redhat.com>
7
8 + * dwarf2.h (DW_AT_GNU_macros): New.
9 + (enum dwarf_macro_record_type): New enum. Add DW_MACRO_GNU_*.
10 +
11 PR c++/49756
12 * libiberty.h (stack_limit_increase): New prototype.
13
14 --- src/include/dwarf2.h 2011/06/22 15:03:19 1.26
15 +++ src/include/dwarf2.h 2011/07/22 20:37:50 1.27
16 @@ -366,6 +366,8 @@
17 DW_AT_GNU_all_tail_call_sites = 0x2116,
18 DW_AT_GNU_all_call_sites = 0x2117,
19 DW_AT_GNU_all_source_call_sites = 0x2118,
20 + /* Section offset into .debug_macro section. */
21 + DW_AT_GNU_macros = 0x2119,
22 /* VMS extensions. */
23 DW_AT_VMS_rtnbeg_pd_address = 0x2201,
24 /* GNAT extensions. */
25 @@ -879,6 +881,20 @@
26 DW_MACINFO_end_file = 4,
27 DW_MACINFO_vendor_ext = 255
28 };
29 +
30 +/* Names and codes for new style macro information. */
31 +enum dwarf_macro_record_type
32 + {
33 + DW_MACRO_GNU_define = 1,
34 + DW_MACRO_GNU_undef = 2,
35 + DW_MACRO_GNU_start_file = 3,
36 + DW_MACRO_GNU_end_file = 4,
37 + DW_MACRO_GNU_define_indirect = 5,
38 + DW_MACRO_GNU_undef_indirect = 6,
39 + DW_MACRO_GNU_transparent_include = 7,
40 + DW_MACRO_GNU_lo_user = 0xe0,
41 + DW_MACRO_GNU_hi_user = 0xff
42 + };
43 \f
44 /* @@@ For use with GNU frame unwind information. */
45
46
47
48
49 FYI: implement new DWARF macro proposal
50 http://sourceware.org/ml/gdb-patches/2011-07/msg00732.html
51 http://sourceware.org/ml/gdb-cvs/2011-07/msg00212.html
52
53 ### src/gdb/ChangeLog 2011/07/26 15:24:01 1.13224
54 ### src/gdb/ChangeLog 2011/07/26 17:04:21 1.13225
55 ## -1,3 +1,20 @@
56 +2011-07-26 Tom Tromey <tromey@redhat.com>
57 +
58 + * symfile.h (struct dwarf2_debug_sections) <macro>: New field.
59 + * dwarf2read.c (read_indirect_string_at_offset): New function.
60 + (read_indirect_string): Use it.
61 + (dwarf_decode_macro_bytes): New function, taken from
62 + dwarf_decode_macros. Handle DW_MACRO_GNU_*.
63 + (dwarf_decode_macros): Use it. handle DW_MACRO_GNU_*.
64 + (dwarf_parse_macro_header, skip_form_bytes, skip_unknown_opcode):
65 + New functions.
66 + (struct dwarf2_per_objfile) <macro>: New field.
67 + (dwarf2_elf_names): Add .debug_macro.
68 + (dwarf2_macros_too_long_complaint): Add 'section' argument.
69 + (dwarf2_locate_sections): Handle new section.
70 + (read_file_scope): Handle DW_AT_GNU_macros.
71 + (dwarf2_per_objfile_free): Unmap the .debug_macro section.
72 +
73 2011-07-26 Paul Pluzhnikov <ppluzhnikov@google.com>
74
75 * NEWS: Mention dcache configuration.
76 --- src/gdb/dwarf2read.c 2011/07/20 15:13:49 1.554
77 +++ src/gdb/dwarf2read.c 2011/07/26 17:04:23 1.555
78 @@ -187,6 +187,7 @@
79 struct dwarf2_section_info line;
80 struct dwarf2_section_info loc;
81 struct dwarf2_section_info macinfo;
82 + struct dwarf2_section_info macro;
83 struct dwarf2_section_info str;
84 struct dwarf2_section_info ranges;
85 struct dwarf2_section_info frame;
86 @@ -264,6 +265,7 @@
87 { ".debug_line", ".zdebug_line" },
88 { ".debug_loc", ".zdebug_loc" },
89 { ".debug_macinfo", ".zdebug_macinfo" },
90 + { ".debug_macro", ".zdebug_macro" },
91 { ".debug_str", ".zdebug_str" },
92 { ".debug_ranges", ".zdebug_ranges" },
93 { ".debug_types", ".zdebug_types" },
94 @@ -858,10 +860,11 @@
95 }
96
97 static void
98 -dwarf2_macros_too_long_complaint (void)
99 +dwarf2_macros_too_long_complaint (struct dwarf2_section_info *section)
100 {
101 complaint (&symfile_complaints,
102 - _("macro info runs off end of `.debug_macinfo' section"));
103 + _("macro info runs off end of `%s' section"),
104 + section->asection->name);
105 }
106
107 static void
108 @@ -1233,7 +1236,9 @@
109 struct dwarf2_cu *);
110
111 static void dwarf_decode_macros (struct line_header *, unsigned int,
112 - char *, bfd *, struct dwarf2_cu *);
113 + char *, bfd *, struct dwarf2_cu *,
114 + struct dwarf2_section_info *,
115 + int);
116
117 static int attr_form_is_block (struct attribute *);
118
119 @@ -1438,6 +1443,11 @@
120 dwarf2_per_objfile->macinfo.asection = sectp;
121 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
122 }
123 + else if (section_is_p (sectp->name, &names->macro))
124 + {
125 + dwarf2_per_objfile->macro.asection = sectp;
126 + dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
127 + }
128 else if (section_is_p (sectp->name, &names->str))
129 {
130 dwarf2_per_objfile->str.asection = sectp;
131 @@ -5641,13 +5651,28 @@
132 refers to information in the line number info statement program
133 header, so we can only read it if we've read the header
134 successfully. */
135 - attr = dwarf2_attr (die, DW_AT_macro_info, cu);
136 + attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
137 if (attr && cu->line_header)
138 {
139 - unsigned int macro_offset = DW_UNSND (attr);
140 + if (dwarf2_attr (die, DW_AT_macro_info, cu))
141 + complaint (&symfile_complaints,
142 + _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
143 +
144 + dwarf_decode_macros (cu->line_header, DW_UNSND (attr),
145 + comp_dir, abfd, cu,
146 + &dwarf2_per_objfile->macro, 1);
147 + }
148 + else
149 + {
150 + attr = dwarf2_attr (die, DW_AT_macro_info, cu);
151 + if (attr && cu->line_header)
152 + {
153 + unsigned int macro_offset = DW_UNSND (attr);
154
155 - dwarf_decode_macros (cu->line_header, macro_offset,
156 - comp_dir, abfd, cu);
157 + dwarf_decode_macros (cu->line_header, macro_offset,
158 + comp_dir, abfd, cu,
159 + &dwarf2_per_objfile->macinfo, 0);
160 + }
161 }
162 do_cleanups (back_to);
163 }
164 @@ -10262,32 +10287,32 @@
165 }
166
167 static char *
168 -read_indirect_string (bfd *abfd, gdb_byte *buf,
169 - const struct comp_unit_head *cu_header,
170 - unsigned int *bytes_read_ptr)
171 +read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
172 {
173 - LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
174 -
175 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
176 if (dwarf2_per_objfile->str.buffer == NULL)
177 - {
178 - error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
179 - bfd_get_filename (abfd));
180 - return NULL;
181 - }
182 + error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
183 + bfd_get_filename (abfd));
184 if (str_offset >= dwarf2_per_objfile->str.size)
185 - {
186 - error (_("DW_FORM_strp pointing outside of "
187 - ".debug_str section [in module %s]"),
188 - bfd_get_filename (abfd));
189 - return NULL;
190 - }
191 + error (_("DW_FORM_strp pointing outside of "
192 + ".debug_str section [in module %s]"),
193 + bfd_get_filename (abfd));
194 gdb_assert (HOST_CHAR_BIT == 8);
195 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
196 return NULL;
197 return (char *) (dwarf2_per_objfile->str.buffer + str_offset);
198 }
199
200 +static char *
201 +read_indirect_string (bfd *abfd, gdb_byte *buf,
202 + const struct comp_unit_head *cu_header,
203 + unsigned int *bytes_read_ptr)
204 +{
205 + LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
206 +
207 + return read_indirect_string_at_offset (abfd, str_offset);
208 +}
209 +
210 static unsigned long
211 read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
212 {
213 @@ -14669,117 +14694,205 @@
214 dwarf2_macro_malformed_definition_complaint (body);
215 }
216
217 +/* Skip some bytes from BYTES according to the form given in FORM.
218 + Returns the new pointer. */
219
220 -static void
221 -dwarf_decode_macros (struct line_header *lh, unsigned int offset,
222 - char *comp_dir, bfd *abfd,
223 - struct dwarf2_cu *cu)
224 +static gdb_byte *
225 +skip_form_bytes (bfd *abfd, gdb_byte *bytes,
226 + enum dwarf_form form,
227 + unsigned int offset_size,
228 + struct dwarf2_section_info *section)
229 {
230 - gdb_byte *mac_ptr, *mac_end;
231 - struct macro_source_file *current_file = 0;
232 - enum dwarf_macinfo_record_type macinfo_type;
233 - int at_commandline;
234 + unsigned int bytes_read;
235
236 - dwarf2_read_section (dwarf2_per_objfile->objfile,
237 - &dwarf2_per_objfile->macinfo);
238 - if (dwarf2_per_objfile->macinfo.buffer == NULL)
239 + switch (form)
240 {
241 - complaint (&symfile_complaints, _("missing .debug_macinfo section"));
242 - return;
243 + case DW_FORM_data1:
244 + case DW_FORM_flag:
245 + ++bytes;
246 + break;
247 +
248 + case DW_FORM_data2:
249 + bytes += 2;
250 + break;
251 +
252 + case DW_FORM_data4:
253 + bytes += 4;
254 + break;
255 +
256 + case DW_FORM_data8:
257 + bytes += 8;
258 + break;
259 +
260 + case DW_FORM_string:
261 + read_direct_string (abfd, bytes, &bytes_read);
262 + bytes += bytes_read;
263 + break;
264 +
265 + case DW_FORM_sec_offset:
266 + case DW_FORM_strp:
267 + bytes += offset_size;
268 + break;
269 +
270 + case DW_FORM_block:
271 + bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
272 + bytes += bytes_read;
273 + break;
274 +
275 + case DW_FORM_block1:
276 + bytes += 1 + read_1_byte (abfd, bytes);
277 + break;
278 + case DW_FORM_block2:
279 + bytes += 2 + read_2_bytes (abfd, bytes);
280 + break;
281 + case DW_FORM_block4:
282 + bytes += 4 + read_4_bytes (abfd, bytes);
283 + break;
284 +
285 + case DW_FORM_sdata:
286 + case DW_FORM_udata:
287 + bytes = skip_leb128 (abfd, bytes);
288 + break;
289 +
290 + default:
291 + {
292 + complain:
293 + complaint (&symfile_complaints,
294 + _("invalid form 0x%x in `%s'"),
295 + form,
296 + section->asection->name);
297 + return NULL;
298 + }
299 }
300
301 - /* First pass: Find the name of the base filename.
302 - This filename is needed in order to process all macros whose definition
303 - (or undefinition) comes from the command line. These macros are defined
304 - before the first DW_MACINFO_start_file entry, and yet still need to be
305 - associated to the base file.
306 + return bytes;
307 +}
308
309 - To determine the base file name, we scan the macro definitions until we
310 - reach the first DW_MACINFO_start_file entry. We then initialize
311 - CURRENT_FILE accordingly so that any macro definition found before the
312 - first DW_MACINFO_start_file can still be associated to the base file. */
313 +/* A helper for dwarf_decode_macros that handles skipping an unknown
314 + opcode. Returns an updated pointer to the macro data buffer; or,
315 + on error, issues a complaint and returns NULL. */
316
317 - mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
318 - mac_end = dwarf2_per_objfile->macinfo.buffer
319 - + dwarf2_per_objfile->macinfo.size;
320 +static gdb_byte *
321 +skip_unknown_opcode (unsigned int opcode,
322 + gdb_byte **opcode_definitions,
323 + gdb_byte *mac_ptr,
324 + bfd *abfd,
325 + unsigned int offset_size,
326 + struct dwarf2_section_info *section)
327 +{
328 + unsigned int bytes_read, i;
329 + unsigned long arg;
330 + gdb_byte *defn;
331
332 - do
333 + if (opcode_definitions[opcode] == NULL)
334 {
335 - /* Do we at least have room for a macinfo type byte? */
336 - if (mac_ptr >= mac_end)
337 - {
338 - /* Complaint is printed during the second pass as GDB will probably
339 - stop the first pass earlier upon finding
340 - DW_MACINFO_start_file. */
341 - break;
342 - }
343 + complaint (&symfile_complaints,
344 + _("unrecognized DW_MACFINO opcode 0x%x"),
345 + opcode);
346 + return NULL;
347 + }
348
349 - macinfo_type = read_1_byte (abfd, mac_ptr);
350 - mac_ptr++;
351 + defn = opcode_definitions[opcode];
352 + arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
353 + defn += bytes_read;
354
355 - switch (macinfo_type)
356 - {
357 - /* A zero macinfo type indicates the end of the macro
358 - information. */
359 - case 0:
360 - break;
361 + for (i = 0; i < arg; ++i)
362 + {
363 + mac_ptr = skip_form_bytes (abfd, mac_ptr, defn[i], offset_size, section);
364 + if (mac_ptr == NULL)
365 + {
366 + /* skip_form_bytes already issued the complaint. */
367 + return NULL;
368 + }
369 + }
370
371 - case DW_MACINFO_define:
372 - case DW_MACINFO_undef:
373 - /* Only skip the data by MAC_PTR. */
374 - {
375 - unsigned int bytes_read;
376 + return mac_ptr;
377 +}
378
379 - read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
380 - mac_ptr += bytes_read;
381 - read_direct_string (abfd, mac_ptr, &bytes_read);
382 - mac_ptr += bytes_read;
383 - }
384 - break;
385 +/* A helper function which parses the header of a macro section.
386 + If the macro section is the extended (for now called "GNU") type,
387 + then this updates *OFFSET_SIZE. Returns a pointer to just after
388 + the header, or issues a complaint and returns NULL on error. */
389
390 - case DW_MACINFO_start_file:
391 - {
392 - unsigned int bytes_read;
393 - int line, file;
394 +static gdb_byte *
395 +dwarf_parse_macro_header (gdb_byte **opcode_definitions,
396 + bfd *abfd,
397 + gdb_byte *mac_ptr,
398 + unsigned int *offset_size,
399 + int section_is_gnu)
400 +{
401 + memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
402
403 - line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
404 - mac_ptr += bytes_read;
405 - file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
406 - mac_ptr += bytes_read;
407 + if (section_is_gnu)
408 + {
409 + unsigned int version, flags;
410
411 - current_file = macro_start_file (file, line, current_file,
412 - comp_dir, lh, cu->objfile);
413 - }
414 - break;
415 + version = read_2_bytes (abfd, mac_ptr);
416 + if (version != 4)
417 + {
418 + complaint (&symfile_complaints,
419 + _("unrecognized version `%d' in .debug_macro section"),
420 + version);
421 + return NULL;
422 + }
423 + mac_ptr += 2;
424
425 - case DW_MACINFO_end_file:
426 - /* No data to skip by MAC_PTR. */
427 - break;
428 + flags = read_1_byte (abfd, mac_ptr);
429 + ++mac_ptr;
430 + *offset_size = (flags & 1) ? 8 : 4;
431
432 - case DW_MACINFO_vendor_ext:
433 - /* Only skip the data by MAC_PTR. */
434 - {
435 - unsigned int bytes_read;
436 + if ((flags & 2) != 0)
437 + /* We don't need the line table offset. */
438 + mac_ptr += *offset_size;
439
440 - read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
441 - mac_ptr += bytes_read;
442 - read_direct_string (abfd, mac_ptr, &bytes_read);
443 - mac_ptr += bytes_read;
444 - }
445 - break;
446 + /* Vendor opcode descriptions. */
447 + if ((flags & 4) != 0)
448 + {
449 + unsigned int i, count;
450
451 - default:
452 - break;
453 + count = read_1_byte (abfd, mac_ptr);
454 + ++mac_ptr;
455 + for (i = 0; i < count; ++i)
456 + {
457 + unsigned int opcode, bytes_read;
458 + unsigned long arg;
459 +
460 + opcode = read_1_byte (abfd, mac_ptr);
461 + ++mac_ptr;
462 + opcode_definitions[opcode] = mac_ptr;
463 + arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
464 + mac_ptr += bytes_read;
465 + mac_ptr += arg;
466 + }
467 }
468 - } while (macinfo_type != 0 && current_file == NULL);
469 + }
470
471 - /* Second pass: Process all entries.
472 + return mac_ptr;
473 +}
474
475 - Use the AT_COMMAND_LINE flag to determine whether we are still processing
476 - command-line macro definitions/undefinitions. This flag is unset when we
477 - reach the first DW_MACINFO_start_file entry. */
478 +/* A helper for dwarf_decode_macros that handles the GNU extensions,
479 + including DW_GNU_MACINFO_transparent_include. */
480 +
481 +static void
482 +dwarf_decode_macro_bytes (bfd *abfd, gdb_byte *mac_ptr, gdb_byte *mac_end,
483 + struct macro_source_file *current_file,
484 + struct line_header *lh, char *comp_dir,
485 + struct dwarf2_section_info *section,
486 + int section_is_gnu,
487 + unsigned int offset_size,
488 + struct objfile *objfile)
489 +{
490 + enum dwarf_macro_record_type macinfo_type;
491 + int at_commandline;
492 + gdb_byte *opcode_definitions[256];
493
494 - mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
495 + mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
496 + &offset_size, section_is_gnu);
497 + if (mac_ptr == NULL)
498 + {
499 + /* We already issued a complaint. */
500 + return;
501 + }
502
503 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
504 GDB is still reading the definitions from command line. First
505 @@ -14795,13 +14908,15 @@
506 /* Do we at least have room for a macinfo type byte? */
507 if (mac_ptr >= mac_end)
508 {
509 - dwarf2_macros_too_long_complaint ();
510 + dwarf2_macros_too_long_complaint (section);
511 break;
512 }
513
514 macinfo_type = read_1_byte (abfd, mac_ptr);
515 mac_ptr++;
516
517 + /* Note that we rely on the fact that the corresponding GNU and
518 + DWARF constants are the same. */
519 switch (macinfo_type)
520 {
521 /* A zero macinfo type indicates the end of the macro
522 @@ -14809,29 +14924,45 @@
523 case 0:
524 break;
525
526 - case DW_MACINFO_define:
527 - case DW_MACINFO_undef:
528 + case DW_MACRO_GNU_define:
529 + case DW_MACRO_GNU_undef:
530 + case DW_MACRO_GNU_define_indirect:
531 + case DW_MACRO_GNU_undef_indirect:
532 {
533 unsigned int bytes_read;
534 int line;
535 char *body;
536 + int is_define;
537
538 - line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
539 - mac_ptr += bytes_read;
540 - body = read_direct_string (abfd, mac_ptr, &bytes_read);
541 - mac_ptr += bytes_read;
542 + line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
543 + mac_ptr += bytes_read;
544 +
545 + if (macinfo_type == DW_MACRO_GNU_define
546 + || macinfo_type == DW_MACRO_GNU_undef)
547 + {
548 + body = read_direct_string (abfd, mac_ptr, &bytes_read);
549 + mac_ptr += bytes_read;
550 + }
551 + else
552 + {
553 + LONGEST str_offset;
554 +
555 + str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
556 + mac_ptr += offset_size;
557
558 + body = read_indirect_string_at_offset (abfd, str_offset);
559 + }
560 +
561 + is_define = (macinfo_type == DW_MACRO_GNU_define
562 + || macinfo_type == DW_MACRO_GNU_define_indirect);
563 if (! current_file)
564 {
565 /* DWARF violation as no main source is present. */
566 complaint (&symfile_complaints,
567 _("debug info with no main source gives macro %s "
568 "on line %d: %s"),
569 - macinfo_type == DW_MACINFO_define ?
570 - _("definition") :
571 - macinfo_type == DW_MACINFO_undef ?
572 - _("undefinition") :
573 - _("something-or-other"), line, body);
574 + is_define ? _("definition") : _("undefinition"),
575 + line, body);
576 break;
577 }
578 if ((line == 0 && !at_commandline)
579 @@ -14839,21 +14970,21 @@
580 complaint (&symfile_complaints,
581 _("debug info gives %s macro %s with %s line %d: %s"),
582 at_commandline ? _("command-line") : _("in-file"),
583 - macinfo_type == DW_MACINFO_define ?
584 - _("definition") :
585 - macinfo_type == DW_MACINFO_undef ?
586 - _("undefinition") :
587 - _("something-or-other"),
588 + is_define ? _("definition") : _("undefinition"),
589 line == 0 ? _("zero") : _("non-zero"), line, body);
590
591 - if (macinfo_type == DW_MACINFO_define)
592 + if (is_define)
593 parse_macro_definition (current_file, line, body);
594 - else if (macinfo_type == DW_MACINFO_undef)
595 - macro_undef (current_file, line, body);
596 + else
597 + {
598 + gdb_assert (macinfo_type == DW_MACRO_GNU_undef
599 + || macinfo_type == DW_MACRO_GNU_undef_indirect);
600 + macro_undef (current_file, line, body);
601 + }
602 }
603 break;
604
605 - case DW_MACINFO_start_file:
606 + case DW_MACRO_GNU_start_file:
607 {
608 unsigned int bytes_read;
609 int line, file;
610 @@ -14873,17 +15004,18 @@
611
612 if (at_commandline)
613 {
614 - /* This DW_MACINFO_start_file was executed in the pass one. */
615 + /* This DW_MACRO_GNU_start_file was executed in the
616 + pass one. */
617 at_commandline = 0;
618 }
619 else
620 current_file = macro_start_file (file, line,
621 current_file, comp_dir,
622 - lh, cu->objfile);
623 + lh, objfile);
624 }
625 break;
626
627 - case DW_MACINFO_end_file:
628 + case DW_MACRO_GNU_end_file:
629 if (! current_file)
630 complaint (&symfile_complaints,
631 _("macro debug info has an unmatched "
632 @@ -14893,7 +15025,7 @@
633 current_file = current_file->included_by;
634 if (! current_file)
635 {
636 - enum dwarf_macinfo_record_type next_type;
637 + enum dwarf_macro_record_type next_type;
638
639 /* GCC circa March 2002 doesn't produce the zero
640 type byte marking the end of the compilation
641 @@ -14903,7 +15035,7 @@
642 /* Do we at least have room for a macinfo type byte? */
643 if (mac_ptr >= mac_end)
644 {
645 - dwarf2_macros_too_long_complaint ();
646 + dwarf2_macros_too_long_complaint (section);
647 return;
648 }
649
650 @@ -14920,23 +15052,199 @@
651 }
652 break;
653
654 + case DW_MACRO_GNU_transparent_include:
655 + {
656 + LONGEST offset;
657 +
658 + offset = read_offset_1 (abfd, mac_ptr, offset_size);
659 + mac_ptr += offset_size;
660 +
661 + dwarf_decode_macro_bytes (abfd,
662 + section->buffer + offset,
663 + mac_end, current_file,
664 + lh, comp_dir,
665 + section, section_is_gnu,
666 + offset_size, objfile);
667 + }
668 + break;
669 +
670 case DW_MACINFO_vendor_ext:
671 - {
672 - unsigned int bytes_read;
673 - int constant;
674 + if (!section_is_gnu)
675 + {
676 + unsigned int bytes_read;
677 + int constant;
678
679 - constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
680 - mac_ptr += bytes_read;
681 - read_direct_string (abfd, mac_ptr, &bytes_read);
682 - mac_ptr += bytes_read;
683 + constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
684 + mac_ptr += bytes_read;
685 + read_direct_string (abfd, mac_ptr, &bytes_read);
686 + mac_ptr += bytes_read;
687
688 - /* We don't recognize any vendor extensions. */
689 - }
690 - break;
691 + /* We don't recognize any vendor extensions. */
692 + break;
693 + }
694 + /* FALLTHROUGH */
695 +
696 + default:
697 + mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
698 + mac_ptr, abfd, offset_size,
699 + section);
700 + if (mac_ptr == NULL)
701 + return;
702 + break;
703 }
704 } while (macinfo_type != 0);
705 }
706
707 +static void
708 +dwarf_decode_macros (struct line_header *lh, unsigned int offset,
709 + char *comp_dir, bfd *abfd,
710 + struct dwarf2_cu *cu,
711 + struct dwarf2_section_info *section,
712 + int section_is_gnu)
713 +{
714 + gdb_byte *mac_ptr, *mac_end;
715 + struct macro_source_file *current_file = 0;
716 + enum dwarf_macro_record_type macinfo_type;
717 + unsigned int offset_size = cu->header.offset_size;
718 + gdb_byte *opcode_definitions[256];
719 +
720 + dwarf2_read_section (dwarf2_per_objfile->objfile, section);
721 + if (section->buffer == NULL)
722 + {
723 + complaint (&symfile_complaints, _("missing %s section"),
724 + section->asection->name);
725 + return;
726 + }
727 +
728 + /* First pass: Find the name of the base filename.
729 + This filename is needed in order to process all macros whose definition
730 + (or undefinition) comes from the command line. These macros are defined
731 + before the first DW_MACINFO_start_file entry, and yet still need to be
732 + associated to the base file.
733 +
734 + To determine the base file name, we scan the macro definitions until we
735 + reach the first DW_MACINFO_start_file entry. We then initialize
736 + CURRENT_FILE accordingly so that any macro definition found before the
737 + first DW_MACINFO_start_file can still be associated to the base file. */
738 +
739 + mac_ptr = section->buffer + offset;
740 + mac_end = section->buffer + section->size;
741 +
742 + mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
743 + &offset_size, section_is_gnu);
744 + if (mac_ptr == NULL)
745 + {
746 + /* We already issued a complaint. */
747 + return;
748 + }
749 +
750 + do
751 + {
752 + /* Do we at least have room for a macinfo type byte? */
753 + if (mac_ptr >= mac_end)
754 + {
755 + /* Complaint is printed during the second pass as GDB will probably
756 + stop the first pass earlier upon finding
757 + DW_MACINFO_start_file. */
758 + break;
759 + }
760 +
761 + macinfo_type = read_1_byte (abfd, mac_ptr);
762 + mac_ptr++;
763 +
764 + /* Note that we rely on the fact that the corresponding GNU and
765 + DWARF constants are the same. */
766 + switch (macinfo_type)
767 + {
768 + /* A zero macinfo type indicates the end of the macro
769 + information. */
770 + case 0:
771 + break;
772 +
773 + case DW_MACRO_GNU_define:
774 + case DW_MACRO_GNU_undef:
775 + /* Only skip the data by MAC_PTR. */
776 + {
777 + unsigned int bytes_read;
778 +
779 + read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
780 + mac_ptr += bytes_read;
781 + read_direct_string (abfd, mac_ptr, &bytes_read);
782 + mac_ptr += bytes_read;
783 + }
784 + break;
785 +
786 + case DW_MACRO_GNU_start_file:
787 + {
788 + unsigned int bytes_read;
789 + int line, file;
790 +
791 + line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
792 + mac_ptr += bytes_read;
793 + file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
794 + mac_ptr += bytes_read;
795 +
796 + current_file = macro_start_file (file, line, current_file,
797 + comp_dir, lh, cu->objfile);
798 + }
799 + break;
800 +
801 + case DW_MACRO_GNU_end_file:
802 + /* No data to skip by MAC_PTR. */
803 + break;
804 +
805 + case DW_MACRO_GNU_define_indirect:
806 + case DW_MACRO_GNU_undef_indirect:
807 + {
808 + unsigned int bytes_read;
809 +
810 + read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
811 + mac_ptr += bytes_read;
812 + mac_ptr += offset_size;
813 + }
814 + break;
815 +
816 + case DW_MACRO_GNU_transparent_include:
817 + /* Note that, according to the spec, a transparent include
818 + chain cannot call DW_MACRO_GNU_start_file. So, we can just
819 + skip this opcode. */
820 + mac_ptr += offset_size;
821 + break;
822 +
823 + case DW_MACINFO_vendor_ext:
824 + /* Only skip the data by MAC_PTR. */
825 + if (!section_is_gnu)
826 + {
827 + unsigned int bytes_read;
828 +
829 + read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
830 + mac_ptr += bytes_read;
831 + read_direct_string (abfd, mac_ptr, &bytes_read);
832 + mac_ptr += bytes_read;
833 + }
834 + /* FALLTHROUGH */
835 +
836 + default:
837 + mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
838 + mac_ptr, abfd, offset_size,
839 + section);
840 + if (mac_ptr == NULL)
841 + return;
842 + break;
843 + }
844 + } while (macinfo_type != 0 && current_file == NULL);
845 +
846 + /* Second pass: Process all entries.
847 +
848 + Use the AT_COMMAND_LINE flag to determine whether we are still processing
849 + command-line macro definitions/undefinitions. This flag is unset when we
850 + reach the first DW_MACINFO_start_file entry. */
851 +
852 + dwarf_decode_macro_bytes (abfd, section->buffer + offset, mac_end,
853 + current_file, lh, comp_dir, section, section_is_gnu,
854 + offset_size, cu->objfile);
855 +}
856 +
857 /* Check if the attribute's form is a DW_FORM_block*
858 if so return true else false. */
859 static int
860 @@ -15663,6 +15971,7 @@
861 munmap_section_buffer (&data->line);
862 munmap_section_buffer (&data->loc);
863 munmap_section_buffer (&data->macinfo);
864 + munmap_section_buffer (&data->macro);
865 munmap_section_buffer (&data->str);
866 munmap_section_buffer (&data->ranges);
867 munmap_section_buffer (&data->frame);
868 --- src/gdb/symfile.h 2011/06/10 21:48:04 1.93
869 +++ src/gdb/symfile.h 2011/07/26 17:04:23 1.94
870 @@ -582,6 +582,7 @@
871 struct dwarf2_section_names line;
872 struct dwarf2_section_names loc;
873 struct dwarf2_section_names macinfo;
874 + struct dwarf2_section_names macro;
875 struct dwarf2_section_names str;
876 struct dwarf2_section_names ranges;
877 struct dwarf2_section_names types;
878
879
880
881 Re: FYI: implement new DWARF macro proposal
882 http://sourceware.org/ml/gdb-patches/2011-07/msg00759.html
883 http://sourceware.org/ml/gdb-cvs/2011-07/msg00224.html
884
885 ### src/gdb/ChangeLog 2011/07/26 21:09:05 1.13229
886 ### src/gdb/ChangeLog 2011/07/27 14:45:36 1.13230
887 ## -1,3 +1,10 @@
888 +2011-07-27 Tom Tromey <tromey@redhat.com>
889 +
890 + * xcoffread.c (dwarf2_xcoff_names): Add 'macro' and 'sentinel'
891 + entries.
892 + * symfile.h (struct dwarf2_debug_sections) <sentinel>: New field.
893 + * dwarf2read.c (dwarf2_elf_names): Add sentinel entry.
894 +
895 2011-07-26 Sterling Augustine <saugustine@google.com>
896
897 * cli/cli-dump.c (dump_binary_file): Change parameter type to
898 --- src/gdb/dwarf2read.c 2011/07/26 17:04:23 1.555
899 +++ src/gdb/dwarf2read.c 2011/07/27 14:45:37 1.556
900 @@ -271,7 +271,8 @@
901 { ".debug_types", ".zdebug_types" },
902 { ".debug_frame", ".zdebug_frame" },
903 { ".eh_frame", NULL },
904 - { ".gdb_index", ".zgdb_index" }
905 + { ".gdb_index", ".zgdb_index" },
906 + 23
907 };
908
909 /* local data types */
910 --- src/gdb/symfile.h 2011/07/26 17:04:23 1.94
911 +++ src/gdb/symfile.h 2011/07/27 14:45:37 1.95
912 @@ -589,6 +589,9 @@
913 struct dwarf2_section_names frame;
914 struct dwarf2_section_names eh_frame;
915 struct dwarf2_section_names gdb_index;
916 + /* This field has no meaning, but exists solely to catch changes to
917 + this structure which are not reflected in some instance. */
918 + int sentinel;
919 };
920
921 extern int dwarf2_has_info (struct objfile *,
922 --- src/gdb/xcoffread.c 2011/06/07 12:31:07 1.89
923 +++ src/gdb/xcoffread.c 2011/07/27 14:45:37 1.90
924 @@ -160,12 +160,14 @@
925 { ".dwline", NULL },
926 { ".dwloc", NULL },
927 { NULL, NULL }, /* debug_macinfo */
928 + { NULL, NULL }, /* debug_macro */
929 { ".dwstr", NULL },
930 { ".dwrnges", NULL },
931 { NULL, NULL }, /* debug_types */
932 { ".dwframe", NULL },
933 { NULL, NULL }, /* eh_frame */
934 - { NULL, NULL } /* gdb_index */
935 + { NULL, NULL }, /* gdb_index */
936 + 23
937 };
938
939 static void
940
941
942
943 [patch][python] Fix sigsegv when a printer fails to return a value and string_print is set.
944 http://sourceware.org/ml/gdb-patches/2011-07/msg00719.html
945 http://sourceware.org/ml/gdb-cvs/2011-07/msg00234.html
946
947 ### src/gdb/ChangeLog 2011/07/27 19:31:30 1.13236
948 ### src/gdb/ChangeLog 2011/07/28 10:36:37 1.13237
949 ## -1,3 +1,8 @@
950 +2011-07-28 Phil Muldoon <pmuldoon@redhat.com>
951 +
952 + * varobj.c (value_get_print_value): Move hint check later into the
953 + function. Comment function. Free thevalue before reusing it.
954 +
955 2011-07-27 Jan Kratochvil <jan.kratochvil@redhat.com>
956 Pedro Alves <pedro@codesourcery.com>
957
958 --- src/gdb/varobj.c 2011/07/18 09:21:43 1.180
959 +++ src/gdb/varobj.c 2011/07/28 10:36:40 1.181
960 @@ -2610,25 +2610,21 @@
961
962 if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
963 {
964 - char *hint;
965 struct value *replacement;
966 PyObject *output = NULL;
967
968 - hint = gdbpy_get_display_hint (value_formatter);
969 - if (hint)
970 - {
971 - if (!strcmp (hint, "string"))
972 - string_print = 1;
973 - xfree (hint);
974 - }
975 -
976 output = apply_varobj_pretty_printer (value_formatter,
977 &replacement,
978 stb);
979 +
980 + /* If we have string like output ... */
981 if (output)
982 {
983 make_cleanup_py_decref (output);
984
985 + /* If this is a lazy string, extract it. For lazy
986 + strings we always print as a string, so set
987 + string_print. */
988 if (gdbpy_is_lazy_string (output))
989 {
990 gdbpy_extract_lazy_string (output, &str_addr, &type,
991 @@ -2638,12 +2634,27 @@
992 }
993 else
994 {
995 + /* If it is a regular (non-lazy) string, extract
996 + it and copy the contents into THEVALUE. If the
997 + hint says to print it as a string, set
998 + string_print. Otherwise just return the extracted
999 + string as a value. */
1000 +
1001 PyObject *py_str
1002 = python_string_to_target_python_string (output);
1003
1004 if (py_str)
1005 {
1006 char *s = PyString_AsString (py_str);
1007 + char *hint;
1008 +
1009 + hint = gdbpy_get_display_hint (value_formatter);
1010 + if (hint)
1011 + {
1012 + if (!strcmp (hint, "string"))
1013 + string_print = 1;
1014 + xfree (hint);
1015 + }
1016
1017 len = PyString_Size (py_str);
1018 thevalue = xmemdup (s, len + 1, len + 1);
1019 @@ -2662,6 +2673,9 @@
1020 gdbpy_print_stack ();
1021 }
1022 }
1023 + /* If the printer returned a replacement value, set VALUE
1024 + to REPLACEMENT. If there is not a replacement value,
1025 + just use the value passed to this function. */
1026 if (replacement)
1027 value = replacement;
1028 }
1029 @@ -2672,12 +2686,18 @@
1030 get_formatted_print_options (&opts, format_code[(int) format]);
1031 opts.deref_ref = 0;
1032 opts.raw = 1;
1033 +
1034 + /* If the THEVALUE has contents, it is a regular string. */
1035 if (thevalue)
1036 LA_PRINT_STRING (stb, type, thevalue, len, encoding, 0, &opts);
1037 else if (string_print)
1038 + /* Otherwise, if string_print is set, and it is not a regular
1039 + string, it is a lazy string. */
1040 val_print_string (type, encoding, str_addr, len, stb, &opts);
1041 else
1042 + /* All other cases. */
1043 common_val_print (value, stb, 0, &opts, current_language);
1044 +
1045 thevalue = ui_file_xstrdup (stb, NULL);
1046
1047 do_cleanups (old_chain);
1048 ### src/gdb/testsuite/ChangeLog 2011/07/27 21:18:39 1.2816
1049 ### src/gdb/testsuite/ChangeLog 2011/07/28 10:36:40 1.2817
1050 ## -1,3 +1,10 @@
1051 +2011-07-28 Phil Muldoon <pmuldoon@redhat.com>
1052 +
1053 + * gdb.python/py-mi.exp: Test printers returning string hint, and
1054 + also not returning a value.
1055 + * gdb.python/py-prettyprint.c: Add testcase for above.
1056 + * gdb.python/py-prettyprint.py: Add test printer for above.
1057 +
1058 2011-07-27 Jan Kratochvil <jan.kratochvil@redhat.com>
1059
1060 * gdb.dwarf2/dw2-simple-locdesc.S: Change DWARF version to 3.
1061 --- src/gdb/testsuite/gdb.python/py-mi.exp 2011/07/26 18:38:55 1.13
1062 +++ src/gdb/testsuite/gdb.python/py-mi.exp 2011/07/28 10:36:40 1.14
1063 @@ -284,6 +284,13 @@ mi_list_varobj_children nstype2 {
1064 { {nstype2.<error at 0>} {<error at 0>} 6 {char \[6\]} }
1065 } "list children after setting exception flag"
1066
1067 +mi_create_varobj me me \
1068 + "create me varobj"
1069 +
1070 +mi_gdb_test "-var-evaluate-expression me" \
1071 + "\\^done,value=\"<error reading variable: Cannot access memory.>.*\"" \
1072 + "evaluate me varobj"
1073 +
1074 # C++ MI tests
1075 gdb_exit
1076 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
1077 --- src/gdb/testsuite/gdb.python/py-prettyprint.c 2011/04/29 12:45:46 1.12
1078 +++ src/gdb/testsuite/gdb.python/py-prettyprint.c 2011/07/28 10:36:40 1.13
1079 @@ -149,6 +149,11 @@
1080
1081 typedef struct justchildren nostring_type;
1082
1083 +struct memory_error
1084 +{
1085 + const char *s;
1086 +};
1087 +
1088 struct container
1089 {
1090 string name;
1091 @@ -227,6 +232,7 @@
1092 /* Clearing by being `static' could invoke an other GDB C++ bug. */
1093 struct nullstr nullstr;
1094 nostring_type nstype, nstype2;
1095 + struct memory_error me;
1096 struct ns ns, ns2;
1097 struct lazystring estring, estring2;
1098 struct hint_error hint_error;
1099 @@ -234,6 +240,8 @@
1100 nstype.elements = narray;
1101 nstype.len = 0;
1102
1103 + me.s = "blah";
1104 +
1105 init_ss(&ss, 1, 2);
1106 init_ss(ssa+0, 3, 4);
1107 init_ss(ssa+1, 5, 6);
1108 --- src/gdb/testsuite/gdb.python/py-prettyprint.py 2011/04/11 17:40:41 1.11
1109 +++ src/gdb/testsuite/gdb.python/py-prettyprint.py 2011/07/28 10:36:40 1.12
1110 @@ -17,6 +17,7 @@
1111 # printers.
1112
1113 import re
1114 +import gdb
1115
1116 # Test returning a Value from a printer.
1117 class string_print:
1118 @@ -186,6 +187,18 @@
1119 yield 's', self.val['s']
1120 yield 'x', self.val['x']
1121
1122 +class MemoryErrorString:
1123 + "Raise an error"
1124 +
1125 + def __init__(self, val):
1126 + self.val = val
1127 +
1128 + def to_string(self):
1129 + raise gdb.MemoryError ("Cannot access memory.");
1130 +
1131 + def display_hint (self):
1132 + return 'string'
1133 +
1134 def lookup_function (val):
1135 "Look-up and return a pretty-printer that can print val."
1136
1137 @@ -261,6 +274,8 @@
1138 pretty_printers_dict[re.compile ('^struct hint_error$')] = pp_hint_error
1139 pretty_printers_dict[re.compile ('^hint_error$')] = pp_hint_error
1140
1141 + pretty_printers_dict[re.compile ('^memory_error$')] = MemoryErrorString
1142 +
1143 pretty_printers_dict = {}
1144
1145 register_pretty_printers ()
1146
1147
1148
1149 commit 84be2b4d0a55c95697c9ecc72bb31c2fbd316127
1150 Author: ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
1151 Date: Tue Jul 26 14:28:23 2011 +0000
1152
1153 * cp-demangle.c (d_print_init): Initialize pack_index field.
1154 (d_print_comp): Check for NULL template argument.
1155 * testsuite/demangle-expected: Add test case.
1156
1157
1158 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176791 138bc75d-0d04-0410-961f-82ee72b054a4
1159
1160 ### a/libiberty/ChangeLog
1161 ### b/libiberty/ChangeLog
1162 ## -1,3 +1,9 @@
1163 +2011-07-26 Ian Lance Taylor <iant@google.com>
1164 +
1165 + * cp-demangle.c (d_print_init): Initialize pack_index field.
1166 + (d_print_comp): Check for NULL template argument.
1167 + * testsuite/demangle-expected: Add test case.
1168 +
1169 2011-07-22 Gerald Pfeifer <gerald@pfeifer.com>
1170
1171 PR target/49817
1172 --- a/libiberty/cp-demangle.c
1173 +++ b/libiberty/cp-demangle.c
1174 @@ -1,5 +1,5 @@
1175 /* Demangler for g++ V3 ABI.
1176 - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
1177 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
1178 Free Software Foundation, Inc.
1179 Written by Ian Lance Taylor <ian@wasabisystems.com>.
1180
1181 @@ -3306,6 +3306,7 @@ d_print_init (struct d_print_info *dpi, demangle_callbackref callback,
1182 dpi->last_char = '\0';
1183 dpi->templates = NULL;
1184 dpi->modifiers = NULL;
1185 + dpi->pack_index = 0;
1186 dpi->flush_count = 0;
1187
1188 dpi->callback = callback;
1189 @@ -3893,6 +3894,13 @@ d_print_comp (struct d_print_info *dpi, int options,
1190 struct demangle_component *a = d_lookup_template_argument (dpi, sub);
1191 if (a && a->type == DEMANGLE_COMPONENT_TEMPLATE_ARGLIST)
1192 a = d_index_template_argument (a, dpi->pack_index);
1193 +
1194 + if (a == NULL)
1195 + {
1196 + d_print_error (dpi);
1197 + return;
1198 + }
1199 +
1200 sub = a;
1201 }
1202
1203 --- a/libiberty/testsuite/demangle-expected
1204 +++ b/libiberty/testsuite/demangle-expected
1205 @@ -4010,6 +4010,12 @@ K<1, &S::m>::f()
1206 _ZN1KILi1EXadL_ZN1S1mEEEE1fEv
1207 K<1, &S::m>::f()
1208 #
1209 +# Used to crash -- binutils PR 13030.
1210 +--format=gnu-v3
1211 +_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
1212 +_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
1213 +_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
1214 +#
1215 # Ada (GNAT) tests.
1216 #
1217 # Simple test.
1218
1219
1220
1221 http://sourceware.org/ml/gdb-cvs/2011-08/msg00047.html
1222
1223 ### src/gdb/ChangeLog 2011/08/08 21:41:12 1.13259
1224 ### src/gdb/ChangeLog 2011/08/09 12:45:39 1.13260
1225 ## -1,3 +1,13 @@
1226 +2011-08-09 Phil Muldoon <pmuldoon@redhat.com>
1227 +
1228 + * python/lib/gdb/__init__.py: Auto-load files in command and
1229 + function directories.
1230 + * python/python.c (finish_python_initialization): Use
1231 + os.path.join.
1232 + * python/lib/gdb/command/pretty_printers.py: Self register
1233 + command.
1234 + * NEWS: Document auto-loading.
1235 +
1236 2011-08-08 Jan Kratochvil <jan.kratochvil@redhat.com>
1237
1238 * dwarf2loc.c (dwarf2_evaluate_loc_desc_full) <DWARF_VALUE_STACK>
1239 --- src/gdb/NEWS 2011/07/26 20:57:53 1.446
1240 +++ src/gdb/NEWS 2011/08/09 12:45:39 1.447
1241 @@ -23,6 +23,11 @@
1242 ** A prompt subsitution hook (prompt_hook) is now available to the
1243 Python API.
1244
1245 + ** Python commands and convenience-functions located in
1246 + 'data-directory'/python/gdb/command and
1247 + 'data-directory'/python/gdb/function are now automatically loaded
1248 + on GDB start-up.
1249 +
1250 * libthread-db-search-path now supports two special values: $sdir and $pdir.
1251 $sdir specifies the default system locations of shared libraries.
1252 $pdir specifies the directory where the libpthread used by the application
1253 ### src/gdb/doc/ChangeLog 2011/07/26 16:59:23 1.1202
1254 ### src/gdb/doc/ChangeLog 2011/08/09 12:45:39 1.1203
1255 ## -1,3 +1,8 @@
1256 +2011-08-09 Phil Muldoon <pmuldoon@redhat.com>
1257 +
1258 + * gdb.texinfo (Python): Document command and function
1259 + auto-loading.
1260 +
1261 2011-07-26 Jan Kratochvil <jan.kratochvil@redhat.com>
1262 Eli Zaretskii <eliz@gnu.org>
1263
1264 --- src/gdb/doc/gdb.texinfo 2011/07/26 20:57:54 1.851
1265 +++ src/gdb/doc/gdb.texinfo 2011/08/09 12:45:39 1.852
1266 @@ -20845,6 +20845,12 @@
1267 is automatically added to the Python Search Path in order to allow
1268 the Python interpreter to locate all scripts installed at this location.
1269
1270 +Additionally, @value{GDBN} commands and convenience functions which
1271 +are written in Python and are located in the
1272 +@file{@var{data-directory}/python/gdb/command} or
1273 +@file{@var{data-directory}/python/gdb/function} directories are
1274 +automatically imported when @value{GDBN} starts.
1275 +
1276 @menu
1277 * Python Commands:: Accessing Python from @value{GDBN}.
1278 * Python API:: Accessing @value{GDBN} from Python.
1279 --- src/gdb/python/python.c 2011/07/22 09:22:50 1.68
1280 +++ src/gdb/python/python.c 2011/08/09 12:45:40 1.69
1281 @@ -1302,13 +1302,13 @@
1282 sys.path.insert (0, gdb.PYTHONDIR)\n\
1283 \n\
1284 # Tell python where to find submodules of gdb.\n\
1285 - gdb.__path__ = [gdb.PYTHONDIR + '/gdb']\n\
1286 + gdb.__path__ = [os.path.join (gdb.PYTHONDIR, 'gdb')]\n\
1287 \n\
1288 # The gdb module is implemented in C rather than in Python. As a result,\n\
1289 # the associated __init.py__ script is not not executed by default when\n\
1290 # the gdb module gets imported. Execute that script manually if it\n\
1291 # exists.\n\
1292 - ipy = gdb.PYTHONDIR + '/gdb/__init__.py'\n\
1293 + ipy = os.path.join (gdb.PYTHONDIR, 'gdb', '__init__.py')\n\
1294 if os.path.exists (ipy):\n\
1295 execfile (ipy)\n\
1296 \n\
1297 --- src/gdb/python/lib/gdb/__init__.py 2011/01/01 15:33:26 1.3
1298 +++ src/gdb/python/lib/gdb/__init__.py 2011/08/09 12:45:40 1.4
1299 @@ -13,6 +13,29 @@
1300 # You should have received a copy of the GNU General Public License
1301 # along with this program. If not, see <http://www.gnu.org/licenses/>.
1302
1303 -import gdb.command.pretty_printers
1304 +import traceback
1305
1306 -gdb.command.pretty_printers.register_pretty_printer_commands()
1307 +# Auto-load all functions/commands.
1308 +
1309 +# Modules to auto-load, and the paths where those modules exist.
1310 +
1311 +module_dict = {
1312 + 'gdb.function': os.path.join(gdb.PYTHONDIR, 'gdb', 'function'),
1313 + 'gdb.command': os.path.join(gdb.PYTHONDIR, 'gdb', 'command')
1314 +}
1315 +
1316 +# Iterate the dictionary, collating the Python files in each module
1317 +# path. Construct the module name, and import.
1318 +
1319 +for module, location in module_dict.iteritems():
1320 + if os.path.exists(location):
1321 + py_files = filter(lambda x: x.endswith('.py') and x != '__init__.py',
1322 + os.listdir(location))
1323 +
1324 + for py_file in py_files:
1325 + # Construct from foo.py, gdb.module.foo
1326 + py_file = module + '.' + py_file[:-3]
1327 + try:
1328 + exec('import ' + py_file)
1329 + except:
1330 + print >> sys.stderr, traceback.format_exc()
1331 --- src/gdb/python/lib/gdb/command/pretty_printers.py 2011/01/01 15:33:27 1.4
1332 +++ src/gdb/python/lib/gdb/command/pretty_printers.py 2011/08/09 12:45:40 1.5
1333 @@ -368,3 +368,5 @@
1334 InfoPrettyPrinter()
1335 EnablePrettyPrinter()
1336 DisablePrettyPrinter()
1337 +
1338 +register_pretty_printer_commands()
1339
1340
1341
1342 http://sourceware.org/ml/gdb-patches/2011-08/msg00505.html
1343 Subject: fix "info os processes" race -> crash (ext-run.exp racy FAIL)
1344 http://sourceware.org/ml/gdb-cvs/2011-08/msg00116.html
1345
1346 ### src/gdb/ChangeLog 2011/08/26 17:58:57 1.13281
1347 ### src/gdb/ChangeLog 2011/08/26 18:58:02 1.13282
1348 ## -1,3 +1,8 @@
1349 +2011-08-26 Pedro Alves <pedro@codesourcery.com>
1350 +
1351 + * common/linux-osdata.c (get_cores_used_by_process): Don't assume
1352 + opening /proc/PID/task always succeeds.
1353 +
1354 2011-08-26 Aleksandar Ristovski <aristovski@qnx.com>
1355
1356 * linespec.c (symtab_from_filename): Check for the end of string.
1357 --- src/gdb/common/linux-osdata.c 2011/07/21 23:46:09 1.1
1358 +++ src/gdb/common/linux-osdata.c 2011/08/26 18:58:04 1.2
1359 @@ -259,27 +259,29 @@
1360
1361 sprintf (taskdir, "/proc/%d/task", pid);
1362 dir = opendir (taskdir);
1363 -
1364 - while ((dp = readdir (dir)) != NULL)
1365 + if (dir)
1366 {
1367 - pid_t tid;
1368 - int core;
1369 + while ((dp = readdir (dir)) != NULL)
1370 + {
1371 + pid_t tid;
1372 + int core;
1373
1374 - if (!isdigit (dp->d_name[0])
1375 - || NAMELEN (dp) > sizeof ("4294967295") - 1)
1376 - continue;
1377 + if (!isdigit (dp->d_name[0])
1378 + || NAMELEN (dp) > sizeof ("4294967295") - 1)
1379 + continue;
1380
1381 - tid = atoi (dp->d_name);
1382 - core = linux_common_core_of_thread (ptid_build (pid, tid, 0));
1383 + tid = atoi (dp->d_name);
1384 + core = linux_common_core_of_thread (ptid_build (pid, tid, 0));
1385
1386 - if (core >= 0)
1387 - {
1388 - ++cores[core];
1389 - ++task_count;
1390 + if (core >= 0)
1391 + {
1392 + ++cores[core];
1393 + ++task_count;
1394 + }
1395 }
1396 - }
1397
1398 - closedir (dir);
1399 + closedir (dir);
1400 + }
1401
1402 return task_count;
1403 }
1404
1405
1406
1407 Fix for https://bugzilla.redhat.com/show_bug.cgi?id=750341
1408 http://sourceware.org/ml/gdb-patches/2011-10/msg00570.html
1409
1410
1411 http://sourceware.org/ml/gdb-cvs/2011-10/msg00154.html
1412
1413 ### src/gdb/ChangeLog 2011/10/20 13:34:13 1.13446
1414 ### src/gdb/ChangeLog 2011/10/20 20:06:11 1.13447
1415 ## -1,3 +1,15 @@
1416 +2011-10-20 Aleksandar Ristovski <aristovski@qnx.com>
1417 +
1418 + * cp-namespace.c (cp_scan_for_anonymous_namespaces): Changed function
1419 + arguments by adding OBJFILE. Instead of getting objfile from
1420 + symbol's symtab, use new argument OBJFILE.
1421 + * cp-support.h (cp_scan_for_anonymous_namespaces): Changed function
1422 + arguments by adding OBJFILE.
1423 + * gdb/dwarf2read.c (new_symbol_full): Change call to
1424 + cp_scan_for_anonymous_namespaces to match new signature.
1425 + * gdb/stabsread.c (define_symbol): Change call to
1426 + cp_scan_for_anonymous_namespaces to match new signature.
1427 +
1428 2011-10-20 Phil Muldoon <pmuldoon@redhat.com>
1429
1430 PR python/13308
1431 --- src/gdb/cp-namespace.c 2011/06/29 22:05:15 1.54
1432 +++ src/gdb/cp-namespace.c 2011/10/20 20:06:13 1.55
1433 @@ -53,7 +53,8 @@
1434 anonymous namespace; if so, add an appropriate using directive. */
1435
1436 void
1437 -cp_scan_for_anonymous_namespaces (const struct symbol *symbol)
1438 +cp_scan_for_anonymous_namespaces (const struct symbol *const symbol,
1439 + struct objfile *const objfile)
1440 {
1441 if (SYMBOL_DEMANGLED_NAME (symbol) != NULL)
1442 {
1443 @@ -96,7 +97,7 @@
1444 namespace given by the previous component if there is
1445 one, or to the global namespace if there isn't. */
1446 cp_add_using_directive (dest, src, NULL, NULL, NULL,
1447 - &SYMBOL_SYMTAB (symbol)->objfile->objfile_obstack);
1448 + &objfile->objfile_obstack);
1449 }
1450 /* The "+ 2" is for the "::". */
1451 previous_component = next_component + 2;
1452 --- src/gdb/cp-support.h 2011/08/18 16:17:38 1.45
1453 +++ src/gdb/cp-support.h 2011/10/20 20:06:13 1.46
1454 @@ -197,7 +197,8 @@
1455 const char *processing_current_prefix,
1456 int processing_has_namespace_info);
1457
1458 -extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol);
1459 +extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol,
1460 + struct objfile *objfile);
1461
1462 extern struct symbol *cp_lookup_symbol_nonlocal (const char *name,
1463 const struct block *block,
1464 --- src/gdb/dwarf2read.c 2011/10/20 01:11:34 1.576
1465 +++ src/gdb/dwarf2read.c 2011/10/20 20:06:13 1.577
1466 @@ -11992,7 +11992,7 @@
1467 namespaces based on the demangled name. */
1468 if (!processing_has_namespace_info
1469 && cu->language == language_cplus)
1470 - cp_scan_for_anonymous_namespaces (sym);
1471 + cp_scan_for_anonymous_namespaces (sym, objfile);
1472 }
1473 return (sym);
1474 }
1475 --- src/gdb/stabsread.c 2011/05/18 16:30:36 1.138
1476 +++ src/gdb/stabsread.c 2011/10/20 20:06:14 1.139
1477 @@ -729,7 +729,7 @@
1478 SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
1479
1480 if (SYMBOL_LANGUAGE (sym) == language_cplus)
1481 - cp_scan_for_anonymous_namespaces (sym);
1482 + cp_scan_for_anonymous_namespaces (sym, objfile);
1483
1484 }
1485 p++;