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

Side by Side Diff: gdb/nacl-tdep.c

Issue 10897005: Implement dummy_id for NaCl architecture because we need to sandbox frame pointer. (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 8 years, 3 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Target-dependent code for NaCl. 1 /* Target-dependent code for NaCl.
2 2
3 Copyright (C) 2001, 2003-2012 Free Software Foundation, Inc. 3 Copyright (C) 2001, 2003-2012 Free Software Foundation, Inc.
4 4
5 This file is part of GDB. 5 This file is part of GDB.
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or 9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 { 155 {
156 insert_single_step_breakpoint (gdbarch, 156 insert_single_step_breakpoint (gdbarch,
157 get_frame_address_space (frame), 157 get_frame_address_space (frame),
158 bp_pc); 158 bp_pc);
159 return 1; 159 return 1;
160 } 160 }
161 161
162 return 0; 162 return 0;
163 } 163 }
164 164
165 static struct frame_id
166 amd64_nacl_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
167 {
168 CORE_ADDR fp;
169
170 fp = get_frame_register_unsigned (this_frame, AMD64_RBP_REGNUM) + 16;
171 fp = amd64_nacl_addr_bits_remove(gdbarch, fp);
172
173 return frame_id_build (fp, get_frame_pc (this_frame));
174 }
175
165 static void 176 static void
166 amd64_nacl_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) 177 amd64_nacl_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
167 { 178 {
168 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); 179 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
169 180
170 linux_init_abi (info, gdbarch); 181 linux_init_abi (info, gdbarch);
171 amd64_init_abi (info, gdbarch); 182 amd64_init_abi (info, gdbarch);
172 tdep->tdesc = tdesc_amd64_linux; 183 tdep->tdesc = tdesc_amd64_linux;
173 set_solib_svr4_fetch_link_map_offsets (gdbarch, 184 set_solib_svr4_fetch_link_map_offsets (gdbarch,
174 amd64_nacl_fetch_link_map_offsets); 185 amd64_nacl_fetch_link_map_offsets);
(...skipping 17 matching lines...) Expand all
192 203
193 /* How to extract addresses from registers. */ 204 /* How to extract addresses from registers. */
194 set_gdbarch_addr_bits_remove (gdbarch, amd64_nacl_addr_bits_remove); 205 set_gdbarch_addr_bits_remove (gdbarch, amd64_nacl_addr_bits_remove);
195 set_gdbarch_unwind_pc (gdbarch, amd64_nacl_unwind_pc); 206 set_gdbarch_unwind_pc (gdbarch, amd64_nacl_unwind_pc);
196 set_gdbarch_unwind_sp (gdbarch, amd64_nacl_unwind_sp); 207 set_gdbarch_unwind_sp (gdbarch, amd64_nacl_unwind_sp);
197 208
198 /* Where to set breakpoints. */ 209 /* Where to set breakpoints. */
199 set_gdbarch_adjust_breakpoint_address (gdbarch, 210 set_gdbarch_adjust_breakpoint_address (gdbarch,
200 amd64_nacl_adjust_breakpoint_address); 211 amd64_nacl_adjust_breakpoint_address);
201 set_gdbarch_software_single_step (gdbarch, amd64_nacl_software_single_step); 212 set_gdbarch_software_single_step (gdbarch, amd64_nacl_software_single_step);
213 /* Recognizing dummy frames. */
214 set_gdbarch_dummy_id(gdbarch, amd64_nacl_dummy_id);
202 } 215 }
203 216
204 /* Provide a prototype to silence -Wmissing-prototypes. */ 217 /* Provide a prototype to silence -Wmissing-prototypes. */
205 extern void _initialize_nacl_tdep (void); 218 extern void _initialize_nacl_tdep (void);
206 219
207 void 220 void
208 _initialize_nacl_tdep (void) 221 _initialize_nacl_tdep (void)
209 { 222 {
210 gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour, 223 gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
211 nacl_osabi_sniffer); 224 nacl_osabi_sniffer);
212 225
213 gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, 226 gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
214 GDB_OSABI_NACL, amd64_nacl_init_abi); 227 GDB_OSABI_NACL, amd64_nacl_init_abi);
215 228
216 gdbarch_register_osabi (bfd_arch_i386, 0, 229 gdbarch_register_osabi (bfd_arch_i386, 0,
217 GDB_OSABI_NACL, i386_nacl_init_abi); 230 GDB_OSABI_NACL, i386_nacl_init_abi);
218 } 231 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698