[gdb/f17] Fix "ambiguous linespec" regression: break lineno.
Jan Kratochvil
jankratochvil at fedoraproject.org
Thu Sep 27 20:24:27 UTC 2012
commit 765eea176bd6ec1fb7eb534f696684480f83e4c9
Author: Jan Kratochvil <jan.kratochvil at redhat.com>
Date: Thu Sep 27 22:24:18 2012 +0200
Fix "ambiguous linespec" regression: break lineno.
- Permit passing pointers as address number even for C++ methods (Keith Seitz).
gdb-break-lineno.patch | 78 ++++
gdb-check-type.patch | 990 ++++++++++++++++++++++++++++++++++++++++++++++++
gdb.spec | 14 +-
3 files changed, 1081 insertions(+), 1 deletions(-)
---
diff --git a/gdb-break-lineno.patch b/gdb-break-lineno.patch
new file mode 100644
index 0000000..108eb6f
--- /dev/null
+++ b/gdb-break-lineno.patch
@@ -0,0 +1,78 @@
+http://sourceware.org/ml/gdb-cvs/2012-06/msg00077.html
+
+### src/gdb/ChangeLog 2012/06/11 18:44:58 1.14345
+### src/gdb/ChangeLog 2012/06/11 19:16:21 1.14346
+## -1,3 +1,10 @@
++2012-06-11 Jan Kratochvil <jan.kratochvil at redhat.com>
++
++ Fix regression by the "ambiguous linespec" series.
++ * breakpoint.c (parse_breakpoint_sals): New variable cursal. Use
++ get_last_displayed_symtab and get_last_displayed_line and depending
++ on CURSAL.
++
+ 2012-06-11 Tom Tromey <tromey at redhat.com>
+
+ * dwarf2read.c (dw2_get_primary_filename_reader): New function.
+--- src/gdb/breakpoint.c 2012/06/05 19:50:50 1.679
++++ src/gdb/breakpoint.c 2012/06/11 19:16:23 1.680
+@@ -8802,19 +8802,26 @@
+ }
+ else
+ {
++ struct symtab_and_line cursal = get_current_source_symtab_and_line ();
++
+ /* Force almost all breakpoints to be in terms of the
+ current_source_symtab (which is decode_line_1's default).
+ This should produce the results we want almost all of the
+- time while leaving default_breakpoint_* alone. */
+- if (last_displayed_sal_is_valid ())
++ time while leaving default_breakpoint_* alone.
++
++ ObjC: However, don't match an Objective-C method name which
++ may have a '+' or '-' succeeded by a '['. */
++ if (last_displayed_sal_is_valid ()
++ && (!cursal.symtab
++ || ((strchr ("+-", (*address)[0]) != NULL)
++ && ((*address)[1] != '['))))
+ decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
+ get_last_displayed_symtab (),
+ get_last_displayed_line (),
+ canonical, NULL, NULL);
+ else
+ decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
+- (struct symtab *) NULL, 0,
+- canonical, NULL, NULL);
++ cursal.symtab, cursal.line, canonical, NULL, NULL);
+ }
+ }
+
+### src/gdb/testsuite/ChangeLog 2012/06/11 17:44:06 1.3220
+### src/gdb/testsuite/ChangeLog 2012/06/11 19:16:24 1.3221
+## -1,5 +1,11 @@
+ 2012-06-11 Jan Kratochvil <jan.kratochvil at redhat.com>
+
++ Fix regression by the "ambiguous linespec" series.
++ * gdb.base/break.exp (list marker1, break lineno, delete $bpnum): New
++ tests.
++
++2012-06-11 Jan Kratochvil <jan.kratochvil at redhat.com>
++
+ * lib/future.exp: Set $use_gdb_compile even if only find_go_linker is
+ missing.
+
+--- src/gdb/testsuite/gdb.base/break.exp 2012/04/05 18:50:28 1.55
++++ src/gdb/testsuite/gdb.base/break.exp 2012/06/11 19:16:24 1.56
+@@ -371,6 +371,13 @@
+ }
+ }
+
++# Test the 'list' commands sets current file for the 'break LINENO' command.
++set bp_marker1 [gdb_get_line_number "set breakpoint 16 here" ${srcfile1}]
++gdb_test "list marker1" ".*"
++gdb_test "break $bp_marker1" "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file .*${srcfile1}, line ${bp_marker1}\\." \
++ "break lineno"
++gdb_test_no_output {delete $bpnum}
++
+ #
+ # run until the breakpoint at a line number
+ #
diff --git a/gdb-check-type.patch b/gdb-check-type.patch
new file mode 100644
index 0000000..da73d20
--- /dev/null
+++ b/gdb-check-type.patch
@@ -0,0 +1,990 @@
+http://sourceware.org/ml/gdb-cvs/2012-08/msg00133.html
+
+### src/gdb/ChangeLog 2012/08/17 03:06:10 1.14599
+### src/gdb/ChangeLog 2012/08/17 17:36:56 1.14600
+## -1,3 +1,48 @@
++2012-08-17 Keith Seitz <keiths at redhat.com>
++
++ PR c++/13356
++ * gdbtypes.c (strict_type_checking): New variable.
++ (show_strict_type_checking): New function.
++ (rank_one_type): Return NS_POINTER_INTEGER_CONVERSION_BADNESS
++ if strict type checking is disabled.
++ (_initialize_gdbtypes): Add "check type" subcommand.
++ * gdbtypes.h (NS_INTEGER_POINTER_CONVERSION_BADNESS): New struct.
++
++2012-08-17 Keith Seitz <keiths at redhat.com>
++
++ * language.h (type_mode): Remove.
++ (type_check): Remove.
++ (struct language_defn): Remove la_type_check.
++ (STRICT_TYPE): Remove unused macro.
++ (type_error): Remove.
++ * language.c (set_type_range_case): Renamed to ...
++ (set_range_case): ... this. Update all callers.
++ Remove type_mode/type_check.
++ (type_mode): Remove.
++ (type_check): Remove.
++ (show_type_command): Remove.
++ (set_type_command): Remove.
++ (language_info): Remove type checking output.
++ (type_error): Remove unused function.
++ (range_error): Update comment.
++ (unknown_language_defn): Remove la_type_check.
++ (auto_language_defn): Likewise.
++ (local_language_defn): Likewise.
++ (_initialize_language): Remove "check type" subcommand.
++ * ada-lang.c (ada_language_defn): Remove la_type_check.
++ * c-lang.c (c_language_defn): Likewise.
++ (cplus_language_defn): Likewise.
++ (asm_language_defn): Likewise.
++ (minimal_language_defn): Likewise.
++ * d-lang.c (d_language_defn): Likewise.
++ * f-lang.c (f_language_defn): Likewise.
++ * go-lang.c (go_language_defn): Likewise.
++ * jv-lang.c (java_language_defn): Likewise.
++ * m2-lang.c (m2_language_defn): Likewise.
++ * objc-lang.c (objc_language_defn): Likewise.
++ * opencl-lang.c (opencl_language_defn): Likewise.
++ * p-lang.c (pascal_language_defn): Likewise.
++
+ 2012-08-16 Mike Frysinger <vapier at gentoo.org>
+
+ * infcmd.c (_initialize_infcmd): Remove trailing ) in next help text.
+Index: gdb-7.4.50.20120120/gdb/gdbtypes.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/gdbtypes.c 2012-09-27 22:08:02.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/gdbtypes.c 2012-09-27 22:10:37.453588076 +0200
+@@ -62,6 +62,7 @@ const struct rank BASE_CONVERSION_BADNES
+ const struct rank REFERENCE_CONVERSION_BADNESS = {2,0};
+ const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0};
+ const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0};
++const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS = {3,0};
+
+ /* Floatformat pairs. */
+ const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN] = {
+@@ -134,6 +135,19 @@ show_overload_debug (struct ui_file *fil
+ value);
+ }
+
++/* A flag to enable strict type checking. */
++
++static int strict_type_checking = 1;
++
++/* A function to show the status of strict type checking. */
++
++static void
++show_strict_type_checking (struct ui_file *file, int from_tty,
++ struct cmd_list_element *c, const char *value)
++{
++ fprintf_filtered (file, _("Strict type checking is %s.\n"), value);
++}
++
+ struct extra
+ {
+ char str[128];
+@@ -2619,12 +2633,20 @@ rank_one_type (struct type *parm, struct
+ case TYPE_CODE_FUNC:
+ return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
+ case TYPE_CODE_INT:
+- if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT
+- && value_as_long (value) == 0)
++ if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT)
+ {
+- /* Null pointer conversion: allow it to be cast to a pointer.
+- [4.10.1 of C++ standard draft n3290] */
+- return NULL_POINTER_CONVERSION_BADNESS;
++ if (value_as_long (value) == 0)
++ {
++ /* Null pointer conversion: allow it to be cast to a pointer.
++ [4.10.1 of C++ standard draft n3290] */
++ return NULL_POINTER_CONVERSION_BADNESS;
++ }
++ else
++ {
++ /* If type checking is disabled, allow the conversion. */
++ if (!strict_type_checking)
++ return NS_INTEGER_POINTER_CONVERSION_BADNESS;
++ }
+ }
+ /* fall through */
+ case TYPE_CODE_ENUM:
+@@ -4597,4 +4619,13 @@ _initialize_gdbtypes (void)
+ NULL, NULL,
+ show_opaque_type_resolution,
+ &setlist, &showlist);
++
++ /* Add an option to permit non-strict type checking. */
++ add_setshow_boolean_cmd ("type", class_support,
++ &strict_type_checking,
++ _("Set strict type checking."),
++ _("Show strict type checking."),
++ NULL, NULL,
++ show_strict_type_checking,
++ &setchecklist, &showchecklist);
+ }
+Index: gdb-7.4.50.20120120/gdb/gdbtypes.h
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/gdbtypes.h 2012-09-27 22:08:10.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/gdbtypes.h 2012-09-27 22:09:46.061565471 +0200
+@@ -1720,6 +1720,9 @@ extern const struct rank NULL_POINTER_CO
+ /* Converting a pointer to an int is usually OK. */
+ extern const struct rank NS_POINTER_CONVERSION_BADNESS;
+
++/* Badness of converting a (non-zero) integer constant
++ to a pointer. */
++extern const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS;
+
+ extern struct rank sum_ranks (struct rank a, struct rank b);
+ extern int compare_ranks (struct rank a, struct rank b);
+Index: gdb-7.4.50.20120120/gdb/language.h
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/language.h 2012-01-04 19:57:01.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/language.h 2012-09-27 22:09:46.107565505 +0200
+@@ -55,27 +55,6 @@ extern enum range_check
+ }
+ range_check;
+
+-/* type_mode ==
+- type_mode_auto: type_check set automatically to default of language.
+- type_mode_manual: type_check set manually by user. */
+-
+-extern enum type_mode
+- {
+- type_mode_auto, type_mode_manual
+- }
+-type_mode;
+-
+-/* type_check ==
+- type_check_on: Types are checked in GDB expressions, producing errors.
+- type_check_warn: Types are checked, producing warnings.
+- type_check_off: Types are not checked in GDB expressions. */
+-
+-extern enum type_check
+- {
+- type_check_off, type_check_warn, type_check_on
+- }
+-type_check;
+-
+ /* case_mode ==
+ case_mode_auto: case_sensitivity set upon selection of scope.
+ case_mode_manual: case_sensitivity set only by user. */
+@@ -152,10 +131,6 @@ struct language_defn
+
+ enum range_check la_range_check;
+
+- /* Default type checking. */
+-
+- enum type_check la_type_check;
+-
+ /* Default case sensitivity. */
+ enum case_sensitivity la_case_sensitivity;
+
+@@ -409,9 +384,6 @@ struct type *language_lookup_primitive_t
+ /* These macros define the behaviour of the expression
+ evaluator. */
+
+-/* Should we strictly type check expressions? */
+-#define STRICT_TYPE (type_check != type_check_off)
+-
+ /* Should we range check values against the domain of their type? */
+ #define RANGE_CHECK (range_check != range_check_off)
+
+@@ -483,8 +455,6 @@ extern void binop_type_check (struct val
+
+ /* Error messages */
+
+-extern void type_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+-
+ extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+ /* Data: Does this value represent "truth" to the current language? */
+Index: gdb-7.4.50.20120120/gdb/language.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/language.c 2012-01-04 19:57:01.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/language.c 2012-09-27 22:09:46.117565500 +0200
+@@ -55,7 +55,7 @@ static void show_check (char *, int);
+
+ static void set_check (char *, int);
+
+-static void set_type_range_case (void);
++static void set_range_case (void);
+
+ static void unk_lang_emit_char (int c, struct type *type,
+ struct ui_file *stream, int quoter);
+@@ -81,8 +81,6 @@ extern const struct language_defn unknow
+
+ enum range_mode range_mode = range_mode_auto;
+ enum range_check range_check = range_check_off;
+-enum type_mode type_mode = type_mode_auto;
+-enum type_check type_check = type_check_off;
+ enum case_mode case_mode = case_mode_auto;
+ enum case_sensitivity case_sensitivity = case_sensitive_on;
+
+@@ -174,7 +172,7 @@ set_language_command (char *ignore, int
+ /* Enter manual mode. Set the specified language. */
+ language_mode = language_mode_manual;
+ current_language = languages[i];
+- set_type_range_case ();
++ set_range_case ();
+ expected_language = current_language;
+ return;
+ }
+@@ -186,79 +184,6 @@ set_language_command (char *ignore, int
+ language);
+ }
+
+-/* Show command. Display a warning if the type setting does
+- not match the current language. */
+-static void
+-show_type_command (struct ui_file *file, int from_tty,
+- struct cmd_list_element *c, const char *value)
+-{
+- if (type_mode == type_mode_auto)
+- {
+- char *tmp = NULL;
+-
+- switch (type_check)
+- {
+- case type_check_on:
+- tmp = "on";
+- break;
+- case type_check_off:
+- tmp = "off";
+- break;
+- case type_check_warn:
+- tmp = "warn";
+- break;
+- default:
+- internal_error (__FILE__, __LINE__,
+- "Unrecognized type check setting.");
+- }
+-
+- fprintf_filtered (gdb_stdout,
+- _("Type checking is \"auto; currently %s\".\n"),
+- tmp);
+- }
+- else
+- fprintf_filtered (gdb_stdout, _("Type checking is \"%s\".\n"),
+- value);
+-
+- if (type_check != current_language->la_type_check)
+- warning (_("the current type check setting"
+- " does not match the language.\n"));
+-}
+-
+-/* Set command. Change the setting for type checking. */
+-static void
+-set_type_command (char *ignore, int from_tty, struct cmd_list_element *c)
+-{
+- if (strcmp (type, "on") == 0)
+- {
+- type_check = type_check_on;
+- type_mode = type_mode_manual;
+- }
+- else if (strcmp (type, "warn") == 0)
+- {
+- type_check = type_check_warn;
+- type_mode = type_mode_manual;
+- }
+- else if (strcmp (type, "off") == 0)
+- {
+- type_check = type_check_off;
+- type_mode = type_mode_manual;
+- }
+- else if (strcmp (type, "auto") == 0)
+- {
+- type_mode = type_mode_auto;
+- set_type_range_case ();
+- return;
+- }
+- else
+- internal_error (__FILE__, __LINE__,
+- _("Unrecognized type check setting: \"%s\""), type);
+-
+- if (type_check != current_language->la_type_check)
+- warning (_("the current type check setting"
+- " does not match the language.\n"));
+-}
+-
+ /* Show command. Display a warning if the range setting does
+ not match the current language. */
+ static void
+@@ -320,7 +245,7 @@ set_range_command (char *ignore, int fro
+ else if (strcmp (range, "auto") == 0)
+ {
+ range_mode = range_mode_auto;
+- set_type_range_case ();
++ set_range_case ();
+ return;
+ }
+ else
+@@ -389,7 +314,7 @@ set_case_command (char *ignore, int from
+ else if (strcmp (case_sensitive, "auto") == 0)
+ {
+ case_mode = case_mode_auto;
+- set_type_range_case ();
++ set_range_case ();
+ return;
+ }
+ else
+@@ -409,14 +334,11 @@ set_case_command (char *ignore, int from
+ If SHOW is non-zero, then print out the current language,
+ type and range checking status. */
+ static void
+-set_type_range_case (void)
++set_range_case (void)
+ {
+ if (range_mode == range_mode_auto)
+ range_check = current_language->la_range_check;
+
+- if (type_mode == type_mode_auto)
+- type_check = current_language->la_type_check;
+-
+ if (case_mode == case_mode_auto)
+ case_sensitivity = current_language->la_case_sensitivity;
+ }
+@@ -437,7 +359,7 @@ set_language (enum language lang)
+ if (languages[i]->la_language == lang)
+ {
+ current_language = languages[i];
+- set_type_range_case ();
++ set_range_case ();
+ break;
+ }
+ }
+@@ -461,8 +383,6 @@ language_info (int quietly)
+
+ if (!quietly)
+ {
+- printf_unfiltered (_("Type checking: %s\n"), type);
+- show_type_command (NULL, 1, NULL, NULL);
+ printf_unfiltered (_("Range checking: %s\n"), range);
+ show_range_command (NULL, 1, NULL, NULL);
+ printf_unfiltered (_("Case sensitivity: %s\n"), case_sensitive);
+@@ -500,38 +420,11 @@ value_true (struct value *val)
+ error messages that occur during type- and range-
+ checking. */
+
+-/* These are called when a language fails a type- or range-check. The
++/* This is called when a language fails a range-check. The
+ first argument should be a printf()-style format string, and the
+- rest of the arguments should be its arguments. If
+- [type|range]_check is [type|range]_check_on, an error is printed;
+- if [type|range]_check_warn, a warning; otherwise just the
+- message. */
+-
+-void
+-type_error (const char *string,...)
+-{
+- va_list args;
+-
+- va_start (args, string);
+- switch (type_check)
+- {
+- case type_check_warn:
+- vwarning (string, args);
+- break;
+- case type_check_on:
+- verror (string, args);
+- break;
+- case type_check_off:
+- /* FIXME: cagney/2002-01-30: Should this function print anything
+- when type error is off? */
+- vfprintf_filtered (gdb_stderr, string, args);
+- fprintf_filtered (gdb_stderr, "\n");
+- break;
+- default:
+- internal_error (__FILE__, __LINE__, _("bad switch"));
+- }
+- va_end (args);
+-}
++ rest of the arguments should be its arguments. If range_check is
++ range_check_on, an error is printed; if range_check_warn, a warning;
++ otherwise just the message. */
+
+ void
+ range_error (const char *string,...)
+@@ -902,7 +795,6 @@ const struct language_defn unknown_langu
+ "unknown",
+ language_unknown,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_no,
+@@ -945,7 +837,6 @@ const struct language_defn auto_language
+ "auto",
+ language_auto,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_no,
+@@ -986,7 +877,6 @@ const struct language_defn local_languag
+ "local",
+ language_auto,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_no,
+@@ -1132,13 +1022,6 @@ _initialize_language (void)
+ add_alias_cmd ("c", "check", no_class, 1, &showlist);
+ add_alias_cmd ("ch", "check", no_class, 1, &showlist);
+
+- add_setshow_enum_cmd ("type", class_support, type_or_range_names, &type,
+- _("Set type checking. (on/warn/off/auto)"),
+- _("Show type checking. (on/warn/off/auto)"),
+- NULL, set_type_command,
+- show_type_command,
+- &setchecklist, &showchecklist);
+-
+ add_setshow_enum_cmd ("range", class_support, type_or_range_names,
+ &range,
+ _("Set range checking. (on/warn/off/auto)"),
+Index: gdb-7.4.50.20120120/gdb/ada-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/ada-lang.c 2012-09-27 22:08:06.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/ada-lang.c 2012-09-27 22:09:46.122565495 +0200
+@@ -12327,7 +12327,6 @@ const struct language_defn ada_language_
+ "ada", /* Language name */
+ language_ada,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on, /* Yes, Ada is case-insensitive, but
+ that's not quite what this means. */
+ array_row_major,
+Index: gdb-7.4.50.20120120/gdb/c-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/c-lang.c 2012-01-04 09:16:59.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/c-lang.c 2012-09-27 22:09:46.142565511 +0200
+@@ -832,7 +832,6 @@ const struct language_defn c_language_de
+ "c", /* Language name */
+ language_c,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+@@ -955,7 +954,6 @@ const struct language_defn cplus_languag
+ "c++", /* Language name */
+ language_cplus,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+@@ -996,7 +994,6 @@ const struct language_defn asm_language_
+ "asm", /* Language name */
+ language_asm,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+@@ -1042,7 +1039,6 @@ const struct language_defn minimal_langu
+ "minimal", /* Language name */
+ language_minimal,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+Index: gdb-7.4.50.20120120/gdb/d-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/d-lang.c 2012-01-04 09:17:00.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/d-lang.c 2012-09-27 22:09:46.155565513 +0200
+@@ -240,7 +240,6 @@ static const struct language_defn d_lang
+ "d",
+ language_d,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+Index: gdb-7.4.50.20120120/gdb/f-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/f-lang.c 2012-09-27 22:08:05.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/f-lang.c 2012-09-27 22:09:46.155565513 +0200
+@@ -264,7 +264,6 @@ const struct language_defn f_language_de
+ "fortran",
+ language_fortran,
+ range_check_on,
+- type_check_on,
+ case_sensitive_off,
+ array_column_major,
+ macro_expansion_no,
+Index: gdb-7.4.50.20120120/gdb/jv-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/jv-lang.c 2012-09-27 22:08:05.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/jv-lang.c 2012-09-27 22:09:46.157565513 +0200
+@@ -1168,7 +1168,6 @@ const struct language_defn java_language
+ "java", /* Language name */
+ language_java,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_no,
+Index: gdb-7.4.50.20120120/gdb/m2-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/m2-lang.c 2012-01-04 09:17:05.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/m2-lang.c 2012-09-27 22:09:46.170565519 +0200
+@@ -370,7 +370,6 @@ const struct language_defn m2_language_d
+ "modula-2",
+ language_m2,
+ range_check_on,
+- type_check_on,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_no,
+Index: gdb-7.4.50.20120120/gdb/objc-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/objc-lang.c 2012-01-04 09:17:08.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/objc-lang.c 2012-09-27 22:09:46.173565521 +0200
+@@ -509,7 +509,6 @@ const struct language_defn objc_language
+ "objective-c", /* Language name */
+ language_objc,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+Index: gdb-7.4.50.20120120/gdb/opencl-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/opencl-lang.c 2012-01-04 09:17:09.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/opencl-lang.c 2012-09-27 22:09:46.192565526 +0200
+@@ -993,7 +993,6 @@ const struct language_defn opencl_langua
+ "opencl", /* Language name */
+ language_opencl,
+ range_check_off,
+- type_check_off,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_c,
+Index: gdb-7.4.50.20120120/gdb/p-lang.c
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/p-lang.c 2012-01-04 09:17:09.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/p-lang.c 2012-09-27 22:09:46.193565530 +0200
+@@ -429,7 +429,6 @@ const struct language_defn pascal_langua
+ "pascal", /* Language name */
+ language_pascal,
+ range_check_on,
+- type_check_on,
+ case_sensitive_on,
+ array_row_major,
+ macro_expansion_no,
+Index: gdb-7.4.50.20120120/gdb/doc/gdb.texinfo
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/doc/gdb.texinfo 2012-09-27 22:08:10.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/doc/gdb.texinfo 2012-09-27 22:09:46.222565541 +0200
+@@ -12202,29 +12202,18 @@ List all the filename extensions and the
+ @node Checks
+ @section Type and Range Checking
+
+- at quotation
+- at emph{Warning:} In this release, the @value{GDBN} commands for type and range
+-checking are included, but they do not yet have any effect. This
+-section documents the intended facilities.
+- at end quotation
+- at c FIXME remove warning when type/range code added
+-
+ Some languages are designed to guard you against making seemingly common
+ errors through a series of compile- and run-time checks. These include
+-checking the type of arguments to functions and operators, and making
++checking the type of arguments to functions and operators and making
+ sure mathematical overflows are caught at run time. Checks such as
+ these help to ensure a program's correctness once it has been compiled
+-by eliminating type mismatches, and providing active checks for range
++by eliminating type mismatches and providing active checks for range
+ errors when your program is running.
+
+- at value{GDBN} can check for conditions like the above if you wish.
+-Although @value{GDBN} does not check the statements in your program,
+-it can check expressions entered directly into @value{GDBN} for
+-evaluation via the @code{print} command, for example. As with the
+-working language, @value{GDBN} can also decide whether or not to check
+-automatically based on your program's source language.
+- at xref{Supported Languages, ,Supported Languages}, for the default
+-settings of supported languages.
++By default @value{GDBN} checks for these errors according to the
++rules of the current source language. Although @value{GDBN} does not check
++the statements in your program, it can check expressions entered directly
++into @value{GDBN} for evaluation via the @code{print} command, for example.
+
+ @menu
+ * Type Checking:: An overview of type checking
+@@ -12236,69 +12225,51 @@ settings of supported languages.
+ @node Type Checking
+ @subsection An Overview of Type Checking
+
+-Some languages, such as Modula-2, are strongly typed, meaning that the
++Some languages, such as C and C at t{++}, are strongly typed, meaning that the
+ arguments to operators and functions have to be of the correct type,
+ otherwise an error occurs. These checks prevent type mismatch
+ errors from ever causing any run-time problems. For example,
+
+ @smallexample
+-1 + 2 @result{} 3
++int klass::my_method(char *b) @{ return b ? 1 : 2; @}
++
++(@value{GDBP}) print obj.my_method (0)
++$1 = 2
+ @exdent but
+- at error{} 1 + 2.3
++(@value{GDBP}) print obj.my_method (0x1234)
++Cannot resolve method klass::my_method to any overloaded instance
+ @end smallexample
+
+-The second example fails because the @code{CARDINAL} 1 is not
+-type-compatible with the @code{REAL} 2.3.
++The second example fails because in C at t{++} the integer constant
++ at samp{0x1234} is not type-compatible with the pointer parameter type.
+
+-For the expressions you use in @value{GDBN} commands, you can tell the
+- at value{GDBN} type checker to skip checking;
++For the expressions you use in @value{GDBN} commands, you can tell
++ at value{GDBN} to not enforce strict type checking or
+ to treat any mismatches as errors and abandon the expression;
+-or to only issue warnings when type mismatches occur,
+-but evaluate the expression anyway. When you choose the last of
+-these, @value{GDBN} evaluates expressions like the second example above, but
+-also issues a warning.
++When type checking is disabled, @value{GDBN} successfully evaluates
++expressions like the second example above.
+
+-Even if you turn type checking off, there may be other reasons
++Even if type checking is off, there may be other reasons
+ related to type that prevent @value{GDBN} from evaluating an expression.
+ For instance, @value{GDBN} does not know how to add an @code{int} and
+ a @code{struct foo}. These particular type errors have nothing to do
+-with the language in use, and usually arise from expressions, such as
+-the one described above, which make little sense to evaluate anyway.
+-
+-Each language defines to what degree it is strict about type. For
+-instance, both Modula-2 and C require the arguments to arithmetical
+-operators to be numbers. In C, enumerated types and pointers can be
+-represented as numbers, so that they are valid arguments to mathematical
+-operators. @xref{Supported Languages, ,Supported Languages}, for further
+-details on specific languages.
++with the language in use and usually arise from expressions which make
++little sense to evaluate anyway.
+
+- at value{GDBN} provides some additional commands for controlling the type checker:
++ at value{GDBN} provides some additional commands for controlling type checking:
+
+ @kindex set check type
+ @kindex show check type
+ @table @code
+- at item set check type auto
+-Set type checking on or off based on the current working language.
+- at xref{Supported Languages, ,Supported Languages}, for the default settings for
+-each language.
+-
+ @item set check type on
+ @itemx set check type off
+-Set type checking on or off, overriding the default setting for the
+-current working language. Issue a warning if the setting does not
+-match the language default. If any type mismatches occur in
++Set strict type checking on or off. If any type mismatches occur in
+ evaluating an expression while type checking is on, @value{GDBN} prints a
+ message and aborts evaluation of the expression.
+
+- at item set check type warn
+-Cause the type checker to issue warnings, but to always attempt to
+-evaluate the expression. Evaluating the expression may still
+-be impossible for other reasons. For example, @value{GDBN} cannot add
+-numbers and structures.
+-
+- at item show type
+-Show the current setting of the type checker, and whether or not @value{GDBN}
+-is setting it automatically.
++ at item show check type
++Show the current setting of type checking and whether @value{GDBN}
++is enforcing strict type checking rules.
+ @end table
+
+ @cindex range checking
+@@ -12748,8 +12719,8 @@ specification.
+
+ @cindex C and C at t{++} defaults
+
+-If you allow @value{GDBN} to set type and range checking automatically, they
+-both default to @code{off} whenever the working language changes to
++If you allow @value{GDBN} to set range checking automatically, it
++defaults to @code{off} whenever the working language changes to
+ C or C at t{++}. This happens regardless of whether you or @value{GDBN}
+ selects the working language.
+
+@@ -12760,37 +12731,15 @@ these files, it sets the working languag
+ @xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
+ for further details.
+
+- at c Type checking is (a) primarily motivated by Modula-2, and (b)
+- at c unimplemented. If (b) changes, it might make sense to let this node
+- at c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
+-
+ @node C Checks
+ @subsubsection C and C at t{++} Type and Range Checks
+
+ @cindex C and C at t{++} checks
+
+-By default, when @value{GDBN} parses C or C at t{++} expressions, type checking
+-is not used. However, if you turn type checking on, @value{GDBN}
+-considers two variables type equivalent if:
+-
+- at itemize @bullet
+- at item
+-The two variables are structured and have the same structure, union, or
+-enumerated tag.
+-
+- at item
+-The two variables have the same type name, or types that have been
+-declared equivalent through @code{typedef}.
+-
+- at ignore
+- at c leaving this out because neither J Gilmore nor R Pesch understand it.
+- at c FIXME--beers?
+- at item
+-The two @code{struct}, @code{union}, or @code{enum} variables are
+-declared in the same declaration. (Note: this may not be true for all C
+-compilers.)
+- at end ignore
+- at end itemize
++By default, when @value{GDBN} parses C or C at t{++} expressions, strict type
++checking is used. However, if you turn type checking off, @value{GDBN}
++will allow certain non-standard conversions, such as promoting integer
++constants to pointers.
+
+ Range checking, if turned on, is done on mathematical operations. Array
+ indices are not checked, since they are often used to index a pointer
+Index: gdb-7.4.50.20120120/gdb/testsuite/gdb.base/default.exp
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/testsuite/gdb.base/default.exp 2012-09-27 22:08:03.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/testsuite/gdb.base/default.exp 2012-09-27 22:09:46.236565549 +0200
+@@ -499,12 +499,13 @@ gdb_test "section" "Must specify section
+ gdb_test "set annotate" "Argument required .integer to set it to.*" "set annotate"
+ #test set args
+ gdb_test_no_output "set args" "set args"
+-#test set check "c" abbreviation
+-gdb_test "set c" "\"set check\" must be followed by the name of a check subcommand.(\[^\r\n\]*\[\r\n\])+List of set check subcommands:(\[^\r\n\]*\[\r\n\])+set check range -- Set range checking(\[^\r\n\]*\[\r\n\])+set check type -- Set type checking(\[^\r\n\]*\[\r\n\])+Type \"help set check\" followed by set check subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set check \"c\" abbreviation"
+-#test set check "ch" abbreviation
+-gdb_test "set ch" "\"set check\" must be followed by the name of a check subcommand.(\[^\r\n\]*\[\r\n\])+List of set check subcommands:(\[^\r\n\]*\[\r\n\])+set check range -- Set range checking(\[^\r\n\]*\[\r\n\])+set check type -- Set type checking(\[^\r\n\]*\[\r\n\])+Type \"help set check\" followed by set check subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set check \"ch\" abbreviation"
+-#test set check
+-gdb_test "set check" "\"set check\" must be followed by the name of a check subcommand.(\[^\r\n\]*\[\r\n\])+List of set check subcommands:(\[^\r\n\]*\[\r\n\])+set check range -- Set range checking(\[^\r\n\]*\[\r\n\])+set check type -- Set type checking(\[^\r\n\]*\[\r\n\])+Type \"help set check\" followed by set check subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set check"
++
++# Test set check abbreviations
++foreach x {"c" "ch" "check"} {
++ gdb_test "set $x" "\"set check\" must be followed by the name of a check subcommand.(\[^\r\n\]*\[\r\n\])+List of set check subcommands:(\[^\r\n\]*\[\r\n\])+set check range -- Set range checking(\[^\r\n\]*\[\r\n\])+set check type -- Set strict type checking(\[^\r\n\]*\[\r\n\])+Type \"help set check\" followed by set check subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." \
++ "set check \"$x\" abbreviation"
++}
++
+ #test set check range
+ gdb_test "set check range" ".*" "set check range"
+ #test set check type
+@@ -583,16 +584,17 @@ gdb_test "shell echo Hi dad!" "Hi dad!"
+ gdb_test "show annotate" "Annotation_level is 0." "show annotate"
+ #test show args
+ gdb_test "show args" "Argument list to give program being debugged when it is started is \"\"." "show args"
+-#test show check "c" abbreviation
+-gdb_test "show c" "range: *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+type: *Type checking is \"auto; currently off\".*" "show check \"c\" abbreviation"
+-#test show check "ch" abbreviation
+-gdb_test "show ch" "range: *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+type: *Type checking is \"auto; currently off\"." "show check \"ch\" abbreviation"
+-#test show check
+-gdb_test "show check" "range: *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+type: *Type checking is \"auto; currently off\"." "show check"
++
++# test show check abbreviations
++foreach x {"c" "ch" "check"} {
++ gdb_test "show $x" "range: *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+type: *Strict type checking is on\..*" \
++ "show check \"$x\" abbreviation"
++}
++
+ #test show check range
+ gdb_test "show check range" "Range checking is \"auto; currently off\"." "show check range"
+ #test show check type
+-gdb_test "show check type" "Type checking is \"auto; currently off\"." "show check type"
++gdb_test "show check type" "Strict type checking is on\." "show check type"
+ #test show commands
+ gdb_test "show commands" ".*" "show commands"
+ #test show complaints
+Index: gdb-7.4.50.20120120/gdb/testsuite/gdb.base/help.exp
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/testsuite/gdb.base/help.exp 2012-09-27 22:08:06.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/testsuite/gdb.base/help.exp 2012-09-27 22:09:46.247565554 +0200
+@@ -378,22 +378,26 @@ gdb_test "help section" "Change the base
+ gdb_test "help set annotate" "Set annotation_level\.\[\r\n\]+0 == normal; 1 == fullname \\(for use when running under emacs\\)\[\r\n\]+2 == output annotated suitably for use by programs that control GDB\." "help set annotate"
+ # test help set args
+ gdb_test "help set args" "Set argument list to give program being debugged when it is started\.\[\r\n\]+Follow this command with any number of args, to be passed to the program\."
+-# test help set check "c" abbreviation
+-test_prefix_command_help {"set c" "set check"} {
+- "Set the status of the type/range checker\.\[\r\n\]+"
+-} "help set check \"c\" abbreviation"
+-# test help set check "ch" abbreviation
+-test_prefix_command_help {"set ch" "set check"} {
+- "Set the status of the type/range checker\.\[\r\n\]+"
+-} "help set check \"ch\" abbreviation"
+-# test help set check
++
++# Test help set check abbreviations
++foreach x {"c" "ch"} {
++ test_prefix_command_help [list "set $x" "set check"] {
++ "Set the status of the type/range checker\.\[\r\n\]+"
++ } "help set check \"$x\" abbreviation"
++}
++
++# Test help set check
+ test_prefix_command_help {"set check"} {
+ "Set the status of the type/range checker\.\[\r\n\]+"
+ }
++
+ # test help set check range
+ gdb_test "help set check range" "Set range checking\. \\(on/warn/off/auto\\)" "help set check range"
+-# test help set check type
+-gdb_test "help set check type" "Set type checking\. \\(on/warn/off/auto\\)." "help set check type"
++
++# Test help set check type
++gdb_test "help set check type" "Set strict type checking\." \
++ "help set check type"
++
+ # test help set complaints
+ gdb_test "help set complaints" "Set max number of complaints about incorrect symbols\." "help set complaints"
+ # test help set confirm
+@@ -491,18 +495,25 @@ gdb_test "help shell" "Execute the rest
+ gdb_test "help show annotate" "Show annotation_level\.\[\r\n\]+0 == normal; 1 == fullname \\(for use when running under emacs\\)\[\r\n\]+2 == output annotated suitably for use by programs that control GDB\." "help show annotate"
+ # test help show args
+ gdb_test "help show args" "Show argument list to give program being debugged when it is started\.\[\r\n\]+Follow this command with any number of args, to be passed to the program\."
+-# test help show check "c" abbreviation
+-test_prefix_command_help {"show c" "show check"} {
+- "Show the status of the type/range checker\.\[\r\n\]+"
+-} "help show check \"c\" abbreviation"
++
++# Test help show check abbreviations
++foreach x {"c" "check"} {
++ test_prefix_command_help [list "show $x" "show check"] {
++ "Show the status of the type/range checker\.\[\r\n\]+"
++ } "help show check \"$x\" abbreviation"
++}
++
+ # test help show check
+ test_prefix_command_help {"show check"} {
+ "Show the status of the type/range checker\.\[\r\n\]+"
+ }
+ # test help show check range
+ gdb_test "help show check range" "Show range checking\. \\(on/warn/off/auto\\)" "help show check range"
++
+ # test help show check type
+-gdb_test "help show check type" "Show type checking\. \\(on/warn/off/auto\\)" "help show check type"
++gdb_test "help show check type" "Show strict type checking\." \
++ "help show check type"
++
+ # test help show commands
+ gdb_test "help show commands" "Show the history of commands you typed\.\[\r\n\]+You can supply a command number to start with, or a `\[+\]' to start after\[\r\n\]+the previous command number shown\." "help show commands"
+ # test help show complaints
+Index: gdb-7.4.50.20120120/gdb/testsuite/gdb.base/setshow.exp
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/testsuite/gdb.base/setshow.exp 2012-01-16 17:21:45.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/testsuite/gdb.base/setshow.exp 2012-09-27 22:09:46.254565557 +0200
+@@ -110,19 +110,22 @@ gdb_test "show check range" "Range check
+ #test set check range auto
+ gdb_test_no_output "set check range auto" "set check range auto"
+ #test show check range auto
+-gdb_test "show check range" "Range checking is \"auto; currently .*" "show check range (auto)"
+-#test set check type on
+-gdb_test "set check type on" ".*" "set check type on"
+-#test show check type on
+-gdb_test "show check type" "Type checking is \"on\"..*" "show check type (on)"
+-#test set check type off with trailing space
+-gdb_test_no_output "set check type off " "set check type off"
+-#test show check type off
+-gdb_test "show check type" "Type checking is \"off\"..*" "show check type (off)"
+-#test set check type auto
+-gdb_test_no_output "set check type auto" "set check type auto"
+-#test show check type
+-gdb_test "show check type" "Type checking is \"auto; currently .*" "show check type (auto)"
++gdb_test "show check range" "Range checking is \"auto; currently .*" "show check range (auto)"
++
++# Test set check type on
++gdb_test "set check type on" ".*" "set check type on"
++
++# Test show check type on
++gdb_test "show check type" "Strict type checking is on\..*" \
++ "show check type (on)"
++
++# Test set check type off with trailing space
++gdb_test_no_output "set check type off " "set check type off"
++
++# Test show check type off
++gdb_test "show check type" "Strict type checking is off\..*" \
++ "show check type (off)"
++
+ #test set complaints 100
+ gdb_test_no_output "set complaints 100" "set complaints 100"
+ #test show complaints 100
+Index: gdb-7.4.50.20120120/gdb/testsuite/gdb.cp/converts.exp
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/testsuite/gdb.cp/converts.exp 2012-01-04 09:17:46.000000000 +0100
++++ gdb-7.4.50.20120120/gdb/testsuite/gdb.cp/converts.exp 2012-09-27 22:09:46.255565557 +0200
+@@ -70,9 +70,37 @@ gdb_test_multiple "p foo3_1 (0, 0)" $t {
+ pass $t
+ }
+ }
++
+ gdb_test "p foo3_1 (0, 1)" \
+ "Cannot resolve function foo3_1 to any overloaded instance"
+ gdb_test "p foo3_1 (0, (const char**) 1)" " = 31"
+ gdb_test "p foo3_2 (0, 0)" "= 32"
+ gdb_test "p foo3_2 (0, (char const**) 0)" " = 320"
+
++# Test for strict type checking
++set error_str "Cannot resolve function %s to any overloaded instance"
++gdb_test "show check type" "Strict type checking is on\."
++gdb_test "p foo1_type_check (123)" [format $error_str "foo1_type_check"]
++gdb_test "p foo2_type_check (0, 1)" [format $error_str "foo2_type_check"]
++gdb_test "p foo2_type_check (1, 0)" [format $error_str "foo2_type_check"]
++gdb_test "p foo2_type_check (1, 1)" [format $error_str "foo2_type_check"]
++gdb_test "p foo3_type_check (0, 0, 1)" [format $error_str "foo3_type_check"]
++gdb_test "p foo3_type_check (0, 1, 0)" [format $error_str "foo3_type_check"]
++gdb_test "p foo3_type_check (1, 0, 0)" [format $error_str "foo3_type_check"]
++gdb_test "p foo3_type_check (0, 1, 1)" [format $error_str "foo3_type_check"]
++gdb_test "p foo3_type_check (1, 1, 0)" [format $error_str "foo3_type_check"]
++gdb_test "p foo3_type_check (1, 1, 1)" [format $error_str "foo3_type_check"]
++
++gdb_test_no_output "set check type off"
++gdb_test "show check type" "Strict type checking is off\."
++gdb_test "p foo1_type_check (123)" " = 1000"
++gdb_test "p foo2_type_check (0, 1)" " = 1001"
++gdb_test "p foo2_type_check (1, 0)" " = 1001"
++gdb_test "p foo2_type_check (1, 1)" " = 1001"
++gdb_test "p foo3_type_check (0, 0, 1)" " = 1002"
++gdb_test "p foo3_type_check (0, 1, 0)" " = 1002"
++gdb_test "p foo3_type_check (1, 0, 0)" " = 1002"
++gdb_test "p foo3_type_check (0, 1, 1)" " = 1002"
++gdb_test "p foo3_type_check (1, 1, 0)" " = 1002"
++gdb_test "p foo3_type_check (1, 1, 1)" " = 1002"
++gdb_test "p foo3_2 (1,1)" " = 32"
+Index: gdb-7.4.50.20120120/gdb/testsuite/gdb.cp/converts.cc
+===================================================================
+--- gdb-7.4.50.20120120.orig/gdb/testsuite/gdb.cp/converts.cc 2011-10-14 22:22:50.000000000 +0200
++++ gdb-7.4.50.20120120/gdb/testsuite/gdb.cp/converts.cc 2012-09-27 22:09:46.256565557 +0200
+@@ -27,6 +27,10 @@ int foo3_1 (int a, const char **b) { ret
+ int foo3_2 (int a, int b) { return 32; }
+ int foo3_2 (int a, const char **b) { return 320; }
+
++int foo1_type_check (char *a) { return 1000; }
++int foo2_type_check (char *a, char *b) { return 1001; }
++int foo3_type_check (char *a, char *b, char *c) { return 1002; }
++
+ int main()
+ {
+
+@@ -62,5 +66,9 @@ int main()
+ foo3_2 (0, static_cast<char const**> (0));
+ foo3_2 (0, 0);
+
++ foo1_type_check (a);
++ foo2_type_check (a, a);
++ foo3_type_check (a, a, a);
++
+ return 0; // end of main
+ }
diff --git a/gdb.spec b/gdb.spec
index 46034a4..1cc7b91 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -35,7 +35,7 @@ Version: 7.4.50.%{snap}
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 50%{?dist}
+Release: 51%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
Group: Development/Debuggers
@@ -632,6 +632,12 @@ Patch697: gdb-parameterref-2of2.patch
# Support constant DW_AT_high_pc produced by FSF GCC HEAD (Mark Wielaard).
Patch724: gdb-highpc-const.patch
+# Fix "ambiguous linespec" regression: break lineno.
+Patch727: gdb-break-lineno.patch
+
+# Permit passing pointers as address number even for C++ methods (Keith Seitz).
+Patch728: gdb-check-type.patch
+
%if 0%{!?rhel:1} || 0%{?rhel} > 6
# RL_STATE_FEDORA_GDB would not be found for:
# Patch642: gdb-readline62-ask-more-rh.patch
@@ -955,6 +961,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch696 -p1
%patch697 -p1
%patch724 -p1
+%patch727 -p1
+%patch728 -p1
%patch393 -p1
%if 0%{!?el5:1} || 0%{?scl:1}
@@ -1447,6 +1455,10 @@ fi
%endif # 0%{!?el5:1} || "%{_target_cpu}" == "noarch"
%changelog
+* Thu Sep 27 2012 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.4.50.20120120-51.fc17
+- Fix "ambiguous linespec" regression: break lineno.
+- Permit passing pointers as address number even for C++ methods (Keith Seitz).
+
* Wed Aug 22 2012 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.4.50.20120120-50.fc17
- Support constant DW_AT_high_pc produced by FSF GCC HEAD (Mark Wielaard).
More information about the scm-commits
mailing list