}
                break;
        case PRINT_HEX:
-               field = arg->hex.field->field.field;
-               if (!field) {
-                       str = arg->hex.field->field.name;
-                       field = pevent_find_any_field(event, str);
-                       if (!field)
-                               goto out_warning_field;
-                       arg->hex.field->field.field = field;
+               if (arg->hex.field->type == PRINT_DYNAMIC_ARRAY) {
+                       unsigned long offset;
+                       offset = pevent_read_number(pevent,
+                               data + arg->hex.field->dynarray.field->offset,
+                               arg->hex.field->dynarray.field->size);
+                       hex = data + (offset & 0xffff);
+               } else {
+                       field = arg->hex.field->field.field;
+                       if (!field) {
+                               str = arg->hex.field->field.name;
+                               field = pevent_find_any_field(event, str);
+                               if (!field)
+                                       goto out_warning_field;
+                               arg->hex.field->field.field = field;
+                       }
+                       hex = data + field->offset;
                }
-               hex = data + field->offset;
                len = eval_num_arg(data, size, event, arg->hex.size);
                for (i = 0; i < len; i++) {
                        if (i)