From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8983 invoked by alias); 12 Aug 2013 12:28:29 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 8969 invoked by uid 89); 12 Aug 2013 12:28:29 -0000 X-Spam-SWARE-Status: No, score=-5.8 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_MED,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD autolearn=ham version=3.3.2 Received: from mms2.broadcom.com (HELO mms2.broadcom.com) (216.31.210.18) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Mon, 12 Aug 2013 12:28:28 +0000 Received: from [10.9.208.57] by mms2.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Mon, 12 Aug 2013 05:22:05 -0700 X-Server-Uuid: 4500596E-606A-40F9-852D-14843D8201B2 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS08.corp.ad.broadcom.com (10.9.208.57) with Microsoft SMTP Server (TLS) id 14.1.438.0; Mon, 12 Aug 2013 05:28:15 -0700 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) with Microsoft SMTP Server id 14.1.438.0; Mon, 12 Aug 2013 05:28:15 -0700 Received: from [10.177.73.61] (unknown [10.177.73.61]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id A8634F2D72 for ; Mon, 12 Aug 2013 05:28:14 -0700 (PDT) Message-ID: <5208D4DD.8080309@broadcom.com> Date: Mon, 12 Aug 2013 12:28:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: gdb-patches@sourceware.org Subject: [PATCH 07/12] Generic print unavailable or optimized out function. References: <5208D1DF.1090201@broadcom.com> In-Reply-To: <5208D1DF.1090201@broadcom.com> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-08/txt/msg00307.txt.bz2 Following on from the patch #6, this factors out a common pattern: given a value print either or . OK to apply? Thanks, Andrew gdb/ChangeLog 2013-08-08 Andrew Burgess * cp-valprint.c (cp_print_value_fields): Use val_print_unavailability_reason. * jv-valprint.c (java_print_value_fields): Use val_print_unavailability_reason. * p-valprint.c (pascal_object_print_value_fields): Use val_print_unavailability_reason. * valprint.c (valprint_check_validity, value_check_printable) (val_print_scalar_formatted): Use val_print_unavailability_reason. (val_print_unavailability_reason): New function. * valprint.h (val_print_unavailability_reason): New function. diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 5dd98b0..6b66092 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -298,13 +298,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, TYPE_FIELD_BITPOS (type, i), TYPE_FIELD_BITSIZE (type, i))) { - int optimizedp, unavailablep; - - value_availability_flags (val, &optimizedp, &unavailablep); - if (optimizedp) - val_print_optimized_out (stream); - else - val_print_unavailable (stream); + val_print_unavailability_reason (val, stream); } else { diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c index edcd769..dfa2d38 100644 --- a/gdb/jv-valprint.c +++ b/gdb/jv-valprint.c @@ -394,15 +394,7 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr, } else if (!value_bits_available (val, TYPE_FIELD_BITPOS (type, i), TYPE_FIELD_BITSIZE (type, i))) - { - int optimizedp, unavailablep; - - value_availability_flags (val, &optimizedp, &unavailablep); - if (optimizedp) - val_print_optimized_out (stream); - else - val_print_unavailable (stream); - } + val_print_unavailability_reason (val, stream); else { struct value_print_options opts; diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index bc57541..0bd0022 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -628,15 +628,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr, } else if (!value_bits_available (val, TYPE_FIELD_BITPOS (type, i), TYPE_FIELD_BITSIZE (type, i))) - { - int optimizedp, unavailablep; - - value_availability_flags (val, &optimizedp, &unavailablep); - if (optimizedp) - val_print_optimized_out (stream); - else - val_print_unavailable (stream); - } + val_print_unavailability_reason (val, stream); else { struct value_print_options opts = *options; diff --git a/gdb/valprint.c b/gdb/valprint.c index 4e165b4..0443737 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -314,13 +314,7 @@ valprint_check_validity (struct ui_file *stream, if (!value_bits_available (val, TARGET_CHAR_BIT * embedded_offset, TARGET_CHAR_BIT * TYPE_LENGTH (type))) { - int optimizedp, unavailablep; - - value_availability_flags (val, &optimizedp, &unavailablep); - if (optimizedp) - val_print_optimized_out (stream); - else - val_print_unavailable (stream); + val_print_unavailability_reason (val, stream); return 0; } @@ -353,6 +347,19 @@ val_print_invalid_address (struct ui_file *stream) fprintf_filtered (stream, _("")); } +void +val_print_unavailability_reason (const struct value *value, + struct ui_file *stream) +{ + int optimizedp, unavailablep; + + value_availability_flags (value, &optimizedp, &unavailablep); + if (optimizedp) + val_print_optimized_out (stream); + else + val_print_unavailable (stream); +} + /* A generic val_print that is suitable for use by language implementations of the la_val_print method. This function can handle most type codes, though not all, notably exception @@ -805,15 +812,7 @@ value_check_printable (struct value *val, struct ui_file *stream, if (options->summary && !scalar_type_p (value_type (val))) fprintf_filtered (stream, "..."); else - { - int optimizedp, unavailablep; - - value_availability_flags (val, &optimizedp, &unavailablep); - if (optimizedp) - val_print_optimized_out (stream); - else - val_print_unavailable (stream); - } + val_print_unavailability_reason (val, stream); return 0; } @@ -973,15 +972,7 @@ val_print_scalar_formatted (struct type *type, /* A scalar object that does not have all bits available can't be printed, because all bits contribute to its representation. */ if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type))) - { - int optimizedp, unavailablep; - - value_availability_flags (val, &optimizedp, &unavailablep); - if (optimizedp) - val_print_optimized_out (stream); - else - val_print_unavailable (stream); - } + val_print_unavailability_reason (val, stream); else print_scalar_formatted (valaddr + embedded_offset, type, options, size, stream); diff --git a/gdb/valprint.h b/gdb/valprint.h index 2959098..5d7f211 100644 --- a/gdb/valprint.h +++ b/gdb/valprint.h @@ -166,6 +166,12 @@ extern void val_print_unavailable (struct ui_file *stream); extern void val_print_invalid_address (struct ui_file *stream); +/* For VALUE call the most appropriate of val_print_optimized_out or + val_print_unavailable on STREAM. */ + +void val_print_unavailability_reason (const struct value *value, + struct ui_file *stream); + /* An instance of this is passed to generic_val_print and describes some language-specific ways to print things. */