| OLD | NEW |
| 1 /* Handle SVR4 shared libraries for GDB, the GNU Debugger. | 1 /* Handle SVR4 shared libraries for GDB, the GNU Debugger. |
| 2 | 2 |
| 3 Copyright (C) 1990-1996, 1998-2001, 2003-2012 Free Software | 3 Copyright (C) 1990-1996, 1998-2001, 2003-2012 Free Software |
| 4 Foundation, Inc. | 4 Foundation, Inc. |
| 5 | 5 |
| 6 This file is part of GDB. | 6 This file is part of GDB. |
| 7 | 7 |
| 8 This program is free software; you can redistribute it and/or modify | 8 This program is free software; you can redistribute it and/or modify |
| 9 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
| 10 the Free Software Foundation; either version 3 of the License, or | 10 the Free Software Foundation; either version 3 of the License, or |
| (...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1263 svr4_current_sos (void) | 1263 svr4_current_sos (void) |
| 1264 { | 1264 { |
| 1265 CORE_ADDR lm; | 1265 CORE_ADDR lm; |
| 1266 struct so_list *head = NULL; | 1266 struct so_list *head = NULL; |
| 1267 struct so_list **link_ptr = &head; | 1267 struct so_list **link_ptr = &head; |
| 1268 struct svr4_info *info; | 1268 struct svr4_info *info; |
| 1269 struct cleanup *back_to; | 1269 struct cleanup *back_to; |
| 1270 int ignore_first; | 1270 int ignore_first; |
| 1271 struct svr4_library_list library_list; | 1271 struct svr4_library_list library_list; |
| 1272 | 1272 |
| 1273 /* Fall back to manual examination of the target if the packet is not |
| 1274 supported or gdbserver failed to find DT_DEBUG. gdb.server/solib-list.exp |
| 1275 tests a case where gdbserver cannot find the shared libraries list while |
| 1276 GDB itself is able to find it via SYMFILE_OBJFILE. |
| 1277 |
| 1278 Unfortunately statically linked inferiors will also fall back through this |
| 1279 suboptimal code path. */ |
| 1280 |
| 1273 if (svr4_current_sos_via_xfer_libraries (&library_list)) | 1281 if (svr4_current_sos_via_xfer_libraries (&library_list)) |
| 1274 { | 1282 { |
| 1275 if (library_list.main_lm) | 1283 if (library_list.main_lm) |
| 1276 { | 1284 { |
| 1277 info = get_svr4_info (); | 1285 info = get_svr4_info (); |
| 1278 info->main_lm_addr = library_list.main_lm; | 1286 info->main_lm_addr = library_list.main_lm; |
| 1279 } | 1287 } |
| 1280 | 1288 |
| 1281 return library_list.head ? library_list.head : svr4_default_sos (); | 1289 return library_list.head ? library_list.head : svr4_default_sos (); |
| 1282 } | 1290 } |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1702 { | 1710 { |
| 1703 sym_addr = SYMBOL_VALUE_ADDRESS (msymbol); | 1711 sym_addr = SYMBOL_VALUE_ADDRESS (msymbol); |
| 1704 sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, | 1712 sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, |
| 1705 sym_addr, | 1713 sym_addr, |
| 1706 ¤t_target); | 1714 ¤t_target); |
| 1707 create_solib_event_breakpoint (target_gdbarch, sym_addr); | 1715 create_solib_event_breakpoint (target_gdbarch, sym_addr); |
| 1708 return 1; | 1716 return 1; |
| 1709 } | 1717 } |
| 1710 } | 1718 } |
| 1711 | 1719 |
| 1712 if (!current_inferior ()->attach_flag) | 1720 if (interp_name != NULL && !current_inferior ()->attach_flag) |
| 1713 { | 1721 { |
| 1714 for (bkpt_namep = bkpt_names; *bkpt_namep != NULL; bkpt_namep++) | 1722 for (bkpt_namep = bkpt_names; *bkpt_namep != NULL; bkpt_namep++) |
| 1715 { | 1723 { |
| 1716 msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile); | 1724 msymbol = lookup_minimal_symbol (*bkpt_namep, NULL, symfile_objfile); |
| 1717 if ((msymbol != NULL) && (SYMBOL_VALUE_ADDRESS (msymbol) != 0)) | 1725 if ((msymbol != NULL) && (SYMBOL_VALUE_ADDRESS (msymbol) != 0)) |
| 1718 { | 1726 { |
| 1719 sym_addr = SYMBOL_VALUE_ADDRESS (msymbol); | 1727 sym_addr = SYMBOL_VALUE_ADDRESS (msymbol); |
| 1720 sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, | 1728 sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, |
| 1721 sym_addr, | 1729 sym_addr, |
| 1722 ¤t_target); | 1730 ¤t_target); |
| (...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2252 Now run the target. It will eventually hit the breakpoint, at | 2260 Now run the target. It will eventually hit the breakpoint, at |
| 2253 which point all of the libraries will have been mapped in and we | 2261 which point all of the libraries will have been mapped in and we |
| 2254 can go groveling around in the dynamic linker structures to find | 2262 can go groveling around in the dynamic linker structures to find |
| 2255 out what we need to know about them. */ | 2263 out what we need to know about them. */ |
| 2256 | 2264 |
| 2257 inf = current_inferior (); | 2265 inf = current_inferior (); |
| 2258 tp = inferior_thread (); | 2266 tp = inferior_thread (); |
| 2259 | 2267 |
| 2260 clear_proceed_status (); | 2268 clear_proceed_status (); |
| 2261 inf->control.stop_soon = STOP_QUIETLY; | 2269 inf->control.stop_soon = STOP_QUIETLY; |
| 2262 tp->suspend.stop_signal = TARGET_SIGNAL_0; | 2270 tp->suspend.stop_signal = GDB_SIGNAL_0; |
| 2263 do | 2271 do |
| 2264 { | 2272 { |
| 2265 target_resume (pid_to_ptid (-1), 0, tp->suspend.stop_signal); | 2273 target_resume (pid_to_ptid (-1), 0, tp->suspend.stop_signal); |
| 2266 wait_for_inferior (); | 2274 wait_for_inferior (); |
| 2267 } | 2275 } |
| 2268 while (tp->suspend.stop_signal != TARGET_SIGNAL_TRAP); | 2276 while (tp->suspend.stop_signal != GDB_SIGNAL_TRAP); |
| 2269 inf->control.stop_soon = NO_STOP_QUIETLY; | 2277 inf->control.stop_soon = NO_STOP_QUIETLY; |
| 2270 #endif /* defined(_SCO_DS) */ | 2278 #endif /* defined(_SCO_DS) */ |
| 2271 } | 2279 } |
| 2272 | 2280 |
| 2273 static void | 2281 static void |
| 2274 svr4_clear_solib (void) | 2282 svr4_clear_solib (void) |
| 2275 { | 2283 { |
| 2276 struct svr4_info *info; | 2284 struct svr4_info *info; |
| 2277 | 2285 |
| 2278 info = get_svr4_info (); | 2286 info = get_svr4_info (); |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2526 svr4_so_ops.solib_create_inferior_hook = svr4_solib_create_inferior_hook; | 2534 svr4_so_ops.solib_create_inferior_hook = svr4_solib_create_inferior_hook; |
| 2527 svr4_so_ops.special_symbol_handling = svr4_special_symbol_handling; | 2535 svr4_so_ops.special_symbol_handling = svr4_special_symbol_handling; |
| 2528 svr4_so_ops.current_sos = svr4_current_sos; | 2536 svr4_so_ops.current_sos = svr4_current_sos; |
| 2529 svr4_so_ops.open_symbol_file_object = open_symbol_file_object; | 2537 svr4_so_ops.open_symbol_file_object = open_symbol_file_object; |
| 2530 svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code; | 2538 svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code; |
| 2531 svr4_so_ops.bfd_open = solib_bfd_open; | 2539 svr4_so_ops.bfd_open = solib_bfd_open; |
| 2532 svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol; | 2540 svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol; |
| 2533 svr4_so_ops.same = svr4_same; | 2541 svr4_so_ops.same = svr4_same; |
| 2534 svr4_so_ops.keep_data_in_core = svr4_keep_data_in_core; | 2542 svr4_so_ops.keep_data_in_core = svr4_keep_data_in_core; |
| 2535 } | 2543 } |
| OLD | NEW |