From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17369 invoked by alias); 21 Feb 2003 22:25:01 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 17362 invoked from network); 21 Feb 2003 22:25:01 -0000 Received: from unknown (HELO hub.ott.qnx.com) (209.226.137.76) by 172.16.49.205 with SMTP; 21 Feb 2003 22:25:01 -0000 Received: from smtp.ott.qnx.com (smtp.ott.qnx.com [10.0.2.158]) by hub.ott.qnx.com (8.9.3/8.9.3) with ESMTP id RAA25661 for ; Fri, 21 Feb 2003 17:13:10 -0500 Received: from dash ([192.168.20.30]) by smtp.ott.qnx.com (8.8.8/8.6.12) with SMTP id RAA31992 for ; Fri, 21 Feb 2003 17:25:00 -0500 Message-ID: <001101c2d9f8$7a7303f0$2a00a8c0@dash> From: "Kris Warkentin" To: Subject: patch to allow target defined solib search method Date: Fri, 21 Feb 2003 22:25:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 X-SW-Source: 2003-02/txt/msg00533.txt.bz2 The following patch allows a target to define a function for finding shared libraries. This prevents target back ends from having to monkey with solib-search-path. ChangeLog entry Add target function hook for searching out solibs. * solib.c: solib_open(): call search function after failing with solib-search-path * solist.h: struct target_so_ops: add find_and_open_solib function hook, create define TARGET_SO_FIND_AND_OPEN_SOLIB cheers, Kris Index: solib.c =================================================================== RCS file: /cvs/src/src/gdb/solib.c,v retrieving revision 1.54 diff -u -r1.54 solib.c --- solib.c 20 Feb 2003 18:25:27 -0000 1.54 +++ solib.c 21 Feb 2003 22:18:44 -0000 @@ -160,6 +160,10 @@ 1, lbasename (in_pathname), O_RDONLY, 0, &temp_pathname); + /* If not found, next use target supplied solib search method (if existing) */ + if (found_file < 0 && TARGET_SO_FIND_AND_OPEN_SOLIB) + found_file = TARGET_SO_FIND_AND_OPEN_SOLIB (in_pathname, O_RDONLY, &temp_pathname); + /* If not found, next search the inferior's $PATH environment variable. */ if (found_file < 0 && solib_search_path != NULL) found_file = openp (get_in_environ (inferior_environ, "PATH"), Index: solist.h =================================================================== RCS file: /cvs/src/src/gdb/solist.h,v retrieving revision 1.7 diff -u -r1.7 solist.h --- solist.h 21 Oct 2001 19:20:30 -0000 1.7 +++ solist.h 21 Feb 2003 22:18:44 -0000 @@ -99,6 +99,11 @@ /* Determine if PC lies in the dynamic symbol resolution code of the run time loader */ int (*in_dynsym_resolve_code) (CORE_ADDR pc); + + /* Extra hook for finding and opening a solib. Convenience function + for remote debuggers finding host libs */ + int (*find_and_open_solib) (char *soname, unsigned o_flags, char **temp_pathname); + }; void free_so (struct so_list *so); @@ -122,5 +127,7 @@ (current_target_so_ops->open_symbol_file_object) #define TARGET_SO_IN_DYNSYM_RESOLVE_CODE \ (current_target_so_ops->in_dynsym_resolve_code) +#define TARGET_SO_FIND_AND_OPEN_SOLIB \ + (current_target_so_ops->find_and_open_solib) #endif