diff options
author | Petr Machata <pmachata@redhat.com> | 2012-05-04 14:18:35 +0200 |
---|---|---|
committer | Petr Machata <pmachata@redhat.com> | 2012-08-29 19:03:16 +0200 |
commit | 2fb192b7bb49b659343f6dec89931168de00660c (patch) | |
tree | 0273a88265b2fbc099f2a8b23d81e913a51d4888 /value.c | |
parent | ac147e92ee3e79817d98f9b94f9363a2e063789c (diff) | |
download | ltrace-2fb192b7bb49b659343f6dec89931168de00660c.tar.gz |
Add interface value_pass_by_reference, use in x86_64 back end
Diffstat (limited to 'value.c')
-rw-r--r-- | value.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -433,3 +433,23 @@ value_is_zero(struct value *val, struct value_dict *arguments) } return zero; } + +int +value_pass_by_reference(struct value *value) +{ + assert(value != NULL); + assert(value->type->type == ARGTYPE_STRUCT); + + struct arg_type_info *new_info = calloc(sizeof(*new_info), 1); + if (new_info == NULL) + return -1; + + int own; + struct arg_type_info *orig; + value_take_type(value, &orig, &own); + type_init_pointer(new_info, orig, own); + new_info->lens = orig->lens; + value_set_type(value, new_info, 1); + + return 0; +} |