Riscv shared libraries should not export __global_pointer$.
[deliverable/binutils-gdb.git] / gdb / expprint.c
index fad20e81519737d869428e4253c9790412bf7c1f..a99832c7aba7d5f25f2e1d35fe473456009ccb47 100644 (file)
@@ -105,14 +105,14 @@ print_subexp_standard (struct expression *exp, int *pos,
       }
       return;
 
-    case OP_DOUBLE:
+    case OP_FLOAT:
       {
        struct value_print_options opts;
 
        get_no_prettyformat_print_options (&opts);
        (*pos) += 3;
-       value_print (value_from_double (exp->elts[pc + 1].type,
-                                       exp->elts[pc + 2].doubleconst),
+       value_print (value_from_contents (exp->elts[pc + 1].type,
+                                         exp->elts[pc + 2].floatconst),
                     stream, &opts);
       }
       return;
@@ -543,11 +543,15 @@ print_subexp_standard (struct expression *exp, int *pos,
 
     case TYPE_INSTANCE:
       {
-       LONGEST count = exp->elts[pc + 1].longconst;
+       type_instance_flags flags
+         = (type_instance_flag_value) longest_to_int (exp->elts[pc + 1].longconst);
+       LONGEST count = exp->elts[pc + 2].longconst;
 
+       /* The FLAGS.  */
+       (*pos)++;
        /* The COUNT.  */
        (*pos)++;
-       fputs_unfiltered ("TypesInstance(", stream);
+       fputs_unfiltered ("TypeInstance(", stream);
        while (count-- > 0)
          {
            type_print (exp->elts[(*pos)++].type, "", stream, 0);
@@ -558,6 +562,12 @@ print_subexp_standard (struct expression *exp, int *pos,
        /* Ending COUNT and ending TYPE_INSTANCE.  */
        (*pos) += 2;
        print_subexp (exp, pos, stream, PREC_PREFIX);
+
+       if (flags & TYPE_INSTANCE_FLAG_CONST)
+         fputs_unfiltered (",const", stream);
+       if (flags & TYPE_INSTANCE_FLAG_VOLATILE)
+         fputs_unfiltered (",volatile", stream);
+
        fputs_unfiltered (")", stream);
        return;
       }
@@ -861,13 +871,14 @@ dump_subexp_body_standard (struct expression *exp,
                        (long) exp->elts[elt + 1].longconst);
       elt += 3;
       break;
-    case OP_DOUBLE:
+    case OP_FLOAT:
       fprintf_filtered (stream, "Type @");
       gdb_print_host_address (exp->elts[elt].type, stream);
       fprintf_filtered (stream, " (");
       type_print (exp->elts[elt].type, NULL, stream, 0);
-      fprintf_filtered (stream, "), value %g",
-                       (double) exp->elts[elt + 1].doubleconst);
+      fprintf_filtered (stream, "), value ");
+      print_floating (exp->elts[elt + 1].floatconst,
+                     exp->elts[elt].type, stream);
       elt += 3;
       break;
     case OP_VAR_VALUE:
@@ -1019,9 +1030,9 @@ dump_subexp_body_standard (struct expression *exp,
 
     case TYPE_INSTANCE:
       {
-       LONGEST len;
-
-       len = exp->elts[elt++].longconst;
+       type_instance_flags flags
+         = (type_instance_flag_value) longest_to_int (exp->elts[elt++].longconst);
+       LONGEST len = exp->elts[elt++].longconst;
        fprintf_filtered (stream, "%s TypeInstance: ", plongest (len));
        while (len-- > 0)
          {
@@ -1034,6 +1045,22 @@ dump_subexp_body_standard (struct expression *exp,
            if (len > 0)
              fputs_filtered (", ", stream);
          }
+
+       fprintf_filtered (stream, " Flags: %s (", hex_string (flags));
+       bool space = false;
+       auto print_one = [&] (const char *mod)
+         {
+           if (space)
+             fputs_filtered (" ", stream);
+           space = true;
+           fprintf_filtered (stream, "%s", mod);
+         };
+       if (flags & TYPE_INSTANCE_FLAG_CONST)
+         print_one ("const");
+       if (flags & TYPE_INSTANCE_FLAG_VOLATILE)
+         print_one ("volatile");
+       fprintf_filtered (stream, ")");
+
        /* Ending LEN and ending TYPE_INSTANCE.  */
        elt += 2;
        elt = dump_subexp (exp, stream, elt);
This page took 0.024934 seconds and 4 git commands to generate.