From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27108 invoked by alias); 15 Jun 2010 18:05:45 -0000 Received: (qmail 27008 invoked by uid 22791); 15 Jun 2010 18:05:43 -0000 X-SWARE-Spam-Status: No, hits=0.7 required=5.0 tests=AWL,BAYES_00,KAM_STOCKTIP,TW_YM,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 15 Jun 2010 18:05:37 +0000 Received: (qmail 2644 invoked from network); 15 Jun 2010 18:05:36 -0000 Received: from unknown (HELO orlando.localnet) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 15 Jun 2010 18:05:36 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: Switch shared library default backend to solib-target.c Date: Tue, 15 Jun 2010 18:05:00 -0000 User-Agent: KMail/1.13.2 (Linux/2.6.32-22-generic; KDE/4.4.2; x86_64; ; ) References: <201006151858.58007.pedro@codesourcery.com> In-Reply-To: <201006151858.58007.pedro@codesourcery.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201006151905.31710.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-06/txt/msg00347.txt.bz2 On Tuesday 15 June 2010 18:58:57, Pedro Alves wrote: > This patch changes GDB to default to enabling target > reported shared libraries. I've applied it. > > It does that by using solib-target.c by default, instead of > solib-null.c. The patch actually gets rid of solib-null.c entirely. > This means that for example, a generic elf gdb build (e.g., arm-eabi, without a > default OSABI), can be used to debug random RTOSs that report loaded > shared libraries using the "qXfer:libraries:read" remote protocol > packet. > > Since solib-target.c behaves exactly the same as solib-null.c > when the target doesn't implement the TARGET_OBJECT_LIBRARIES > xfer, this is always either a win, or a nop. > > ENOPATCH. Here it is. 2010-06-15 Pedro Alves gdb/ * Makefile.in (ALL_TARGET_OBS): Remove solib-target.o. (SFILES): Remove solib-null.c, add solib-target.c. (COMMON_OBS): Remove solib-null.o, add solib-target.o. (ALLDEPFILES): Remove solib-target.c. * solib-target.c (_initialize_solib_target): Set current_target_so_ops to solib_target_so_ops if not already set. * solib-null.c: Delete. --- gdb/Makefile.in | 5 +- gdb/solib-null.c | 89 ----------------------------------------------------- gdb/solib-target.c | 5 ++ 3 files changed, 7 insertions(+), 92 deletions(-) Index: src/gdb/Makefile.in =================================================================== --- src.orig/gdb/Makefile.in 2010-06-15 18:08:21.000000000 +0100 +++ src/gdb/Makefile.in 2010-06-15 18:08:23.000000000 +0100 @@ -691,7 +691,7 @@ SFILES = ada-exp.y ada-lang.c ada-typepr scm-exp.c scm-lang.c scm-valprint.c \ sentinel-frame.c \ serial.c ser-base.c ser-unix.c \ - solib.c solib-null.c source.c \ + solib.c solib-target.c source.c \ stabsread.c stack.c std-regs.c symfile.c symfile-mem.c symmisc.c \ symtab.c \ target.c target-descriptions.c target-memory.c \ @@ -859,7 +859,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $ reggroups.o regset.o \ trad-frame.o \ tramp-frame.o \ - solib.o solib-null.o \ + solib.o solib-target.o \ prologue-value.o memory-map.o xml-support.o xml-syscall.o \ target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o \ inferior.o osdata.o gdb_usleep.o record.o gcore.o \ @@ -1474,7 +1474,6 @@ ALLDEPFILES = \ mips64obsd-nat.c mips64obsd-tdep.c \ nbsd-nat.c nbsd-tdep.c obsd-tdep.c \ solib-osf.c \ - solib-target.c \ somread.c solib-som.c \ posix-hdep.c \ ppc-sysv-tdep.c ppc-linux-nat.c ppc-linux-tdep.c \ Index: src/gdb/solib-target.c =================================================================== --- src.orig/gdb/solib-target.c 2010-06-15 18:08:21.000000000 +0100 +++ src/gdb/solib-target.c 2010-06-15 18:08:23.000000000 +0100 @@ -497,4 +497,9 @@ _initialize_solib_target (void) solib_target_so_ops.in_dynsym_resolve_code = solib_target_in_dynsym_resolve_code; solib_target_so_ops.bfd_open = solib_bfd_open; + + /* Set current_target_so_ops to solib_target_so_ops if not already + set. */ + if (current_target_so_ops == 0) + current_target_so_ops = &solib_target_so_ops; } Index: src/gdb/solib-null.c =================================================================== --- src.orig/gdb/solib-null.c 2010-06-15 18:08:30.000000000 +0100 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* Definitions for targets without shared libraries for GDB, the GNU Debugger. - - Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include "defs.h" -#include "solist.h" - -static struct so_list * -null_current_sos (void) -{ - return NULL; -} - -static void -null_special_symbol_handling (void) -{ -} - -static void -null_solib_create_inferior_hook (int from_tty) -{ -} - -static void -null_clear_solib (void) -{ -} - -static void -null_free_so (struct so_list *so) -{ - xfree (so->lm_info); -} - - -static void -null_relocate_section_addresses (struct so_list *so, - struct target_section *sec) -{ -} - -static int -null_open_symbol_file_object (void *from_ttyp) -{ - return 0; -} - -static int -null_in_dynsym_resolve_code (CORE_ADDR pc) -{ - return 0; -} - -static struct target_so_ops null_so_ops; - -extern initialize_file_ftype _initialize_null_solib; /* -Wmissing-prototypes */ - -void -_initialize_null_solib (void) -{ - null_so_ops.relocate_section_addresses = null_relocate_section_addresses; - null_so_ops.free_so = null_free_so; - null_so_ops.clear_solib = null_clear_solib; - null_so_ops.solib_create_inferior_hook = null_solib_create_inferior_hook; - null_so_ops.special_symbol_handling = null_special_symbol_handling; - null_so_ops.current_sos = null_current_sos; - null_so_ops.open_symbol_file_object = null_open_symbol_file_object; - null_so_ops.in_dynsym_resolve_code = null_in_dynsym_resolve_code; - null_so_ops.bfd_open = solib_bfd_open; - - /* Set current_target_so_ops to null_so_ops if not already set. */ - if (current_target_so_ops == 0) - current_target_so_ops = &null_so_ops; -}