+ ops[0].atom = DW_OP_drop;
+ ops[1].atom = DW_OP_drop;
+ simgrid::dwarf::execute(ops.data(), 2, state, stack);
+ assert(stack.empty());
+
+ stack.clear();
+ ops[0].atom = DW_OP_lit21;
+ ops[1].atom = DW_OP_plus_uconst;
+ ops[1].number = a;
+ simgrid::dwarf::execute(ops.data(), 2, state, stack);
+ assert(stack.size() == 1);
+ assert(stack.top() == a + 21);
+
+ stack.clear();
+ ops[0].atom = DW_OP_const8u;
+ ops[0].number = a;
+ ops[1].atom = DW_OP_dup;
+ ops[2].atom = DW_OP_plus;
+ simgrid::dwarf::execute(ops.data(), 3, state, stack);
+ assert(stack.size() == 1);
+ assert(stack.top() == a + a);
+
+ stack.clear();
+ ops[0].atom = DW_OP_const8u;
+ ops[0].number = a;
+ ops[1].atom = DW_OP_const8u;
+ ops[1].number = b;
+ ops[2].atom = DW_OP_over;
+ simgrid::dwarf::execute(ops.data(), 3, state, stack);
+ assert(stack.size() == 3);
+ assert(stack.top() == a);
+ assert(stack.top(1) == b);
+ assert(stack.top(2) == a);
+
+ stack.clear();
+ ops[0].atom = DW_OP_const8u;
+ ops[0].number = a;
+ ops[1].atom = DW_OP_const8u;
+ ops[1].number = b;
+ ops[2].atom = DW_OP_swap;
+ simgrid::dwarf::execute(ops.data(), 3, state, stack);
+ assert(stack.size() == 2);
+ assert(stack.top() == a);
+ assert(stack.top(1) == b);
+ } catch (const simgrid::dwarf::evaluation_error&) {