]> granicus.if.org Git - strace/commitdiff
Add PAF_ARRAY_TRUNCATED flag for print_array_ex
authorEugene Syromyatnikov <evgsyr@gmail.com>
Tue, 16 Jul 2019 00:08:24 +0000 (02:08 +0200)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 24 Sep 2019 15:31:28 +0000 (15:31 +0000)
PAF_ARRAY_TRUNCATED allows enforcing the fact that an array
is truncated, which is useful for arrays in local memory that are known
as being truncated.

* defs.h (xlat_style_private_flag_bits): Add PAF_ARRAY_TRUNCATED_BIT.
(xlat_style_private_flags): Add PAF_ARRAY_TRUNCATED.
* util.c (print_array_ex): Handle PAF_ARRAY_TRUNCATED in flags.

defs.h
util.c

diff --git a/defs.h b/defs.h
index ccfe673c9b969ef4d92832149fc23c015558f8d5..9070986b12fd0dbfb1be88256a3aabed51c37315 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -765,6 +765,7 @@ sprintxval(char *buf, size_t size, const struct xlat *xlat, unsigned int val,
 enum xlat_style_private_flag_bits {
        /* print_array */
        PAF_PRINT_INDICES_BIT = XLAT_STYLE_SPEC_BITS + 1,
+       PAF_ARRAY_TRUNCATED_BIT,
 
        /* print_xlat */
        PXF_DEFAULT_STR_BIT,
@@ -775,6 +776,7 @@ enum xlat_style_private_flag_bits {
 enum xlat_style_private_flags {
        /* print_array */
        FLAG_(PAF_PRINT_INDICES),
+       FLAG_(PAF_ARRAY_TRUNCATED),
 
        /* print_xlat */
        FLAG_(PXF_DEFAULT_STR),
diff --git a/util.c b/util.c
index db733b83b0bccc0949d14adb592f4a344cd5cc8d..d319428b0d808d19a77a75fa6b25760ae60d24ac 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1357,8 +1357,17 @@ print_array_ex(struct tcb *const tcp,
                        break;
                }
        }
-       if (cur != start_addr)
+
+       if ((cur != start_addr) || !tfetch_mem_func) {
+               if (flags & PAF_ARRAY_TRUNCATED) {
+                       if (cur != start_addr)
+                               tprints(", ");
+
+                       tprints("...");
+               }
+
                tprints("]");
+       }
 
        return cur >= end_addr;
 }