]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/arch-utils.c
Delegate opcodes to select disassembler in GDB
[thirdparty/binutils-gdb.git] / gdb / arch-utils.c
1 /* Dynamic architecture support for GDB, the GNU debugger.
2
3 Copyright (C) 1998-2017 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21
22 #include "arch-utils.h"
23 #include "buildsym.h"
24 #include "gdbcmd.h"
25 #include "inferior.h" /* enum CALL_DUMMY_LOCATION et al. */
26 #include "infrun.h"
27 #include "regcache.h"
28 #include "sim-regno.h"
29 #include "gdbcore.h"
30 #include "osabi.h"
31 #include "target-descriptions.h"
32 #include "objfiles.h"
33 #include "language.h"
34 #include "symtab.h"
35
36 #include "version.h"
37
38 #include "floatformat.h"
39
40 #include "dis-asm.h"
41
42 struct displaced_step_closure *
43 simple_displaced_step_copy_insn (struct gdbarch *gdbarch,
44 CORE_ADDR from, CORE_ADDR to,
45 struct regcache *regs)
46 {
47 size_t len = gdbarch_max_insn_length (gdbarch);
48 gdb_byte *buf = (gdb_byte *) xmalloc (len);
49
50 read_memory (from, buf, len);
51 write_memory (to, buf, len);
52
53 if (debug_displaced)
54 {
55 fprintf_unfiltered (gdb_stdlog, "displaced: copy %s->%s: ",
56 paddress (gdbarch, from), paddress (gdbarch, to));
57 displaced_step_dump_bytes (gdb_stdlog, buf, len);
58 }
59
60 return (struct displaced_step_closure *) buf;
61 }
62
63
64 void
65 simple_displaced_step_free_closure (struct gdbarch *gdbarch,
66 struct displaced_step_closure *closure)
67 {
68 xfree (closure);
69 }
70
71 int
72 default_displaced_step_hw_singlestep (struct gdbarch *gdbarch,
73 struct displaced_step_closure *closure)
74 {
75 return !gdbarch_software_single_step_p (gdbarch);
76 }
77
78 CORE_ADDR
79 displaced_step_at_entry_point (struct gdbarch *gdbarch)
80 {
81 CORE_ADDR addr;
82 int bp_len;
83
84 addr = entry_point_address ();
85
86 /* Inferior calls also use the entry point as a breakpoint location.
87 We don't want displaced stepping to interfere with those
88 breakpoints, so leave space. */
89 gdbarch_breakpoint_from_pc (gdbarch, &addr, &bp_len);
90 addr += bp_len * 2;
91
92 return addr;
93 }
94
95 int
96 legacy_register_sim_regno (struct gdbarch *gdbarch, int regnum)
97 {
98 /* Only makes sense to supply raw registers. */
99 gdb_assert (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch));
100 /* NOTE: cagney/2002-05-13: The old code did it this way and it is
101 suspected that some GDB/SIM combinations may rely on this
102 behavour. The default should be one2one_register_sim_regno
103 (below). */
104 if (gdbarch_register_name (gdbarch, regnum) != NULL
105 && gdbarch_register_name (gdbarch, regnum)[0] != '\0')
106 return regnum;
107 else
108 return LEGACY_SIM_REGNO_IGNORE;
109 }
110
111 CORE_ADDR
112 generic_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
113 {
114 return 0;
115 }
116
117 CORE_ADDR
118 generic_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
119 {
120 return 0;
121 }
122
123 int
124 generic_in_solib_return_trampoline (struct gdbarch *gdbarch,
125 CORE_ADDR pc, const char *name)
126 {
127 return 0;
128 }
129
130 int
131 generic_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
132 {
133 return 0;
134 }
135
136 int
137 default_code_of_frame_writable (struct gdbarch *gdbarch,
138 struct frame_info *frame)
139 {
140 return 1;
141 }
142
143 /* Helper functions for gdbarch_inner_than */
144
145 int
146 core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs)
147 {
148 return (lhs < rhs);
149 }
150
151 int
152 core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs)
153 {
154 return (lhs > rhs);
155 }
156
157 /* Misc helper functions for targets. */
158
159 CORE_ADDR
160 core_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr)
161 {
162 return addr;
163 }
164
165 CORE_ADDR
166 convert_from_func_ptr_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr,
167 struct target_ops *targ)
168 {
169 return addr;
170 }
171
172 int
173 no_op_reg_to_regnum (struct gdbarch *gdbarch, int reg)
174 {
175 return reg;
176 }
177
178 void
179 default_coff_make_msymbol_special (int val, struct minimal_symbol *msym)
180 {
181 return;
182 }
183
184 /* See arch-utils.h. */
185
186 void
187 default_make_symbol_special (struct symbol *sym, struct objfile *objfile)
188 {
189 return;
190 }
191
192 /* See arch-utils.h. */
193
194 CORE_ADDR
195 default_adjust_dwarf2_addr (CORE_ADDR pc)
196 {
197 return pc;
198 }
199
200 /* See arch-utils.h. */
201
202 CORE_ADDR
203 default_adjust_dwarf2_line (CORE_ADDR addr, int rel)
204 {
205 return addr;
206 }
207
208 /* See arch-utils.h. */
209
210 bool
211 default_execute_dwarf_cfa_vendor_op (struct gdbarch *gdbarch, gdb_byte op,
212 struct dwarf2_frame_state *fs)
213 {
214 return false;
215 }
216
217 int
218 cannot_register_not (struct gdbarch *gdbarch, int regnum)
219 {
220 return 0;
221 }
222
223 /* Legacy version of target_virtual_frame_pointer(). Assumes that
224 there is an gdbarch_deprecated_fp_regnum and that it is the same,
225 cooked or raw. */
226
227 void
228 legacy_virtual_frame_pointer (struct gdbarch *gdbarch,
229 CORE_ADDR pc,
230 int *frame_regnum,
231 LONGEST *frame_offset)
232 {
233 /* FIXME: cagney/2002-09-13: This code is used when identifying the
234 frame pointer of the current PC. It is assuming that a single
235 register and an offset can determine this. I think it should
236 instead generate a byte code expression as that would work better
237 with things like Dwarf2's CFI. */
238 if (gdbarch_deprecated_fp_regnum (gdbarch) >= 0
239 && gdbarch_deprecated_fp_regnum (gdbarch)
240 < gdbarch_num_regs (gdbarch))
241 *frame_regnum = gdbarch_deprecated_fp_regnum (gdbarch);
242 else if (gdbarch_sp_regnum (gdbarch) >= 0
243 && gdbarch_sp_regnum (gdbarch)
244 < gdbarch_num_regs (gdbarch))
245 *frame_regnum = gdbarch_sp_regnum (gdbarch);
246 else
247 /* Should this be an internal error? I guess so, it is reflecting
248 an architectural limitation in the current design. */
249 internal_error (__FILE__, __LINE__,
250 _("No virtual frame pointer available"));
251 *frame_offset = 0;
252 }
253
254 /* Return a floating-point format for a floating-point variable of
255 length LEN in bits. If non-NULL, NAME is the name of its type.
256 If no suitable type is found, return NULL. */
257
258 const struct floatformat **
259 default_floatformat_for_type (struct gdbarch *gdbarch,
260 const char *name, int len)
261 {
262 const struct floatformat **format = NULL;
263
264 if (len == gdbarch_half_bit (gdbarch))
265 format = gdbarch_half_format (gdbarch);
266 else if (len == gdbarch_float_bit (gdbarch))
267 format = gdbarch_float_format (gdbarch);
268 else if (len == gdbarch_double_bit (gdbarch))
269 format = gdbarch_double_format (gdbarch);
270 else if (len == gdbarch_long_double_bit (gdbarch))
271 format = gdbarch_long_double_format (gdbarch);
272 /* On i386 the 'long double' type takes 96 bits,
273 while the real number of used bits is only 80,
274 both in processor and in memory.
275 The code below accepts the real bit size. */
276 else if (gdbarch_long_double_format (gdbarch) != NULL
277 && len == gdbarch_long_double_format (gdbarch)[0]->totalsize)
278 format = gdbarch_long_double_format (gdbarch);
279
280 return format;
281 }
282 \f
283 int
284 generic_convert_register_p (struct gdbarch *gdbarch, int regnum,
285 struct type *type)
286 {
287 return 0;
288 }
289
290 int
291 default_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
292 {
293 return 0;
294 }
295
296 int
297 generic_instruction_nullified (struct gdbarch *gdbarch,
298 struct regcache *regcache)
299 {
300 return 0;
301 }
302
303 int
304 default_remote_register_number (struct gdbarch *gdbarch,
305 int regno)
306 {
307 return regno;
308 }
309
310 /* See arch-utils.h. */
311
312 int
313 default_vsyscall_range (struct gdbarch *gdbarch, struct mem_range *range)
314 {
315 return 0;
316 }
317
318 \f
319 /* Functions to manipulate the endianness of the target. */
320
321 static enum bfd_endian target_byte_order_user = BFD_ENDIAN_UNKNOWN;
322
323 static const char endian_big[] = "big";
324 static const char endian_little[] = "little";
325 static const char endian_auto[] = "auto";
326 static const char *const endian_enum[] =
327 {
328 endian_big,
329 endian_little,
330 endian_auto,
331 NULL,
332 };
333 static const char *set_endian_string;
334
335 enum bfd_endian
336 selected_byte_order (void)
337 {
338 return target_byte_order_user;
339 }
340
341 /* Called by ``show endian''. */
342
343 static void
344 show_endian (struct ui_file *file, int from_tty, struct cmd_list_element *c,
345 const char *value)
346 {
347 if (target_byte_order_user == BFD_ENDIAN_UNKNOWN)
348 if (gdbarch_byte_order (get_current_arch ()) == BFD_ENDIAN_BIG)
349 fprintf_unfiltered (file, _("The target endianness is set automatically "
350 "(currently big endian)\n"));
351 else
352 fprintf_unfiltered (file, _("The target endianness is set automatically "
353 "(currently little endian)\n"));
354 else
355 if (target_byte_order_user == BFD_ENDIAN_BIG)
356 fprintf_unfiltered (file,
357 _("The target is assumed to be big endian\n"));
358 else
359 fprintf_unfiltered (file,
360 _("The target is assumed to be little endian\n"));
361 }
362
363 static void
364 set_endian (char *ignore_args, int from_tty, struct cmd_list_element *c)
365 {
366 struct gdbarch_info info;
367
368 gdbarch_info_init (&info);
369
370 if (set_endian_string == endian_auto)
371 {
372 target_byte_order_user = BFD_ENDIAN_UNKNOWN;
373 if (! gdbarch_update_p (info))
374 internal_error (__FILE__, __LINE__,
375 _("set_endian: architecture update failed"));
376 }
377 else if (set_endian_string == endian_little)
378 {
379 info.byte_order = BFD_ENDIAN_LITTLE;
380 if (! gdbarch_update_p (info))
381 printf_unfiltered (_("Little endian target not supported by GDB\n"));
382 else
383 target_byte_order_user = BFD_ENDIAN_LITTLE;
384 }
385 else if (set_endian_string == endian_big)
386 {
387 info.byte_order = BFD_ENDIAN_BIG;
388 if (! gdbarch_update_p (info))
389 printf_unfiltered (_("Big endian target not supported by GDB\n"));
390 else
391 target_byte_order_user = BFD_ENDIAN_BIG;
392 }
393 else
394 internal_error (__FILE__, __LINE__,
395 _("set_endian: bad value"));
396
397 show_endian (gdb_stdout, from_tty, NULL, NULL);
398 }
399
400 /* Given SELECTED, a currently selected BFD architecture, and
401 TARGET_DESC, the current target description, return what
402 architecture to use.
403
404 SELECTED may be NULL, in which case we return the architecture
405 associated with TARGET_DESC. If SELECTED specifies a variant
406 of the architecture associtated with TARGET_DESC, return the
407 more specific of the two.
408
409 If SELECTED is a different architecture, but it is accepted as
410 compatible by the target, we can use the target architecture.
411
412 If SELECTED is obviously incompatible, warn the user. */
413
414 static const struct bfd_arch_info *
415 choose_architecture_for_target (const struct target_desc *target_desc,
416 const struct bfd_arch_info *selected)
417 {
418 const struct bfd_arch_info *from_target = tdesc_architecture (target_desc);
419 const struct bfd_arch_info *compat1, *compat2;
420
421 if (selected == NULL)
422 return from_target;
423
424 if (from_target == NULL)
425 return selected;
426
427 /* struct bfd_arch_info objects are singletons: that is, there's
428 supposed to be exactly one instance for a given machine. So you
429 can tell whether two are equivalent by comparing pointers. */
430 if (from_target == selected)
431 return selected;
432
433 /* BFD's 'A->compatible (A, B)' functions return zero if A and B are
434 incompatible. But if they are compatible, it returns the 'more
435 featureful' of the two arches. That is, if A can run code
436 written for B, but B can't run code written for A, then it'll
437 return A.
438
439 Some targets (e.g. MIPS as of 2006-12-04) don't fully
440 implement this, instead always returning NULL or the first
441 argument. We detect that case by checking both directions. */
442
443 compat1 = selected->compatible (selected, from_target);
444 compat2 = from_target->compatible (from_target, selected);
445
446 if (compat1 == NULL && compat2 == NULL)
447 {
448 /* BFD considers the architectures incompatible. Check our
449 target description whether it accepts SELECTED as compatible
450 anyway. */
451 if (tdesc_compatible_p (target_desc, selected))
452 return from_target;
453
454 warning (_("Selected architecture %s is not compatible "
455 "with reported target architecture %s"),
456 selected->printable_name, from_target->printable_name);
457 return selected;
458 }
459
460 if (compat1 == NULL)
461 return compat2;
462 if (compat2 == NULL)
463 return compat1;
464 if (compat1 == compat2)
465 return compat1;
466
467 /* If the two didn't match, but one of them was a default
468 architecture, assume the more specific one is correct. This
469 handles the case where an executable or target description just
470 says "mips", but the other knows which MIPS variant. */
471 if (compat1->the_default)
472 return compat2;
473 if (compat2->the_default)
474 return compat1;
475
476 /* We have no idea which one is better. This is a bug, but not
477 a critical problem; warn the user. */
478 warning (_("Selected architecture %s is ambiguous with "
479 "reported target architecture %s"),
480 selected->printable_name, from_target->printable_name);
481 return selected;
482 }
483
484 /* Functions to manipulate the architecture of the target. */
485
486 enum set_arch { set_arch_auto, set_arch_manual };
487
488 static const struct bfd_arch_info *target_architecture_user;
489
490 static const char *set_architecture_string;
491
492 const char *
493 selected_architecture_name (void)
494 {
495 if (target_architecture_user == NULL)
496 return NULL;
497 else
498 return set_architecture_string;
499 }
500
501 /* Called if the user enters ``show architecture'' without an
502 argument. */
503
504 static void
505 show_architecture (struct ui_file *file, int from_tty,
506 struct cmd_list_element *c, const char *value)
507 {
508 if (target_architecture_user == NULL)
509 fprintf_filtered (file, _("The target architecture is set "
510 "automatically (currently %s)\n"),
511 gdbarch_bfd_arch_info (get_current_arch ())->printable_name);
512 else
513 fprintf_filtered (file, _("The target architecture is assumed to be %s\n"),
514 set_architecture_string);
515 }
516
517
518 /* Called if the user enters ``set architecture'' with or without an
519 argument. */
520
521 static void
522 set_architecture (char *ignore_args, int from_tty, struct cmd_list_element *c)
523 {
524 struct gdbarch_info info;
525
526 gdbarch_info_init (&info);
527
528 if (strcmp (set_architecture_string, "auto") == 0)
529 {
530 target_architecture_user = NULL;
531 if (!gdbarch_update_p (info))
532 internal_error (__FILE__, __LINE__,
533 _("could not select an architecture automatically"));
534 }
535 else
536 {
537 info.bfd_arch_info = bfd_scan_arch (set_architecture_string);
538 if (info.bfd_arch_info == NULL)
539 internal_error (__FILE__, __LINE__,
540 _("set_architecture: bfd_scan_arch failed"));
541 if (gdbarch_update_p (info))
542 target_architecture_user = info.bfd_arch_info;
543 else
544 printf_unfiltered (_("Architecture `%s' not recognized.\n"),
545 set_architecture_string);
546 }
547 show_architecture (gdb_stdout, from_tty, NULL, NULL);
548 }
549
550 /* Try to select a global architecture that matches "info". Return
551 non-zero if the attempt succeeds. */
552 int
553 gdbarch_update_p (struct gdbarch_info info)
554 {
555 struct gdbarch *new_gdbarch;
556
557 /* Check for the current file. */
558 if (info.abfd == NULL)
559 info.abfd = exec_bfd;
560 if (info.abfd == NULL)
561 info.abfd = core_bfd;
562
563 /* Check for the current target description. */
564 if (info.target_desc == NULL)
565 info.target_desc = target_current_description ();
566
567 new_gdbarch = gdbarch_find_by_info (info);
568
569 /* If there no architecture by that name, reject the request. */
570 if (new_gdbarch == NULL)
571 {
572 if (gdbarch_debug)
573 fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: "
574 "Architecture not found\n");
575 return 0;
576 }
577
578 /* If it is the same old architecture, accept the request (but don't
579 swap anything). */
580 if (new_gdbarch == target_gdbarch ())
581 {
582 if (gdbarch_debug)
583 fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: "
584 "Architecture %s (%s) unchanged\n",
585 host_address_to_string (new_gdbarch),
586 gdbarch_bfd_arch_info (new_gdbarch)->printable_name);
587 return 1;
588 }
589
590 /* It's a new architecture, swap it in. */
591 if (gdbarch_debug)
592 fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: "
593 "New architecture %s (%s) selected\n",
594 host_address_to_string (new_gdbarch),
595 gdbarch_bfd_arch_info (new_gdbarch)->printable_name);
596 set_target_gdbarch (new_gdbarch);
597
598 return 1;
599 }
600
601 /* Return the architecture for ABFD. If no suitable architecture
602 could be find, return NULL. */
603
604 struct gdbarch *
605 gdbarch_from_bfd (bfd *abfd)
606 {
607 struct gdbarch_info info;
608 gdbarch_info_init (&info);
609
610 info.abfd = abfd;
611 return gdbarch_find_by_info (info);
612 }
613
614 /* Set the dynamic target-system-dependent parameters (architecture,
615 byte-order) using information found in the BFD */
616
617 void
618 set_gdbarch_from_file (bfd *abfd)
619 {
620 struct gdbarch_info info;
621 struct gdbarch *gdbarch;
622
623 gdbarch_info_init (&info);
624 info.abfd = abfd;
625 info.target_desc = target_current_description ();
626 gdbarch = gdbarch_find_by_info (info);
627
628 if (gdbarch == NULL)
629 error (_("Architecture of file not recognized."));
630 set_target_gdbarch (gdbarch);
631 }
632
633 /* Initialize the current architecture. Update the ``set
634 architecture'' command so that it specifies a list of valid
635 architectures. */
636
637 #ifdef DEFAULT_BFD_ARCH
638 extern const bfd_arch_info_type DEFAULT_BFD_ARCH;
639 static const bfd_arch_info_type *default_bfd_arch = &DEFAULT_BFD_ARCH;
640 #else
641 static const bfd_arch_info_type *default_bfd_arch;
642 #endif
643
644 #ifdef DEFAULT_BFD_VEC
645 extern const bfd_target DEFAULT_BFD_VEC;
646 static const bfd_target *default_bfd_vec = &DEFAULT_BFD_VEC;
647 #else
648 static const bfd_target *default_bfd_vec;
649 #endif
650
651 static enum bfd_endian default_byte_order = BFD_ENDIAN_UNKNOWN;
652
653 void
654 initialize_current_architecture (void)
655 {
656 const char **arches = gdbarch_printable_names ();
657 struct gdbarch_info info;
658
659 /* determine a default architecture and byte order. */
660 gdbarch_info_init (&info);
661
662 /* Find a default architecture. */
663 if (default_bfd_arch == NULL)
664 {
665 /* Choose the architecture by taking the first one
666 alphabetically. */
667 const char *chosen = arches[0];
668 const char **arch;
669 for (arch = arches; *arch != NULL; arch++)
670 {
671 if (strcmp (*arch, chosen) < 0)
672 chosen = *arch;
673 }
674 if (chosen == NULL)
675 internal_error (__FILE__, __LINE__,
676 _("initialize_current_architecture: No arch"));
677 default_bfd_arch = bfd_scan_arch (chosen);
678 if (default_bfd_arch == NULL)
679 internal_error (__FILE__, __LINE__,
680 _("initialize_current_architecture: Arch not found"));
681 }
682
683 info.bfd_arch_info = default_bfd_arch;
684
685 /* Take several guesses at a byte order. */
686 if (default_byte_order == BFD_ENDIAN_UNKNOWN
687 && default_bfd_vec != NULL)
688 {
689 /* Extract BFD's default vector's byte order. */
690 switch (default_bfd_vec->byteorder)
691 {
692 case BFD_ENDIAN_BIG:
693 default_byte_order = BFD_ENDIAN_BIG;
694 break;
695 case BFD_ENDIAN_LITTLE:
696 default_byte_order = BFD_ENDIAN_LITTLE;
697 break;
698 default:
699 break;
700 }
701 }
702 if (default_byte_order == BFD_ENDIAN_UNKNOWN)
703 {
704 /* look for ``*el-*'' in the target name. */
705 const char *chp;
706 chp = strchr (target_name, '-');
707 if (chp != NULL
708 && chp - 2 >= target_name
709 && startswith (chp - 2, "el"))
710 default_byte_order = BFD_ENDIAN_LITTLE;
711 }
712 if (default_byte_order == BFD_ENDIAN_UNKNOWN)
713 {
714 /* Wire it to big-endian!!! */
715 default_byte_order = BFD_ENDIAN_BIG;
716 }
717
718 info.byte_order = default_byte_order;
719 info.byte_order_for_code = info.byte_order;
720
721 if (! gdbarch_update_p (info))
722 internal_error (__FILE__, __LINE__,
723 _("initialize_current_architecture: Selection of "
724 "initial architecture failed"));
725
726 /* Create the ``set architecture'' command appending ``auto'' to the
727 list of architectures. */
728 {
729 /* Append ``auto''. */
730 int nr;
731 for (nr = 0; arches[nr] != NULL; nr++);
732 arches = XRESIZEVEC (const char *, arches, nr + 2);
733 arches[nr + 0] = "auto";
734 arches[nr + 1] = NULL;
735 add_setshow_enum_cmd ("architecture", class_support,
736 arches, &set_architecture_string,
737 _("Set architecture of target."),
738 _("Show architecture of target."), NULL,
739 set_architecture, show_architecture,
740 &setlist, &showlist);
741 add_alias_cmd ("processor", "architecture", class_support, 1, &setlist);
742 }
743 }
744
745
746 /* Initialize a gdbarch info to values that will be automatically
747 overridden. Note: Originally, this ``struct info'' was initialized
748 using memset(0). Unfortunately, that ran into problems, namely
749 BFD_ENDIAN_BIG is zero. An explicit initialization function that
750 can explicitly set each field to a well defined value is used. */
751
752 void
753 gdbarch_info_init (struct gdbarch_info *info)
754 {
755 memset (info, 0, sizeof (struct gdbarch_info));
756 info->byte_order = BFD_ENDIAN_UNKNOWN;
757 info->byte_order_for_code = info->byte_order;
758 info->osabi = GDB_OSABI_UNINITIALIZED;
759 }
760
761 /* Similar to init, but this time fill in the blanks. Information is
762 obtained from the global "set ..." options and explicitly
763 initialized INFO fields. */
764
765 void
766 gdbarch_info_fill (struct gdbarch_info *info)
767 {
768 /* "(gdb) set architecture ...". */
769 if (info->bfd_arch_info == NULL
770 && target_architecture_user)
771 info->bfd_arch_info = target_architecture_user;
772 /* From the file. */
773 if (info->bfd_arch_info == NULL
774 && info->abfd != NULL
775 && bfd_get_arch (info->abfd) != bfd_arch_unknown
776 && bfd_get_arch (info->abfd) != bfd_arch_obscure)
777 info->bfd_arch_info = bfd_get_arch_info (info->abfd);
778 /* From the target. */
779 if (info->target_desc != NULL)
780 info->bfd_arch_info = choose_architecture_for_target
781 (info->target_desc, info->bfd_arch_info);
782 /* From the default. */
783 if (info->bfd_arch_info == NULL)
784 info->bfd_arch_info = default_bfd_arch;
785
786 /* "(gdb) set byte-order ...". */
787 if (info->byte_order == BFD_ENDIAN_UNKNOWN
788 && target_byte_order_user != BFD_ENDIAN_UNKNOWN)
789 info->byte_order = target_byte_order_user;
790 /* From the INFO struct. */
791 if (info->byte_order == BFD_ENDIAN_UNKNOWN
792 && info->abfd != NULL)
793 info->byte_order = (bfd_big_endian (info->abfd) ? BFD_ENDIAN_BIG
794 : bfd_little_endian (info->abfd) ? BFD_ENDIAN_LITTLE
795 : BFD_ENDIAN_UNKNOWN);
796 /* From the default. */
797 if (info->byte_order == BFD_ENDIAN_UNKNOWN)
798 info->byte_order = default_byte_order;
799 info->byte_order_for_code = info->byte_order;
800
801 /* "(gdb) set osabi ...". Handled by gdbarch_lookup_osabi. */
802 /* From the manual override, or from file. */
803 if (info->osabi == GDB_OSABI_UNINITIALIZED)
804 info->osabi = gdbarch_lookup_osabi (info->abfd);
805 /* From the target. */
806 if (info->osabi == GDB_OSABI_UNKNOWN && info->target_desc != NULL)
807 info->osabi = tdesc_osabi (info->target_desc);
808 /* From the configured default. */
809 #ifdef GDB_OSABI_DEFAULT
810 if (info->osabi == GDB_OSABI_UNKNOWN)
811 info->osabi = GDB_OSABI_DEFAULT;
812 #endif
813
814 /* Must have at least filled in the architecture. */
815 gdb_assert (info->bfd_arch_info != NULL);
816 }
817
818 /* Return "current" architecture. If the target is running, this is
819 the architecture of the selected frame. Otherwise, the "current"
820 architecture defaults to the target architecture.
821
822 This function should normally be called solely by the command
823 interpreter routines to determine the architecture to execute a
824 command in. */
825 struct gdbarch *
826 get_current_arch (void)
827 {
828 if (has_stack_frames ())
829 return get_frame_arch (get_selected_frame (NULL));
830 else
831 return target_gdbarch ();
832 }
833
834 int
835 default_has_shared_address_space (struct gdbarch *gdbarch)
836 {
837 /* Simply say no. In most unix-like targets each inferior/process
838 has its own address space. */
839 return 0;
840 }
841
842 int
843 default_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr,
844 char **msg)
845 {
846 /* We don't know if maybe the target has some way to do fast
847 tracepoints that doesn't need gdbarch, so always say yes. */
848 if (msg)
849 *msg = NULL;
850 return 1;
851 }
852
853 const gdb_byte *
854 default_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr,
855 int *lenptr)
856 {
857 int kind = gdbarch_breakpoint_kind_from_pc (gdbarch, pcptr);
858
859 return gdbarch_sw_breakpoint_from_kind (gdbarch, kind, lenptr);
860 }
861 int
862 default_breakpoint_kind_from_current_state (struct gdbarch *gdbarch,
863 struct regcache *regcache,
864 CORE_ADDR *pcptr)
865 {
866 return gdbarch_breakpoint_kind_from_pc (gdbarch, pcptr);
867 }
868
869
870 void
871 default_gen_return_address (struct gdbarch *gdbarch,
872 struct agent_expr *ax, struct axs_value *value,
873 CORE_ADDR scope)
874 {
875 error (_("This architecture has no method to collect a return address."));
876 }
877
878 int
879 default_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
880 struct type *type)
881 {
882 /* Usually, the return value's address is stored the in the "first hidden"
883 parameter if the return value should be passed by reference, as
884 specified in ABI. */
885 return language_pass_by_reference (type);
886 }
887
888 int default_insn_is_call (struct gdbarch *gdbarch, CORE_ADDR addr)
889 {
890 return 0;
891 }
892
893 int default_insn_is_ret (struct gdbarch *gdbarch, CORE_ADDR addr)
894 {
895 return 0;
896 }
897
898 int default_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr)
899 {
900 return 0;
901 }
902
903 void
904 default_skip_permanent_breakpoint (struct regcache *regcache)
905 {
906 struct gdbarch *gdbarch = get_regcache_arch (regcache);
907 CORE_ADDR current_pc = regcache_read_pc (regcache);
908 int bp_len;
909
910 gdbarch_breakpoint_from_pc (gdbarch, &current_pc, &bp_len);
911 current_pc += bp_len;
912 regcache_write_pc (regcache, current_pc);
913 }
914
915 CORE_ADDR
916 default_infcall_mmap (CORE_ADDR size, unsigned prot)
917 {
918 error (_("This target does not support inferior memory allocation by mmap."));
919 }
920
921 void
922 default_infcall_munmap (CORE_ADDR addr, CORE_ADDR size)
923 {
924 /* Memory reserved by inferior mmap is kept leaked. */
925 }
926
927 /* -mcmodel=large is used so that no GOT (Global Offset Table) is needed to be
928 created in inferior memory by GDB (normally it is set by ld.so). */
929
930 char *
931 default_gcc_target_options (struct gdbarch *gdbarch)
932 {
933 return xstrprintf ("-m%d%s", gdbarch_ptr_bit (gdbarch),
934 gdbarch_ptr_bit (gdbarch) == 64 ? " -mcmodel=large" : "");
935 }
936
937 /* gdbarch gnu_triplet_regexp method. */
938
939 const char *
940 default_gnu_triplet_regexp (struct gdbarch *gdbarch)
941 {
942 return gdbarch_bfd_arch_info (gdbarch)->arch_name;
943 }
944
945 /* Default method for gdbarch_addressable_memory_unit_size. By default, a memory byte has
946 a size of 1 octet. */
947
948 int
949 default_addressable_memory_unit_size (struct gdbarch *gdbarch)
950 {
951 return 1;
952 }
953
954 void
955 default_guess_tracepoint_registers (struct gdbarch *gdbarch,
956 struct regcache *regcache,
957 CORE_ADDR addr)
958 {
959 int pc_regno = gdbarch_pc_regnum (gdbarch);
960 gdb_byte *regs;
961
962 /* This guessing code below only works if the PC register isn't
963 a pseudo-register. The value of a pseudo-register isn't stored
964 in the (non-readonly) regcache -- instead it's recomputed
965 (probably from some other cached raw register) whenever the
966 register is read. In this case, a custom method implementation
967 should be used by the architecture. */
968 if (pc_regno < 0 || pc_regno >= gdbarch_num_regs (gdbarch))
969 return;
970
971 regs = (gdb_byte *) alloca (register_size (gdbarch, pc_regno));
972 store_unsigned_integer (regs, register_size (gdbarch, pc_regno),
973 gdbarch_byte_order (gdbarch), addr);
974 regcache_raw_supply (regcache, pc_regno, regs);
975 }
976
977 int
978 default_print_insn (bfd_vma memaddr, disassemble_info *info)
979 {
980 disassembler_ftype disassemble_fn;
981
982 if (exec_bfd != NULL)
983 {
984 gdb_assert (info->arch == bfd_get_arch (exec_bfd));
985 gdb_assert (info->endian == (bfd_big_endian (exec_bfd)
986 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE));
987 gdb_assert (info->mach == bfd_get_mach (exec_bfd));
988 }
989 disassemble_fn = disassembler (info->arch, info->endian == BFD_ENDIAN_BIG,
990 info->mach, exec_bfd);
991
992 gdb_assert (disassemble_fn != NULL);
993 return (*disassemble_fn) (memaddr, info);
994 }
995
996 /* -Wmissing-prototypes */
997 extern initialize_file_ftype _initialize_gdbarch_utils;
998
999 void
1000 _initialize_gdbarch_utils (void)
1001 {
1002 add_setshow_enum_cmd ("endian", class_support,
1003 endian_enum, &set_endian_string,
1004 _("Set endianness of target."),
1005 _("Show endianness of target."),
1006 NULL, set_endian, show_endian,
1007 &setlist, &showlist);
1008 }