OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gdb-7.2/] [gdb/] [target.c] - Blame information for rev 846

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 330 jeremybenn
/* Select target systems and architectures at runtime for GDB.
2
 
3
   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4
   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5
   Free Software Foundation, Inc.
6
 
7
   Contributed by Cygnus Support.
8
 
9
   This file is part of GDB.
10
 
11
   This program is free software; you can redistribute it and/or modify
12
   it under the terms of the GNU General Public License as published by
13
   the Free Software Foundation; either version 3 of the License, or
14
   (at your option) any later version.
15
 
16
   This program is distributed in the hope that it will be useful,
17
   but WITHOUT ANY WARRANTY; without even the implied warranty of
18
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
   GNU General Public License for more details.
20
 
21
   You should have received a copy of the GNU General Public License
22
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
23
 
24
#include "defs.h"
25
#include <errno.h>
26
#include "gdb_string.h"
27
#include "target.h"
28
#include "gdbcmd.h"
29
#include "symtab.h"
30
#include "inferior.h"
31
#include "bfd.h"
32
#include "symfile.h"
33
#include "objfiles.h"
34
#include "gdb_wait.h"
35
#include "dcache.h"
36
#include <signal.h>
37
#include "regcache.h"
38
#include "gdb_assert.h"
39
#include "gdbcore.h"
40
#include "exceptions.h"
41
#include "target-descriptions.h"
42
#include "gdbthread.h"
43
#include "solib.h"
44
#include "exec.h"
45
#include "inline-frame.h"
46
#include "tracepoint.h"
47
 
48
static void target_info (char *, int);
49
 
50
static void default_terminal_info (char *, int);
51
 
52
static int default_watchpoint_addr_within_range (struct target_ops *,
53
                                                 CORE_ADDR, CORE_ADDR, int);
54
 
55
static int default_region_ok_for_hw_watchpoint (CORE_ADDR, int);
56
 
57
static int nosymbol (char *, CORE_ADDR *);
58
 
59
static void tcomplain (void) ATTRIBUTE_NORETURN;
60
 
61
static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
62
 
63
static int return_zero (void);
64
 
65
static int return_one (void);
66
 
67
static int return_minus_one (void);
68
 
69
void target_ignore (void);
70
 
71
static void target_command (char *, int);
72
 
73
static struct target_ops *find_default_run_target (char *);
74
 
75
static LONGEST default_xfer_partial (struct target_ops *ops,
76
                                     enum target_object object,
77
                                     const char *annex, gdb_byte *readbuf,
78
                                     const gdb_byte *writebuf,
79
                                     ULONGEST offset, LONGEST len);
80
 
81
static LONGEST current_xfer_partial (struct target_ops *ops,
82
                                     enum target_object object,
83
                                     const char *annex, gdb_byte *readbuf,
84
                                     const gdb_byte *writebuf,
85
                                     ULONGEST offset, LONGEST len);
86
 
87
static LONGEST target_xfer_partial (struct target_ops *ops,
88
                                    enum target_object object,
89
                                    const char *annex,
90
                                    void *readbuf, const void *writebuf,
91
                                    ULONGEST offset, LONGEST len);
92
 
93
static struct gdbarch *default_thread_architecture (struct target_ops *ops,
94
                                                    ptid_t ptid);
95
 
96
static void init_dummy_target (void);
97
 
98
static struct target_ops debug_target;
99
 
100
static void debug_to_open (char *, int);
101
 
102
static void debug_to_prepare_to_store (struct regcache *);
103
 
104
static void debug_to_files_info (struct target_ops *);
105
 
106
static int debug_to_insert_breakpoint (struct gdbarch *,
107
                                       struct bp_target_info *);
108
 
109
static int debug_to_remove_breakpoint (struct gdbarch *,
110
                                       struct bp_target_info *);
111
 
112
static int debug_to_can_use_hw_breakpoint (int, int, int);
113
 
114
static int debug_to_insert_hw_breakpoint (struct gdbarch *,
115
                                          struct bp_target_info *);
116
 
117
static int debug_to_remove_hw_breakpoint (struct gdbarch *,
118
                                          struct bp_target_info *);
119
 
120
static int debug_to_insert_watchpoint (CORE_ADDR, int, int,
121
                                       struct expression *);
122
 
123
static int debug_to_remove_watchpoint (CORE_ADDR, int, int,
124
                                       struct expression *);
125
 
126
static int debug_to_stopped_by_watchpoint (void);
127
 
128
static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
129
 
130
static int debug_to_watchpoint_addr_within_range (struct target_ops *,
131
                                                  CORE_ADDR, CORE_ADDR, int);
132
 
133
static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, int);
134
 
135
static int debug_to_can_accel_watchpoint_condition (CORE_ADDR, int, int,
136
                                                    struct expression *);
137
 
138
static void debug_to_terminal_init (void);
139
 
140
static void debug_to_terminal_inferior (void);
141
 
142
static void debug_to_terminal_ours_for_output (void);
143
 
144
static void debug_to_terminal_save_ours (void);
145
 
146
static void debug_to_terminal_ours (void);
147
 
148
static void debug_to_terminal_info (char *, int);
149
 
150
static void debug_to_load (char *, int);
151
 
152
static int debug_to_lookup_symbol (char *, CORE_ADDR *);
153
 
154
static int debug_to_can_run (void);
155
 
156
static void debug_to_notice_signals (ptid_t);
157
 
158
static void debug_to_stop (ptid_t);
159
 
160
/* NOTE: cagney/2004-09-29: Many targets reference this variable in
161
   wierd and mysterious ways.  Putting the variable here lets those
162
   wierd and mysterious ways keep building while they are being
163
   converted to the inferior inheritance structure.  */
164
struct target_ops deprecated_child_ops;
165
 
166
/* Pointer to array of target architecture structures; the size of the
167
   array; the current index into the array; the allocated size of the
168
   array.  */
169
struct target_ops **target_structs;
170
unsigned target_struct_size;
171
unsigned target_struct_index;
172
unsigned target_struct_allocsize;
173
#define DEFAULT_ALLOCSIZE       10
174
 
175
/* The initial current target, so that there is always a semi-valid
176
   current target.  */
177
 
178
static struct target_ops dummy_target;
179
 
180
/* Top of target stack.  */
181
 
182
static struct target_ops *target_stack;
183
 
184
/* The target structure we are currently using to talk to a process
185
   or file or whatever "inferior" we have.  */
186
 
187
struct target_ops current_target;
188
 
189
/* Command list for target.  */
190
 
191
static struct cmd_list_element *targetlist = NULL;
192
 
193
/* Nonzero if we should trust readonly sections from the
194
   executable when reading memory.  */
195
 
196
static int trust_readonly = 0;
197
 
198
/* Nonzero if we should show true memory content including
199
   memory breakpoint inserted by gdb.  */
200
 
201
static int show_memory_breakpoints = 0;
202
 
203
/* These globals control whether GDB attempts to perform these
204
   operations; they are useful for targets that need to prevent
205
   inadvertant disruption, such as in non-stop mode.  */
206
 
207
int may_write_registers = 1;
208
 
209
int may_write_memory = 1;
210
 
211
int may_insert_breakpoints = 1;
212
 
213
int may_insert_tracepoints = 1;
214
 
215
int may_insert_fast_tracepoints = 1;
216
 
217
int may_stop = 1;
218
 
219
/* Non-zero if we want to see trace of target level stuff.  */
220
 
221
static int targetdebug = 0;
222
static void
223
show_targetdebug (struct ui_file *file, int from_tty,
224
                  struct cmd_list_element *c, const char *value)
225
{
226
  fprintf_filtered (file, _("Target debugging is %s.\n"), value);
227
}
228
 
229
static void setup_target_debug (void);
230
 
231
/* The option sets this.  */
232
static int stack_cache_enabled_p_1 = 1;
233
/* And set_stack_cache_enabled_p updates this.
234
   The reason for the separation is so that we don't flush the cache for
235
   on->on transitions.  */
236
static int stack_cache_enabled_p = 1;
237
 
238
/* This is called *after* the stack-cache has been set.
239
   Flush the cache for off->on and on->off transitions.
240
   There's no real need to flush the cache for on->off transitions,
241
   except cleanliness.  */
242
 
243
static void
244
set_stack_cache_enabled_p (char *args, int from_tty,
245
                           struct cmd_list_element *c)
246
{
247
  if (stack_cache_enabled_p != stack_cache_enabled_p_1)
248
    target_dcache_invalidate ();
249
 
250
  stack_cache_enabled_p = stack_cache_enabled_p_1;
251
}
252
 
253
static void
254
show_stack_cache_enabled_p (struct ui_file *file, int from_tty,
255
                            struct cmd_list_element *c, const char *value)
256
{
257
  fprintf_filtered (file, _("Cache use for stack accesses is %s.\n"), value);
258
}
259
 
260
/* Cache of memory operations, to speed up remote access.  */
261
static DCACHE *target_dcache;
262
 
263
/* Invalidate the target dcache.  */
264
 
265
void
266
target_dcache_invalidate (void)
267
{
268
  dcache_invalidate (target_dcache);
269
}
270
 
271
/* The user just typed 'target' without the name of a target.  */
272
 
273
static void
274
target_command (char *arg, int from_tty)
275
{
276
  fputs_filtered ("Argument required (target name).  Try `help target'\n",
277
                  gdb_stdout);
278
}
279
 
280
/* Default target_has_* methods for process_stratum targets.  */
281
 
282
int
283
default_child_has_all_memory (struct target_ops *ops)
284
{
285
  /* If no inferior selected, then we can't read memory here.  */
286
  if (ptid_equal (inferior_ptid, null_ptid))
287
    return 0;
288
 
289
  return 1;
290
}
291
 
292
int
293
default_child_has_memory (struct target_ops *ops)
294
{
295
  /* If no inferior selected, then we can't read memory here.  */
296
  if (ptid_equal (inferior_ptid, null_ptid))
297
    return 0;
298
 
299
  return 1;
300
}
301
 
302
int
303
default_child_has_stack (struct target_ops *ops)
304
{
305
  /* If no inferior selected, there's no stack.  */
306
  if (ptid_equal (inferior_ptid, null_ptid))
307
    return 0;
308
 
309
  return 1;
310
}
311
 
312
int
313
default_child_has_registers (struct target_ops *ops)
314
{
315
  /* Can't read registers from no inferior.  */
316
  if (ptid_equal (inferior_ptid, null_ptid))
317
    return 0;
318
 
319
  return 1;
320
}
321
 
322
int
323
default_child_has_execution (struct target_ops *ops)
324
{
325
  /* If there's no thread selected, then we can't make it run through
326
     hoops.  */
327
  if (ptid_equal (inferior_ptid, null_ptid))
328
    return 0;
329
 
330
  return 1;
331
}
332
 
333
 
334
int
335
target_has_all_memory_1 (void)
336
{
337
  struct target_ops *t;
338
 
339
  for (t = current_target.beneath; t != NULL; t = t->beneath)
340
    if (t->to_has_all_memory (t))
341
      return 1;
342
 
343
  return 0;
344
}
345
 
346
int
347
target_has_memory_1 (void)
348
{
349
  struct target_ops *t;
350
 
351
  for (t = current_target.beneath; t != NULL; t = t->beneath)
352
    if (t->to_has_memory (t))
353
      return 1;
354
 
355
  return 0;
356
}
357
 
358
int
359
target_has_stack_1 (void)
360
{
361
  struct target_ops *t;
362
 
363
  for (t = current_target.beneath; t != NULL; t = t->beneath)
364
    if (t->to_has_stack (t))
365
      return 1;
366
 
367
  return 0;
368
}
369
 
370
int
371
target_has_registers_1 (void)
372
{
373
  struct target_ops *t;
374
 
375
  for (t = current_target.beneath; t != NULL; t = t->beneath)
376
    if (t->to_has_registers (t))
377
      return 1;
378
 
379
  return 0;
380
}
381
 
382
int
383
target_has_execution_1 (void)
384
{
385
  struct target_ops *t;
386
 
387
  for (t = current_target.beneath; t != NULL; t = t->beneath)
388
    if (t->to_has_execution (t))
389
      return 1;
390
 
391
  return 0;
392
}
393
 
394
/* Add a possible target architecture to the list.  */
395
 
396
void
397
add_target (struct target_ops *t)
398
{
399
  /* Provide default values for all "must have" methods.  */
400
  if (t->to_xfer_partial == NULL)
401
    t->to_xfer_partial = default_xfer_partial;
402
 
403
  if (t->to_has_all_memory == NULL)
404
    t->to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
405
 
406
  if (t->to_has_memory == NULL)
407
    t->to_has_memory = (int (*) (struct target_ops *)) return_zero;
408
 
409
  if (t->to_has_stack == NULL)
410
    t->to_has_stack = (int (*) (struct target_ops *)) return_zero;
411
 
412
  if (t->to_has_registers == NULL)
413
    t->to_has_registers = (int (*) (struct target_ops *)) return_zero;
414
 
415
  if (t->to_has_execution == NULL)
416
    t->to_has_execution = (int (*) (struct target_ops *)) return_zero;
417
 
418
  if (!target_structs)
419
    {
420
      target_struct_allocsize = DEFAULT_ALLOCSIZE;
421
      target_structs = (struct target_ops **) xmalloc
422
        (target_struct_allocsize * sizeof (*target_structs));
423
    }
424
  if (target_struct_size >= target_struct_allocsize)
425
    {
426
      target_struct_allocsize *= 2;
427
      target_structs = (struct target_ops **)
428
        xrealloc ((char *) target_structs,
429
                  target_struct_allocsize * sizeof (*target_structs));
430
    }
431
  target_structs[target_struct_size++] = t;
432
 
433
  if (targetlist == NULL)
434
    add_prefix_cmd ("target", class_run, target_command, _("\
435
Connect to a target machine or process.\n\
436
The first argument is the type or protocol of the target machine.\n\
437
Remaining arguments are interpreted by the target protocol.  For more\n\
438
information on the arguments for a particular protocol, type\n\
439
`help target ' followed by the protocol name."),
440
                    &targetlist, "target ", 0, &cmdlist);
441
  add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc, &targetlist);
442
}
443
 
444
/* Stub functions */
445
 
446
void
447
target_ignore (void)
448
{
449
}
450
 
451
void
452
target_kill (void)
453
{
454
  struct target_ops *t;
455
 
456
  for (t = current_target.beneath; t != NULL; t = t->beneath)
457
    if (t->to_kill != NULL)
458
      {
459
        if (targetdebug)
460
          fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
461
 
462
        t->to_kill (t);
463
        return;
464
      }
465
 
466
  noprocess ();
467
}
468
 
469
void
470
target_load (char *arg, int from_tty)
471
{
472
  target_dcache_invalidate ();
473
  (*current_target.to_load) (arg, from_tty);
474
}
475
 
476
void
477
target_create_inferior (char *exec_file, char *args,
478
                        char **env, int from_tty)
479
{
480
  struct target_ops *t;
481
 
482
  for (t = current_target.beneath; t != NULL; t = t->beneath)
483
    {
484
      if (t->to_create_inferior != NULL)
485
        {
486
          t->to_create_inferior (t, exec_file, args, env, from_tty);
487
          if (targetdebug)
488
            fprintf_unfiltered (gdb_stdlog,
489
                                "target_create_inferior (%s, %s, xxx, %d)\n",
490
                                exec_file, args, from_tty);
491
          return;
492
        }
493
    }
494
 
495
  internal_error (__FILE__, __LINE__,
496
                  "could not find a target to create inferior");
497
}
498
 
499
void
500
target_terminal_inferior (void)
501
{
502
  /* A background resume (``run&'') should leave GDB in control of the
503
     terminal. Use target_can_async_p, not target_is_async_p, since at
504
     this point the target is not async yet.  However, if sync_execution
505
     is not set, we know it will become async prior to resume.  */
506
  if (target_can_async_p () && !sync_execution)
507
    return;
508
 
509
  /* If GDB is resuming the inferior in the foreground, install
510
     inferior's terminal modes.  */
511
  (*current_target.to_terminal_inferior) ();
512
}
513
 
514
static int
515
nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
516
          struct target_ops *t)
517
{
518
  errno = EIO;                  /* Can't read/write this location */
519
  return 0;                      /* No bytes handled */
520
}
521
 
522
static void
523
tcomplain (void)
524
{
525
  error (_("You can't do that when your target is `%s'"),
526
         current_target.to_shortname);
527
}
528
 
529
void
530
noprocess (void)
531
{
532
  error (_("You can't do that without a process to debug."));
533
}
534
 
535
static int
536
nosymbol (char *name, CORE_ADDR *addrp)
537
{
538
  return 1;                     /* Symbol does not exist in target env */
539
}
540
 
541
static void
542
default_terminal_info (char *args, int from_tty)
543
{
544
  printf_unfiltered (_("No saved terminal information.\n"));
545
}
546
 
547
/* A default implementation for the to_get_ada_task_ptid target method.
548
 
549
   This function builds the PTID by using both LWP and TID as part of
550
   the PTID lwp and tid elements.  The pid used is the pid of the
551
   inferior_ptid.  */
552
 
553
static ptid_t
554
default_get_ada_task_ptid (long lwp, long tid)
555
{
556
  return ptid_build (ptid_get_pid (inferior_ptid), lwp, tid);
557
}
558
 
559
/* Go through the target stack from top to bottom, copying over zero
560
   entries in current_target, then filling in still empty entries.  In
561
   effect, we are doing class inheritance through the pushed target
562
   vectors.
563
 
564
   NOTE: cagney/2003-10-17: The problem with this inheritance, as it
565
   is currently implemented, is that it discards any knowledge of
566
   which target an inherited method originally belonged to.
567
   Consequently, new new target methods should instead explicitly and
568
   locally search the target stack for the target that can handle the
569
   request.  */
570
 
571
static void
572
update_current_target (void)
573
{
574
  struct target_ops *t;
575
 
576
  /* First, reset current's contents.  */
577
  memset (&current_target, 0, sizeof (current_target));
578
 
579
#define INHERIT(FIELD, TARGET) \
580
      if (!current_target.FIELD) \
581
        current_target.FIELD = (TARGET)->FIELD
582
 
583
  for (t = target_stack; t; t = t->beneath)
584
    {
585
      INHERIT (to_shortname, t);
586
      INHERIT (to_longname, t);
587
      INHERIT (to_doc, t);
588
      /* Do not inherit to_open.  */
589
      /* Do not inherit to_close.  */
590
      /* Do not inherit to_attach.  */
591
      INHERIT (to_post_attach, t);
592
      INHERIT (to_attach_no_wait, t);
593
      /* Do not inherit to_detach.  */
594
      /* Do not inherit to_disconnect.  */
595
      /* Do not inherit to_resume.  */
596
      /* Do not inherit to_wait.  */
597
      /* Do not inherit to_fetch_registers.  */
598
      /* Do not inherit to_store_registers.  */
599
      INHERIT (to_prepare_to_store, t);
600
      INHERIT (deprecated_xfer_memory, t);
601
      INHERIT (to_files_info, t);
602
      INHERIT (to_insert_breakpoint, t);
603
      INHERIT (to_remove_breakpoint, t);
604
      INHERIT (to_can_use_hw_breakpoint, t);
605
      INHERIT (to_insert_hw_breakpoint, t);
606
      INHERIT (to_remove_hw_breakpoint, t);
607
      INHERIT (to_insert_watchpoint, t);
608
      INHERIT (to_remove_watchpoint, t);
609
      INHERIT (to_stopped_data_address, t);
610
      INHERIT (to_have_steppable_watchpoint, t);
611
      INHERIT (to_have_continuable_watchpoint, t);
612
      INHERIT (to_stopped_by_watchpoint, t);
613
      INHERIT (to_watchpoint_addr_within_range, t);
614
      INHERIT (to_region_ok_for_hw_watchpoint, t);
615
      INHERIT (to_can_accel_watchpoint_condition, t);
616
      INHERIT (to_terminal_init, t);
617
      INHERIT (to_terminal_inferior, t);
618
      INHERIT (to_terminal_ours_for_output, t);
619
      INHERIT (to_terminal_ours, t);
620
      INHERIT (to_terminal_save_ours, t);
621
      INHERIT (to_terminal_info, t);
622
      /* Do not inherit to_kill.  */
623
      INHERIT (to_load, t);
624
      INHERIT (to_lookup_symbol, t);
625
      /* Do no inherit to_create_inferior.  */
626
      INHERIT (to_post_startup_inferior, t);
627
      INHERIT (to_acknowledge_created_inferior, t);
628
      INHERIT (to_insert_fork_catchpoint, t);
629
      INHERIT (to_remove_fork_catchpoint, t);
630
      INHERIT (to_insert_vfork_catchpoint, t);
631
      INHERIT (to_remove_vfork_catchpoint, t);
632
      /* Do not inherit to_follow_fork.  */
633
      INHERIT (to_insert_exec_catchpoint, t);
634
      INHERIT (to_remove_exec_catchpoint, t);
635
      INHERIT (to_set_syscall_catchpoint, t);
636
      INHERIT (to_has_exited, t);
637
      /* Do not inherit to_mourn_inferior.  */
638
      INHERIT (to_can_run, t);
639
      INHERIT (to_notice_signals, t);
640
      /* Do not inherit to_thread_alive.  */
641
      /* Do not inherit to_find_new_threads.  */
642
      /* Do not inherit to_pid_to_str.  */
643
      INHERIT (to_extra_thread_info, t);
644
      INHERIT (to_stop, t);
645
      /* Do not inherit to_xfer_partial.  */
646
      INHERIT (to_rcmd, t);
647
      INHERIT (to_pid_to_exec_file, t);
648
      INHERIT (to_log_command, t);
649
      INHERIT (to_stratum, t);
650
      /* Do not inherit to_has_all_memory */
651
      /* Do not inherit to_has_memory */
652
      /* Do not inherit to_has_stack */
653
      /* Do not inherit to_has_registers */
654
      /* Do not inherit to_has_execution */
655
      INHERIT (to_has_thread_control, t);
656
      INHERIT (to_can_async_p, t);
657
      INHERIT (to_is_async_p, t);
658
      INHERIT (to_async, t);
659
      INHERIT (to_async_mask, t);
660
      INHERIT (to_find_memory_regions, t);
661
      INHERIT (to_make_corefile_notes, t);
662
      INHERIT (to_get_bookmark, t);
663
      INHERIT (to_goto_bookmark, t);
664
      /* Do not inherit to_get_thread_local_address.  */
665
      INHERIT (to_can_execute_reverse, t);
666
      INHERIT (to_thread_architecture, t);
667
      /* Do not inherit to_read_description.  */
668
      INHERIT (to_get_ada_task_ptid, t);
669
      /* Do not inherit to_search_memory.  */
670
      INHERIT (to_supports_multi_process, t);
671
      INHERIT (to_trace_init, t);
672
      INHERIT (to_download_tracepoint, t);
673
      INHERIT (to_download_trace_state_variable, t);
674
      INHERIT (to_trace_set_readonly_regions, t);
675
      INHERIT (to_trace_start, t);
676
      INHERIT (to_get_trace_status, t);
677
      INHERIT (to_trace_stop, t);
678
      INHERIT (to_trace_find, t);
679
      INHERIT (to_get_trace_state_variable_value, t);
680
      INHERIT (to_save_trace_data, t);
681
      INHERIT (to_upload_tracepoints, t);
682
      INHERIT (to_upload_trace_state_variables, t);
683
      INHERIT (to_get_raw_trace_data, t);
684
      INHERIT (to_set_disconnected_tracing, t);
685
      INHERIT (to_set_circular_trace_buffer, t);
686
      INHERIT (to_get_tib_address, t);
687
      INHERIT (to_set_permissions, t);
688
      INHERIT (to_static_tracepoint_marker_at, t);
689
      INHERIT (to_static_tracepoint_markers_by_strid, t);
690
      INHERIT (to_magic, t);
691
      /* Do not inherit to_memory_map.  */
692
      /* Do not inherit to_flash_erase.  */
693
      /* Do not inherit to_flash_done.  */
694
    }
695
#undef INHERIT
696
 
697
  /* Clean up a target struct so it no longer has any zero pointers in
698
     it.  Some entries are defaulted to a method that print an error,
699
     others are hard-wired to a standard recursive default.  */
700
 
701
#define de_fault(field, value) \
702
  if (!current_target.field)               \
703
    current_target.field = value
704
 
705
  de_fault (to_open,
706
            (void (*) (char *, int))
707
            tcomplain);
708
  de_fault (to_close,
709
            (void (*) (int))
710
            target_ignore);
711
  de_fault (to_post_attach,
712
            (void (*) (int))
713
            target_ignore);
714
  de_fault (to_prepare_to_store,
715
            (void (*) (struct regcache *))
716
            noprocess);
717
  de_fault (deprecated_xfer_memory,
718
            (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
719
            nomemory);
720
  de_fault (to_files_info,
721
            (void (*) (struct target_ops *))
722
            target_ignore);
723
  de_fault (to_insert_breakpoint,
724
            memory_insert_breakpoint);
725
  de_fault (to_remove_breakpoint,
726
            memory_remove_breakpoint);
727
  de_fault (to_can_use_hw_breakpoint,
728
            (int (*) (int, int, int))
729
            return_zero);
730
  de_fault (to_insert_hw_breakpoint,
731
            (int (*) (struct gdbarch *, struct bp_target_info *))
732
            return_minus_one);
733
  de_fault (to_remove_hw_breakpoint,
734
            (int (*) (struct gdbarch *, struct bp_target_info *))
735
            return_minus_one);
736
  de_fault (to_insert_watchpoint,
737
            (int (*) (CORE_ADDR, int, int, struct expression *))
738
            return_minus_one);
739
  de_fault (to_remove_watchpoint,
740
            (int (*) (CORE_ADDR, int, int, struct expression *))
741
            return_minus_one);
742
  de_fault (to_stopped_by_watchpoint,
743
            (int (*) (void))
744
            return_zero);
745
  de_fault (to_stopped_data_address,
746
            (int (*) (struct target_ops *, CORE_ADDR *))
747
            return_zero);
748
  de_fault (to_watchpoint_addr_within_range,
749
            default_watchpoint_addr_within_range);
750
  de_fault (to_region_ok_for_hw_watchpoint,
751
            default_region_ok_for_hw_watchpoint);
752
  de_fault (to_can_accel_watchpoint_condition,
753
            (int (*) (CORE_ADDR, int, int, struct expression *))
754
            return_zero);
755
  de_fault (to_terminal_init,
756
            (void (*) (void))
757
            target_ignore);
758
  de_fault (to_terminal_inferior,
759
            (void (*) (void))
760
            target_ignore);
761
  de_fault (to_terminal_ours_for_output,
762
            (void (*) (void))
763
            target_ignore);
764
  de_fault (to_terminal_ours,
765
            (void (*) (void))
766
            target_ignore);
767
  de_fault (to_terminal_save_ours,
768
            (void (*) (void))
769
            target_ignore);
770
  de_fault (to_terminal_info,
771
            default_terminal_info);
772
  de_fault (to_load,
773
            (void (*) (char *, int))
774
            tcomplain);
775
  de_fault (to_lookup_symbol,
776
            (int (*) (char *, CORE_ADDR *))
777
            nosymbol);
778
  de_fault (to_post_startup_inferior,
779
            (void (*) (ptid_t))
780
            target_ignore);
781
  de_fault (to_acknowledge_created_inferior,
782
            (void (*) (int))
783
            target_ignore);
784
  de_fault (to_insert_fork_catchpoint,
785
            (void (*) (int))
786
            tcomplain);
787
  de_fault (to_remove_fork_catchpoint,
788
            (int (*) (int))
789
            tcomplain);
790
  de_fault (to_insert_vfork_catchpoint,
791
            (void (*) (int))
792
            tcomplain);
793
  de_fault (to_remove_vfork_catchpoint,
794
            (int (*) (int))
795
            tcomplain);
796
  de_fault (to_insert_exec_catchpoint,
797
            (void (*) (int))
798
            tcomplain);
799
  de_fault (to_remove_exec_catchpoint,
800
            (int (*) (int))
801
            tcomplain);
802
  de_fault (to_set_syscall_catchpoint,
803
            (int (*) (int, int, int, int, int *))
804
            tcomplain);
805
  de_fault (to_has_exited,
806
            (int (*) (int, int, int *))
807
            return_zero);
808
  de_fault (to_can_run,
809
            return_zero);
810
  de_fault (to_notice_signals,
811
            (void (*) (ptid_t))
812
            target_ignore);
813
  de_fault (to_extra_thread_info,
814
            (char *(*) (struct thread_info *))
815
            return_zero);
816
  de_fault (to_stop,
817
            (void (*) (ptid_t))
818
            target_ignore);
819
  current_target.to_xfer_partial = current_xfer_partial;
820
  de_fault (to_rcmd,
821
            (void (*) (char *, struct ui_file *))
822
            tcomplain);
823
  de_fault (to_pid_to_exec_file,
824
            (char *(*) (int))
825
            return_zero);
826
  de_fault (to_async,
827
            (void (*) (void (*) (enum inferior_event_type, void*), void*))
828
            tcomplain);
829
  de_fault (to_async_mask,
830
            (int (*) (int))
831
            return_one);
832
  de_fault (to_thread_architecture,
833
            default_thread_architecture);
834
  current_target.to_read_description = NULL;
835
  de_fault (to_get_ada_task_ptid,
836
            (ptid_t (*) (long, long))
837
            default_get_ada_task_ptid);
838
  de_fault (to_supports_multi_process,
839
            (int (*) (void))
840
            return_zero);
841
  de_fault (to_trace_init,
842
            (void (*) (void))
843
            tcomplain);
844
  de_fault (to_download_tracepoint,
845
            (void (*) (struct breakpoint *))
846
            tcomplain);
847
  de_fault (to_download_trace_state_variable,
848
            (void (*) (struct trace_state_variable *))
849
            tcomplain);
850
  de_fault (to_trace_set_readonly_regions,
851
            (void (*) (void))
852
            tcomplain);
853
  de_fault (to_trace_start,
854
            (void (*) (void))
855
            tcomplain);
856
  de_fault (to_get_trace_status,
857
            (int (*) (struct trace_status *))
858
            return_minus_one);
859
  de_fault (to_trace_stop,
860
            (void (*) (void))
861
            tcomplain);
862
  de_fault (to_trace_find,
863
            (int (*) (enum trace_find_type, int, ULONGEST, ULONGEST, int *))
864
            return_minus_one);
865
  de_fault (to_get_trace_state_variable_value,
866
            (int (*) (int, LONGEST *))
867
            return_zero);
868
  de_fault (to_save_trace_data,
869
            (int (*) (const char *))
870
            tcomplain);
871
  de_fault (to_upload_tracepoints,
872
            (int (*) (struct uploaded_tp **))
873
            return_zero);
874
  de_fault (to_upload_trace_state_variables,
875
            (int (*) (struct uploaded_tsv **))
876
            return_zero);
877
  de_fault (to_get_raw_trace_data,
878
            (LONGEST (*) (gdb_byte *, ULONGEST, LONGEST))
879
            tcomplain);
880
  de_fault (to_set_disconnected_tracing,
881
            (void (*) (int))
882
            target_ignore);
883
  de_fault (to_set_circular_trace_buffer,
884
            (void (*) (int))
885
            target_ignore);
886
  de_fault (to_get_tib_address,
887
            (int (*) (ptid_t, CORE_ADDR *))
888
            tcomplain);
889
  de_fault (to_set_permissions,
890
            (void (*) (void))
891
            target_ignore);
892
  de_fault (to_static_tracepoint_marker_at,
893
            (int (*) (CORE_ADDR, struct static_tracepoint_marker *))
894
            return_zero);
895
  de_fault (to_static_tracepoint_markers_by_strid,
896
            (VEC(static_tracepoint_marker_p) * (*) (const char *))
897
            tcomplain);
898
#undef de_fault
899
 
900
  /* Finally, position the target-stack beneath the squashed
901
     "current_target".  That way code looking for a non-inherited
902
     target method can quickly and simply find it.  */
903
  current_target.beneath = target_stack;
904
 
905
  if (targetdebug)
906
    setup_target_debug ();
907
}
908
 
909
/* Push a new target type into the stack of the existing target accessors,
910
   possibly superseding some of the existing accessors.
911
 
912
   Rather than allow an empty stack, we always have the dummy target at
913
   the bottom stratum, so we can call the function vectors without
914
   checking them.  */
915
 
916
void
917
push_target (struct target_ops *t)
918
{
919
  struct target_ops **cur;
920
 
921
  /* Check magic number.  If wrong, it probably means someone changed
922
     the struct definition, but not all the places that initialize one.  */
923
  if (t->to_magic != OPS_MAGIC)
924
    {
925
      fprintf_unfiltered (gdb_stderr,
926
                          "Magic number of %s target struct wrong\n",
927
                          t->to_shortname);
928
      internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
929
    }
930
 
931
  /* Find the proper stratum to install this target in.  */
932
  for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
933
    {
934
      if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
935
        break;
936
    }
937
 
938
  /* If there's already targets at this stratum, remove them.  */
939
  /* FIXME: cagney/2003-10-15: I think this should be popping all
940
     targets to CUR, and not just those at this stratum level.  */
941
  while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
942
    {
943
      /* There's already something at this stratum level.  Close it,
944
         and un-hook it from the stack.  */
945
      struct target_ops *tmp = (*cur);
946
 
947
      (*cur) = (*cur)->beneath;
948
      tmp->beneath = NULL;
949
      target_close (tmp, 0);
950
    }
951
 
952
  /* We have removed all targets in our stratum, now add the new one.  */
953
  t->beneath = (*cur);
954
  (*cur) = t;
955
 
956
  update_current_target ();
957
}
958
 
959
/* Remove a target_ops vector from the stack, wherever it may be.
960
   Return how many times it was removed (0 or 1).  */
961
 
962
int
963
unpush_target (struct target_ops *t)
964
{
965
  struct target_ops **cur;
966
  struct target_ops *tmp;
967
 
968
  if (t->to_stratum == dummy_stratum)
969
    internal_error (__FILE__, __LINE__,
970
                    "Attempt to unpush the dummy target");
971
 
972
  /* Look for the specified target.  Note that we assume that a target
973
     can only occur once in the target stack. */
974
 
975
  for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
976
    {
977
      if ((*cur) == t)
978
        break;
979
    }
980
 
981
  if ((*cur) == NULL)
982
    return 0;                    /* Didn't find target_ops, quit now */
983
 
984
  /* NOTE: cagney/2003-12-06: In '94 the close call was made
985
     unconditional by moving it to before the above check that the
986
     target was in the target stack (something about "Change the way
987
     pushing and popping of targets work to support target overlays
988
     and inheritance").  This doesn't make much sense - only open
989
     targets should be closed.  */
990
  target_close (t, 0);
991
 
992
  /* Unchain the target */
993
  tmp = (*cur);
994
  (*cur) = (*cur)->beneath;
995
  tmp->beneath = NULL;
996
 
997
  update_current_target ();
998
 
999
  return 1;
1000
}
1001
 
1002
void
1003
pop_target (void)
1004
{
1005
  target_close (target_stack, 0);        /* Let it clean up */
1006
  if (unpush_target (target_stack) == 1)
1007
    return;
1008
 
1009
  fprintf_unfiltered (gdb_stderr,
1010
                      "pop_target couldn't find target %s\n",
1011
                      current_target.to_shortname);
1012
  internal_error (__FILE__, __LINE__,
1013
                  _("failed internal consistency check"));
1014
}
1015
 
1016
void
1017
pop_all_targets_above (enum strata above_stratum, int quitting)
1018
{
1019
  while ((int) (current_target.to_stratum) > (int) above_stratum)
1020
    {
1021
      target_close (target_stack, quitting);
1022
      if (!unpush_target (target_stack))
1023
        {
1024
          fprintf_unfiltered (gdb_stderr,
1025
                              "pop_all_targets couldn't find target %s\n",
1026
                              target_stack->to_shortname);
1027
          internal_error (__FILE__, __LINE__,
1028
                          _("failed internal consistency check"));
1029
          break;
1030
        }
1031
    }
1032
}
1033
 
1034
void
1035
pop_all_targets (int quitting)
1036
{
1037
  pop_all_targets_above (dummy_stratum, quitting);
1038
}
1039
 
1040
/* Using the objfile specified in OBJFILE, find the address for the
1041
   current thread's thread-local storage with offset OFFSET.  */
1042
CORE_ADDR
1043
target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
1044
{
1045
  volatile CORE_ADDR addr = 0;
1046
  struct target_ops *target;
1047
 
1048
  for (target = current_target.beneath;
1049
       target != NULL;
1050
       target = target->beneath)
1051
    {
1052
      if (target->to_get_thread_local_address != NULL)
1053
        break;
1054
    }
1055
 
1056
  if (target != NULL
1057
      && gdbarch_fetch_tls_load_module_address_p (target_gdbarch))
1058
    {
1059
      ptid_t ptid = inferior_ptid;
1060
      volatile struct gdb_exception ex;
1061
 
1062
      TRY_CATCH (ex, RETURN_MASK_ALL)
1063
        {
1064
          CORE_ADDR lm_addr;
1065
 
1066
          /* Fetch the load module address for this objfile.  */
1067
          lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch,
1068
                                                           objfile);
1069
          /* If it's 0, throw the appropriate exception.  */
1070
          if (lm_addr == 0)
1071
            throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
1072
                         _("TLS load module not found"));
1073
 
1074
          addr = target->to_get_thread_local_address (target, ptid, lm_addr, offset);
1075
        }
1076
      /* If an error occurred, print TLS related messages here.  Otherwise,
1077
         throw the error to some higher catcher.  */
1078
      if (ex.reason < 0)
1079
        {
1080
          int objfile_is_library = (objfile->flags & OBJF_SHARED);
1081
 
1082
          switch (ex.error)
1083
            {
1084
            case TLS_NO_LIBRARY_SUPPORT_ERROR:
1085
              error (_("Cannot find thread-local variables in this thread library."));
1086
              break;
1087
            case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
1088
              if (objfile_is_library)
1089
                error (_("Cannot find shared library `%s' in dynamic"
1090
                         " linker's load module list"), objfile->name);
1091
              else
1092
                error (_("Cannot find executable file `%s' in dynamic"
1093
                         " linker's load module list"), objfile->name);
1094
              break;
1095
            case TLS_NOT_ALLOCATED_YET_ERROR:
1096
              if (objfile_is_library)
1097
                error (_("The inferior has not yet allocated storage for"
1098
                         " thread-local variables in\n"
1099
                         "the shared library `%s'\n"
1100
                         "for %s"),
1101
                       objfile->name, target_pid_to_str (ptid));
1102
              else
1103
                error (_("The inferior has not yet allocated storage for"
1104
                         " thread-local variables in\n"
1105
                         "the executable `%s'\n"
1106
                         "for %s"),
1107
                       objfile->name, target_pid_to_str (ptid));
1108
              break;
1109
            case TLS_GENERIC_ERROR:
1110
              if (objfile_is_library)
1111
                error (_("Cannot find thread-local storage for %s, "
1112
                         "shared library %s:\n%s"),
1113
                       target_pid_to_str (ptid),
1114
                       objfile->name, ex.message);
1115
              else
1116
                error (_("Cannot find thread-local storage for %s, "
1117
                         "executable file %s:\n%s"),
1118
                       target_pid_to_str (ptid),
1119
                       objfile->name, ex.message);
1120
              break;
1121
            default:
1122
              throw_exception (ex);
1123
              break;
1124
            }
1125
        }
1126
    }
1127
  /* It wouldn't be wrong here to try a gdbarch method, too; finding
1128
     TLS is an ABI-specific thing.  But we don't do that yet.  */
1129
  else
1130
    error (_("Cannot find thread-local variables on this target"));
1131
 
1132
  return addr;
1133
}
1134
 
1135
#undef  MIN
1136
#define MIN(A, B) (((A) <= (B)) ? (A) : (B))
1137
 
1138
/* target_read_string -- read a null terminated string, up to LEN bytes,
1139
   from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
1140
   Set *STRING to a pointer to malloc'd memory containing the data; the caller
1141
   is responsible for freeing it.  Return the number of bytes successfully
1142
   read.  */
1143
 
1144
int
1145
target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
1146
{
1147
  int tlen, origlen, offset, i;
1148
  gdb_byte buf[4];
1149
  int errcode = 0;
1150
  char *buffer;
1151
  int buffer_allocated;
1152
  char *bufptr;
1153
  unsigned int nbytes_read = 0;
1154
 
1155
  gdb_assert (string);
1156
 
1157
  /* Small for testing.  */
1158
  buffer_allocated = 4;
1159
  buffer = xmalloc (buffer_allocated);
1160
  bufptr = buffer;
1161
 
1162
  origlen = len;
1163
 
1164
  while (len > 0)
1165
    {
1166
      tlen = MIN (len, 4 - (memaddr & 3));
1167
      offset = memaddr & 3;
1168
 
1169
      errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
1170
      if (errcode != 0)
1171
        {
1172
          /* The transfer request might have crossed the boundary to an
1173
             unallocated region of memory. Retry the transfer, requesting
1174
             a single byte.  */
1175
          tlen = 1;
1176
          offset = 0;
1177
          errcode = target_read_memory (memaddr, buf, 1);
1178
          if (errcode != 0)
1179
            goto done;
1180
        }
1181
 
1182
      if (bufptr - buffer + tlen > buffer_allocated)
1183
        {
1184
          unsigned int bytes;
1185
 
1186
          bytes = bufptr - buffer;
1187
          buffer_allocated *= 2;
1188
          buffer = xrealloc (buffer, buffer_allocated);
1189
          bufptr = buffer + bytes;
1190
        }
1191
 
1192
      for (i = 0; i < tlen; i++)
1193
        {
1194
          *bufptr++ = buf[i + offset];
1195
          if (buf[i + offset] == '\000')
1196
            {
1197
              nbytes_read += i + 1;
1198
              goto done;
1199
            }
1200
        }
1201
 
1202
      memaddr += tlen;
1203
      len -= tlen;
1204
      nbytes_read += tlen;
1205
    }
1206
done:
1207
  *string = buffer;
1208
  if (errnop != NULL)
1209
    *errnop = errcode;
1210
  return nbytes_read;
1211
}
1212
 
1213
struct target_section_table *
1214
target_get_section_table (struct target_ops *target)
1215
{
1216
  struct target_ops *t;
1217
 
1218
  if (targetdebug)
1219
    fprintf_unfiltered (gdb_stdlog, "target_get_section_table ()\n");
1220
 
1221
  for (t = target; t != NULL; t = t->beneath)
1222
    if (t->to_get_section_table != NULL)
1223
      return (*t->to_get_section_table) (t);
1224
 
1225
  return NULL;
1226
}
1227
 
1228
/* Find a section containing ADDR.  */
1229
 
1230
struct target_section *
1231
target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
1232
{
1233
  struct target_section_table *table = target_get_section_table (target);
1234
  struct target_section *secp;
1235
 
1236
  if (table == NULL)
1237
    return NULL;
1238
 
1239
  for (secp = table->sections; secp < table->sections_end; secp++)
1240
    {
1241
      if (addr >= secp->addr && addr < secp->endaddr)
1242
        return secp;
1243
    }
1244
  return NULL;
1245
}
1246
 
1247
/* Perform a partial memory transfer.
1248
   For docs see target.h, to_xfer_partial.  */
1249
 
1250
static LONGEST
1251
memory_xfer_partial (struct target_ops *ops, enum target_object object,
1252
                     void *readbuf, const void *writebuf, ULONGEST memaddr,
1253
                     LONGEST len)
1254
{
1255
  LONGEST res;
1256
  int reg_len;
1257
  struct mem_region *region;
1258
  struct inferior *inf;
1259
 
1260
  /* Zero length requests are ok and require no work.  */
1261
  if (len == 0)
1262
    return 0;
1263
 
1264
  /* For accesses to unmapped overlay sections, read directly from
1265
     files.  Must do this first, as MEMADDR may need adjustment.  */
1266
  if (readbuf != NULL && overlay_debugging)
1267
    {
1268
      struct obj_section *section = find_pc_overlay (memaddr);
1269
 
1270
      if (pc_in_unmapped_range (memaddr, section))
1271
        {
1272
          struct target_section_table *table
1273
            = target_get_section_table (ops);
1274
          const char *section_name = section->the_bfd_section->name;
1275
 
1276
          memaddr = overlay_mapped_address (memaddr, section);
1277
          return section_table_xfer_memory_partial (readbuf, writebuf,
1278
                                                    memaddr, len,
1279
                                                    table->sections,
1280
                                                    table->sections_end,
1281
                                                    section_name);
1282
        }
1283
    }
1284
 
1285
  /* Try the executable files, if "trust-readonly-sections" is set.  */
1286
  if (readbuf != NULL && trust_readonly)
1287
    {
1288
      struct target_section *secp;
1289
      struct target_section_table *table;
1290
 
1291
      secp = target_section_by_addr (ops, memaddr);
1292
      if (secp != NULL
1293
          && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
1294
              & SEC_READONLY))
1295
        {
1296
          table = target_get_section_table (ops);
1297
          return section_table_xfer_memory_partial (readbuf, writebuf,
1298
                                                    memaddr, len,
1299
                                                    table->sections,
1300
                                                    table->sections_end,
1301
                                                    NULL);
1302
        }
1303
    }
1304
 
1305
  /* Try GDB's internal data cache.  */
1306
  region = lookup_mem_region (memaddr);
1307
  /* region->hi == 0 means there's no upper bound.  */
1308
  if (memaddr + len < region->hi || region->hi == 0)
1309
    reg_len = len;
1310
  else
1311
    reg_len = region->hi - memaddr;
1312
 
1313
  switch (region->attrib.mode)
1314
    {
1315
    case MEM_RO:
1316
      if (writebuf != NULL)
1317
        return -1;
1318
      break;
1319
 
1320
    case MEM_WO:
1321
      if (readbuf != NULL)
1322
        return -1;
1323
      break;
1324
 
1325
    case MEM_FLASH:
1326
      /* We only support writing to flash during "load" for now.  */
1327
      if (writebuf != NULL)
1328
        error (_("Writing to flash memory forbidden in this context"));
1329
      break;
1330
 
1331
    case MEM_NONE:
1332
      return -1;
1333
    }
1334
 
1335
  if (!ptid_equal (inferior_ptid, null_ptid))
1336
    inf = find_inferior_pid (ptid_get_pid (inferior_ptid));
1337
  else
1338
    inf = NULL;
1339
 
1340
  if (inf != NULL
1341
      /* The dcache reads whole cache lines; that doesn't play well
1342
         with reading from a trace buffer, because reading outside of
1343
         the collected memory range fails.  */
1344
      && get_traceframe_number () == -1
1345
      && (region->attrib.cache
1346
          || (stack_cache_enabled_p && object == TARGET_OBJECT_STACK_MEMORY)))
1347
    {
1348
      if (readbuf != NULL)
1349
        res = dcache_xfer_memory (ops, target_dcache, memaddr, readbuf,
1350
                                  reg_len, 0);
1351
      else
1352
        /* FIXME drow/2006-08-09: If we're going to preserve const
1353
           correctness dcache_xfer_memory should take readbuf and
1354
           writebuf.  */
1355
        res = dcache_xfer_memory (ops, target_dcache, memaddr,
1356
                                  (void *) writebuf,
1357
                                  reg_len, 1);
1358
      if (res <= 0)
1359
        return -1;
1360
      else
1361
        {
1362
          if (readbuf && !show_memory_breakpoints)
1363
            breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1364
          return res;
1365
        }
1366
    }
1367
 
1368
  /* If none of those methods found the memory we wanted, fall back
1369
     to a target partial transfer.  Normally a single call to
1370
     to_xfer_partial is enough; if it doesn't recognize an object
1371
     it will call the to_xfer_partial of the next target down.
1372
     But for memory this won't do.  Memory is the only target
1373
     object which can be read from more than one valid target.
1374
     A core file, for instance, could have some of memory but
1375
     delegate other bits to the target below it.  So, we must
1376
     manually try all targets.  */
1377
 
1378
  do
1379
    {
1380
      res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1381
                                  readbuf, writebuf, memaddr, reg_len);
1382
      if (res > 0)
1383
        break;
1384
 
1385
      /* We want to continue past core files to executables, but not
1386
         past a running target's memory.  */
1387
      if (ops->to_has_all_memory (ops))
1388
        break;
1389
 
1390
      ops = ops->beneath;
1391
    }
1392
  while (ops != NULL);
1393
 
1394
  if (readbuf && !show_memory_breakpoints)
1395
    breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1396
 
1397
  /* Make sure the cache gets updated no matter what - if we are writing
1398
     to the stack.  Even if this write is not tagged as such, we still need
1399
     to update the cache.  */
1400
 
1401
  if (res > 0
1402
      && inf != NULL
1403
      && writebuf != NULL
1404
      && !region->attrib.cache
1405
      && stack_cache_enabled_p
1406
      && object != TARGET_OBJECT_STACK_MEMORY)
1407
    {
1408
      dcache_update (target_dcache, memaddr, (void *) writebuf, res);
1409
    }
1410
 
1411
  /* If we still haven't got anything, return the last error.  We
1412
     give up.  */
1413
  return res;
1414
}
1415
 
1416
static void
1417
restore_show_memory_breakpoints (void *arg)
1418
{
1419
  show_memory_breakpoints = (uintptr_t) arg;
1420
}
1421
 
1422
struct cleanup *
1423
make_show_memory_breakpoints_cleanup (int show)
1424
{
1425
  int current = show_memory_breakpoints;
1426
 
1427
  show_memory_breakpoints = show;
1428
  return make_cleanup (restore_show_memory_breakpoints,
1429
                       (void *) (uintptr_t) current);
1430
}
1431
 
1432
/* For docs see target.h, to_xfer_partial.  */
1433
 
1434
static LONGEST
1435
target_xfer_partial (struct target_ops *ops,
1436
                     enum target_object object, const char *annex,
1437
                     void *readbuf, const void *writebuf,
1438
                     ULONGEST offset, LONGEST len)
1439
{
1440
  LONGEST retval;
1441
 
1442
  gdb_assert (ops->to_xfer_partial != NULL);
1443
 
1444
  if (writebuf && !may_write_memory)
1445
    error (_("Writing to memory is not allowed (addr %s, len %s)"),
1446
           core_addr_to_string_nz (offset), plongest (len));
1447
 
1448
  /* If this is a memory transfer, let the memory-specific code
1449
     have a look at it instead.  Memory transfers are more
1450
     complicated.  */
1451
  if (object == TARGET_OBJECT_MEMORY || object == TARGET_OBJECT_STACK_MEMORY)
1452
    retval = memory_xfer_partial (ops, object, readbuf,
1453
                                  writebuf, offset, len);
1454
  else
1455
    {
1456
      enum target_object raw_object = object;
1457
 
1458
      /* If this is a raw memory transfer, request the normal
1459
         memory object from other layers.  */
1460
      if (raw_object == TARGET_OBJECT_RAW_MEMORY)
1461
        raw_object = TARGET_OBJECT_MEMORY;
1462
 
1463
      retval = ops->to_xfer_partial (ops, raw_object, annex, readbuf,
1464
                                     writebuf, offset, len);
1465
    }
1466
 
1467
  if (targetdebug)
1468
    {
1469
      const unsigned char *myaddr = NULL;
1470
 
1471
      fprintf_unfiltered (gdb_stdlog,
1472
                          "%s:target_xfer_partial (%d, %s, %s, %s, %s, %s) = %s",
1473
                          ops->to_shortname,
1474
                          (int) object,
1475
                          (annex ? annex : "(null)"),
1476
                          host_address_to_string (readbuf),
1477
                          host_address_to_string (writebuf),
1478
                          core_addr_to_string_nz (offset),
1479
                          plongest (len), plongest (retval));
1480
 
1481
      if (readbuf)
1482
        myaddr = readbuf;
1483
      if (writebuf)
1484
        myaddr = writebuf;
1485
      if (retval > 0 && myaddr != NULL)
1486
        {
1487
          int i;
1488
 
1489
          fputs_unfiltered (", bytes =", gdb_stdlog);
1490
          for (i = 0; i < retval; i++)
1491
            {
1492
              if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
1493
                {
1494
                  if (targetdebug < 2 && i > 0)
1495
                    {
1496
                      fprintf_unfiltered (gdb_stdlog, " ...");
1497
                      break;
1498
                    }
1499
                  fprintf_unfiltered (gdb_stdlog, "\n");
1500
                }
1501
 
1502
              fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1503
            }
1504
        }
1505
 
1506
      fputc_unfiltered ('\n', gdb_stdlog);
1507
    }
1508
  return retval;
1509
}
1510
 
1511
/* Read LEN bytes of target memory at address MEMADDR, placing the results in
1512
   GDB's memory at MYADDR.  Returns either 0 for success or an errno value
1513
   if any error occurs.
1514
 
1515
   If an error occurs, no guarantee is made about the contents of the data at
1516
   MYADDR.  In particular, the caller should not depend upon partial reads
1517
   filling the buffer with good data.  There is no way for the caller to know
1518
   how much good data might have been transfered anyway.  Callers that can
1519
   deal with partial reads should call target_read (which will retry until
1520
   it makes no progress, and then return how much was transferred). */
1521
 
1522
int
1523
target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1524
{
1525
  /* Dispatch to the topmost target, not the flattened current_target.
1526
     Memory accesses check target->to_has_(all_)memory, and the
1527
     flattened target doesn't inherit those.  */
1528
  if (target_read (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1529
                   myaddr, memaddr, len) == len)
1530
    return 0;
1531
  else
1532
    return EIO;
1533
}
1534
 
1535
/* Like target_read_memory, but specify explicitly that this is a read from
1536
   the target's stack.  This may trigger different cache behavior.  */
1537
 
1538
int
1539
target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1540
{
1541
  /* Dispatch to the topmost target, not the flattened current_target.
1542
     Memory accesses check target->to_has_(all_)memory, and the
1543
     flattened target doesn't inherit those.  */
1544
 
1545
  if (target_read (current_target.beneath, TARGET_OBJECT_STACK_MEMORY, NULL,
1546
                   myaddr, memaddr, len) == len)
1547
    return 0;
1548
  else
1549
    return EIO;
1550
}
1551
 
1552
/* Write LEN bytes from MYADDR to target memory at address MEMADDR.
1553
   Returns either 0 for success or an errno value if any error occurs.
1554
   If an error occurs, no guarantee is made about how much data got written.
1555
   Callers that can deal with partial writes should call target_write.  */
1556
 
1557
int
1558
target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
1559
{
1560
  /* Dispatch to the topmost target, not the flattened current_target.
1561
     Memory accesses check target->to_has_(all_)memory, and the
1562
     flattened target doesn't inherit those.  */
1563
  if (target_write (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1564
                    myaddr, memaddr, len) == len)
1565
    return 0;
1566
  else
1567
    return EIO;
1568
}
1569
 
1570
/* Fetch the target's memory map.  */
1571
 
1572
VEC(mem_region_s) *
1573
target_memory_map (void)
1574
{
1575
  VEC(mem_region_s) *result;
1576
  struct mem_region *last_one, *this_one;
1577
  int ix;
1578
  struct target_ops *t;
1579
 
1580
  if (targetdebug)
1581
    fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1582
 
1583
  for (t = current_target.beneath; t != NULL; t = t->beneath)
1584
    if (t->to_memory_map != NULL)
1585
      break;
1586
 
1587
  if (t == NULL)
1588
    return NULL;
1589
 
1590
  result = t->to_memory_map (t);
1591
  if (result == NULL)
1592
    return NULL;
1593
 
1594
  qsort (VEC_address (mem_region_s, result),
1595
         VEC_length (mem_region_s, result),
1596
         sizeof (struct mem_region), mem_region_cmp);
1597
 
1598
  /* Check that regions do not overlap.  Simultaneously assign
1599
     a numbering for the "mem" commands to use to refer to
1600
     each region.  */
1601
  last_one = NULL;
1602
  for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1603
    {
1604
      this_one->number = ix;
1605
 
1606
      if (last_one && last_one->hi > this_one->lo)
1607
        {
1608
          warning (_("Overlapping regions in memory map: ignoring"));
1609
          VEC_free (mem_region_s, result);
1610
          return NULL;
1611
        }
1612
      last_one = this_one;
1613
    }
1614
 
1615
  return result;
1616
}
1617
 
1618
void
1619
target_flash_erase (ULONGEST address, LONGEST length)
1620
{
1621
  struct target_ops *t;
1622
 
1623
  for (t = current_target.beneath; t != NULL; t = t->beneath)
1624
    if (t->to_flash_erase != NULL)
1625
      {
1626
        if (targetdebug)
1627
          fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1628
                              hex_string (address), phex (length, 0));
1629
        t->to_flash_erase (t, address, length);
1630
        return;
1631
      }
1632
 
1633
  tcomplain ();
1634
}
1635
 
1636
void
1637
target_flash_done (void)
1638
{
1639
  struct target_ops *t;
1640
 
1641
  for (t = current_target.beneath; t != NULL; t = t->beneath)
1642
    if (t->to_flash_done != NULL)
1643
      {
1644
        if (targetdebug)
1645
          fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1646
        t->to_flash_done (t);
1647
        return;
1648
      }
1649
 
1650
  tcomplain ();
1651
}
1652
 
1653
static void
1654
show_trust_readonly (struct ui_file *file, int from_tty,
1655
                     struct cmd_list_element *c, const char *value)
1656
{
1657
  fprintf_filtered (file, _("\
1658
Mode for reading from readonly sections is %s.\n"),
1659
                    value);
1660
}
1661
 
1662
/* More generic transfers.  */
1663
 
1664
static LONGEST
1665
default_xfer_partial (struct target_ops *ops, enum target_object object,
1666
                      const char *annex, gdb_byte *readbuf,
1667
                      const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1668
{
1669
  if (object == TARGET_OBJECT_MEMORY
1670
      && ops->deprecated_xfer_memory != NULL)
1671
    /* If available, fall back to the target's
1672
       "deprecated_xfer_memory" method.  */
1673
    {
1674
      int xfered = -1;
1675
 
1676
      errno = 0;
1677
      if (writebuf != NULL)
1678
        {
1679
          void *buffer = xmalloc (len);
1680
          struct cleanup *cleanup = make_cleanup (xfree, buffer);
1681
 
1682
          memcpy (buffer, writebuf, len);
1683
          xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1684
                                                1/*write*/, NULL, ops);
1685
          do_cleanups (cleanup);
1686
        }
1687
      if (readbuf != NULL)
1688
        xfered = ops->deprecated_xfer_memory (offset, readbuf, len,
1689
                                              0/*read*/, NULL, ops);
1690
      if (xfered > 0)
1691
        return xfered;
1692
      else if (xfered == 0 && errno == 0)
1693
        /* "deprecated_xfer_memory" uses 0, cross checked against
1694
           ERRNO as one indication of an error.  */
1695
        return 0;
1696
      else
1697
        return -1;
1698
    }
1699
  else if (ops->beneath != NULL)
1700
    return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1701
                                          readbuf, writebuf, offset, len);
1702
  else
1703
    return -1;
1704
}
1705
 
1706
/* The xfer_partial handler for the topmost target.  Unlike the default,
1707
   it does not need to handle memory specially; it just passes all
1708
   requests down the stack.  */
1709
 
1710
static LONGEST
1711
current_xfer_partial (struct target_ops *ops, enum target_object object,
1712
                      const char *annex, gdb_byte *readbuf,
1713
                      const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1714
{
1715
  if (ops->beneath != NULL)
1716
    return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1717
                                          readbuf, writebuf, offset, len);
1718
  else
1719
    return -1;
1720
}
1721
 
1722
/* Target vector read/write partial wrapper functions.  */
1723
 
1724
static LONGEST
1725
target_read_partial (struct target_ops *ops,
1726
                     enum target_object object,
1727
                     const char *annex, gdb_byte *buf,
1728
                     ULONGEST offset, LONGEST len)
1729
{
1730
  return target_xfer_partial (ops, object, annex, buf, NULL, offset, len);
1731
}
1732
 
1733
static LONGEST
1734
target_write_partial (struct target_ops *ops,
1735
                      enum target_object object,
1736
                      const char *annex, const gdb_byte *buf,
1737
                      ULONGEST offset, LONGEST len)
1738
{
1739
  return target_xfer_partial (ops, object, annex, NULL, buf, offset, len);
1740
}
1741
 
1742
/* Wrappers to perform the full transfer.  */
1743
 
1744
/* For docs on target_read see target.h.  */
1745
 
1746
LONGEST
1747
target_read (struct target_ops *ops,
1748
             enum target_object object,
1749
             const char *annex, gdb_byte *buf,
1750
             ULONGEST offset, LONGEST len)
1751
{
1752
  LONGEST xfered = 0;
1753
 
1754
  while (xfered < len)
1755
    {
1756
      LONGEST xfer = target_read_partial (ops, object, annex,
1757
                                          (gdb_byte *) buf + xfered,
1758
                                          offset + xfered, len - xfered);
1759
 
1760
      /* Call an observer, notifying them of the xfer progress?  */
1761
      if (xfer == 0)
1762
        return xfered;
1763
      if (xfer < 0)
1764
        return -1;
1765
      xfered += xfer;
1766
      QUIT;
1767
    }
1768
  return len;
1769
}
1770
 
1771
LONGEST
1772
target_read_until_error (struct target_ops *ops,
1773
                         enum target_object object,
1774
                         const char *annex, gdb_byte *buf,
1775
                         ULONGEST offset, LONGEST len)
1776
{
1777
  LONGEST xfered = 0;
1778
 
1779
  while (xfered < len)
1780
    {
1781
      LONGEST xfer = target_read_partial (ops, object, annex,
1782
                                          (gdb_byte *) buf + xfered,
1783
                                          offset + xfered, len - xfered);
1784
 
1785
      /* Call an observer, notifying them of the xfer progress?  */
1786
      if (xfer == 0)
1787
        return xfered;
1788
      if (xfer < 0)
1789
        {
1790
          /* We've got an error.  Try to read in smaller blocks.  */
1791
          ULONGEST start = offset + xfered;
1792
          ULONGEST remaining = len - xfered;
1793
          ULONGEST half;
1794
 
1795
          /* If an attempt was made to read a random memory address,
1796
             it's likely that the very first byte is not accessible.
1797
             Try reading the first byte, to avoid doing log N tries
1798
             below.  */
1799
          xfer = target_read_partial (ops, object, annex,
1800
                                      (gdb_byte *) buf + xfered, start, 1);
1801
          if (xfer <= 0)
1802
            return xfered;
1803
          start += 1;
1804
          remaining -= 1;
1805
          half = remaining/2;
1806
 
1807
          while (half > 0)
1808
            {
1809
              xfer = target_read_partial (ops, object, annex,
1810
                                          (gdb_byte *) buf + xfered,
1811
                                          start, half);
1812
              if (xfer == 0)
1813
                return xfered;
1814
              if (xfer < 0)
1815
                {
1816
                  remaining = half;
1817
                }
1818
              else
1819
                {
1820
                  /* We have successfully read the first half.  So, the
1821
                     error must be in the second half.  Adjust start and
1822
                     remaining to point at the second half.  */
1823
                  xfered += xfer;
1824
                  start += xfer;
1825
                  remaining -= xfer;
1826
                }
1827
              half = remaining/2;
1828
            }
1829
 
1830
          return xfered;
1831
        }
1832
      xfered += xfer;
1833
      QUIT;
1834
    }
1835
  return len;
1836
}
1837
 
1838
/* An alternative to target_write with progress callbacks.  */
1839
 
1840
LONGEST
1841
target_write_with_progress (struct target_ops *ops,
1842
                            enum target_object object,
1843
                            const char *annex, const gdb_byte *buf,
1844
                            ULONGEST offset, LONGEST len,
1845
                            void (*progress) (ULONGEST, void *), void *baton)
1846
{
1847
  LONGEST xfered = 0;
1848
 
1849
  /* Give the progress callback a chance to set up.  */
1850
  if (progress)
1851
    (*progress) (0, baton);
1852
 
1853
  while (xfered < len)
1854
    {
1855
      LONGEST xfer = target_write_partial (ops, object, annex,
1856
                                           (gdb_byte *) buf + xfered,
1857
                                           offset + xfered, len - xfered);
1858
 
1859
      if (xfer == 0)
1860
        return xfered;
1861
      if (xfer < 0)
1862
        return -1;
1863
 
1864
      if (progress)
1865
        (*progress) (xfer, baton);
1866
 
1867
      xfered += xfer;
1868
      QUIT;
1869
    }
1870
  return len;
1871
}
1872
 
1873
/* For docs on target_write see target.h.  */
1874
 
1875
LONGEST
1876
target_write (struct target_ops *ops,
1877
              enum target_object object,
1878
              const char *annex, const gdb_byte *buf,
1879
              ULONGEST offset, LONGEST len)
1880
{
1881
  return target_write_with_progress (ops, object, annex, buf, offset, len,
1882
                                     NULL, NULL);
1883
}
1884
 
1885
/* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1886
   the size of the transferred data.  PADDING additional bytes are
1887
   available in *BUF_P.  This is a helper function for
1888
   target_read_alloc; see the declaration of that function for more
1889
   information.  */
1890
 
1891
static LONGEST
1892
target_read_alloc_1 (struct target_ops *ops, enum target_object object,
1893
                     const char *annex, gdb_byte **buf_p, int padding)
1894
{
1895
  size_t buf_alloc, buf_pos;
1896
  gdb_byte *buf;
1897
  LONGEST n;
1898
 
1899
  /* This function does not have a length parameter; it reads the
1900
     entire OBJECT).  Also, it doesn't support objects fetched partly
1901
     from one target and partly from another (in a different stratum,
1902
     e.g. a core file and an executable).  Both reasons make it
1903
     unsuitable for reading memory.  */
1904
  gdb_assert (object != TARGET_OBJECT_MEMORY);
1905
 
1906
  /* Start by reading up to 4K at a time.  The target will throttle
1907
     this number down if necessary.  */
1908
  buf_alloc = 4096;
1909
  buf = xmalloc (buf_alloc);
1910
  buf_pos = 0;
1911
  while (1)
1912
    {
1913
      n = target_read_partial (ops, object, annex, &buf[buf_pos],
1914
                               buf_pos, buf_alloc - buf_pos - padding);
1915
      if (n < 0)
1916
        {
1917
          /* An error occurred.  */
1918
          xfree (buf);
1919
          return -1;
1920
        }
1921
      else if (n == 0)
1922
        {
1923
          /* Read all there was.  */
1924
          if (buf_pos == 0)
1925
            xfree (buf);
1926
          else
1927
            *buf_p = buf;
1928
          return buf_pos;
1929
        }
1930
 
1931
      buf_pos += n;
1932
 
1933
      /* If the buffer is filling up, expand it.  */
1934
      if (buf_alloc < buf_pos * 2)
1935
        {
1936
          buf_alloc *= 2;
1937
          buf = xrealloc (buf, buf_alloc);
1938
        }
1939
 
1940
      QUIT;
1941
    }
1942
}
1943
 
1944
/* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1945
   the size of the transferred data.  See the declaration in "target.h"
1946
   function for more information about the return value.  */
1947
 
1948
LONGEST
1949
target_read_alloc (struct target_ops *ops, enum target_object object,
1950
                   const char *annex, gdb_byte **buf_p)
1951
{
1952
  return target_read_alloc_1 (ops, object, annex, buf_p, 0);
1953
}
1954
 
1955
/* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
1956
   returned as a string, allocated using xmalloc.  If an error occurs
1957
   or the transfer is unsupported, NULL is returned.  Empty objects
1958
   are returned as allocated but empty strings.  A warning is issued
1959
   if the result contains any embedded NUL bytes.  */
1960
 
1961
char *
1962
target_read_stralloc (struct target_ops *ops, enum target_object object,
1963
                      const char *annex)
1964
{
1965
  gdb_byte *buffer;
1966
  LONGEST transferred;
1967
 
1968
  transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
1969
 
1970
  if (transferred < 0)
1971
    return NULL;
1972
 
1973
  if (transferred == 0)
1974
    return xstrdup ("");
1975
 
1976
  buffer[transferred] = 0;
1977
  if (strlen (buffer) < transferred)
1978
    warning (_("target object %d, annex %s, "
1979
               "contained unexpected null characters"),
1980
             (int) object, annex ? annex : "(none)");
1981
 
1982
  return (char *) buffer;
1983
}
1984
 
1985
/* Memory transfer methods.  */
1986
 
1987
void
1988
get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
1989
                   LONGEST len)
1990
{
1991
  /* This method is used to read from an alternate, non-current
1992
     target.  This read must bypass the overlay support (as symbols
1993
     don't match this target), and GDB's internal cache (wrong cache
1994
     for this target).  */
1995
  if (target_read (ops, TARGET_OBJECT_RAW_MEMORY, NULL, buf, addr, len)
1996
      != len)
1997
    memory_error (EIO, addr);
1998
}
1999
 
2000
ULONGEST
2001
get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
2002
                            int len, enum bfd_endian byte_order)
2003
{
2004
  gdb_byte buf[sizeof (ULONGEST)];
2005
 
2006
  gdb_assert (len <= sizeof (buf));
2007
  get_target_memory (ops, addr, buf, len);
2008
  return extract_unsigned_integer (buf, len, byte_order);
2009
}
2010
 
2011
int
2012
target_insert_breakpoint (struct gdbarch *gdbarch,
2013
                          struct bp_target_info *bp_tgt)
2014
{
2015
  if (!may_insert_breakpoints)
2016
    {
2017
      warning (_("May not insert breakpoints"));
2018
      return 1;
2019
    }
2020
 
2021
  return (*current_target.to_insert_breakpoint) (gdbarch, bp_tgt);
2022
}
2023
 
2024
int
2025
target_remove_breakpoint (struct gdbarch *gdbarch,
2026
                          struct bp_target_info *bp_tgt)
2027
{
2028
  /* This is kind of a weird case to handle, but the permission might
2029
     have been changed after breakpoints were inserted - in which case
2030
     we should just take the user literally and assume that any
2031
     breakpoints should be left in place.  */
2032
  if (!may_insert_breakpoints)
2033
    {
2034
      warning (_("May not remove breakpoints"));
2035
      return 1;
2036
    }
2037
 
2038
  return (*current_target.to_remove_breakpoint) (gdbarch, bp_tgt);
2039
}
2040
 
2041
static void
2042
target_info (char *args, int from_tty)
2043
{
2044
  struct target_ops *t;
2045
  int has_all_mem = 0;
2046
 
2047
  if (symfile_objfile != NULL)
2048
    printf_unfiltered (_("Symbols from \"%s\".\n"), symfile_objfile->name);
2049
 
2050
  for (t = target_stack; t != NULL; t = t->beneath)
2051
    {
2052
      if (!(*t->to_has_memory) (t))
2053
        continue;
2054
 
2055
      if ((int) (t->to_stratum) <= (int) dummy_stratum)
2056
        continue;
2057
      if (has_all_mem)
2058
        printf_unfiltered (_("\tWhile running this, GDB does not access memory from...\n"));
2059
      printf_unfiltered ("%s:\n", t->to_longname);
2060
      (t->to_files_info) (t);
2061
      has_all_mem = (*t->to_has_all_memory) (t);
2062
    }
2063
}
2064
 
2065
/* This function is called before any new inferior is created, e.g.
2066
   by running a program, attaching, or connecting to a target.
2067
   It cleans up any state from previous invocations which might
2068
   change between runs.  This is a subset of what target_preopen
2069
   resets (things which might change between targets).  */
2070
 
2071
void
2072
target_pre_inferior (int from_tty)
2073
{
2074
  /* Clear out solib state. Otherwise the solib state of the previous
2075
     inferior might have survived and is entirely wrong for the new
2076
     target.  This has been observed on GNU/Linux using glibc 2.3. How
2077
     to reproduce:
2078
 
2079
     bash$ ./foo&
2080
     [1] 4711
2081
     bash$ ./foo&
2082
     [1] 4712
2083
     bash$ gdb ./foo
2084
     [...]
2085
     (gdb) attach 4711
2086
     (gdb) detach
2087
     (gdb) attach 4712
2088
     Cannot access memory at address 0xdeadbeef
2089
  */
2090
 
2091
  /* In some OSs, the shared library list is the same/global/shared
2092
     across inferiors.  If code is shared between processes, so are
2093
     memory regions and features.  */
2094
  if (!gdbarch_has_global_solist (target_gdbarch))
2095
    {
2096
      no_shared_libraries (NULL, from_tty);
2097
 
2098
      invalidate_target_mem_regions ();
2099
 
2100
      target_clear_description ();
2101
    }
2102
}
2103
 
2104
/* Callback for iterate_over_inferiors.  Gets rid of the given
2105
   inferior.  */
2106
 
2107
static int
2108
dispose_inferior (struct inferior *inf, void *args)
2109
{
2110
  struct thread_info *thread;
2111
 
2112
  thread = any_thread_of_process (inf->pid);
2113
  if (thread)
2114
    {
2115
      switch_to_thread (thread->ptid);
2116
 
2117
      /* Core inferiors actually should be detached, not killed.  */
2118
      if (target_has_execution)
2119
        target_kill ();
2120
      else
2121
        target_detach (NULL, 0);
2122
    }
2123
 
2124
  return 0;
2125
}
2126
 
2127
/* This is to be called by the open routine before it does
2128
   anything.  */
2129
 
2130
void
2131
target_preopen (int from_tty)
2132
{
2133
  dont_repeat ();
2134
 
2135
  if (have_inferiors ())
2136
    {
2137
      if (!from_tty
2138
          || !have_live_inferiors ()
2139
          || query (_("A program is being debugged already.  Kill it? ")))
2140
        iterate_over_inferiors (dispose_inferior, NULL);
2141
      else
2142
        error (_("Program not killed."));
2143
    }
2144
 
2145
  /* Calling target_kill may remove the target from the stack.  But if
2146
     it doesn't (which seems like a win for UDI), remove it now.  */
2147
  /* Leave the exec target, though.  The user may be switching from a
2148
     live process to a core of the same program.  */
2149
  pop_all_targets_above (file_stratum, 0);
2150
 
2151
  target_pre_inferior (from_tty);
2152
}
2153
 
2154
/* Detach a target after doing deferred register stores.  */
2155
 
2156
void
2157
target_detach (char *args, int from_tty)
2158
{
2159
  struct target_ops* t;
2160
 
2161
  if (gdbarch_has_global_breakpoints (target_gdbarch))
2162
    /* Don't remove global breakpoints here.  They're removed on
2163
       disconnection from the target.  */
2164
    ;
2165
  else
2166
    /* If we're in breakpoints-always-inserted mode, have to remove
2167
       them before detaching.  */
2168
    remove_breakpoints_pid (PIDGET (inferior_ptid));
2169
 
2170
  prepare_for_detach ();
2171
 
2172
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2173
    {
2174
      if (t->to_detach != NULL)
2175
        {
2176
          t->to_detach (t, args, from_tty);
2177
          if (targetdebug)
2178
            fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
2179
                                args, from_tty);
2180
          return;
2181
        }
2182
    }
2183
 
2184
  internal_error (__FILE__, __LINE__, "could not find a target to detach");
2185
}
2186
 
2187
void
2188
target_disconnect (char *args, int from_tty)
2189
{
2190
  struct target_ops *t;
2191
 
2192
  /* If we're in breakpoints-always-inserted mode or if breakpoints
2193
     are global across processes, we have to remove them before
2194
     disconnecting.  */
2195
  remove_breakpoints ();
2196
 
2197
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2198
    if (t->to_disconnect != NULL)
2199
        {
2200
          if (targetdebug)
2201
            fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
2202
                                args, from_tty);
2203
          t->to_disconnect (t, args, from_tty);
2204
          return;
2205
        }
2206
 
2207
  tcomplain ();
2208
}
2209
 
2210
ptid_t
2211
target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
2212
{
2213
  struct target_ops *t;
2214
 
2215
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2216
    {
2217
      if (t->to_wait != NULL)
2218
        {
2219
          ptid_t retval = (*t->to_wait) (t, ptid, status, options);
2220
 
2221
          if (targetdebug)
2222
            {
2223
              char *status_string;
2224
 
2225
              status_string = target_waitstatus_to_string (status);
2226
              fprintf_unfiltered (gdb_stdlog,
2227
                                  "target_wait (%d, status) = %d,   %s\n",
2228
                                  PIDGET (ptid), PIDGET (retval),
2229
                                  status_string);
2230
              xfree (status_string);
2231
            }
2232
 
2233
          return retval;
2234
        }
2235
    }
2236
 
2237
  noprocess ();
2238
}
2239
 
2240
char *
2241
target_pid_to_str (ptid_t ptid)
2242
{
2243
  struct target_ops *t;
2244
 
2245
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2246
    {
2247
      if (t->to_pid_to_str != NULL)
2248
        return (*t->to_pid_to_str) (t, ptid);
2249
    }
2250
 
2251
  return normal_pid_to_str (ptid);
2252
}
2253
 
2254
void
2255
target_resume (ptid_t ptid, int step, enum target_signal signal)
2256
{
2257
  struct target_ops *t;
2258
 
2259
  target_dcache_invalidate ();
2260
 
2261
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2262
    {
2263
      if (t->to_resume != NULL)
2264
        {
2265
          t->to_resume (t, ptid, step, signal);
2266
          if (targetdebug)
2267
            fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n",
2268
                                PIDGET (ptid),
2269
                                step ? "step" : "continue",
2270
                                target_signal_to_name (signal));
2271
 
2272
          registers_changed_ptid (ptid);
2273
          set_executing (ptid, 1);
2274
          set_running (ptid, 1);
2275
          clear_inline_frame_state (ptid);
2276
          return;
2277
        }
2278
    }
2279
 
2280
  noprocess ();
2281
}
2282
/* Look through the list of possible targets for a target that can
2283
   follow forks.  */
2284
 
2285
int
2286
target_follow_fork (int follow_child)
2287
{
2288
  struct target_ops *t;
2289
 
2290
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2291
    {
2292
      if (t->to_follow_fork != NULL)
2293
        {
2294
          int retval = t->to_follow_fork (t, follow_child);
2295
 
2296
          if (targetdebug)
2297
            fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
2298
                                follow_child, retval);
2299
          return retval;
2300
        }
2301
    }
2302
 
2303
  /* Some target returned a fork event, but did not know how to follow it.  */
2304
  internal_error (__FILE__, __LINE__,
2305
                  "could not find a target to follow fork");
2306
}
2307
 
2308
void
2309
target_mourn_inferior (void)
2310
{
2311
  struct target_ops *t;
2312
 
2313
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2314
    {
2315
      if (t->to_mourn_inferior != NULL)
2316
        {
2317
          t->to_mourn_inferior (t);
2318
          if (targetdebug)
2319
            fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2320
 
2321
          /* We no longer need to keep handles on any of the object files.
2322
             Make sure to release them to avoid unnecessarily locking any
2323
             of them while we're not actually debugging.  */
2324
          bfd_cache_close_all ();
2325
 
2326
          return;
2327
        }
2328
    }
2329
 
2330
  internal_error (__FILE__, __LINE__,
2331
                  "could not find a target to follow mourn inferior");
2332
}
2333
 
2334
/* Look for a target which can describe architectural features, starting
2335
   from TARGET.  If we find one, return its description.  */
2336
 
2337
const struct target_desc *
2338
target_read_description (struct target_ops *target)
2339
{
2340
  struct target_ops *t;
2341
 
2342
  for (t = target; t != NULL; t = t->beneath)
2343
    if (t->to_read_description != NULL)
2344
      {
2345
        const struct target_desc *tdesc;
2346
 
2347
        tdesc = t->to_read_description (t);
2348
        if (tdesc)
2349
          return tdesc;
2350
      }
2351
 
2352
  return NULL;
2353
}
2354
 
2355
/* The default implementation of to_search_memory.
2356
   This implements a basic search of memory, reading target memory and
2357
   performing the search here (as opposed to performing the search in on the
2358
   target side with, for example, gdbserver).  */
2359
 
2360
int
2361
simple_search_memory (struct target_ops *ops,
2362
                      CORE_ADDR start_addr, ULONGEST search_space_len,
2363
                      const gdb_byte *pattern, ULONGEST pattern_len,
2364
                      CORE_ADDR *found_addrp)
2365
{
2366
  /* NOTE: also defined in find.c testcase.  */
2367
#define SEARCH_CHUNK_SIZE 16000
2368
  const unsigned chunk_size = SEARCH_CHUNK_SIZE;
2369
  /* Buffer to hold memory contents for searching.  */
2370
  gdb_byte *search_buf;
2371
  unsigned search_buf_size;
2372
  struct cleanup *old_cleanups;
2373
 
2374
  search_buf_size = chunk_size + pattern_len - 1;
2375
 
2376
  /* No point in trying to allocate a buffer larger than the search space.  */
2377
  if (search_space_len < search_buf_size)
2378
    search_buf_size = search_space_len;
2379
 
2380
  search_buf = malloc (search_buf_size);
2381
  if (search_buf == NULL)
2382
    error (_("Unable to allocate memory to perform the search."));
2383
  old_cleanups = make_cleanup (free_current_contents, &search_buf);
2384
 
2385
  /* Prime the search buffer.  */
2386
 
2387
  if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2388
                   search_buf, start_addr, search_buf_size) != search_buf_size)
2389
    {
2390
      warning (_("Unable to access target memory at %s, halting search."),
2391
               hex_string (start_addr));
2392
      do_cleanups (old_cleanups);
2393
      return -1;
2394
    }
2395
 
2396
  /* Perform the search.
2397
 
2398
     The loop is kept simple by allocating [N + pattern-length - 1] bytes.
2399
     When we've scanned N bytes we copy the trailing bytes to the start and
2400
     read in another N bytes.  */
2401
 
2402
  while (search_space_len >= pattern_len)
2403
    {
2404
      gdb_byte *found_ptr;
2405
      unsigned nr_search_bytes = min (search_space_len, search_buf_size);
2406
 
2407
      found_ptr = memmem (search_buf, nr_search_bytes,
2408
                          pattern, pattern_len);
2409
 
2410
      if (found_ptr != NULL)
2411
        {
2412
          CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
2413
 
2414
          *found_addrp = found_addr;
2415
          do_cleanups (old_cleanups);
2416
          return 1;
2417
        }
2418
 
2419
      /* Not found in this chunk, skip to next chunk.  */
2420
 
2421
      /* Don't let search_space_len wrap here, it's unsigned.  */
2422
      if (search_space_len >= chunk_size)
2423
        search_space_len -= chunk_size;
2424
      else
2425
        search_space_len = 0;
2426
 
2427
      if (search_space_len >= pattern_len)
2428
        {
2429
          unsigned keep_len = search_buf_size - chunk_size;
2430
          CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
2431
          int nr_to_read;
2432
 
2433
          /* Copy the trailing part of the previous iteration to the front
2434
             of the buffer for the next iteration.  */
2435
          gdb_assert (keep_len == pattern_len - 1);
2436
          memcpy (search_buf, search_buf + chunk_size, keep_len);
2437
 
2438
          nr_to_read = min (search_space_len - keep_len, chunk_size);
2439
 
2440
          if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2441
                           search_buf + keep_len, read_addr,
2442
                           nr_to_read) != nr_to_read)
2443
            {
2444
              warning (_("Unable to access target memory at %s, halting search."),
2445
                       hex_string (read_addr));
2446
              do_cleanups (old_cleanups);
2447
              return -1;
2448
            }
2449
 
2450
          start_addr += chunk_size;
2451
        }
2452
    }
2453
 
2454
  /* Not found.  */
2455
 
2456
  do_cleanups (old_cleanups);
2457
  return 0;
2458
}
2459
 
2460
/* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
2461
   sequence of bytes in PATTERN with length PATTERN_LEN.
2462
 
2463
   The result is 1 if found, 0 if not found, and -1 if there was an error
2464
   requiring halting of the search (e.g. memory read error).
2465
   If the pattern is found the address is recorded in FOUND_ADDRP.  */
2466
 
2467
int
2468
target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
2469
                      const gdb_byte *pattern, ULONGEST pattern_len,
2470
                      CORE_ADDR *found_addrp)
2471
{
2472
  struct target_ops *t;
2473
  int found;
2474
 
2475
  /* We don't use INHERIT to set current_target.to_search_memory,
2476
     so we have to scan the target stack and handle targetdebug
2477
     ourselves.  */
2478
 
2479
  if (targetdebug)
2480
    fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
2481
                        hex_string (start_addr));
2482
 
2483
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2484
    if (t->to_search_memory != NULL)
2485
      break;
2486
 
2487
  if (t != NULL)
2488
    {
2489
      found = t->to_search_memory (t, start_addr, search_space_len,
2490
                                   pattern, pattern_len, found_addrp);
2491
    }
2492
  else
2493
    {
2494
      /* If a special version of to_search_memory isn't available, use the
2495
         simple version.  */
2496
      found = simple_search_memory (current_target.beneath,
2497
                                    start_addr, search_space_len,
2498
                                    pattern, pattern_len, found_addrp);
2499
    }
2500
 
2501
  if (targetdebug)
2502
    fprintf_unfiltered (gdb_stdlog, "  = %d\n", found);
2503
 
2504
  return found;
2505
}
2506
 
2507
/* Look through the currently pushed targets.  If none of them will
2508
   be able to restart the currently running process, issue an error
2509
   message.  */
2510
 
2511
void
2512
target_require_runnable (void)
2513
{
2514
  struct target_ops *t;
2515
 
2516
  for (t = target_stack; t != NULL; t = t->beneath)
2517
    {
2518
      /* If this target knows how to create a new program, then
2519
         assume we will still be able to after killing the current
2520
         one.  Either killing and mourning will not pop T, or else
2521
         find_default_run_target will find it again.  */
2522
      if (t->to_create_inferior != NULL)
2523
        return;
2524
 
2525
      /* Do not worry about thread_stratum targets that can not
2526
         create inferiors.  Assume they will be pushed again if
2527
         necessary, and continue to the process_stratum.  */
2528
      if (t->to_stratum == thread_stratum
2529
          || t->to_stratum == arch_stratum)
2530
        continue;
2531
 
2532
      error (_("\
2533
The \"%s\" target does not support \"run\".  Try \"help target\" or \"continue\"."),
2534
             t->to_shortname);
2535
    }
2536
 
2537
  /* This function is only called if the target is running.  In that
2538
     case there should have been a process_stratum target and it
2539
     should either know how to create inferiors, or not... */
2540
  internal_error (__FILE__, __LINE__, "No targets found");
2541
}
2542
 
2543
/* Look through the list of possible targets for a target that can
2544
   execute a run or attach command without any other data.  This is
2545
   used to locate the default process stratum.
2546
 
2547
   If DO_MESG is not NULL, the result is always valid (error() is
2548
   called for errors); else, return NULL on error.  */
2549
 
2550
static struct target_ops *
2551
find_default_run_target (char *do_mesg)
2552
{
2553
  struct target_ops **t;
2554
  struct target_ops *runable = NULL;
2555
  int count;
2556
 
2557
  count = 0;
2558
 
2559
  for (t = target_structs; t < target_structs + target_struct_size;
2560
       ++t)
2561
    {
2562
      if ((*t)->to_can_run && target_can_run (*t))
2563
        {
2564
          runable = *t;
2565
          ++count;
2566
        }
2567
    }
2568
 
2569
  if (count != 1)
2570
    {
2571
      if (do_mesg)
2572
        error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
2573
      else
2574
        return NULL;
2575
    }
2576
 
2577
  return runable;
2578
}
2579
 
2580
void
2581
find_default_attach (struct target_ops *ops, char *args, int from_tty)
2582
{
2583
  struct target_ops *t;
2584
 
2585
  t = find_default_run_target ("attach");
2586
  (t->to_attach) (t, args, from_tty);
2587
  return;
2588
}
2589
 
2590
void
2591
find_default_create_inferior (struct target_ops *ops,
2592
                              char *exec_file, char *allargs, char **env,
2593
                              int from_tty)
2594
{
2595
  struct target_ops *t;
2596
 
2597
  t = find_default_run_target ("run");
2598
  (t->to_create_inferior) (t, exec_file, allargs, env, from_tty);
2599
  return;
2600
}
2601
 
2602
static int
2603
find_default_can_async_p (void)
2604
{
2605
  struct target_ops *t;
2606
 
2607
  /* This may be called before the target is pushed on the stack;
2608
     look for the default process stratum.  If there's none, gdb isn't
2609
     configured with a native debugger, and target remote isn't
2610
     connected yet.  */
2611
  t = find_default_run_target (NULL);
2612
  if (t && t->to_can_async_p)
2613
    return (t->to_can_async_p) ();
2614
  return 0;
2615
}
2616
 
2617
static int
2618
find_default_is_async_p (void)
2619
{
2620
  struct target_ops *t;
2621
 
2622
  /* This may be called before the target is pushed on the stack;
2623
     look for the default process stratum.  If there's none, gdb isn't
2624
     configured with a native debugger, and target remote isn't
2625
     connected yet.  */
2626
  t = find_default_run_target (NULL);
2627
  if (t && t->to_is_async_p)
2628
    return (t->to_is_async_p) ();
2629
  return 0;
2630
}
2631
 
2632
static int
2633
find_default_supports_non_stop (void)
2634
{
2635
  struct target_ops *t;
2636
 
2637
  t = find_default_run_target (NULL);
2638
  if (t && t->to_supports_non_stop)
2639
    return (t->to_supports_non_stop) ();
2640
  return 0;
2641
}
2642
 
2643
int
2644
target_supports_non_stop (void)
2645
{
2646
  struct target_ops *t;
2647
 
2648
  for (t = &current_target; t != NULL; t = t->beneath)
2649
    if (t->to_supports_non_stop)
2650
      return t->to_supports_non_stop ();
2651
 
2652
  return 0;
2653
}
2654
 
2655
 
2656
char *
2657
target_get_osdata (const char *type)
2658
{
2659
  struct target_ops *t;
2660
 
2661
  /* If we're already connected to something that can get us OS
2662
     related data, use it.  Otherwise, try using the native
2663
     target.  */
2664
  if (current_target.to_stratum >= process_stratum)
2665
    t = current_target.beneath;
2666
  else
2667
    t = find_default_run_target ("get OS data");
2668
 
2669
  if (!t)
2670
    return NULL;
2671
 
2672
  return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
2673
}
2674
 
2675
/* Determine the current address space of thread PTID.  */
2676
 
2677
struct address_space *
2678
target_thread_address_space (ptid_t ptid)
2679
{
2680
  struct address_space *aspace;
2681
  struct inferior *inf;
2682
  struct target_ops *t;
2683
 
2684
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2685
    {
2686
      if (t->to_thread_address_space != NULL)
2687
        {
2688
          aspace = t->to_thread_address_space (t, ptid);
2689
          gdb_assert (aspace);
2690
 
2691
          if (targetdebug)
2692
            fprintf_unfiltered (gdb_stdlog,
2693
                                "target_thread_address_space (%s) = %d\n",
2694
                                target_pid_to_str (ptid),
2695
                                address_space_num (aspace));
2696
          return aspace;
2697
        }
2698
    }
2699
 
2700
  /* Fall-back to the "main" address space of the inferior.  */
2701
  inf = find_inferior_pid (ptid_get_pid (ptid));
2702
 
2703
  if (inf == NULL || inf->aspace == NULL)
2704
    internal_error (__FILE__, __LINE__, "\
2705
Can't determine the current address space of thread %s\n",
2706
                    target_pid_to_str (ptid));
2707
 
2708
  return inf->aspace;
2709
}
2710
 
2711
static int
2712
default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2713
{
2714
  return (len <= gdbarch_ptr_bit (target_gdbarch) / TARGET_CHAR_BIT);
2715
}
2716
 
2717
static int
2718
default_watchpoint_addr_within_range (struct target_ops *target,
2719
                                      CORE_ADDR addr,
2720
                                      CORE_ADDR start, int length)
2721
{
2722
  return addr >= start && addr < start + length;
2723
}
2724
 
2725
static struct gdbarch *
2726
default_thread_architecture (struct target_ops *ops, ptid_t ptid)
2727
{
2728
  return target_gdbarch;
2729
}
2730
 
2731
static int
2732
return_zero (void)
2733
{
2734
  return 0;
2735
}
2736
 
2737
static int
2738
return_one (void)
2739
{
2740
  return 1;
2741
}
2742
 
2743
static int
2744
return_minus_one (void)
2745
{
2746
  return -1;
2747
}
2748
 
2749
/* Find a single runnable target in the stack and return it.  If for
2750
   some reason there is more than one, return NULL.  */
2751
 
2752
struct target_ops *
2753
find_run_target (void)
2754
{
2755
  struct target_ops **t;
2756
  struct target_ops *runable = NULL;
2757
  int count;
2758
 
2759
  count = 0;
2760
 
2761
  for (t = target_structs; t < target_structs + target_struct_size; ++t)
2762
    {
2763
      if ((*t)->to_can_run && target_can_run (*t))
2764
        {
2765
          runable = *t;
2766
          ++count;
2767
        }
2768
    }
2769
 
2770
  return (count == 1 ? runable : NULL);
2771
}
2772
 
2773
/* Find a single core_stratum target in the list of targets and return it.
2774
   If for some reason there is more than one, return NULL.  */
2775
 
2776
struct target_ops *
2777
find_core_target (void)
2778
{
2779
  struct target_ops **t;
2780
  struct target_ops *runable = NULL;
2781
  int count;
2782
 
2783
  count = 0;
2784
 
2785
  for (t = target_structs; t < target_structs + target_struct_size;
2786
       ++t)
2787
    {
2788
      if ((*t)->to_stratum == core_stratum)
2789
        {
2790
          runable = *t;
2791
          ++count;
2792
        }
2793
    }
2794
 
2795
  return (count == 1 ? runable : NULL);
2796
}
2797
 
2798
/*
2799
 * Find the next target down the stack from the specified target.
2800
 */
2801
 
2802
struct target_ops *
2803
find_target_beneath (struct target_ops *t)
2804
{
2805
  return t->beneath;
2806
}
2807
 
2808
 
2809
/* The inferior process has died.  Long live the inferior!  */
2810
 
2811
void
2812
generic_mourn_inferior (void)
2813
{
2814
  ptid_t ptid;
2815
 
2816
  ptid = inferior_ptid;
2817
  inferior_ptid = null_ptid;
2818
 
2819
  if (!ptid_equal (ptid, null_ptid))
2820
    {
2821
      int pid = ptid_get_pid (ptid);
2822
      exit_inferior (pid);
2823
    }
2824
 
2825
  breakpoint_init_inferior (inf_exited);
2826
  registers_changed ();
2827
 
2828
  reopen_exec_file ();
2829
  reinit_frame_cache ();
2830
 
2831
  if (deprecated_detach_hook)
2832
    deprecated_detach_hook ();
2833
}
2834
 
2835
/* Helper function for child_wait and the derivatives of child_wait.
2836
   HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
2837
   translation of that in OURSTATUS.  */
2838
void
2839
store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
2840
{
2841
  if (WIFEXITED (hoststatus))
2842
    {
2843
      ourstatus->kind = TARGET_WAITKIND_EXITED;
2844
      ourstatus->value.integer = WEXITSTATUS (hoststatus);
2845
    }
2846
  else if (!WIFSTOPPED (hoststatus))
2847
    {
2848
      ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
2849
      ourstatus->value.sig = target_signal_from_host (WTERMSIG (hoststatus));
2850
    }
2851
  else
2852
    {
2853
      ourstatus->kind = TARGET_WAITKIND_STOPPED;
2854
      ourstatus->value.sig = target_signal_from_host (WSTOPSIG (hoststatus));
2855
    }
2856
}
2857
 
2858
/* Convert a normal process ID to a string.  Returns the string in a
2859
   static buffer.  */
2860
 
2861
char *
2862
normal_pid_to_str (ptid_t ptid)
2863
{
2864
  static char buf[32];
2865
 
2866
  xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
2867
  return buf;
2868
}
2869
 
2870
static char *
2871
dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
2872
{
2873
  return normal_pid_to_str (ptid);
2874
}
2875
 
2876
/* Error-catcher for target_find_memory_regions.  */
2877
static int
2878
dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
2879
{
2880
  error (_("Command not implemented for this target."));
2881
  return 0;
2882
}
2883
 
2884
/* Error-catcher for target_make_corefile_notes.  */
2885
static char *
2886
dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
2887
{
2888
  error (_("Command not implemented for this target."));
2889
  return NULL;
2890
}
2891
 
2892
/* Error-catcher for target_get_bookmark.  */
2893
static gdb_byte *
2894
dummy_get_bookmark (char *ignore1, int ignore2)
2895
{
2896
  tcomplain ();
2897
  return NULL;
2898
}
2899
 
2900
/* Error-catcher for target_goto_bookmark.  */
2901
static void
2902
dummy_goto_bookmark (gdb_byte *ignore, int from_tty)
2903
{
2904
  tcomplain ();
2905
}
2906
 
2907
/* Set up the handful of non-empty slots needed by the dummy target
2908
   vector.  */
2909
 
2910
static void
2911
init_dummy_target (void)
2912
{
2913
  dummy_target.to_shortname = "None";
2914
  dummy_target.to_longname = "None";
2915
  dummy_target.to_doc = "";
2916
  dummy_target.to_attach = find_default_attach;
2917
  dummy_target.to_detach =
2918
    (void (*)(struct target_ops *, char *, int))target_ignore;
2919
  dummy_target.to_create_inferior = find_default_create_inferior;
2920
  dummy_target.to_can_async_p = find_default_can_async_p;
2921
  dummy_target.to_is_async_p = find_default_is_async_p;
2922
  dummy_target.to_supports_non_stop = find_default_supports_non_stop;
2923
  dummy_target.to_pid_to_str = dummy_pid_to_str;
2924
  dummy_target.to_stratum = dummy_stratum;
2925
  dummy_target.to_find_memory_regions = dummy_find_memory_regions;
2926
  dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
2927
  dummy_target.to_get_bookmark = dummy_get_bookmark;
2928
  dummy_target.to_goto_bookmark = dummy_goto_bookmark;
2929
  dummy_target.to_xfer_partial = default_xfer_partial;
2930
  dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
2931
  dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero;
2932
  dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero;
2933
  dummy_target.to_has_registers = (int (*) (struct target_ops *)) return_zero;
2934
  dummy_target.to_has_execution = (int (*) (struct target_ops *)) return_zero;
2935
  dummy_target.to_stopped_by_watchpoint = return_zero;
2936
  dummy_target.to_stopped_data_address =
2937
    (int (*) (struct target_ops *, CORE_ADDR *)) return_zero;
2938
  dummy_target.to_magic = OPS_MAGIC;
2939
}
2940
 
2941
static void
2942
debug_to_open (char *args, int from_tty)
2943
{
2944
  debug_target.to_open (args, from_tty);
2945
 
2946
  fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
2947
}
2948
 
2949
void
2950
target_close (struct target_ops *targ, int quitting)
2951
{
2952
  if (targ->to_xclose != NULL)
2953
    targ->to_xclose (targ, quitting);
2954
  else if (targ->to_close != NULL)
2955
    targ->to_close (quitting);
2956
 
2957
  if (targetdebug)
2958
    fprintf_unfiltered (gdb_stdlog, "target_close (%d)\n", quitting);
2959
}
2960
 
2961
void
2962
target_attach (char *args, int from_tty)
2963
{
2964
  struct target_ops *t;
2965
 
2966
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2967
    {
2968
      if (t->to_attach != NULL)
2969
        {
2970
          t->to_attach (t, args, from_tty);
2971
          if (targetdebug)
2972
            fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
2973
                                args, from_tty);
2974
          return;
2975
        }
2976
    }
2977
 
2978
  internal_error (__FILE__, __LINE__,
2979
                  "could not find a target to attach");
2980
}
2981
 
2982
int
2983
target_thread_alive (ptid_t ptid)
2984
{
2985
  struct target_ops *t;
2986
 
2987
  for (t = current_target.beneath; t != NULL; t = t->beneath)
2988
    {
2989
      if (t->to_thread_alive != NULL)
2990
        {
2991
          int retval;
2992
 
2993
          retval = t->to_thread_alive (t, ptid);
2994
          if (targetdebug)
2995
            fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
2996
                                PIDGET (ptid), retval);
2997
 
2998
          return retval;
2999
        }
3000
    }
3001
 
3002
  return 0;
3003
}
3004
 
3005
void
3006
target_find_new_threads (void)
3007
{
3008
  struct target_ops *t;
3009
 
3010
  for (t = current_target.beneath; t != NULL; t = t->beneath)
3011
    {
3012
      if (t->to_find_new_threads != NULL)
3013
        {
3014
          t->to_find_new_threads (t);
3015
          if (targetdebug)
3016
            fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
3017
 
3018
          return;
3019
        }
3020
    }
3021
}
3022
 
3023
void
3024
target_stop (ptid_t ptid)
3025
{
3026
  if (!may_stop)
3027
    {
3028
      warning (_("May not interrupt or stop the target, ignoring attempt"));
3029
      return;
3030
    }
3031
 
3032
  (*current_target.to_stop) (ptid);
3033
}
3034
 
3035
static void
3036
debug_to_post_attach (int pid)
3037
{
3038
  debug_target.to_post_attach (pid);
3039
 
3040
  fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
3041
}
3042
 
3043
/* Return a pretty printed form of target_waitstatus.
3044
   Space for the result is malloc'd, caller must free.  */
3045
 
3046
char *
3047
target_waitstatus_to_string (const struct target_waitstatus *ws)
3048
{
3049
  const char *kind_str = "status->kind = ";
3050
 
3051
  switch (ws->kind)
3052
    {
3053
    case TARGET_WAITKIND_EXITED:
3054
      return xstrprintf ("%sexited, status = %d",
3055
                         kind_str, ws->value.integer);
3056
    case TARGET_WAITKIND_STOPPED:
3057
      return xstrprintf ("%sstopped, signal = %s",
3058
                         kind_str, target_signal_to_name (ws->value.sig));
3059
    case TARGET_WAITKIND_SIGNALLED:
3060
      return xstrprintf ("%ssignalled, signal = %s",
3061
                         kind_str, target_signal_to_name (ws->value.sig));
3062
    case TARGET_WAITKIND_LOADED:
3063
      return xstrprintf ("%sloaded", kind_str);
3064
    case TARGET_WAITKIND_FORKED:
3065
      return xstrprintf ("%sforked", kind_str);
3066
    case TARGET_WAITKIND_VFORKED:
3067
      return xstrprintf ("%svforked", kind_str);
3068
    case TARGET_WAITKIND_EXECD:
3069
      return xstrprintf ("%sexecd", kind_str);
3070
    case TARGET_WAITKIND_SYSCALL_ENTRY:
3071
      return xstrprintf ("%sentered syscall", kind_str);
3072
    case TARGET_WAITKIND_SYSCALL_RETURN:
3073
      return xstrprintf ("%sexited syscall", kind_str);
3074
    case TARGET_WAITKIND_SPURIOUS:
3075
      return xstrprintf ("%sspurious", kind_str);
3076
    case TARGET_WAITKIND_IGNORE:
3077
      return xstrprintf ("%signore", kind_str);
3078
    case TARGET_WAITKIND_NO_HISTORY:
3079
      return xstrprintf ("%sno-history", kind_str);
3080
    default:
3081
      return xstrprintf ("%sunknown???", kind_str);
3082
    }
3083
}
3084
 
3085
static void
3086
debug_print_register (const char * func,
3087
                      struct regcache *regcache, int regno)
3088
{
3089
  struct gdbarch *gdbarch = get_regcache_arch (regcache);
3090
 
3091
  fprintf_unfiltered (gdb_stdlog, "%s ", func);
3092
  if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
3093
      && gdbarch_register_name (gdbarch, regno) != NULL
3094
      && gdbarch_register_name (gdbarch, regno)[0] != '\0')
3095
    fprintf_unfiltered (gdb_stdlog, "(%s)",
3096
                        gdbarch_register_name (gdbarch, regno));
3097
  else
3098
    fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
3099
  if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
3100
    {
3101
      enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3102
      int i, size = register_size (gdbarch, regno);
3103
      unsigned char buf[MAX_REGISTER_SIZE];
3104
 
3105
      regcache_raw_collect (regcache, regno, buf);
3106
      fprintf_unfiltered (gdb_stdlog, " = ");
3107
      for (i = 0; i < size; i++)
3108
        {
3109
          fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3110
        }
3111
      if (size <= sizeof (LONGEST))
3112
        {
3113
          ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
3114
 
3115
          fprintf_unfiltered (gdb_stdlog, " %s %s",
3116
                              core_addr_to_string_nz (val), plongest (val));
3117
        }
3118
    }
3119
  fprintf_unfiltered (gdb_stdlog, "\n");
3120
}
3121
 
3122
void
3123
target_fetch_registers (struct regcache *regcache, int regno)
3124
{
3125
  struct target_ops *t;
3126
 
3127
  for (t = current_target.beneath; t != NULL; t = t->beneath)
3128
    {
3129
      if (t->to_fetch_registers != NULL)
3130
        {
3131
          t->to_fetch_registers (t, regcache, regno);
3132
          if (targetdebug)
3133
            debug_print_register ("target_fetch_registers", regcache, regno);
3134
          return;
3135
        }
3136
    }
3137
}
3138
 
3139
void
3140
target_store_registers (struct regcache *regcache, int regno)
3141
{
3142
  struct target_ops *t;
3143
 
3144
  if (!may_write_registers)
3145
    error (_("Writing to registers is not allowed (regno %d)"), regno);
3146
 
3147
  for (t = current_target.beneath; t != NULL; t = t->beneath)
3148
    {
3149
      if (t->to_store_registers != NULL)
3150
        {
3151
          t->to_store_registers (t, regcache, regno);
3152
          if (targetdebug)
3153
            {
3154
              debug_print_register ("target_store_registers", regcache, regno);
3155
            }
3156
          return;
3157
        }
3158
    }
3159
 
3160
  noprocess ();
3161
}
3162
 
3163
int
3164
target_core_of_thread (ptid_t ptid)
3165
{
3166
  struct target_ops *t;
3167
 
3168
  for (t = current_target.beneath; t != NULL; t = t->beneath)
3169
    {
3170
      if (t->to_core_of_thread != NULL)
3171
        {
3172
          int retval = t->to_core_of_thread (t, ptid);
3173
 
3174
          if (targetdebug)
3175
            fprintf_unfiltered (gdb_stdlog, "target_core_of_thread (%d) = %d\n",
3176
                                PIDGET (ptid), retval);
3177
          return retval;
3178
        }
3179
    }
3180
 
3181
  return -1;
3182
}
3183
 
3184
int
3185
target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3186
{
3187
  struct target_ops *t;
3188
 
3189
  for (t = current_target.beneath; t != NULL; t = t->beneath)
3190
    {
3191
      if (t->to_verify_memory != NULL)
3192
        {
3193
          int retval = t->to_verify_memory (t, data, memaddr, size);
3194
 
3195
          if (targetdebug)
3196
            fprintf_unfiltered (gdb_stdlog, "target_verify_memory (%s, %s) = %d\n",
3197
                                paddress (target_gdbarch, memaddr),
3198
                                pulongest (size),
3199
                                retval);
3200
          return retval;
3201
        }
3202
    }
3203
 
3204
  tcomplain ();
3205
}
3206
 
3207
static void
3208
debug_to_prepare_to_store (struct regcache *regcache)
3209
{
3210
  debug_target.to_prepare_to_store (regcache);
3211
 
3212
  fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
3213
}
3214
 
3215
static int
3216
deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
3217
                              int write, struct mem_attrib *attrib,
3218
                              struct target_ops *target)
3219
{
3220
  int retval;
3221
 
3222
  retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
3223
                                                attrib, target);
3224
 
3225
  fprintf_unfiltered (gdb_stdlog,
3226
                      "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
3227
                      paddress (target_gdbarch, memaddr), len,
3228
                      write ? "write" : "read", retval);
3229
 
3230
  if (retval > 0)
3231
    {
3232
      int i;
3233
 
3234
      fputs_unfiltered (", bytes =", gdb_stdlog);
3235
      for (i = 0; i < retval; i++)
3236
        {
3237
          if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
3238
            {
3239
              if (targetdebug < 2 && i > 0)
3240
                {
3241
                  fprintf_unfiltered (gdb_stdlog, " ...");
3242
                  break;
3243
                }
3244
              fprintf_unfiltered (gdb_stdlog, "\n");
3245
            }
3246
 
3247
          fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
3248
        }
3249
    }
3250
 
3251
  fputc_unfiltered ('\n', gdb_stdlog);
3252
 
3253
  return retval;
3254
}
3255
 
3256
static void
3257
debug_to_files_info (struct target_ops *target)
3258
{
3259
  debug_target.to_files_info (target);
3260
 
3261
  fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
3262
}
3263
 
3264
static int
3265
debug_to_insert_breakpoint (struct gdbarch *gdbarch,
3266
                            struct bp_target_info *bp_tgt)
3267
{
3268
  int retval;
3269
 
3270
  retval = debug_target.to_insert_breakpoint (gdbarch, bp_tgt);
3271
 
3272
  fprintf_unfiltered (gdb_stdlog,
3273
                      "target_insert_breakpoint (%s, xxx) = %ld\n",
3274
                      core_addr_to_string (bp_tgt->placed_address),
3275
                      (unsigned long) retval);
3276
  return retval;
3277
}
3278
 
3279
static int
3280
debug_to_remove_breakpoint (struct gdbarch *gdbarch,
3281
                            struct bp_target_info *bp_tgt)
3282
{
3283
  int retval;
3284
 
3285
  retval = debug_target.to_remove_breakpoint (gdbarch, bp_tgt);
3286
 
3287
  fprintf_unfiltered (gdb_stdlog,
3288
                      "target_remove_breakpoint (%s, xxx) = %ld\n",
3289
                      core_addr_to_string (bp_tgt->placed_address),
3290
                      (unsigned long) retval);
3291
  return retval;
3292
}
3293
 
3294
static int
3295
debug_to_can_use_hw_breakpoint (int type, int cnt, int from_tty)
3296
{
3297
  int retval;
3298
 
3299
  retval = debug_target.to_can_use_hw_breakpoint (type, cnt, from_tty);
3300
 
3301
  fprintf_unfiltered (gdb_stdlog,
3302
                      "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
3303
                      (unsigned long) type,
3304
                      (unsigned long) cnt,
3305
                      (unsigned long) from_tty,
3306
                      (unsigned long) retval);
3307
  return retval;
3308
}
3309
 
3310
static int
3311
debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
3312
{
3313
  CORE_ADDR retval;
3314
 
3315
  retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len);
3316
 
3317
  fprintf_unfiltered (gdb_stdlog,
3318
                      "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",
3319
                      core_addr_to_string (addr), (unsigned long) len,
3320
                      core_addr_to_string (retval));
3321
  return retval;
3322
}
3323
 
3324
static int
3325
debug_to_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
3326
                                         struct expression *cond)
3327
{
3328
  int retval;
3329
 
3330
  retval = debug_target.to_can_accel_watchpoint_condition (addr, len, rw, cond);
3331
 
3332
  fprintf_unfiltered (gdb_stdlog,
3333
                      "target_can_accel_watchpoint_condition (%s, %d, %d, %s) = %ld\n",
3334
                      core_addr_to_string (addr), len, rw,
3335
                      host_address_to_string (cond), (unsigned long) retval);
3336
  return retval;
3337
}
3338
 
3339
static int
3340
debug_to_stopped_by_watchpoint (void)
3341
{
3342
  int retval;
3343
 
3344
  retval = debug_target.to_stopped_by_watchpoint ();
3345
 
3346
  fprintf_unfiltered (gdb_stdlog,
3347
                      "target_stopped_by_watchpoint () = %ld\n",
3348
                      (unsigned long) retval);
3349
  return retval;
3350
}
3351
 
3352
static int
3353
debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
3354
{
3355
  int retval;
3356
 
3357
  retval = debug_target.to_stopped_data_address (target, addr);
3358
 
3359
  fprintf_unfiltered (gdb_stdlog,
3360
                      "target_stopped_data_address ([%s]) = %ld\n",
3361
                      core_addr_to_string (*addr),
3362
                      (unsigned long)retval);
3363
  return retval;
3364
}
3365
 
3366
static int
3367
debug_to_watchpoint_addr_within_range (struct target_ops *target,
3368
                                       CORE_ADDR addr,
3369
                                       CORE_ADDR start, int length)
3370
{
3371
  int retval;
3372
 
3373
  retval = debug_target.to_watchpoint_addr_within_range (target, addr,
3374
                                                         start, length);
3375
 
3376
  fprintf_filtered (gdb_stdlog,
3377
                    "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
3378
                    core_addr_to_string (addr), core_addr_to_string (start),
3379
                    length, retval);
3380
  return retval;
3381
}
3382
 
3383
static int
3384
debug_to_insert_hw_breakpoint (struct gdbarch *gdbarch,
3385
                               struct bp_target_info *bp_tgt)
3386
{
3387
  int retval;
3388
 
3389
  retval = debug_target.to_insert_hw_breakpoint (gdbarch, bp_tgt);
3390
 
3391
  fprintf_unfiltered (gdb_stdlog,
3392
                      "target_insert_hw_breakpoint (%s, xxx) = %ld\n",
3393
                      core_addr_to_string (bp_tgt->placed_address),
3394
                      (unsigned long) retval);
3395
  return retval;
3396
}
3397
 
3398
static int
3399
debug_to_remove_hw_breakpoint (struct gdbarch *gdbarch,
3400
                               struct bp_target_info *bp_tgt)
3401
{
3402
  int retval;
3403
 
3404
  retval = debug_target.to_remove_hw_breakpoint (gdbarch, bp_tgt);
3405
 
3406
  fprintf_unfiltered (gdb_stdlog,
3407
                      "target_remove_hw_breakpoint (%s, xxx) = %ld\n",
3408
                      core_addr_to_string (bp_tgt->placed_address),
3409
                      (unsigned long) retval);
3410
  return retval;
3411
}
3412
 
3413
static int
3414
debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type,
3415
                            struct expression *cond)
3416
{
3417
  int retval;
3418
 
3419
  retval = debug_target.to_insert_watchpoint (addr, len, type, cond);
3420
 
3421
  fprintf_unfiltered (gdb_stdlog,
3422
                      "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n",
3423
                      core_addr_to_string (addr), len, type,
3424
                      host_address_to_string (cond), (unsigned long) retval);
3425
  return retval;
3426
}
3427
 
3428
static int
3429
debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type,
3430
                            struct expression *cond)
3431
{
3432
  int retval;
3433
 
3434
  retval = debug_target.to_remove_watchpoint (addr, len, type, cond);
3435
 
3436
  fprintf_unfiltered (gdb_stdlog,
3437
                      "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n",
3438
                      core_addr_to_string (addr), len, type,
3439
                      host_address_to_string (cond), (unsigned long) retval);
3440
  return retval;
3441
}
3442
 
3443
static void
3444
debug_to_terminal_init (void)
3445
{
3446
  debug_target.to_terminal_init ();
3447
 
3448
  fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
3449
}
3450
 
3451
static void
3452
debug_to_terminal_inferior (void)
3453
{
3454
  debug_target.to_terminal_inferior ();
3455
 
3456
  fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
3457
}
3458
 
3459
static void
3460
debug_to_terminal_ours_for_output (void)
3461
{
3462
  debug_target.to_terminal_ours_for_output ();
3463
 
3464
  fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
3465
}
3466
 
3467
static void
3468
debug_to_terminal_ours (void)
3469
{
3470
  debug_target.to_terminal_ours ();
3471
 
3472
  fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
3473
}
3474
 
3475
static void
3476
debug_to_terminal_save_ours (void)
3477
{
3478
  debug_target.to_terminal_save_ours ();
3479
 
3480
  fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
3481
}
3482
 
3483
static void
3484
debug_to_terminal_info (char *arg, int from_tty)
3485
{
3486
  debug_target.to_terminal_info (arg, from_tty);
3487
 
3488
  fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
3489
                      from_tty);
3490
}
3491
 
3492
static void
3493
debug_to_load (char *args, int from_tty)
3494
{
3495
  debug_target.to_load (args, from_tty);
3496
 
3497
  fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
3498
}
3499
 
3500
static int
3501
debug_to_lookup_symbol (char *name, CORE_ADDR *addrp)
3502
{
3503
  int retval;
3504
 
3505
  retval = debug_target.to_lookup_symbol (name, addrp);
3506
 
3507
  fprintf_unfiltered (gdb_stdlog, "target_lookup_symbol (%s, xxx)\n", name);
3508
 
3509
  return retval;
3510
}
3511
 
3512
static void
3513
debug_to_post_startup_inferior (ptid_t ptid)
3514
{
3515
  debug_target.to_post_startup_inferior (ptid);
3516
 
3517
  fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
3518
                      PIDGET (ptid));
3519
}
3520
 
3521
static void
3522
debug_to_acknowledge_created_inferior (int pid)
3523
{
3524
  debug_target.to_acknowledge_created_inferior (pid);
3525
 
3526
  fprintf_unfiltered (gdb_stdlog, "target_acknowledge_created_inferior (%d)\n",
3527
                      pid);
3528
}
3529
 
3530
static void
3531
debug_to_insert_fork_catchpoint (int pid)
3532
{
3533
  debug_target.to_insert_fork_catchpoint (pid);
3534
 
3535
  fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d)\n",
3536
                      pid);
3537
}
3538
 
3539
static int
3540
debug_to_remove_fork_catchpoint (int pid)
3541
{
3542
  int retval;
3543
 
3544
  retval = debug_target.to_remove_fork_catchpoint (pid);
3545
 
3546
  fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
3547
                      pid, retval);
3548
 
3549
  return retval;
3550
}
3551
 
3552
static void
3553
debug_to_insert_vfork_catchpoint (int pid)
3554
{
3555
  debug_target.to_insert_vfork_catchpoint (pid);
3556
 
3557
  fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d)\n",
3558
                      pid);
3559
}
3560
 
3561
static int
3562
debug_to_remove_vfork_catchpoint (int pid)
3563
{
3564
  int retval;
3565
 
3566
  retval = debug_target.to_remove_vfork_catchpoint (pid);
3567
 
3568
  fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
3569
                      pid, retval);
3570
 
3571
  return retval;
3572
}
3573
 
3574
static void
3575
debug_to_insert_exec_catchpoint (int pid)
3576
{
3577
  debug_target.to_insert_exec_catchpoint (pid);
3578
 
3579
  fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d)\n",
3580
                      pid);
3581
}
3582
 
3583
static int
3584
debug_to_remove_exec_catchpoint (int pid)
3585
{
3586
  int retval;
3587
 
3588
  retval = debug_target.to_remove_exec_catchpoint (pid);
3589
 
3590
  fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
3591
                      pid, retval);
3592
 
3593
  return retval;
3594
}
3595
 
3596
static int
3597
debug_to_has_exited (int pid, int wait_status, int *exit_status)
3598
{
3599
  int has_exited;
3600
 
3601
  has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
3602
 
3603
  fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
3604
                      pid, wait_status, *exit_status, has_exited);
3605
 
3606
  return has_exited;
3607
}
3608
 
3609
static int
3610
debug_to_can_run (void)
3611
{
3612
  int retval;
3613
 
3614
  retval = debug_target.to_can_run ();
3615
 
3616
  fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
3617
 
3618
  return retval;
3619
}
3620
 
3621
static void
3622
debug_to_notice_signals (ptid_t ptid)
3623
{
3624
  debug_target.to_notice_signals (ptid);
3625
 
3626
  fprintf_unfiltered (gdb_stdlog, "target_notice_signals (%d)\n",
3627
                      PIDGET (ptid));
3628
}
3629
 
3630
static struct gdbarch *
3631
debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
3632
{
3633
  struct gdbarch *retval;
3634
 
3635
  retval = debug_target.to_thread_architecture (ops, ptid);
3636
 
3637
  fprintf_unfiltered (gdb_stdlog, "target_thread_architecture (%s) = %s [%s]\n",
3638
                      target_pid_to_str (ptid), host_address_to_string (retval),
3639
                      gdbarch_bfd_arch_info (retval)->printable_name);
3640
  return retval;
3641
}
3642
 
3643
static void
3644
debug_to_stop (ptid_t ptid)
3645
{
3646
  debug_target.to_stop (ptid);
3647
 
3648
  fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
3649
                      target_pid_to_str (ptid));
3650
}
3651
 
3652
static void
3653
debug_to_rcmd (char *command,
3654
               struct ui_file *outbuf)
3655
{
3656
  debug_target.to_rcmd (command, outbuf);
3657
  fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
3658
}
3659
 
3660
static char *
3661
debug_to_pid_to_exec_file (int pid)
3662
{
3663
  char *exec_file;
3664
 
3665
  exec_file = debug_target.to_pid_to_exec_file (pid);
3666
 
3667
  fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
3668
                      pid, exec_file);
3669
 
3670
  return exec_file;
3671
}
3672
 
3673
static void
3674
setup_target_debug (void)
3675
{
3676
  memcpy (&debug_target, &current_target, sizeof debug_target);
3677
 
3678
  current_target.to_open = debug_to_open;
3679
  current_target.to_post_attach = debug_to_post_attach;
3680
  current_target.to_prepare_to_store = debug_to_prepare_to_store;
3681
  current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
3682
  current_target.to_files_info = debug_to_files_info;
3683
  current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
3684
  current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
3685
  current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
3686
  current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
3687
  current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
3688
  current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
3689
  current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
3690
  current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
3691
  current_target.to_stopped_data_address = debug_to_stopped_data_address;
3692
  current_target.to_watchpoint_addr_within_range = debug_to_watchpoint_addr_within_range;
3693
  current_target.to_region_ok_for_hw_watchpoint = debug_to_region_ok_for_hw_watchpoint;
3694
  current_target.to_can_accel_watchpoint_condition = debug_to_can_accel_watchpoint_condition;
3695
  current_target.to_terminal_init = debug_to_terminal_init;
3696
  current_target.to_terminal_inferior = debug_to_terminal_inferior;
3697
  current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output;
3698
  current_target.to_terminal_ours = debug_to_terminal_ours;
3699
  current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
3700
  current_target.to_terminal_info = debug_to_terminal_info;
3701
  current_target.to_load = debug_to_load;
3702
  current_target.to_lookup_symbol = debug_to_lookup_symbol;
3703
  current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
3704
  current_target.to_acknowledge_created_inferior = debug_to_acknowledge_created_inferior;
3705
  current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
3706
  current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
3707
  current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
3708
  current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
3709
  current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
3710
  current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
3711
  current_target.to_has_exited = debug_to_has_exited;
3712
  current_target.to_can_run = debug_to_can_run;
3713
  current_target.to_notice_signals = debug_to_notice_signals;
3714
  current_target.to_stop = debug_to_stop;
3715
  current_target.to_rcmd = debug_to_rcmd;
3716
  current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
3717
  current_target.to_thread_architecture = debug_to_thread_architecture;
3718
}
3719
 
3720
 
3721
static char targ_desc[] =
3722
"Names of targets and files being debugged.\n\
3723
Shows the entire stack of targets currently in use (including the exec-file,\n\
3724
core-file, and process, if any), as well as the symbol file name.";
3725
 
3726
static void
3727
do_monitor_command (char *cmd,
3728
                 int from_tty)
3729
{
3730
  if ((current_target.to_rcmd
3731
       == (void (*) (char *, struct ui_file *)) tcomplain)
3732
      || (current_target.to_rcmd == debug_to_rcmd
3733
          && (debug_target.to_rcmd
3734
              == (void (*) (char *, struct ui_file *)) tcomplain)))
3735
    error (_("\"monitor\" command not supported by this target."));
3736
  target_rcmd (cmd, gdb_stdtarg);
3737
}
3738
 
3739
/* Print the name of each layers of our target stack.  */
3740
 
3741
static void
3742
maintenance_print_target_stack (char *cmd, int from_tty)
3743
{
3744
  struct target_ops *t;
3745
 
3746
  printf_filtered (_("The current target stack is:\n"));
3747
 
3748
  for (t = target_stack; t != NULL; t = t->beneath)
3749
    {
3750
      printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
3751
    }
3752
}
3753
 
3754
/* Controls if async mode is permitted.  */
3755
int target_async_permitted = 0;
3756
 
3757
/* The set command writes to this variable.  If the inferior is
3758
   executing, linux_nat_async_permitted is *not* updated.  */
3759
static int target_async_permitted_1 = 0;
3760
 
3761
static void
3762
set_maintenance_target_async_permitted (char *args, int from_tty,
3763
                                        struct cmd_list_element *c)
3764
{
3765
  if (have_live_inferiors ())
3766
    {
3767
      target_async_permitted_1 = target_async_permitted;
3768
      error (_("Cannot change this setting while the inferior is running."));
3769
    }
3770
 
3771
  target_async_permitted = target_async_permitted_1;
3772
}
3773
 
3774
static void
3775
show_maintenance_target_async_permitted (struct ui_file *file, int from_tty,
3776
                                         struct cmd_list_element *c,
3777
                                         const char *value)
3778
{
3779
  fprintf_filtered (file, _("\
3780
Controlling the inferior in asynchronous mode is %s.\n"), value);
3781
}
3782
 
3783
/* Temporary copies of permission settings.  */
3784
 
3785
static int may_write_registers_1 = 1;
3786
static int may_write_memory_1 = 1;
3787
static int may_insert_breakpoints_1 = 1;
3788
static int may_insert_tracepoints_1 = 1;
3789
static int may_insert_fast_tracepoints_1 = 1;
3790
static int may_stop_1 = 1;
3791
 
3792
/* Make the user-set values match the real values again.  */
3793
 
3794
void
3795
update_target_permissions (void)
3796
{
3797
  may_write_registers_1 = may_write_registers;
3798
  may_write_memory_1 = may_write_memory;
3799
  may_insert_breakpoints_1 = may_insert_breakpoints;
3800
  may_insert_tracepoints_1 = may_insert_tracepoints;
3801
  may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints;
3802
  may_stop_1 = may_stop;
3803
}
3804
 
3805
/* The one function handles (most of) the permission flags in the same
3806
   way.  */
3807
 
3808
static void
3809
set_target_permissions (char *args, int from_tty,
3810
                        struct cmd_list_element *c)
3811
{
3812
  if (target_has_execution)
3813
    {
3814
      update_target_permissions ();
3815
      error (_("Cannot change this setting while the inferior is running."));
3816
    }
3817
 
3818
  /* Make the real values match the user-changed values.  */
3819
  may_write_registers = may_write_registers_1;
3820
  may_insert_breakpoints = may_insert_breakpoints_1;
3821
  may_insert_tracepoints = may_insert_tracepoints_1;
3822
  may_insert_fast_tracepoints = may_insert_fast_tracepoints_1;
3823
  may_stop = may_stop_1;
3824
  update_observer_mode ();
3825
}
3826
 
3827
/* Set memory write permission independently of observer mode.  */
3828
 
3829
static void
3830
set_write_memory_permission (char *args, int from_tty,
3831
                        struct cmd_list_element *c)
3832
{
3833
  /* Make the real values match the user-changed values.  */
3834
  may_write_memory = may_write_memory_1;
3835
  update_observer_mode ();
3836
}
3837
 
3838
 
3839
void
3840
initialize_targets (void)
3841
{
3842
  init_dummy_target ();
3843
  push_target (&dummy_target);
3844
 
3845
  add_info ("target", target_info, targ_desc);
3846
  add_info ("files", target_info, targ_desc);
3847
 
3848
  add_setshow_zinteger_cmd ("target", class_maintenance, &targetdebug, _("\
3849
Set target debugging."), _("\
3850
Show target debugging."), _("\
3851
When non-zero, target debugging is enabled.  Higher numbers are more\n\
3852
verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
3853
command."),
3854
                            NULL,
3855
                            show_targetdebug,
3856
                            &setdebuglist, &showdebuglist);
3857
 
3858
  add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
3859
                           &trust_readonly, _("\
3860
Set mode for reading from readonly sections."), _("\
3861
Show mode for reading from readonly sections."), _("\
3862
When this mode is on, memory reads from readonly sections (such as .text)\n\
3863
will be read from the object file instead of from the target.  This will\n\
3864
result in significant performance improvement for remote targets."),
3865
                           NULL,
3866
                           show_trust_readonly,
3867
                           &setlist, &showlist);
3868
 
3869
  add_com ("monitor", class_obscure, do_monitor_command,
3870
           _("Send a command to the remote monitor (remote targets only)."));
3871
 
3872
  add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
3873
           _("Print the name of each layer of the internal target stack."),
3874
           &maintenanceprintlist);
3875
 
3876
  add_setshow_boolean_cmd ("target-async", no_class,
3877
                           &target_async_permitted_1, _("\
3878
Set whether gdb controls the inferior in asynchronous mode."), _("\
3879
Show whether gdb controls the inferior in asynchronous mode."), _("\
3880
Tells gdb whether to control the inferior in asynchronous mode."),
3881
                           set_maintenance_target_async_permitted,
3882
                           show_maintenance_target_async_permitted,
3883
                           &setlist,
3884
                           &showlist);
3885
 
3886
  add_setshow_boolean_cmd ("stack-cache", class_support,
3887
                           &stack_cache_enabled_p_1, _("\
3888
Set cache use for stack access."), _("\
3889
Show cache use for stack access."), _("\
3890
When on, use the data cache for all stack access, regardless of any\n\
3891
configured memory regions.  This improves remote performance significantly.\n\
3892
By default, caching for stack access is on."),
3893
                           set_stack_cache_enabled_p,
3894
                           show_stack_cache_enabled_p,
3895
                           &setlist, &showlist);
3896
 
3897
  add_setshow_boolean_cmd ("may-write-registers", class_support,
3898
                           &may_write_registers_1, _("\
3899
Set permission to write into registers."), _("\
3900
Show permission to write into registers."), _("\
3901
When this permission is on, GDB may write into the target's registers.\n\
3902
Otherwise, any sort of write attempt will result in an error."),
3903
                           set_target_permissions, NULL,
3904
                           &setlist, &showlist);
3905
 
3906
  add_setshow_boolean_cmd ("may-write-memory", class_support,
3907
                           &may_write_memory_1, _("\
3908
Set permission to write into target memory."), _("\
3909
Show permission to write into target memory."), _("\
3910
When this permission is on, GDB may write into the target's memory.\n\
3911
Otherwise, any sort of write attempt will result in an error."),
3912
                           set_write_memory_permission, NULL,
3913
                           &setlist, &showlist);
3914
 
3915
  add_setshow_boolean_cmd ("may-insert-breakpoints", class_support,
3916
                           &may_insert_breakpoints_1, _("\
3917
Set permission to insert breakpoints in the target."), _("\
3918
Show permission to insert breakpoints in the target."), _("\
3919
When this permission is on, GDB may insert breakpoints in the program.\n\
3920
Otherwise, any sort of insertion attempt will result in an error."),
3921
                           set_target_permissions, NULL,
3922
                           &setlist, &showlist);
3923
 
3924
  add_setshow_boolean_cmd ("may-insert-tracepoints", class_support,
3925
                           &may_insert_tracepoints_1, _("\
3926
Set permission to insert tracepoints in the target."), _("\
3927
Show permission to insert tracepoints in the target."), _("\
3928
When this permission is on, GDB may insert tracepoints in the program.\n\
3929
Otherwise, any sort of insertion attempt will result in an error."),
3930
                           set_target_permissions, NULL,
3931
                           &setlist, &showlist);
3932
 
3933
  add_setshow_boolean_cmd ("may-insert-fast-tracepoints", class_support,
3934
                           &may_insert_fast_tracepoints_1, _("\
3935
Set permission to insert fast tracepoints in the target."), _("\
3936
Show permission to insert fast tracepoints in the target."), _("\
3937
When this permission is on, GDB may insert fast tracepoints.\n\
3938
Otherwise, any sort of insertion attempt will result in an error."),
3939
                           set_target_permissions, NULL,
3940
                           &setlist, &showlist);
3941
 
3942
  add_setshow_boolean_cmd ("may-interrupt", class_support,
3943
                           &may_stop_1, _("\
3944
Set permission to interrupt or signal the target."), _("\
3945
Show permission to interrupt or signal the target."), _("\
3946
When this permission is on, GDB may interrupt/stop the target's execution.\n\
3947
Otherwise, any attempt to interrupt or stop will be ignored."),
3948
                           set_target_permissions, NULL,
3949
                           &setlist, &showlist);
3950
 
3951
 
3952
  target_dcache = dcache_init ();
3953
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.