This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 0/7] Implement gdbarch_gdb_signal_{to,from}_target
- From: Sergio Durigan Junior <sergiodj at redhat dot com>
- To: Joern Rennecke <joern dot rennecke at embecosm dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Mon, 12 Aug 2013 00:51:25 -0300
- Subject: Re: [PATCH 0/7] Implement gdbarch_gdb_signal_{to,from}_target
- References: <20130810214926 dot eqls003q8gg44sso-nzlynne at webmail dot spamcop dot net>
On Saturday, August 10 2013, Joern Rennecke wrote:
>> I have checked-in the patch.
>
>> http://sourceware.org/ml/gdb-cvs/2013-08/msg00042.html
>
> This break the build for i686-pc-linux-gnu X avr:
>
> gcc -g -O2 \
> -o gdb gdb.o avr-tdep.o ser-base.o ser-unix.o ser-pipe.o
> ser-tcp.o remote.o dcache.o tracepoint.o ax-general.o ax-gdb.o
> remote-fileio.o remote-notif.o ctf.o remote-sim.o cli-dump.o
> cli-decode.o cli-script.o cli-cmds.o cli-setshow.o cli-logging.o
> cli-interp.o cli-utils.o mi-out.o mi-console.o mi-cmds.o
> mi-cmd-catch.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o
> mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o
> mi-cmd-info.o mi-interp.o mi-main.o mi-parse.o mi-getopt.o
> tui-command.o tui-data.o tui-disasm.o tui-file.o tui-hooks.o
> tui-interp.o tui-io.o tui-layout.o tui-out.o tui-regs.o tui-source.o
> tui-stack.o tui-win.o tui-windata.o tui-wingeneral.o tui-winsource.o
> tui.o python.o py-arch.o py-auto-load.o py-block.o py-bpevent.o
> py-breakpoint.o py-cmd.o py-continueevent.o py-event.o
> py-evtregistry.o py-evts.o py-exitedevent.o py-finishbreakpoint.o
> py-frame.o py-framefilter.o py-function.o py-gdb-readline.o
> py-inferior.o py-infthread.o py-lazy-string.o py-newobjfileevent.o
> py-objfile.o py-param.o py-prettyprint.o py-progspace.o
> py-signalevent.o py-stopevent.o py-symbol.o py-symtab.o
> py-threadevent.o py-type.o py-utils.o py-value.o elfread.o
> stap-probe.o posix-hdep.o c-exp.o cp-name-parser.o ada-exp.o jv-exp.o
> f-exp.o go-exp.o m2-exp.o p-exp.o version.o annotate.o addrmap.o
> auto-load.o auxv.o agent.o bfd-target.o blockframe.o breakpoint.o
> break-catch-sig.o break-catch-throw.o findvar.o regcache.o cleanups.o
> charset.o continuations.o corelow.o disasm.o dummy-frame.o dfp.o
> source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o
> block.o symtab.o psymtab.o symfile.o symmisc.o linespec.o dictionary.o
> infcall.o infcmd.o infrun.o expprint.o environ.o stack.o thread.o
> exceptions.o filesystem.o filestuff.o inf-child.o interps.o
> minidebug.o main.o macrotab.o macrocmd.o macroexp.o macroscope.o
> mi-common.o event-loop.o event-top.o inf-loop.o completer.o gdbarch.o
> arch-utils.o gdbtypes.o gdb_bfd.o gdb_obstack.o osabi.o copying.o
> memattr.o mem-break.o target.o parse.o language.o buildsym.o findcmd.o
> std-regs.o signals.o exec.o reverse.o bcache.o objfiles.o observer.o
> minsyms.o maint.o demangle.o dbxread.o coffread.o coff-pe-read.o
> dwarf2read.o mipsread.o stabsread.o corefile.o dwarf2expr.o
> dwarf2loc.o dwarf2-frame.o dwarf2-frame-tailcall.o ada-lang.o c-lang.o
> d-lang.o f-lang.o objc-lang.o ada-tasks.o ada-varobj.o ui-out.o
> cli-out.o varobj.o vec.o go-lang.o go-valprint.o go-typeprint.o
> jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o opencl-lang.o
> p-lang.o p-typeprint.o p-valprint.o sentinel-frame.o complaints.o
> typeprint.o ada-typeprint.o c-typeprint.o f-typeprint.o m2-typeprint.o
> ada-valprint.o c-valprint.o cp-valprint.o d-valprint.o f-valprint.o
> m2-valprint.o serial.o mdebugread.o top.o utils.o ui-file.o
> user-regs.o frame.o frame-unwind.o doublest.o frame-base.o
> inline-frame.o gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o
> cp-namespace.o reggroups.o regset.o trad-frame.o tramp-frame.o solib.o
> solib-target.o prologue-value.o memory-map.o memrange.o xml-support.o
> xml-syscall.o xml-utils.o target-descriptions.o target-memory.o
> xml-tdesc.o xml-builtin.o inferior.o osdata.o gdb_usleep.o record.o
> record-full.o gcore.o gdb_vecs.o jit.o progspace.o skip.o probe.o
> common-utils.o buffer.o ptid.o gdb-dlfcn.o common-agent.o format.o
> registry.o btrace.o record-btrace.o target-common.o inflow.o init.o
> \
> ../sim/avr/libsim.a ../readline/libreadline.a
> ../opcodes/libopcodes.a ../bfd/libbfd.a ../libiberty/libiberty.a
> ../libdecnumber/libdecnumber.a -ldl -lncurses -lz -lm -lpthread
> -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic -lexpat
> ../libiberty/libiberty.a build-gnulib/import/libgnu.a
> avr-tdep.o: In function `avr_linux_gdb_signal_to_target':
> /home/amylaar/atmel/git/bld-avr-gdb/gdb/../../gdb/gdb/avr-tdep.c:1409:
> undefined reference to `linux_gdb_signal_to_target'
> avr-tdep.o: In function `avr_linux_gdb_signal_from_target':
> /home/amylaar/atmel/git/bld-avr-gdb/gdb/../../gdb/gdb/avr-tdep.c:1377:
> undefined reference to `linux_gdb_signal_from_target'
> collect2: error: ld returned 1 exit status
> make[2]: *** [gdb] Error 1
Sorry, but how are you building this? I'm having trouble reproducing
the failure. I suppose you're building a GDB for AVR only, which is
probably not building linux-tdep.o, where both
linux_gdb_signal_{to,from}_target functions are defined.
There is no avr-linux-tdep.c, which means that when we're not building
for a Linux target such functions won't be available because
linux-tdep.o won't be built. I'm not sure how to solve this specific
problem (whether to propose this avr-linux-tdep or to solve this with
#ifdef's). Opinions are welcome.
For now, I have chosen to revert the patch for AVR. This is not an
urgent thing, and IMO it's more important to keep the tree buildable.
Meanwhile we can discuss alternatives.
I checked-in the following patch.
http://sourceware.org/ml/gdb-cvs/2013-08/msg00050.html
Thanks,
--
Sergio
2013-08-12 Sergio Durigan Junior <sergiodj@redhat.com>
Revert implementation of gdbarch_gdb_signal_{to,from}_target for
AVR.
* avr-tdep.c: Remove include of "linux-tdep.h". Remove enum with
different signals between the generic Linux kernel implementation
and AVR's.
(avr_linux_gdb_signal_from_target): Delete.
(avr_linux_gdb_signal_to_target): Delete.
(avr_gdbarch_init): Don't set gdbarch_gdb_signal_{to,from}_target.
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 6beac3d..fc4e0f0 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -36,7 +36,6 @@
#include "regcache.h"
#include "gdb_string.h"
#include "dis-asm.h"
-#include "linux-tdep.h"
/* AVR Background:
@@ -191,19 +190,6 @@ struct gdbarch_tdep
struct type *pc_type;
};
-/* This enum represents the signals' numbers on the AVR
- architecture. It just contains the signal definitions which are
- different from the generic implementation.
-
- It is derived from the file <arch/avr32/include/uapi/asm/signal.h>,
- from the Linux kernel tree. */
-
-enum
- {
- AVR_LINUX_SIGRTMIN = 32,
- AVR_LINUX_SIGRTMAX = 63,
- };
-
/* Lookup the name of a register given it's number. */
static const char *
@@ -1355,60 +1341,6 @@ avr_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
return -1;
}
-/* Implementation of `gdbarch_gdb_signal_from_target', as defined in
- gdbarch.h. */
-
-static enum gdb_signal
-avr_linux_gdb_signal_from_target (struct gdbarch *gdbarch, int signal)
-{
- if (signal >= AVR_LINUX_SIGRTMIN && signal <= AVR_LINUX_SIGRTMAX)
- {
- int offset = signal - AVR_LINUX_SIGRTMIN;
-
- if (offset == 0)
- return GDB_SIGNAL_REALTIME_32;
- else
- return (enum gdb_signal) (offset - 1
- + (int) GDB_SIGNAL_REALTIME_33);
- }
- else if (signal > AVR_LINUX_SIGRTMAX)
- return GDB_SIGNAL_UNKNOWN;
-
- return linux_gdb_signal_from_target (gdbarch, signal);
-}
-
-/* Implementation of `gdbarch_gdb_signal_to_target', as defined in
- gdbarch.h. */
-
-static int
-avr_linux_gdb_signal_to_target (struct gdbarch *gdbarch,
- enum gdb_signal signal)
-{
- switch (signal)
- {
- /* GDB_SIGNAL_REALTIME_32 is not continuous in <gdb/signals.def>,
- therefore we have to handle it here. */
- case GDB_SIGNAL_REALTIME_32:
- return AVR_LINUX_SIGRTMIN;
-
- /* GDB_SIGNAL_REALTIME_64 is not valid on AVR. */
- case GDB_SIGNAL_REALTIME_64:
- return -1;
- }
-
- /* GDB_SIGNAL_REALTIME_33 to _63 are continuous.
- AVR does not have _64. */
- if (signal >= GDB_SIGNAL_REALTIME_33
- && signal <= GDB_SIGNAL_REALTIME_63)
- {
- int offset = signal - GDB_SIGNAL_REALTIME_33;
-
- return AVR_LINUX_SIGRTMIN + 1 + offset;
- }
-
- return linux_gdb_signal_to_target (gdbarch, signal);
-}
-
/* Initialize the gdbarch structure for the AVR's. */
static struct gdbarch *
@@ -1512,11 +1444,6 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_unwind_pc (gdbarch, avr_unwind_pc);
set_gdbarch_unwind_sp (gdbarch, avr_unwind_sp);
- set_gdbarch_gdb_signal_from_target (gdbarch,
- avr_linux_gdb_signal_from_target);
- set_gdbarch_gdb_signal_to_target (gdbarch,
- avr_linux_gdb_signal_to_target);
-
return gdbarch;
}