5ca8c39f05
This removes the SHORT_FIRST_MESSAGE case from complaints, leaving only a single case. This allows for the removal of the last argument to clear_complaints, and also simplifies complaint_internal, removing an extra allocation in the process. After this, the "./gdb -iex 'set complaint 1' -nx ./gdb" example will show: Reading symbols from ./gdb... During symbol reading: .debug_ranges entry has start address of zero [in module /home/tromey/gdb/build/gdb/gdb] During symbol reading: DW_AT_low_pc 0x0 is zero for DIE at 0x17116c1 [in module /home/tromey/gdb/build/gdb/gdb] During symbol reading: .debug_line address at offset 0xa22f5 is 0 [in module /home/tromey/gdb/build/gdb/gdb] During symbol reading: unsupported tag: 'DW_TAG_unspecified_type' During symbol reading: const value length mismatch for 'std::ratio<1, 1000000000>::num', got 8, expected 0 This is a bit wordier but, I think, a bit more clear, as the form of the message no longer depends on precisely when it was emitted. In particular if you compare to the output from the 'Clean up "Reading symbols" output' patch, you can see that earlier gdb would switch from the prefix-less form to the "During symbol reading" form at a point that is meaningless to the user (specifically, after psymtab reading is done and gdb tries to expand a CU). 2018-10-04 Tom Tromey <tom@tromey.com> * symfile.c (syms_from_objfile_1, finish_new_objfile) (reread_symbols): Update. * complaints.h (clear_complaints): Remove argument. * complaints.c (enum complaint_series): Remove. (series): Remove global. (complaint_internal): Update. (clear_complaints): Remove argument. gdb/testsuite/ChangeLog 2018-10-04 Tom Tromey <tom@tromey.com> * gdb.cp/maint.exp (test_invalid_name): Update expected output. * gdb.gdb/complaints.exp (test_short_complaints): Remove. (test_initial_complaints, test_empty_complaints): Update. * gdb.dwarf2/dw2-stack-boundary.exp: Update.
49 lines
1.5 KiB
C
49 lines
1.5 KiB
C
/* Definitions for complaint handling during symbol reading in GDB.
|
|
|
|
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
#if !defined (COMPLAINTS_H)
|
|
#define COMPLAINTS_H
|
|
|
|
/* Helper for complaint. */
|
|
extern void complaint_internal (const char *fmt, ...)
|
|
ATTRIBUTE_PRINTF (1, 2);
|
|
|
|
/* Register a complaint. This is a macro around complaint_internal to
|
|
avoid computing complaint's arguments when complaints are disabled.
|
|
Running FMT via gettext [i.e., _(FMT)] can be quite expensive, for
|
|
example. */
|
|
#define complaint(FMT, ...) \
|
|
do \
|
|
{ \
|
|
extern int stop_whining; \
|
|
\
|
|
if (stop_whining > 0) \
|
|
complaint_internal (FMT, ##__VA_ARGS__); \
|
|
} \
|
|
while (0)
|
|
|
|
/* Clear out / initialize all complaint counters that have ever been
|
|
incremented. */
|
|
|
|
extern void clear_complaints ();
|
|
|
|
|
|
#endif /* !defined (COMPLAINTS_H) */
|