Eliminate UNOP_MEMVAL_TLS
Since minsym references now go via OP_VAR_MSYM_VALUE, UNOP_MEMVAL_TLS is no longer used anywhere. gdb/ChangeLog: 2017-09-04 Pedro Alves <palves@redhat.com> * eval.c (evaluate_subexp_standard): Remove UNOP_MEMVAL_TLS handling. * expprint.c (print_subexp_standard, dump_subexp_body_standard): Ditto. * parse.c (operator_length_standard, operator_check_standard): Ditto. * std-operator.def (UNOP_MEMVAL_TLS): Delete.
This commit is contained in:
parent
46a4882b3c
commit
dd5901a6a5
|
@ -1,3 +1,13 @@
|
||||||
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* eval.c (evaluate_subexp_standard): Remove UNOP_MEMVAL_TLS
|
||||||
|
handling.
|
||||||
|
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
|
||||||
|
Ditto.
|
||||||
|
* parse.c (operator_length_standard, operator_check_standard):
|
||||||
|
Ditto.
|
||||||
|
* std-operator.def (UNOP_MEMVAL_TLS): Delete.
|
||||||
|
|
||||||
2017-09-04 Pedro Alves <palves@redhat.com>
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* ax-gdb.c: Include "typeprint.h".
|
* ax-gdb.c: Include "typeprint.h".
|
||||||
|
|
16
gdb/eval.c
16
gdb/eval.c
|
@ -2655,22 +2655,6 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||||
else
|
else
|
||||||
return value_at_lazy (type, value_as_address (arg1));
|
return value_at_lazy (type, value_as_address (arg1));
|
||||||
|
|
||||||
case UNOP_MEMVAL_TLS:
|
|
||||||
(*pos) += 3;
|
|
||||||
arg1 = evaluate_subexp (expect_type, exp, pos, noside);
|
|
||||||
if (noside == EVAL_SKIP)
|
|
||||||
return eval_skip_value (exp);
|
|
||||||
if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
|
||||||
return value_zero (exp->elts[pc + 2].type, lval_memory);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CORE_ADDR tls_addr;
|
|
||||||
|
|
||||||
tls_addr = target_translate_tls_address (exp->elts[pc + 1].objfile,
|
|
||||||
value_as_address (arg1));
|
|
||||||
return value_at_lazy (exp->elts[pc + 2].type, tls_addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
case UNOP_PREINCREMENT:
|
case UNOP_PREINCREMENT:
|
||||||
arg1 = evaluate_subexp (expect_type, exp, pos, noside);
|
arg1 = evaluate_subexp (expect_type, exp, pos, noside);
|
||||||
if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
|
if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||||
|
|
|
@ -478,18 +478,6 @@ print_subexp_standard (struct expression *exp, int *pos,
|
||||||
fputs_filtered (")", stream);
|
fputs_filtered (")", stream);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case UNOP_MEMVAL_TLS:
|
|
||||||
(*pos) += 3;
|
|
||||||
if ((int) prec > (int) PREC_PREFIX)
|
|
||||||
fputs_filtered ("(", stream);
|
|
||||||
fputs_filtered ("{", stream);
|
|
||||||
type_print (exp->elts[pc + 2].type, "", stream, 0);
|
|
||||||
fputs_filtered ("} ", stream);
|
|
||||||
print_subexp (exp, pos, stream, PREC_PREFIX);
|
|
||||||
if ((int) prec > (int) PREC_PREFIX)
|
|
||||||
fputs_filtered (")", stream);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case BINOP_ASSIGN_MODIFY:
|
case BINOP_ASSIGN_MODIFY:
|
||||||
opcode = exp->elts[pc + 1].opcode;
|
opcode = exp->elts[pc + 1].opcode;
|
||||||
(*pos) += 2;
|
(*pos) += 2;
|
||||||
|
@ -961,16 +949,6 @@ dump_subexp_body_standard (struct expression *exp,
|
||||||
fprintf_filtered (stream, ")");
|
fprintf_filtered (stream, ")");
|
||||||
elt = dump_subexp (exp, stream, elt + 2);
|
elt = dump_subexp (exp, stream, elt + 2);
|
||||||
break;
|
break;
|
||||||
case UNOP_MEMVAL_TLS:
|
|
||||||
fprintf_filtered (stream, "TLS type @");
|
|
||||||
gdb_print_host_address (exp->elts[elt + 1].type, stream);
|
|
||||||
fprintf_filtered (stream, " (__thread /* \"%s\" */ ",
|
|
||||||
(exp->elts[elt].objfile == NULL ? "(null)"
|
|
||||||
: objfile_name (exp->elts[elt].objfile)));
|
|
||||||
type_print (exp->elts[elt + 1].type, NULL, stream, 0);
|
|
||||||
fprintf_filtered (stream, ")");
|
|
||||||
elt = dump_subexp (exp, stream, elt + 3);
|
|
||||||
break;
|
|
||||||
case OP_TYPE:
|
case OP_TYPE:
|
||||||
fprintf_filtered (stream, "Type @");
|
fprintf_filtered (stream, "Type @");
|
||||||
gdb_print_host_address (exp->elts[elt].type, stream);
|
gdb_print_host_address (exp->elts[elt].type, stream);
|
||||||
|
|
10
gdb/parse.c
10
gdb/parse.c
|
@ -950,11 +950,6 @@ operator_length_standard (const struct expression *expr, int endpos,
|
||||||
args = 1;
|
args = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNOP_MEMVAL_TLS:
|
|
||||||
oplen = 4;
|
|
||||||
args = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case UNOP_ABS:
|
case UNOP_ABS:
|
||||||
case UNOP_CAP:
|
case UNOP_CAP:
|
||||||
case UNOP_CHR:
|
case UNOP_CHR:
|
||||||
|
@ -1833,11 +1828,6 @@ operator_check_standard (struct expression *exp, int pos,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNOP_MEMVAL_TLS:
|
|
||||||
objfile = elts[pos + 1].objfile;
|
|
||||||
type = elts[pos + 2].type;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OP_VAR_VALUE:
|
case OP_VAR_VALUE:
|
||||||
{
|
{
|
||||||
const struct block *const block = elts[pos + 1].block;
|
const struct block *const block = elts[pos + 1].block;
|
||||||
|
|
|
@ -218,13 +218,6 @@ OP (UNOP_REINTERPRET_CAST)
|
||||||
following subexpression. */
|
following subexpression. */
|
||||||
OP (UNOP_MEMVAL)
|
OP (UNOP_MEMVAL)
|
||||||
|
|
||||||
/* UNOP_MEMVAL_TLS is followed by a `struct objfile' pointer in the next
|
|
||||||
exp_element and a type pointer in the following exp_element.
|
|
||||||
With another UNOP_MEMVAL_TLS at the end, this makes four exp_elements.
|
|
||||||
It casts the contents of the word offsetted by the value of the
|
|
||||||
following subexpression from the TLS specified by `struct objfile'. */
|
|
||||||
OP (UNOP_MEMVAL_TLS)
|
|
||||||
|
|
||||||
/* Like UNOP_MEMVAL, but the type is supplied as a subexpression. */
|
/* Like UNOP_MEMVAL, but the type is supplied as a subexpression. */
|
||||||
OP (UNOP_MEMVAL_TYPE)
|
OP (UNOP_MEMVAL_TYPE)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue