This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Switch shared library default backend to solib-target.c
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Date: Tue, 15 Jun 2010 19:05:31 +0100
- Subject: Re: Switch shared library default backend to solib-target.c
- References: <201006151858.58007.pedro@codesourcery.com>
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 <pedro@codesourcery.com>
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 <http://www.gnu.org/licenses/>. */
-
-#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;
-}