From patchwork Sun Jul 9 21:58:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 21486 Received: (qmail 50456 invoked by alias); 9 Jul 2017 22:22:43 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 50437 invoked by uid 89); 9 Jul 2017 22:22:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=strategies, H*Ad:U*tom, 5538, held X-HELO: gproxy6.mail.unifiedlayer.com Received: from gproxy6-pub.mail.unifiedlayer.com (HELO gproxy6.mail.unifiedlayer.com) (67.222.39.168) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 09 Jul 2017 22:22:39 +0000 Received: from cmgw3 (unknown [10.0.90.84]) by gproxy6.mail.unifiedlayer.com (Postfix) with ESMTP id 4C44E1E1921 for ; Sun, 9 Jul 2017 15:58:07 -0600 (MDT) Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id ily31v00K2f2jeq01ly68G; Sun, 09 Jul 2017 15:58:07 -0600 X-Authority-Analysis: v=2.2 cv=UM2tJGXy c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=G3gG6ho9WtcA:10 a=20KFwNOVAAAA:8 a=zstS-IiYAAAA:8 a=Jm3iggOjeUOvnUS-hfYA:9 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 174-29-39-24.hlrn.qwest.net ([174.29.39.24]:36206 helo=bapiya) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1dUKDL-0032yH-PD; Sun, 09 Jul 2017 15:58:03 -0600 From: Tom Tromey To: Pedro Alves Cc: Tom Tromey , gdb-patches@sourceware.org Subject: Re: [RFA 02/10] Change backtrace_command_1 calling to use flags References: <20170425194113.17862-1-tom@tromey.com> <20170425194113.17862-3-tom@tromey.com> Date: Sun, 09 Jul 2017 15:58:03 -0600 In-Reply-To: (Pedro Alves's message of "Tue, 27 Jun 2017 17:29:35 +0100") Message-ID: <87wp7hmfx0.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 X-BWhitelist: no X-Exim-ID: 1dUKDL-0032yH-PD X-Source-Sender: 174-29-39-24.hlrn.qwest.net (bapiya) [174.29.39.24]:36206 X-Source-Auth: tom+tromey.com X-Email-Count: 2 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== >>>>> "Pedro" == Pedro Alves writes: Pedro> (We should really make enum frame_filter_flags be an enum-flags.) I wrote a patch for this on my "bt N" branch, after Sergio requested the same thing, but I neglected to send it. I've appended it. As it is based on a different series (that also touches the enum), it won't apply directly as part of this one. Tom commit a6fe3b8ebb23001f9bdf1149a8b8e186b1121ed8 Author: Tom Tromey Date: Tue Apr 25 22:33:50 2017 -0600 Change frame_filter_flags to use DEF_ENUM_FLAGS_TYPE This changes frame_filter_flags to use DEF_ENUM_FLAGS_TYPE, and updates all the uses. It also changes the enum constants to use <<, as suggested by Sergio. ChangeLog 2017-04-25 Tom Tromey * stack.c (backtrace_command_1): Update. * python/python-internal.h (gdbpy_apply_frame_filter): Change type of "flags". * python/py-framefilter.c (py_print_frame) (gdbpy_apply_frame_filter): Change type of "flags". * mi/mi-cmd-stack.c (mi_apply_ext_lang_frame_filter): Change type of "flags". (mi_cmd_stack_list_frames, mi_cmd_stack_list_locals) (mi_cmd_stack_list_args, mi_cmd_stack_list_variables): Update. * extension.h (enum frame_filter_flag): Rename from frame_filter_flags. (frame_filter_flags): Define using DEF_ENUM_FLAGS_TYPE. (apply_ext_lang_frame_filter): Change type of "flags". * extension.c (apply_ext_lang_frame_filter): Change type of "flags". * extension-priv.h (struct extension_language_ops) : Change type of "flags". diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7571fa9..35a1e81 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,23 @@ +2017-04-25 Tom Tromey + + * stack.c (backtrace_command_1): Update. + * python/python-internal.h (gdbpy_apply_frame_filter): Change type + of "flags". + * python/py-framefilter.c (py_print_frame) + (gdbpy_apply_frame_filter): Change type of "flags". + * mi/mi-cmd-stack.c (mi_apply_ext_lang_frame_filter): Change type + of "flags". + (mi_cmd_stack_list_frames, mi_cmd_stack_list_locals) + (mi_cmd_stack_list_args, mi_cmd_stack_list_variables): Update. + * extension.h (enum frame_filter_flag): Rename from + frame_filter_flags. + (frame_filter_flags): Define using DEF_ENUM_FLAGS_TYPE. + (apply_ext_lang_frame_filter): Change type of "flags". + * extension.c (apply_ext_lang_frame_filter): Change type of + "flags". + * extension-priv.h (struct extension_language_ops) + : Change type of "flags". + 2017-04-22 Tom Tromey PR python/16497: diff --git a/gdb/extension-priv.h b/gdb/extension-priv.h index f77f088..05bb850 100644 --- a/gdb/extension-priv.h +++ b/gdb/extension-priv.h @@ -202,7 +202,8 @@ struct extension_language_ops or SCR_BT_COMPLETED on success. */ enum ext_lang_bt_status (*apply_frame_filter) (const struct extension_language_defn *, - struct frame_info *frame, int flags, enum ext_lang_frame_args args_type, + struct frame_info *frame, frame_filter_flags flags, + enum ext_lang_frame_args args_type, struct ui_out *out, int frame_low, int frame_high); /* Update values held by the extension language when OBJFILE is discarded. diff --git a/gdb/extension.c b/gdb/extension.c index cfbae2c..4a7bc6e 100644 --- a/gdb/extension.c +++ b/gdb/extension.c @@ -553,7 +553,8 @@ apply_ext_lang_val_pretty_printer (struct type *type, rather than trying filters in other extension languages. */ enum ext_lang_bt_status -apply_ext_lang_frame_filter (struct frame_info *frame, int flags, +apply_ext_lang_frame_filter (struct frame_info *frame, + frame_filter_flags flags, enum ext_lang_frame_args args_type, struct ui_out *out, int frame_low, int frame_high) diff --git a/gdb/extension.h b/gdb/extension.h index cda2ebf..a9e3c85 100644 --- a/gdb/extension.h +++ b/gdb/extension.h @@ -87,24 +87,26 @@ enum ext_lang_bt_status /* Flags to pass to apply_extlang_frame_filter. */ -enum frame_filter_flags +enum frame_filter_flag { /* Set this flag if frame level is to be printed. */ - PRINT_LEVEL = 1, + PRINT_LEVEL = 1 << 0, /* Set this flag if frame information is to be printed. */ - PRINT_FRAME_INFO = 2, + PRINT_FRAME_INFO = 1 << 1, /* Set this flag if frame arguments are to be printed. */ - PRINT_ARGS = 4, + PRINT_ARGS = 1 << 2, /* Set this flag if frame locals are to be printed. */ - PRINT_LOCALS = 8, + PRINT_LOCALS = 1 << 3, /* Set this flag if a "More frames" message is to be printed. */ - PRINT_MORE_FRAMES = 16, + PRINT_MORE_FRAMES = 1 << 4, }; +DEF_ENUM_FLAGS_TYPE (enum frame_filter_flag, frame_filter_flags); + /* A choice of the different frame argument printing strategies that can occur in different cases of frame filter instantiation. */ @@ -235,7 +237,8 @@ extern int apply_ext_lang_val_pretty_printer const struct language_defn *language); extern enum ext_lang_bt_status apply_ext_lang_frame_filter - (struct frame_info *frame, int flags, enum ext_lang_frame_args args_type, + (struct frame_info *frame, frame_filter_flags flags, + enum ext_lang_frame_args args_type, struct ui_out *out, int frame_low, int frame_high); extern void preserve_ext_lang_values (struct objfile *, htab_t copied_types); diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c index 6250b75..4b9230e 100644 --- a/gdb/mi/mi-cmd-stack.c +++ b/gdb/mi/mi-cmd-stack.c @@ -57,7 +57,8 @@ mi_cmd_enable_frame_filters (const char *command, char **argv, int argc) /* Like apply_ext_lang_frame_filter, but take a print_values */ static enum ext_lang_bt_status -mi_apply_ext_lang_frame_filter (struct frame_info *frame, int flags, +mi_apply_ext_lang_frame_filter (struct frame_info *frame, + frame_filter_flags flags, enum print_values print_values, struct ui_out *out, int frame_low, int frame_high) @@ -146,7 +147,7 @@ mi_cmd_stack_list_frames (const char *command, char **argv, int argc) if (! raw_arg && frame_filters) { - int flags = PRINT_LEVEL | PRINT_FRAME_INFO; + frame_filter_flags flags = PRINT_LEVEL | PRINT_FRAME_INFO; int py_frame_low = frame_low; /* We cannot pass -1 to frame_low, as that would signify a @@ -262,7 +263,7 @@ mi_cmd_stack_list_locals (const char *command, char **argv, int argc) if (! raw_arg && frame_filters) { - int flags = PRINT_LEVEL | PRINT_LOCALS; + frame_filter_flags flags = PRINT_LEVEL | PRINT_LOCALS; result = mi_apply_ext_lang_frame_filter (frame, flags, print_value, current_uiout, 0, 0); @@ -359,7 +360,7 @@ mi_cmd_stack_list_args (const char *command, char **argv, int argc) if (! raw_arg && frame_filters) { - int flags = PRINT_LEVEL | PRINT_ARGS; + frame_filter_flags flags = PRINT_LEVEL | PRINT_ARGS; int py_frame_low = frame_low; /* We cannot pass -1 to frame_low, as that would signify a @@ -451,7 +452,7 @@ mi_cmd_stack_list_variables (const char *command, char **argv, int argc) if (! raw_arg && frame_filters) { - int flags = PRINT_LEVEL | PRINT_ARGS | PRINT_LOCALS; + frame_filter_flags flags = PRINT_LEVEL | PRINT_ARGS | PRINT_LOCALS; result = mi_apply_ext_lang_frame_filter (frame, flags, print_value, diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c index 9eef81b..22bf3b0 100644 --- a/gdb/python/py-framefilter.c +++ b/gdb/python/py-framefilter.c @@ -920,7 +920,7 @@ py_print_args (PyObject *filter, on success. It can also throw an exception RETURN_QUIT. */ static enum ext_lang_bt_status -py_print_frame (PyObject *filter, int flags, +py_print_frame (PyObject *filter, frame_filter_flags flags, enum ext_lang_frame_args args_type, struct ui_out *out, int indent, htab_t levels_printed) { @@ -1332,7 +1332,7 @@ bootstrap_python_frame_filters (struct frame_info *frame, enum ext_lang_bt_status gdbpy_apply_frame_filter (const struct extension_language_defn *extlang, - struct frame_info *frame, int flags, + struct frame_info *frame, frame_filter_flags flags, enum ext_lang_frame_args args_type, struct ui_out *out, int frame_low, int frame_high) { diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index e84c8d2..b6cca7c 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -453,7 +453,8 @@ extern enum ext_lang_rc gdbpy_apply_val_pretty_printer const struct language_defn *language); extern enum ext_lang_bt_status gdbpy_apply_frame_filter (const struct extension_language_defn *, - struct frame_info *frame, int flags, enum ext_lang_frame_args args_type, + struct frame_info *frame, frame_filter_flags flags, + enum ext_lang_frame_args args_type, struct ui_out *out, int frame_low, int frame_high); extern void gdbpy_preserve_values (const struct extension_language_defn *, struct objfile *objfile, diff --git a/gdb/stack.c b/gdb/stack.c index 37e8767..7493eb1 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -1797,7 +1797,7 @@ backtrace_command_1 (char *count_exp, int show_locals, int no_filters, if (! no_filters) { - int flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS; + frame_filter_flags flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS; enum ext_lang_frame_args arg_type; if (show_locals)