From: "Rob Quill" <rob.quill@gmail.com>
To: "Mark Kettenis" <mark.kettenis@xs4all.nl>,
rob.quill@gmail.com, gdb-patches@sourceware.org,
"Daniel Jacobowitz" <drow@false.org>
Subject: Re: Remove deprecated_set_value_type (part 1)
Date: Sun, 27 Jul 2008 19:16:00 -0000 [thread overview]
Message-ID: <baf6008d0807271216n3b7b2d39h30bc2529fe23bebd@mail.gmail.com> (raw)
In-Reply-To: <20080226012037.GA4456@caradoc.them.org>
[-- Attachment #1: Type: text/plain, Size: 857 bytes --]
2008/2/26 Daniel Jacobowitz <drow@false.org>:
> On Wed, Jan 30, 2008 at 07:04:40PM +0100, Mark Kettenis wrote:
>> There are some code style problems here too, and although they're not
>> your fault, it'd be nice to fix them while you're there. Actually, it
>> looks to me as if the temparg variable is completely redundant now, so
>> the above could be simplified to
>>
>> val = value_addr (val);
>
> Mark's right; also, there are still formatting problems with the patch
> that I commented on the last time I reviewed it :-( Rob, let me know if
> you'd like me to point them out individually.
Hi all,
This has been a long time coming, but I've finally managed to find
some time to get this finished. Please find attached what I believe
should be the final version of this patch, checked against the current
head with no regressions.
Rob
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: remove_deprecated_set_value_type.patch --]
[-- Type: text/x-diff; name=remove_deprecated_set_value_type.patch, Size: 6817 bytes --]
Removes some uses of deprecated_set_value_type
* ada-lang.c (ada_coerce_to_simple_array_type): Create a new zero
value of the correct type instead of changing type.
* c-valprint.c (c_value_print): Call copy_value_and_change_type.
* printcmd.c (printf_command): Create a zero value of the
correct type and copy the contents of the old value into it.
* valops.c (value_cast_pointers, value_cast, value_assign,
value_addr): Call value_value_copy_and_change_type instead
of copying the value and then changing the type.
* value.c (value_copy_and_change_type): Define.
* value.h (value_copy_and_change_type): Declare.
Index: ada-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/ada-lang.c,v
retrieving revision 1.151
diff -u -p -r1.151 ada-lang.c
--- ada-lang.c 21 Jul 2008 16:47:10 -0000 1.151
+++ ada-lang.c 26 Jul 2008 22:16:29 -0000
@@ -1767,9 +1767,8 @@ struct type *
ada_coerce_to_simple_array_type (struct type *type)
{
struct value *mark = value_mark ();
- struct value *dummy = value_from_longest (builtin_type_long, 0);
+ struct value *dummy = value_zero (type, not_lval);
struct type *result;
- deprecated_set_value_type (dummy, type);
result = ada_type_of_array (dummy, 0);
value_free_to_mark (mark);
return result;
Index: c-valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/c-valprint.c,v
retrieving revision 1.50
diff -u -p -r1.50 c-valprint.c
--- c-valprint.c 19 May 2008 15:50:09 -0000 1.50
+++ c-valprint.c 26 Jul 2008 22:16:29 -0000
@@ -562,10 +562,7 @@ c_value_print (struct value *val, struct
/* Copy value, change to pointer, so we don't get an
* error about a non-pointer type in value_rtti_target_type
*/
- struct value *temparg;
- temparg=value_copy(val);
- deprecated_set_value_type (temparg, lookup_pointer_type (TYPE_TARGET_TYPE(type)));
- val=temparg;
+ val=value_addr (val);
}
/* Pointer to class, check real type of object */
fprintf_filtered (stream, "(");
Index: printcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/printcmd.c,v
retrieving revision 1.127
diff -u -p -r1.127 printcmd.c
--- printcmd.c 6 Jun 2008 20:58:08 -0000 1.127
+++ printcmd.c 26 Jul 2008 22:16:30 -0000
@@ -2005,9 +2005,21 @@ printf_command (char *arg, int from_tty)
{
struct type *type = value_type (val_args[nargs]);
if (TYPE_LENGTH (type) == sizeof (float))
- deprecated_set_value_type (val_args[nargs], builtin_type_float);
+ {
+ struct value *temp = value_zero (builtin_type_float, not_lval);
+ memcpy (value_contents_writeable (temp),
+ value_contents (val_args[nargs]),
+ TYPE_LENGTH (builtin_type_float));
+ val_args[nargs] = temp;
+ }
if (TYPE_LENGTH (type) == sizeof (double))
- deprecated_set_value_type (val_args[nargs], builtin_type_double);
+ {
+ struct value *temp = value_zero (builtin_type_double, not_lval);
+ memcpy (value_contents_writeable (temp),
+ value_contents (val_args[nargs]),
+ TYPE_LENGTH (builtin_type_double));
+ val_args[nargs] = temp;
+ }
}
nargs++;
s = s1;
Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.192
diff -u -p -r1.192 valops.c
--- valops.c 15 Jul 2008 22:13:42 -0000 1.192
+++ valops.c 26 Jul 2008 22:16:32 -0000
@@ -281,8 +281,7 @@ value_cast_pointers (struct type *type,
}
/* No superclass found, just change the pointer type. */
- arg2 = value_copy (arg2);
- deprecated_set_value_type (arg2, type);
+ arg2 = value_copy_and_change_type (arg2, type);
arg2 = value_change_enclosing_type (arg2, type);
set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
return arg2;
@@ -480,8 +479,7 @@ value_cast (struct type *type, struct va
if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
return value_cast_pointers (type, arg2);
- arg2 = value_copy (arg2);
- deprecated_set_value_type (arg2, type);
+ arg2 = value_copy_and_change_type (arg2, type);
arg2 = value_change_enclosing_type (arg2, type);
set_value_pointed_to_offset (arg2, 0); /* pai: chk_val */
return arg2;
@@ -926,10 +924,9 @@ value_assign (struct value *toval, struc
fromval = value_from_longest (type, fieldval);
}
- val = value_copy (toval);
+ val = value_copy_and_change_type (toval, type);
memcpy (value_contents_raw (val), value_contents (fromval),
TYPE_LENGTH (type));
- deprecated_set_value_type (val, type);
val = value_change_enclosing_type (val,
value_enclosing_type (fromval));
set_value_embedded_offset (val, value_embedded_offset (fromval));
@@ -1106,8 +1103,8 @@ value_addr (struct value *arg1)
keep the same location information, which is efficient, and
allows &(&X) to get the location containing the reference. */
arg2 = value_copy (arg1);
- deprecated_set_value_type (arg2,
- lookup_pointer_type (TYPE_TARGET_TYPE (type)));
+ arg2 = value_copy_and_change_type (arg1,
+ lookup_pointer_type (TYPE_TARGET_TYPE (type)));
return arg2;
}
if (TYPE_CODE (type) == TYPE_CODE_FUNC)
Index: value.c
===================================================================
RCS file: /cvs/src/src/gdb/value.c,v
retrieving revision 1.64
diff -u -p -r1.64 value.c
--- value.c 11 Jun 2008 19:59:09 -0000 1.64
+++ value.c 26 Jul 2008 22:16:33 -0000
@@ -276,6 +276,15 @@ deprecated_set_value_type (struct value
value->type = type;
}
+struct value *
+value_copy_and_change_type (struct value *arg, struct type *type)
+{
+ struct value *val = value_copy (arg);
+ val->type = type;
+
+ return val;
+}
+
int
value_offset (struct value *value)
{
Index: value.h
===================================================================
RCS file: /cvs/src/src/gdb/value.h,v
retrieving revision 1.115
diff -u -p -r1.115 value.h
--- value.h 6 Jun 2008 20:58:08 -0000 1.115
+++ value.h 26 Jul 2008 22:16:34 -0000
@@ -57,6 +57,12 @@ extern struct type *value_type (struct v
extern void deprecated_set_value_type (struct value *value,
struct type *type);
+/* Copy ARG to new value. The new value is exactly the same, except
+ for its type, which is set to TYPE. */
+
+extern struct value *value_copy_and_change_type (struct value *arg,
+ struct type *type);
+
/* Only used for bitfields; number of bits contained in them. */
extern int value_bitsize (struct value *);
next prev parent reply other threads:[~2008-07-27 19:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-21 4:53 Rob Quill
2008-01-29 20:07 ` Daniel Jacobowitz
2008-01-30 12:06 ` Rob Quill
2008-01-30 18:06 ` Mark Kettenis
2008-02-26 2:24 ` Daniel Jacobowitz
2008-02-26 14:36 ` Rob Quill
2008-07-27 19:16 ` Rob Quill [this message]
2008-08-09 15:10 ` Rob Quill
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=baf6008d0807271216n3b7b2d39h30bc2529fe23bebd@mail.gmail.com \
--to=rob.quill@gmail.com \
--cc=drow@false.org \
--cc=gdb-patches@sourceware.org \
--cc=mark.kettenis@xs4all.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox