Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(315)

Side by Side Diff: gdb/s390-nat.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/rx-tdep.c ('k') | gdb/s390-tdep.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* S390 native-dependent code for GDB, the GNU debugger. 1 /* S390 native-dependent code for GDB, the GNU debugger.
2 Copyright (C) 2001, 2003-2007, 2009, 2012 Free Software Foundation, 2 Copyright (C) 2001, 2003-2007, 2009, 2012 Free Software Foundation,
3 Inc. 3 Inc.
4 4
5 Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) 5 Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
6 for IBM Deutschland Entwicklung GmbH, IBM Corporation. 6 for IBM Deutschland Entwicklung GmbH, IBM Corporation.
7 7
8 This file is part of GDB. 8 This file is part of GDB.
9 9
10 This program is free software; you can redistribute it and/or modify 10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by 11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3 of the License, or 12 the Free Software Foundation; either version 3 of the License, or
13 (at your option) any later version. 13 (at your option) any later version.
14 14
15 This program is distributed in the hope that it will be useful, 15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details. 18 GNU General Public License for more details.
19 19
20 You should have received a copy of the GNU General Public License 20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 22
23 #include "defs.h" 23 #include "defs.h"
24 #include "regcache.h" 24 #include "regcache.h"
25 #include "inferior.h" 25 #include "inferior.h"
26 #include "target.h" 26 #include "target.h"
27 #include "linux-nat.h" 27 #include "linux-nat.h"
28 #include "auxv.h" 28 #include "auxv.h"
29 #include "gregset.h"
29 30
30 #include "s390-tdep.h" 31 #include "s390-tdep.h"
31 #include "elf/common.h" 32 #include "elf/common.h"
32 33
33 #include <asm/ptrace.h> 34 #include <asm/ptrace.h>
34 #include <sys/ptrace.h> 35 #include <sys/ptrace.h>
35 #include <asm/types.h> 36 #include <asm/types.h>
36 #include <sys/procfs.h> 37 #include <sys/procfs.h>
37 #include <sys/ucontext.h> 38 #include <sys/ucontext.h>
38 #include <elf.h> 39 #include <elf.h>
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 /* Do not report this watchpoint again. */ 466 /* Do not report this watchpoint again. */
466 memset (&per_lowcore, 0, sizeof (per_lowcore)); 467 memset (&per_lowcore, 0, sizeof (per_lowcore));
467 if (ptrace (PTRACE_POKEUSR_AREA, s390_inferior_tid (), &parea) < 0) 468 if (ptrace (PTRACE_POKEUSR_AREA, s390_inferior_tid (), &parea) < 0)
468 perror_with_name (_("Couldn't clear watchpoint status")); 469 perror_with_name (_("Couldn't clear watchpoint status"));
469 } 470 }
470 471
471 return result; 472 return result;
472 } 473 }
473 474
474 static void 475 static void
475 s390_fix_watch_points (ptid_t ptid) 476 s390_fix_watch_points (struct lwp_info *lp)
476 { 477 {
477 int tid; 478 int tid;
478 479
479 per_struct per_info; 480 per_struct per_info;
480 ptrace_area parea; 481 ptrace_area parea;
481 482
482 CORE_ADDR watch_lo_addr = (CORE_ADDR)-1, watch_hi_addr = 0; 483 CORE_ADDR watch_lo_addr = (CORE_ADDR)-1, watch_hi_addr = 0;
483 struct watch_area *area; 484 struct watch_area *area;
484 485
485 tid = TIDGET (ptid); 486 tid = TIDGET (lp->ptid);
486 if (tid == 0) 487 if (tid == 0)
487 tid = PIDGET (ptid); 488 tid = PIDGET (lp->ptid);
488 489
489 for (area = watch_base; area; area = area->next) 490 for (area = watch_base; area; area = area->next)
490 { 491 {
491 watch_lo_addr = min (watch_lo_addr, area->lo_addr); 492 watch_lo_addr = min (watch_lo_addr, area->lo_addr);
492 watch_hi_addr = max (watch_hi_addr, area->hi_addr); 493 watch_hi_addr = max (watch_hi_addr, area->hi_addr);
493 } 494 }
494 495
495 parea.len = sizeof (per_info); 496 parea.len = sizeof (per_info);
496 parea.process_addr = (addr_t) & per_info; 497 parea.process_addr = (addr_t) & per_info;
497 parea.kernel_addr = offsetof (struct user_regs_struct, per_info); 498 parea.kernel_addr = offsetof (struct user_regs_struct, per_info);
(...skipping 27 matching lines...) Expand all
525 if (!area) 526 if (!area)
526 return -1; 527 return -1;
527 528
528 area->lo_addr = addr; 529 area->lo_addr = addr;
529 area->hi_addr = addr + len - 1; 530 area->hi_addr = addr + len - 1;
530 531
531 area->next = watch_base; 532 area->next = watch_base;
532 watch_base = area; 533 watch_base = area;
533 534
534 ALL_LWPS (lp) 535 ALL_LWPS (lp)
535 s390_fix_watch_points (lp->ptid); 536 s390_fix_watch_points (lp);
536 return 0; 537 return 0;
537 } 538 }
538 539
539 static int 540 static int
540 s390_remove_watchpoint (CORE_ADDR addr, int len, int type, 541 s390_remove_watchpoint (CORE_ADDR addr, int len, int type,
541 struct expression *cond) 542 struct expression *cond)
542 { 543 {
543 struct lwp_info *lp; 544 struct lwp_info *lp;
544 struct watch_area *area, **parea; 545 struct watch_area *area, **parea;
545 546
546 for (parea = &watch_base; *parea; parea = &(*parea)->next) 547 for (parea = &watch_base; *parea; parea = &(*parea)->next)
547 if ((*parea)->lo_addr == addr 548 if ((*parea)->lo_addr == addr
548 && (*parea)->hi_addr == addr + len - 1) 549 && (*parea)->hi_addr == addr + len - 1)
549 break; 550 break;
550 551
551 if (!*parea) 552 if (!*parea)
552 { 553 {
553 fprintf_unfiltered (gdb_stderr, 554 fprintf_unfiltered (gdb_stderr,
554 "Attempt to remove nonexistent watchpoint.\n"); 555 "Attempt to remove nonexistent watchpoint.\n");
555 return -1; 556 return -1;
556 } 557 }
557 558
558 area = *parea; 559 area = *parea;
559 *parea = area->next; 560 *parea = area->next;
560 xfree (area); 561 xfree (area);
561 562
562 ALL_LWPS (lp) 563 ALL_LWPS (lp)
563 s390_fix_watch_points (lp->ptid); 564 s390_fix_watch_points (lp);
564 return 0; 565 return 0;
565 } 566 }
566 567
567 static int 568 static int
568 s390_can_use_hw_breakpoint (int type, int cnt, int othertype) 569 s390_can_use_hw_breakpoint (int type, int cnt, int othertype)
569 { 570 {
570 return type == bp_hardware_watchpoint; 571 return type == bp_hardware_watchpoint;
571 } 572 }
572 573
573 static int 574 static int
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 t->to_remove_watchpoint = s390_remove_watchpoint; 691 t->to_remove_watchpoint = s390_remove_watchpoint;
691 692
692 /* Detect target architecture. */ 693 /* Detect target architecture. */
693 t->to_read_description = s390_read_description; 694 t->to_read_description = s390_read_description;
694 t->to_auxv_parse = s390_auxv_parse; 695 t->to_auxv_parse = s390_auxv_parse;
695 696
696 /* Register the target. */ 697 /* Register the target. */
697 linux_nat_add_target (t); 698 linux_nat_add_target (t);
698 linux_nat_set_new_thread (t, s390_fix_watch_points); 699 linux_nat_set_new_thread (t, s390_fix_watch_points);
699 } 700 }
OLDNEW
« no previous file with comments | « gdb/rx-tdep.c ('k') | gdb/s390-tdep.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698