X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fsolib-osf.c;h=b5dca60750d0160cdb560a57f4ec15e4e40629b2;hb=383f0f5b9a5fa97db053fb6506e07f5e73eb4993;hp=805254f5383400a9fcaac9b39889b8b327489aa9;hpb=a1cd19081de1772276b58b6edd9fa0f0abafb0c4;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/solib-osf.c b/gdb/solib-osf.c index 805254f538..b5dca60750 100644 --- a/gdb/solib-osf.c +++ b/gdb/solib-osf.c @@ -321,7 +321,7 @@ osf_solib_create_inferior_hook (void) out what we need to know about them. */ clear_proceed_status (); - stop_soon_quietly = 1; + stop_soon = STOP_QUIETLY; stop_signal = TARGET_SIGNAL_0; do { @@ -334,11 +334,10 @@ osf_solib_create_inferior_hook (void) But we are stopped in the runtime loader and we do not have symbols for the runtime loader. So heuristic_proc_start will be called and will put out an annoying warning. - Delaying the resetting of stop_soon_quietly until after symbol loading + Delaying the resetting of stop_soon until after symbol loading suppresses the warning. */ - if (auto_solib_add) - solib_add ((char *) 0, 0, (struct target_ops *) 0); - stop_soon_quietly = 0; + solib_add ((char *) 0, 0, (struct target_ops *) 0, auto_solib_add); + stop_soon = NO_STOP_QUIETLY; /* Enable breakpoints disabled (unnecessarily) by clear_solib(). */ re_enable_breakpoints_in_shlibs (); @@ -360,7 +359,14 @@ static int open_map (struct read_map_ctxt *ctxt) { #ifdef USE_LDR_ROUTINES - ctxt->proc = ldr_my_process (); + /* Note: As originally written, ldr_my_process() was used to obtain + the value for ctxt->proc. This is incorrect, however, since + ldr_my_process() retrieves the "unique identifier" associated + with the current process (i.e. GDB) and not the one being + debugged. Presumably, the pid of the process being debugged is + compatible with the "unique identifier" used by the ldr_ + routines, so we use that. */ + ctxt->proc = ptid_get_pid (inferior_ptid); if (ldr_xattach (ctxt->proc) != 0) return 0; ctxt->next = LDR_NULL_MODULE; @@ -589,6 +595,12 @@ osf_open_symbol_file_object (void *from_ttyp) static int osf_in_dynsym_resolve_code (CORE_ADDR pc) { + /* This function currently always return False. This is a temporary + solution which only consequence is to introduce a minor incovenience + for the user: When stepping inside a subprogram located in a shared + library, gdb might stop inside the dynamic loader code instead of + inside the subprogram itself. See the explanations in infrun.c about + the IN_SOLIB_DYNSYM_RESOLVE_CODE macro for more details. */ return 0; }