Fix dwarf_expr_context method regressions
[deliverable/binutils-gdb.git] / gdb / dwarf2expr.c
1 /* DWARF 2 Expression Evaluator.
2
3 Copyright (C) 2001-2016 Free Software Foundation, Inc.
4
5 Contributed by Daniel Berlin (dan@dberlin.org)
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 #include "defs.h"
23 #include "symtab.h"
24 #include "gdbtypes.h"
25 #include "value.h"
26 #include "gdbcore.h"
27 #include "dwarf2.h"
28 #include "dwarf2expr.h"
29 #include "dwarf2loc.h"
30
31 /* Cookie for gdbarch data. */
32
33 static struct gdbarch_data *dwarf_arch_cookie;
34
35 /* This holds gdbarch-specific types used by the DWARF expression
36 evaluator. See comments in execute_stack_op. */
37
38 struct dwarf_gdbarch_types
39 {
40 struct type *dw_types[3];
41 };
42
43 /* Allocate and fill in dwarf_gdbarch_types for an arch. */
44
45 static void *
46 dwarf_gdbarch_types_init (struct gdbarch *gdbarch)
47 {
48 struct dwarf_gdbarch_types *types
49 = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct dwarf_gdbarch_types);
50
51 /* The types themselves are lazily initialized. */
52
53 return types;
54 }
55
56 /* Return the type used for DWARF operations where the type is
57 unspecified in the DWARF spec. Only certain sizes are
58 supported. */
59
60 struct type *
61 dwarf_expr_context::address_type () const
62 {
63 struct dwarf_gdbarch_types *types
64 = (struct dwarf_gdbarch_types *) gdbarch_data (this->gdbarch,
65 dwarf_arch_cookie);
66 int ndx;
67
68 if (this->addr_size == 2)
69 ndx = 0;
70 else if (this->addr_size == 4)
71 ndx = 1;
72 else if (this->addr_size == 8)
73 ndx = 2;
74 else
75 error (_("Unsupported address size in DWARF expressions: %d bits"),
76 8 * this->addr_size);
77
78 if (types->dw_types[ndx] == NULL)
79 types->dw_types[ndx]
80 = arch_integer_type (this->gdbarch,
81 8 * this->addr_size,
82 0, "<signed DWARF address type>");
83
84 return types->dw_types[ndx];
85 }
86
87 /* Create a new context for the expression evaluator. */
88
89 dwarf_expr_context::dwarf_expr_context ()
90 : stack (NULL),
91 stack_len (0),
92 stack_allocated (10),
93 gdbarch (NULL),
94 addr_size (0),
95 ref_addr_size (0),
96 offset (0),
97 recursion_depth (0),
98 max_recursion_depth (0x100),
99 location (DWARF_VALUE_MEMORY),
100 len (0),
101 data (NULL),
102 initialized (0),
103 num_pieces (0),
104 pieces (NULL)
105 {
106 this->stack = XNEWVEC (struct dwarf_stack_value, this->stack_allocated);
107 }
108
109 /* Clean up a dwarf_expr_context. */
110
111 dwarf_expr_context::~dwarf_expr_context ()
112 {
113 xfree (this->stack);
114 xfree (this->pieces);
115 }
116
117 /* Expand the memory allocated stack to contain at least
118 NEED more elements than are currently used. */
119
120 void
121 dwarf_expr_context::grow_stack (size_t need)
122 {
123 if (this->stack_len + need > this->stack_allocated)
124 {
125 size_t newlen = this->stack_len + need + 10;
126
127 this->stack = XRESIZEVEC (struct dwarf_stack_value, this->stack, newlen);
128 this->stack_allocated = newlen;
129 }
130 }
131
132 /* Push VALUE onto the stack. */
133
134 void
135 dwarf_expr_context::push (struct value *value, int in_stack_memory)
136 {
137 struct dwarf_stack_value *v;
138
139 grow_stack (1);
140 v = &this->stack[this->stack_len++];
141 v->value = value;
142 v->in_stack_memory = in_stack_memory;
143 }
144
145 /* Push VALUE onto the stack. */
146
147 void
148 dwarf_expr_context::push_address (CORE_ADDR value, int in_stack_memory)
149 {
150 push (value_from_ulongest (address_type (), value), in_stack_memory);
151 }
152
153 /* Pop the top item off of the stack. */
154
155 void
156 dwarf_expr_context::pop ()
157 {
158 if (this->stack_len <= 0)
159 error (_("dwarf expression stack underflow"));
160 this->stack_len--;
161 }
162
163 /* Retrieve the N'th item on the stack. */
164
165 struct value *
166 dwarf_expr_context::fetch (int n)
167 {
168 if (this->stack_len <= n)
169 error (_("Asked for position %d of stack, "
170 "stack only has %d elements on it."),
171 n, this->stack_len);
172 return this->stack[this->stack_len - (1 + n)].value;
173 }
174
175 /* Require that TYPE be an integral type; throw an exception if not. */
176
177 static void
178 dwarf_require_integral (struct type *type)
179 {
180 if (TYPE_CODE (type) != TYPE_CODE_INT
181 && TYPE_CODE (type) != TYPE_CODE_CHAR
182 && TYPE_CODE (type) != TYPE_CODE_BOOL)
183 error (_("integral type expected in DWARF expression"));
184 }
185
186 /* Return the unsigned form of TYPE. TYPE is necessarily an integral
187 type. */
188
189 static struct type *
190 get_unsigned_type (struct gdbarch *gdbarch, struct type *type)
191 {
192 switch (TYPE_LENGTH (type))
193 {
194 case 1:
195 return builtin_type (gdbarch)->builtin_uint8;
196 case 2:
197 return builtin_type (gdbarch)->builtin_uint16;
198 case 4:
199 return builtin_type (gdbarch)->builtin_uint32;
200 case 8:
201 return builtin_type (gdbarch)->builtin_uint64;
202 default:
203 error (_("no unsigned variant found for type, while evaluating "
204 "DWARF expression"));
205 }
206 }
207
208 /* Return the signed form of TYPE. TYPE is necessarily an integral
209 type. */
210
211 static struct type *
212 get_signed_type (struct gdbarch *gdbarch, struct type *type)
213 {
214 switch (TYPE_LENGTH (type))
215 {
216 case 1:
217 return builtin_type (gdbarch)->builtin_int8;
218 case 2:
219 return builtin_type (gdbarch)->builtin_int16;
220 case 4:
221 return builtin_type (gdbarch)->builtin_int32;
222 case 8:
223 return builtin_type (gdbarch)->builtin_int64;
224 default:
225 error (_("no signed variant found for type, while evaluating "
226 "DWARF expression"));
227 }
228 }
229
230 /* Retrieve the N'th item on the stack, converted to an address. */
231
232 CORE_ADDR
233 dwarf_expr_context::fetch_address (int n)
234 {
235 struct value *result_val = fetch (n);
236 enum bfd_endian byte_order = gdbarch_byte_order (this->gdbarch);
237 ULONGEST result;
238
239 dwarf_require_integral (value_type (result_val));
240 result = extract_unsigned_integer (value_contents (result_val),
241 TYPE_LENGTH (value_type (result_val)),
242 byte_order);
243
244 /* For most architectures, calling extract_unsigned_integer() alone
245 is sufficient for extracting an address. However, some
246 architectures (e.g. MIPS) use signed addresses and using
247 extract_unsigned_integer() will not produce a correct
248 result. Make sure we invoke gdbarch_integer_to_address()
249 for those architectures which require it. */
250 if (gdbarch_integer_to_address_p (this->gdbarch))
251 {
252 gdb_byte *buf = (gdb_byte *) alloca (this->addr_size);
253 struct type *int_type = get_unsigned_type (this->gdbarch,
254 value_type (result_val));
255
256 store_unsigned_integer (buf, this->addr_size, byte_order, result);
257 return gdbarch_integer_to_address (this->gdbarch, int_type, buf);
258 }
259
260 return (CORE_ADDR) result;
261 }
262
263 /* Retrieve the in_stack_memory flag of the N'th item on the stack. */
264
265 int
266 dwarf_expr_context::fetch_in_stack_memory (int n)
267 {
268 if (this->stack_len <= n)
269 error (_("Asked for position %d of stack, "
270 "stack only has %d elements on it."),
271 n, this->stack_len);
272 return this->stack[this->stack_len - (1 + n)].in_stack_memory;
273 }
274
275 /* Return true if the expression stack is empty. */
276
277 int
278 dwarf_expr_context::stack_empty_p () const
279 {
280 return this->stack_len == 0;
281 }
282
283 /* Add a new piece to the dwarf_expr_context's piece list. */
284 void
285 dwarf_expr_context::add_piece (ULONGEST size, ULONGEST offset)
286 {
287 struct dwarf_expr_piece *p;
288
289 this->num_pieces++;
290
291 this->pieces
292 = XRESIZEVEC (struct dwarf_expr_piece, this->pieces, this->num_pieces);
293
294 p = &this->pieces[this->num_pieces - 1];
295 p->location = this->location;
296 p->size = size;
297 p->offset = offset;
298
299 if (p->location == DWARF_VALUE_LITERAL)
300 {
301 p->v.literal.data = this->data;
302 p->v.literal.length = this->len;
303 }
304 else if (stack_empty_p ())
305 {
306 p->location = DWARF_VALUE_OPTIMIZED_OUT;
307 /* Also reset the context's location, for our callers. This is
308 a somewhat strange approach, but this lets us avoid setting
309 the location to DWARF_VALUE_MEMORY in all the individual
310 cases in the evaluator. */
311 this->location = DWARF_VALUE_OPTIMIZED_OUT;
312 }
313 else if (p->location == DWARF_VALUE_MEMORY)
314 {
315 p->v.mem.addr = fetch_address (0);
316 p->v.mem.in_stack_memory = fetch_in_stack_memory (0);
317 }
318 else if (p->location == DWARF_VALUE_IMPLICIT_POINTER)
319 {
320 p->v.ptr.die.sect_off = this->len;
321 p->v.ptr.offset = value_as_long (fetch (0));
322 }
323 else if (p->location == DWARF_VALUE_REGISTER)
324 p->v.regno = value_as_long (fetch (0));
325 else
326 {
327 p->v.value = fetch (0);
328 }
329 }
330
331 /* Evaluate the expression at ADDR (LEN bytes long). */
332
333 void
334 dwarf_expr_context::eval (const gdb_byte *addr, size_t len)
335 {
336 int old_recursion_depth = this->recursion_depth;
337
338 execute_stack_op (addr, addr + len);
339
340 /* RECURSION_DEPTH becomes invalid if an exception was thrown here. */
341
342 gdb_assert (this->recursion_depth == old_recursion_depth);
343 }
344
345 /* Helper to read a uleb128 value or throw an error. */
346
347 const gdb_byte *
348 safe_read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
349 uint64_t *r)
350 {
351 buf = gdb_read_uleb128 (buf, buf_end, r);
352 if (buf == NULL)
353 error (_("DWARF expression error: ran off end of buffer reading uleb128 value"));
354 return buf;
355 }
356
357 /* Helper to read a sleb128 value or throw an error. */
358
359 const gdb_byte *
360 safe_read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
361 int64_t *r)
362 {
363 buf = gdb_read_sleb128 (buf, buf_end, r);
364 if (buf == NULL)
365 error (_("DWARF expression error: ran off end of buffer reading sleb128 value"));
366 return buf;
367 }
368
369 const gdb_byte *
370 safe_skip_leb128 (const gdb_byte *buf, const gdb_byte *buf_end)
371 {
372 buf = gdb_skip_leb128 (buf, buf_end);
373 if (buf == NULL)
374 error (_("DWARF expression error: ran off end of buffer reading leb128 value"));
375 return buf;
376 }
377 \f
378
379 /* Check that the current operator is either at the end of an
380 expression, or that it is followed by a composition operator or by
381 DW_OP_GNU_uninit (which should terminate the expression). */
382
383 void
384 dwarf_expr_require_composition (const gdb_byte *op_ptr, const gdb_byte *op_end,
385 const char *op_name)
386 {
387 if (op_ptr != op_end && *op_ptr != DW_OP_piece && *op_ptr != DW_OP_bit_piece
388 && *op_ptr != DW_OP_GNU_uninit)
389 error (_("DWARF-2 expression error: `%s' operations must be "
390 "used either alone or in conjunction with DW_OP_piece "
391 "or DW_OP_bit_piece."),
392 op_name);
393 }
394
395 /* Return true iff the types T1 and T2 are "the same". This only does
396 checks that might reasonably be needed to compare DWARF base
397 types. */
398
399 static int
400 base_types_equal_p (struct type *t1, struct type *t2)
401 {
402 if (TYPE_CODE (t1) != TYPE_CODE (t2))
403 return 0;
404 if (TYPE_UNSIGNED (t1) != TYPE_UNSIGNED (t2))
405 return 0;
406 return TYPE_LENGTH (t1) == TYPE_LENGTH (t2);
407 }
408
409 /* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_reg* return the
410 DWARF register number. Otherwise return -1. */
411
412 int
413 dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end)
414 {
415 uint64_t dwarf_reg;
416
417 if (buf_end <= buf)
418 return -1;
419 if (*buf >= DW_OP_reg0 && *buf <= DW_OP_reg31)
420 {
421 if (buf_end - buf != 1)
422 return -1;
423 return *buf - DW_OP_reg0;
424 }
425
426 if (*buf == DW_OP_GNU_regval_type)
427 {
428 buf++;
429 buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
430 if (buf == NULL)
431 return -1;
432 buf = gdb_skip_leb128 (buf, buf_end);
433 if (buf == NULL)
434 return -1;
435 }
436 else if (*buf == DW_OP_regx)
437 {
438 buf++;
439 buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
440 if (buf == NULL)
441 return -1;
442 }
443 else
444 return -1;
445 if (buf != buf_end || (int) dwarf_reg != dwarf_reg)
446 return -1;
447 return dwarf_reg;
448 }
449
450 /* If <BUF..BUF_END] contains DW_FORM_block* with just DW_OP_breg*(0) and
451 DW_OP_deref* return the DWARF register number. Otherwise return -1.
452 DEREF_SIZE_RETURN contains -1 for DW_OP_deref; otherwise it contains the
453 size from DW_OP_deref_size. */
454
455 int
456 dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf, const gdb_byte *buf_end,
457 CORE_ADDR *deref_size_return)
458 {
459 uint64_t dwarf_reg;
460 int64_t offset;
461
462 if (buf_end <= buf)
463 return -1;
464
465 if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
466 {
467 dwarf_reg = *buf - DW_OP_breg0;
468 buf++;
469 if (buf >= buf_end)
470 return -1;
471 }
472 else if (*buf == DW_OP_bregx)
473 {
474 buf++;
475 buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
476 if (buf == NULL)
477 return -1;
478 if ((int) dwarf_reg != dwarf_reg)
479 return -1;
480 }
481 else
482 return -1;
483
484 buf = gdb_read_sleb128 (buf, buf_end, &offset);
485 if (buf == NULL)
486 return -1;
487 if (offset != 0)
488 return -1;
489
490 if (*buf == DW_OP_deref)
491 {
492 buf++;
493 *deref_size_return = -1;
494 }
495 else if (*buf == DW_OP_deref_size)
496 {
497 buf++;
498 if (buf >= buf_end)
499 return -1;
500 *deref_size_return = *buf++;
501 }
502 else
503 return -1;
504
505 if (buf != buf_end)
506 return -1;
507
508 return dwarf_reg;
509 }
510
511 /* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_fbreg(X) fill
512 in FB_OFFSET_RETURN with the X offset and return 1. Otherwise return 0. */
513
514 int
515 dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
516 CORE_ADDR *fb_offset_return)
517 {
518 int64_t fb_offset;
519
520 if (buf_end <= buf)
521 return 0;
522
523 if (*buf != DW_OP_fbreg)
524 return 0;
525 buf++;
526
527 buf = gdb_read_sleb128 (buf, buf_end, &fb_offset);
528 if (buf == NULL)
529 return 0;
530 *fb_offset_return = fb_offset;
531 if (buf != buf_end || fb_offset != (LONGEST) *fb_offset_return)
532 return 0;
533
534 return 1;
535 }
536
537 /* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_bregSP(X) fill
538 in SP_OFFSET_RETURN with the X offset and return 1. Otherwise return 0.
539 The matched SP register number depends on GDBARCH. */
540
541 int
542 dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
543 const gdb_byte *buf_end, CORE_ADDR *sp_offset_return)
544 {
545 uint64_t dwarf_reg;
546 int64_t sp_offset;
547
548 if (buf_end <= buf)
549 return 0;
550 if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
551 {
552 dwarf_reg = *buf - DW_OP_breg0;
553 buf++;
554 }
555 else
556 {
557 if (*buf != DW_OP_bregx)
558 return 0;
559 buf++;
560 buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
561 if (buf == NULL)
562 return 0;
563 }
564
565 if (dwarf_reg_to_regnum (gdbarch, dwarf_reg)
566 != gdbarch_sp_regnum (gdbarch))
567 return 0;
568
569 buf = gdb_read_sleb128 (buf, buf_end, &sp_offset);
570 if (buf == NULL)
571 return 0;
572 *sp_offset_return = sp_offset;
573 if (buf != buf_end || sp_offset != (LONGEST) *sp_offset_return)
574 return 0;
575
576 return 1;
577 }
578
579 /* The engine for the expression evaluator. Using the context in this
580 object, evaluate the expression between OP_PTR and OP_END. */
581
582 void
583 dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr,
584 const gdb_byte *op_end)
585 {
586 enum bfd_endian byte_order = gdbarch_byte_order (this->gdbarch);
587 /* Old-style "untyped" DWARF values need special treatment in a
588 couple of places, specifically DW_OP_mod and DW_OP_shr. We need
589 a special type for these values so we can distinguish them from
590 values that have an explicit type, because explicitly-typed
591 values do not need special treatment. This special type must be
592 different (in the `==' sense) from any base type coming from the
593 CU. */
594 struct type *address_type = this->address_type ();
595
596 this->location = DWARF_VALUE_MEMORY;
597 this->initialized = 1; /* Default is initialized. */
598
599 if (this->recursion_depth > this->max_recursion_depth)
600 error (_("DWARF-2 expression error: Loop detected (%d)."),
601 this->recursion_depth);
602 this->recursion_depth++;
603
604 while (op_ptr < op_end)
605 {
606 enum dwarf_location_atom op = (enum dwarf_location_atom) *op_ptr++;
607 ULONGEST result;
608 /* Assume the value is not in stack memory.
609 Code that knows otherwise sets this to 1.
610 Some arithmetic on stack addresses can probably be assumed to still
611 be a stack address, but we skip this complication for now.
612 This is just an optimization, so it's always ok to punt
613 and leave this as 0. */
614 int in_stack_memory = 0;
615 uint64_t uoffset, reg;
616 int64_t offset;
617 struct value *result_val = NULL;
618
619 /* The DWARF expression might have a bug causing an infinite
620 loop. In that case, quitting is the only way out. */
621 QUIT;
622
623 switch (op)
624 {
625 case DW_OP_lit0:
626 case DW_OP_lit1:
627 case DW_OP_lit2:
628 case DW_OP_lit3:
629 case DW_OP_lit4:
630 case DW_OP_lit5:
631 case DW_OP_lit6:
632 case DW_OP_lit7:
633 case DW_OP_lit8:
634 case DW_OP_lit9:
635 case DW_OP_lit10:
636 case DW_OP_lit11:
637 case DW_OP_lit12:
638 case DW_OP_lit13:
639 case DW_OP_lit14:
640 case DW_OP_lit15:
641 case DW_OP_lit16:
642 case DW_OP_lit17:
643 case DW_OP_lit18:
644 case DW_OP_lit19:
645 case DW_OP_lit20:
646 case DW_OP_lit21:
647 case DW_OP_lit22:
648 case DW_OP_lit23:
649 case DW_OP_lit24:
650 case DW_OP_lit25:
651 case DW_OP_lit26:
652 case DW_OP_lit27:
653 case DW_OP_lit28:
654 case DW_OP_lit29:
655 case DW_OP_lit30:
656 case DW_OP_lit31:
657 result = op - DW_OP_lit0;
658 result_val = value_from_ulongest (address_type, result);
659 break;
660
661 case DW_OP_addr:
662 result = extract_unsigned_integer (op_ptr,
663 this->addr_size, byte_order);
664 op_ptr += this->addr_size;
665 /* Some versions of GCC emit DW_OP_addr before
666 DW_OP_GNU_push_tls_address. In this case the value is an
667 index, not an address. We don't support things like
668 branching between the address and the TLS op. */
669 if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
670 result += this->offset;
671 result_val = value_from_ulongest (address_type, result);
672 break;
673
674 case DW_OP_GNU_addr_index:
675 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
676 result = this->get_addr_index (uoffset);
677 result += this->offset;
678 result_val = value_from_ulongest (address_type, result);
679 break;
680 case DW_OP_GNU_const_index:
681 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
682 result = this->get_addr_index (uoffset);
683 result_val = value_from_ulongest (address_type, result);
684 break;
685
686 case DW_OP_const1u:
687 result = extract_unsigned_integer (op_ptr, 1, byte_order);
688 result_val = value_from_ulongest (address_type, result);
689 op_ptr += 1;
690 break;
691 case DW_OP_const1s:
692 result = extract_signed_integer (op_ptr, 1, byte_order);
693 result_val = value_from_ulongest (address_type, result);
694 op_ptr += 1;
695 break;
696 case DW_OP_const2u:
697 result = extract_unsigned_integer (op_ptr, 2, byte_order);
698 result_val = value_from_ulongest (address_type, result);
699 op_ptr += 2;
700 break;
701 case DW_OP_const2s:
702 result = extract_signed_integer (op_ptr, 2, byte_order);
703 result_val = value_from_ulongest (address_type, result);
704 op_ptr += 2;
705 break;
706 case DW_OP_const4u:
707 result = extract_unsigned_integer (op_ptr, 4, byte_order);
708 result_val = value_from_ulongest (address_type, result);
709 op_ptr += 4;
710 break;
711 case DW_OP_const4s:
712 result = extract_signed_integer (op_ptr, 4, byte_order);
713 result_val = value_from_ulongest (address_type, result);
714 op_ptr += 4;
715 break;
716 case DW_OP_const8u:
717 result = extract_unsigned_integer (op_ptr, 8, byte_order);
718 result_val = value_from_ulongest (address_type, result);
719 op_ptr += 8;
720 break;
721 case DW_OP_const8s:
722 result = extract_signed_integer (op_ptr, 8, byte_order);
723 result_val = value_from_ulongest (address_type, result);
724 op_ptr += 8;
725 break;
726 case DW_OP_constu:
727 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
728 result = uoffset;
729 result_val = value_from_ulongest (address_type, result);
730 break;
731 case DW_OP_consts:
732 op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
733 result = offset;
734 result_val = value_from_ulongest (address_type, result);
735 break;
736
737 /* The DW_OP_reg operations are required to occur alone in
738 location expressions. */
739 case DW_OP_reg0:
740 case DW_OP_reg1:
741 case DW_OP_reg2:
742 case DW_OP_reg3:
743 case DW_OP_reg4:
744 case DW_OP_reg5:
745 case DW_OP_reg6:
746 case DW_OP_reg7:
747 case DW_OP_reg8:
748 case DW_OP_reg9:
749 case DW_OP_reg10:
750 case DW_OP_reg11:
751 case DW_OP_reg12:
752 case DW_OP_reg13:
753 case DW_OP_reg14:
754 case DW_OP_reg15:
755 case DW_OP_reg16:
756 case DW_OP_reg17:
757 case DW_OP_reg18:
758 case DW_OP_reg19:
759 case DW_OP_reg20:
760 case DW_OP_reg21:
761 case DW_OP_reg22:
762 case DW_OP_reg23:
763 case DW_OP_reg24:
764 case DW_OP_reg25:
765 case DW_OP_reg26:
766 case DW_OP_reg27:
767 case DW_OP_reg28:
768 case DW_OP_reg29:
769 case DW_OP_reg30:
770 case DW_OP_reg31:
771 dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_reg");
772
773 result = op - DW_OP_reg0;
774 result_val = value_from_ulongest (address_type, result);
775 this->location = DWARF_VALUE_REGISTER;
776 break;
777
778 case DW_OP_regx:
779 op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
780 dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
781
782 result = reg;
783 result_val = value_from_ulongest (address_type, result);
784 this->location = DWARF_VALUE_REGISTER;
785 break;
786
787 case DW_OP_implicit_value:
788 {
789 uint64_t len;
790
791 op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
792 if (op_ptr + len > op_end)
793 error (_("DW_OP_implicit_value: too few bytes available."));
794 this->len = len;
795 this->data = op_ptr;
796 this->location = DWARF_VALUE_LITERAL;
797 op_ptr += len;
798 dwarf_expr_require_composition (op_ptr, op_end,
799 "DW_OP_implicit_value");
800 }
801 goto no_push;
802
803 case DW_OP_stack_value:
804 this->location = DWARF_VALUE_STACK;
805 dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value");
806 goto no_push;
807
808 case DW_OP_GNU_implicit_pointer:
809 {
810 int64_t len;
811
812 if (this->ref_addr_size == -1)
813 error (_("DWARF-2 expression error: DW_OP_GNU_implicit_pointer "
814 "is not allowed in frame context"));
815
816 /* The referred-to DIE of sect_offset kind. */
817 this->len = extract_unsigned_integer (op_ptr, this->ref_addr_size,
818 byte_order);
819 op_ptr += this->ref_addr_size;
820
821 /* The byte offset into the data. */
822 op_ptr = safe_read_sleb128 (op_ptr, op_end, &len);
823 result = (ULONGEST) len;
824 result_val = value_from_ulongest (address_type, result);
825
826 this->location = DWARF_VALUE_IMPLICIT_POINTER;
827 dwarf_expr_require_composition (op_ptr, op_end,
828 "DW_OP_GNU_implicit_pointer");
829 }
830 break;
831
832 case DW_OP_breg0:
833 case DW_OP_breg1:
834 case DW_OP_breg2:
835 case DW_OP_breg3:
836 case DW_OP_breg4:
837 case DW_OP_breg5:
838 case DW_OP_breg6:
839 case DW_OP_breg7:
840 case DW_OP_breg8:
841 case DW_OP_breg9:
842 case DW_OP_breg10:
843 case DW_OP_breg11:
844 case DW_OP_breg12:
845 case DW_OP_breg13:
846 case DW_OP_breg14:
847 case DW_OP_breg15:
848 case DW_OP_breg16:
849 case DW_OP_breg17:
850 case DW_OP_breg18:
851 case DW_OP_breg19:
852 case DW_OP_breg20:
853 case DW_OP_breg21:
854 case DW_OP_breg22:
855 case DW_OP_breg23:
856 case DW_OP_breg24:
857 case DW_OP_breg25:
858 case DW_OP_breg26:
859 case DW_OP_breg27:
860 case DW_OP_breg28:
861 case DW_OP_breg29:
862 case DW_OP_breg30:
863 case DW_OP_breg31:
864 {
865 op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
866 result = this->read_addr_from_reg (op - DW_OP_breg0);
867 result += offset;
868 result_val = value_from_ulongest (address_type, result);
869 }
870 break;
871 case DW_OP_bregx:
872 {
873 op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
874 op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
875 result = this->read_addr_from_reg (reg);
876 result += offset;
877 result_val = value_from_ulongest (address_type, result);
878 }
879 break;
880 case DW_OP_fbreg:
881 {
882 const gdb_byte *datastart;
883 size_t datalen;
884 unsigned int before_stack_len;
885
886 op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
887 /* Rather than create a whole new context, we simply
888 record the stack length before execution, then reset it
889 afterwards, effectively erasing whatever the recursive
890 call put there. */
891 before_stack_len = this->stack_len;
892 /* FIXME: cagney/2003-03-26: This code should be using
893 get_frame_base_address(), and then implement a dwarf2
894 specific this_base method. */
895 this->get_frame_base (&datastart, &datalen);
896 eval (datastart, datalen);
897 if (this->location == DWARF_VALUE_MEMORY)
898 result = fetch_address (0);
899 else if (this->location == DWARF_VALUE_REGISTER)
900 result = this->read_addr_from_reg (value_as_long (fetch (0)));
901 else
902 error (_("Not implemented: computing frame "
903 "base using explicit value operator"));
904 result = result + offset;
905 result_val = value_from_ulongest (address_type, result);
906 in_stack_memory = 1;
907 this->stack_len = before_stack_len;
908 this->location = DWARF_VALUE_MEMORY;
909 }
910 break;
911
912 case DW_OP_dup:
913 result_val = fetch (0);
914 in_stack_memory = fetch_in_stack_memory (0);
915 break;
916
917 case DW_OP_drop:
918 pop ();
919 goto no_push;
920
921 case DW_OP_pick:
922 offset = *op_ptr++;
923 result_val = fetch (offset);
924 in_stack_memory = fetch_in_stack_memory (offset);
925 break;
926
927 case DW_OP_swap:
928 {
929 struct dwarf_stack_value t1, t2;
930
931 if (this->stack_len < 2)
932 error (_("Not enough elements for "
933 "DW_OP_swap. Need 2, have %d."),
934 this->stack_len);
935 t1 = this->stack[this->stack_len - 1];
936 t2 = this->stack[this->stack_len - 2];
937 this->stack[this->stack_len - 1] = t2;
938 this->stack[this->stack_len - 2] = t1;
939 goto no_push;
940 }
941
942 case DW_OP_over:
943 result_val = fetch (1);
944 in_stack_memory = fetch_in_stack_memory (1);
945 break;
946
947 case DW_OP_rot:
948 {
949 struct dwarf_stack_value t1, t2, t3;
950
951 if (this->stack_len < 3)
952 error (_("Not enough elements for "
953 "DW_OP_rot. Need 3, have %d."),
954 this->stack_len);
955 t1 = this->stack[this->stack_len - 1];
956 t2 = this->stack[this->stack_len - 2];
957 t3 = this->stack[this->stack_len - 3];
958 this->stack[this->stack_len - 1] = t2;
959 this->stack[this->stack_len - 2] = t3;
960 this->stack[this->stack_len - 3] = t1;
961 goto no_push;
962 }
963
964 case DW_OP_deref:
965 case DW_OP_deref_size:
966 case DW_OP_GNU_deref_type:
967 {
968 int addr_size = (op == DW_OP_deref ? this->addr_size : *op_ptr++);
969 gdb_byte *buf = (gdb_byte *) alloca (addr_size);
970 CORE_ADDR addr = fetch_address (0);
971 struct type *type;
972
973 pop ();
974
975 if (op == DW_OP_GNU_deref_type)
976 {
977 cu_offset type_die;
978
979 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
980 type_die.cu_off = uoffset;
981 type = get_base_type (type_die, 0);
982 }
983 else
984 type = address_type;
985
986 this->read_mem (buf, addr, addr_size);
987
988 /* If the size of the object read from memory is different
989 from the type length, we need to zero-extend it. */
990 if (TYPE_LENGTH (type) != addr_size)
991 {
992 ULONGEST result =
993 extract_unsigned_integer (buf, addr_size, byte_order);
994
995 buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
996 store_unsigned_integer (buf, TYPE_LENGTH (type),
997 byte_order, result);
998 }
999
1000 result_val = value_from_contents_and_address (type, buf, addr);
1001 break;
1002 }
1003
1004 case DW_OP_abs:
1005 case DW_OP_neg:
1006 case DW_OP_not:
1007 case DW_OP_plus_uconst:
1008 {
1009 /* Unary operations. */
1010 result_val = fetch (0);
1011 pop ();
1012
1013 switch (op)
1014 {
1015 case DW_OP_abs:
1016 if (value_less (result_val,
1017 value_zero (value_type (result_val), not_lval)))
1018 result_val = value_neg (result_val);
1019 break;
1020 case DW_OP_neg:
1021 result_val = value_neg (result_val);
1022 break;
1023 case DW_OP_not:
1024 dwarf_require_integral (value_type (result_val));
1025 result_val = value_complement (result_val);
1026 break;
1027 case DW_OP_plus_uconst:
1028 dwarf_require_integral (value_type (result_val));
1029 result = value_as_long (result_val);
1030 op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
1031 result += reg;
1032 result_val = value_from_ulongest (address_type, result);
1033 break;
1034 }
1035 }
1036 break;
1037
1038 case DW_OP_and:
1039 case DW_OP_div:
1040 case DW_OP_minus:
1041 case DW_OP_mod:
1042 case DW_OP_mul:
1043 case DW_OP_or:
1044 case DW_OP_plus:
1045 case DW_OP_shl:
1046 case DW_OP_shr:
1047 case DW_OP_shra:
1048 case DW_OP_xor:
1049 case DW_OP_le:
1050 case DW_OP_ge:
1051 case DW_OP_eq:
1052 case DW_OP_lt:
1053 case DW_OP_gt:
1054 case DW_OP_ne:
1055 {
1056 /* Binary operations. */
1057 struct value *first, *second;
1058
1059 second = fetch (0);
1060 pop ();
1061
1062 first = fetch (0);
1063 pop ();
1064
1065 if (! base_types_equal_p (value_type (first), value_type (second)))
1066 error (_("Incompatible types on DWARF stack"));
1067
1068 switch (op)
1069 {
1070 case DW_OP_and:
1071 dwarf_require_integral (value_type (first));
1072 dwarf_require_integral (value_type (second));
1073 result_val = value_binop (first, second, BINOP_BITWISE_AND);
1074 break;
1075 case DW_OP_div:
1076 result_val = value_binop (first, second, BINOP_DIV);
1077 break;
1078 case DW_OP_minus:
1079 result_val = value_binop (first, second, BINOP_SUB);
1080 break;
1081 case DW_OP_mod:
1082 {
1083 int cast_back = 0;
1084 struct type *orig_type = value_type (first);
1085
1086 /* We have to special-case "old-style" untyped values
1087 -- these must have mod computed using unsigned
1088 math. */
1089 if (orig_type == address_type)
1090 {
1091 struct type *utype
1092 = get_unsigned_type (this->gdbarch, orig_type);
1093
1094 cast_back = 1;
1095 first = value_cast (utype, first);
1096 second = value_cast (utype, second);
1097 }
1098 /* Note that value_binop doesn't handle float or
1099 decimal float here. This seems unimportant. */
1100 result_val = value_binop (first, second, BINOP_MOD);
1101 if (cast_back)
1102 result_val = value_cast (orig_type, result_val);
1103 }
1104 break;
1105 case DW_OP_mul:
1106 result_val = value_binop (first, second, BINOP_MUL);
1107 break;
1108 case DW_OP_or:
1109 dwarf_require_integral (value_type (first));
1110 dwarf_require_integral (value_type (second));
1111 result_val = value_binop (first, second, BINOP_BITWISE_IOR);
1112 break;
1113 case DW_OP_plus:
1114 result_val = value_binop (first, second, BINOP_ADD);
1115 break;
1116 case DW_OP_shl:
1117 dwarf_require_integral (value_type (first));
1118 dwarf_require_integral (value_type (second));
1119 result_val = value_binop (first, second, BINOP_LSH);
1120 break;
1121 case DW_OP_shr:
1122 dwarf_require_integral (value_type (first));
1123 dwarf_require_integral (value_type (second));
1124 if (!TYPE_UNSIGNED (value_type (first)))
1125 {
1126 struct type *utype
1127 = get_unsigned_type (this->gdbarch, value_type (first));
1128
1129 first = value_cast (utype, first);
1130 }
1131
1132 result_val = value_binop (first, second, BINOP_RSH);
1133 /* Make sure we wind up with the same type we started
1134 with. */
1135 if (value_type (result_val) != value_type (second))
1136 result_val = value_cast (value_type (second), result_val);
1137 break;
1138 case DW_OP_shra:
1139 dwarf_require_integral (value_type (first));
1140 dwarf_require_integral (value_type (second));
1141 if (TYPE_UNSIGNED (value_type (first)))
1142 {
1143 struct type *stype
1144 = get_signed_type (this->gdbarch, value_type (first));
1145
1146 first = value_cast (stype, first);
1147 }
1148
1149 result_val = value_binop (first, second, BINOP_RSH);
1150 /* Make sure we wind up with the same type we started
1151 with. */
1152 if (value_type (result_val) != value_type (second))
1153 result_val = value_cast (value_type (second), result_val);
1154 break;
1155 case DW_OP_xor:
1156 dwarf_require_integral (value_type (first));
1157 dwarf_require_integral (value_type (second));
1158 result_val = value_binop (first, second, BINOP_BITWISE_XOR);
1159 break;
1160 case DW_OP_le:
1161 /* A <= B is !(B < A). */
1162 result = ! value_less (second, first);
1163 result_val = value_from_ulongest (address_type, result);
1164 break;
1165 case DW_OP_ge:
1166 /* A >= B is !(A < B). */
1167 result = ! value_less (first, second);
1168 result_val = value_from_ulongest (address_type, result);
1169 break;
1170 case DW_OP_eq:
1171 result = value_equal (first, second);
1172 result_val = value_from_ulongest (address_type, result);
1173 break;
1174 case DW_OP_lt:
1175 result = value_less (first, second);
1176 result_val = value_from_ulongest (address_type, result);
1177 break;
1178 case DW_OP_gt:
1179 /* A > B is B < A. */
1180 result = value_less (second, first);
1181 result_val = value_from_ulongest (address_type, result);
1182 break;
1183 case DW_OP_ne:
1184 result = ! value_equal (first, second);
1185 result_val = value_from_ulongest (address_type, result);
1186 break;
1187 default:
1188 internal_error (__FILE__, __LINE__,
1189 _("Can't be reached."));
1190 }
1191 }
1192 break;
1193
1194 case DW_OP_call_frame_cfa:
1195 result = this->get_frame_cfa ();
1196 result_val = value_from_ulongest (address_type, result);
1197 in_stack_memory = 1;
1198 break;
1199
1200 case DW_OP_GNU_push_tls_address:
1201 case DW_OP_form_tls_address:
1202 /* Variable is at a constant offset in the thread-local
1203 storage block into the objfile for the current thread and
1204 the dynamic linker module containing this expression. Here
1205 we return returns the offset from that base. The top of the
1206 stack has the offset from the beginning of the thread
1207 control block at which the variable is located. Nothing
1208 should follow this operator, so the top of stack would be
1209 returned. */
1210 result = value_as_long (fetch (0));
1211 pop ();
1212 result = this->get_tls_address (result);
1213 result_val = value_from_ulongest (address_type, result);
1214 break;
1215
1216 case DW_OP_skip:
1217 offset = extract_signed_integer (op_ptr, 2, byte_order);
1218 op_ptr += 2;
1219 op_ptr += offset;
1220 goto no_push;
1221
1222 case DW_OP_bra:
1223 {
1224 struct value *val;
1225
1226 offset = extract_signed_integer (op_ptr, 2, byte_order);
1227 op_ptr += 2;
1228 val = fetch (0);
1229 dwarf_require_integral (value_type (val));
1230 if (value_as_long (val) != 0)
1231 op_ptr += offset;
1232 pop ();
1233 }
1234 goto no_push;
1235
1236 case DW_OP_nop:
1237 goto no_push;
1238
1239 case DW_OP_piece:
1240 {
1241 uint64_t size;
1242
1243 /* Record the piece. */
1244 op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
1245 add_piece (8 * size, 0);
1246
1247 /* Pop off the address/regnum, and reset the location
1248 type. */
1249 if (this->location != DWARF_VALUE_LITERAL
1250 && this->location != DWARF_VALUE_OPTIMIZED_OUT)
1251 pop ();
1252 this->location = DWARF_VALUE_MEMORY;
1253 }
1254 goto no_push;
1255
1256 case DW_OP_bit_piece:
1257 {
1258 uint64_t size, offset;
1259
1260 /* Record the piece. */
1261 op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
1262 op_ptr = safe_read_uleb128 (op_ptr, op_end, &offset);
1263 add_piece (size, offset);
1264
1265 /* Pop off the address/regnum, and reset the location
1266 type. */
1267 if (this->location != DWARF_VALUE_LITERAL
1268 && this->location != DWARF_VALUE_OPTIMIZED_OUT)
1269 pop ();
1270 this->location = DWARF_VALUE_MEMORY;
1271 }
1272 goto no_push;
1273
1274 case DW_OP_GNU_uninit:
1275 if (op_ptr != op_end)
1276 error (_("DWARF-2 expression error: DW_OP_GNU_uninit must always "
1277 "be the very last op."));
1278
1279 this->initialized = 0;
1280 goto no_push;
1281
1282 case DW_OP_call2:
1283 {
1284 cu_offset offset;
1285
1286 offset.cu_off = extract_unsigned_integer (op_ptr, 2, byte_order);
1287 op_ptr += 2;
1288 this->dwarf_call (offset);
1289 }
1290 goto no_push;
1291
1292 case DW_OP_call4:
1293 {
1294 cu_offset offset;
1295
1296 offset.cu_off = extract_unsigned_integer (op_ptr, 4, byte_order);
1297 op_ptr += 4;
1298 this->dwarf_call (offset);
1299 }
1300 goto no_push;
1301
1302 case DW_OP_GNU_entry_value:
1303 {
1304 uint64_t len;
1305 CORE_ADDR deref_size;
1306 union call_site_parameter_u kind_u;
1307
1308 op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
1309 if (op_ptr + len > op_end)
1310 error (_("DW_OP_GNU_entry_value: too few bytes available."));
1311
1312 kind_u.dwarf_reg = dwarf_block_to_dwarf_reg (op_ptr, op_ptr + len);
1313 if (kind_u.dwarf_reg != -1)
1314 {
1315 op_ptr += len;
1316 this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_DWARF_REG,
1317 kind_u,
1318 -1 /* deref_size */);
1319 goto no_push;
1320 }
1321
1322 kind_u.dwarf_reg = dwarf_block_to_dwarf_reg_deref (op_ptr,
1323 op_ptr + len,
1324 &deref_size);
1325 if (kind_u.dwarf_reg != -1)
1326 {
1327 if (deref_size == -1)
1328 deref_size = this->addr_size;
1329 op_ptr += len;
1330 this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_DWARF_REG,
1331 kind_u, deref_size);
1332 goto no_push;
1333 }
1334
1335 error (_("DWARF-2 expression error: DW_OP_GNU_entry_value is "
1336 "supported only for single DW_OP_reg* "
1337 "or for DW_OP_breg*(0)+DW_OP_deref*"));
1338 }
1339
1340 case DW_OP_GNU_parameter_ref:
1341 {
1342 union call_site_parameter_u kind_u;
1343
1344 kind_u.param_offset.cu_off = extract_unsigned_integer (op_ptr, 4,
1345 byte_order);
1346 op_ptr += 4;
1347 this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_PARAM_OFFSET,
1348 kind_u,
1349 -1 /* deref_size */);
1350 }
1351 goto no_push;
1352
1353 case DW_OP_GNU_const_type:
1354 {
1355 cu_offset type_die;
1356 int n;
1357 const gdb_byte *data;
1358 struct type *type;
1359
1360 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
1361 type_die.cu_off = uoffset;
1362 n = *op_ptr++;
1363 data = op_ptr;
1364 op_ptr += n;
1365
1366 type = get_base_type (type_die, n);
1367 result_val = value_from_contents (type, data);
1368 }
1369 break;
1370
1371 case DW_OP_GNU_regval_type:
1372 {
1373 cu_offset type_die;
1374 struct type *type;
1375
1376 op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
1377 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
1378 type_die.cu_off = uoffset;
1379
1380 type = get_base_type (type_die, 0);
1381 result_val = this->get_reg_value (type, reg);
1382 }
1383 break;
1384
1385 case DW_OP_GNU_convert:
1386 case DW_OP_GNU_reinterpret:
1387 {
1388 cu_offset type_die;
1389 struct type *type;
1390
1391 op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
1392 type_die.cu_off = uoffset;
1393
1394 if (type_die.cu_off == 0)
1395 type = address_type;
1396 else
1397 type = get_base_type (type_die, 0);
1398
1399 result_val = fetch (0);
1400 pop ();
1401
1402 if (op == DW_OP_GNU_convert)
1403 result_val = value_cast (type, result_val);
1404 else if (type == value_type (result_val))
1405 {
1406 /* Nothing. */
1407 }
1408 else if (TYPE_LENGTH (type)
1409 != TYPE_LENGTH (value_type (result_val)))
1410 error (_("DW_OP_GNU_reinterpret has wrong size"));
1411 else
1412 result_val
1413 = value_from_contents (type,
1414 value_contents_all (result_val));
1415 }
1416 break;
1417
1418 case DW_OP_push_object_address:
1419 /* Return the address of the object we are currently observing. */
1420 result = this->get_object_address ();
1421 result_val = value_from_ulongest (address_type, result);
1422 break;
1423
1424 default:
1425 error (_("Unhandled dwarf expression opcode 0x%x"), op);
1426 }
1427
1428 /* Most things push a result value. */
1429 gdb_assert (result_val != NULL);
1430 push (result_val, in_stack_memory);
1431 no_push:
1432 ;
1433 }
1434
1435 /* To simplify our main caller, if the result is an implicit
1436 pointer, then make a pieced value. This is ok because we can't
1437 have implicit pointers in contexts where pieces are invalid. */
1438 if (this->location == DWARF_VALUE_IMPLICIT_POINTER)
1439 add_piece (8 * this->addr_size, 0);
1440
1441 abort_expression:
1442 this->recursion_depth--;
1443 gdb_assert (this->recursion_depth >= 0);
1444 }
1445
1446 /* Provide a prototype to silence -Wmissing-prototypes. */
1447 extern initialize_file_ftype _initialize_dwarf2expr;
1448
1449 void
1450 _initialize_dwarf2expr (void)
1451 {
1452 dwarf_arch_cookie
1453 = gdbarch_data_register_post_init (dwarf_gdbarch_types_init);
1454 }
This page took 0.068922 seconds and 5 git commands to generate.