gdb: update to version 13.1

Issue #4827
This commit is contained in:
Christian Prochaska 2023-05-08 10:18:46 +02:00 committed by Christian Helmuth
parent b12ebae6cd
commit de70f17ee4
12 changed files with 302 additions and 266 deletions

View File

@ -6,7 +6,6 @@ _Z13all_processesB5cxx11 U
_Z13register_sizePK11target_desci U _Z13register_sizePK11target_desci U
_Z14agent_loaded_pv U _Z14agent_loaded_pv U
_Z14fetch_registerPKcmRm T _Z14fetch_registerPKcmRm T
_Z14internal_errorPKciS0_z U
_Z14linux_stop_lwpP8lwp_info U _Z14linux_stop_lwpP8lwp_info U
_Z14lwp_is_stoppedP8lwp_info U _Z14lwp_is_stoppedP8lwp_info U
_Z14store_registerPKcRmm T _Z14store_registerPKcRmm T
@ -20,6 +19,7 @@ _Z16find_process_pidi U
_Z16init_target_descP11target_descPPKc U _Z16init_target_descP11target_descPPKc U
_Z16perror_with_namePKc U _Z16perror_with_namePKc U
_Z16regcache_releasev U _Z16regcache_releasev U
_Z16switch_to_threadP11thread_info U
_Z16tdesc_create_regP13tdesc_featurePKciiS2_iS2_ U _Z16tdesc_create_regP13tdesc_featurePKciiS2_iS2_ U
_Z16tdesc_named_typePK13tdesc_featurePKc U _Z16tdesc_named_typePK13tdesc_featurePKc U
_Z17iterate_over_lwps6ptid_tN3gdb13function_viewIFiP8lwp_infoEEE U _Z17iterate_over_lwps6ptid_tN3gdb13function_viewIFiP8lwp_infoEEE U
@ -153,18 +153,18 @@ _ZN20linux_process_target20qxfer_libraries_svr4EPKcPhPKhmi U
_ZN20linux_process_target20stopped_data_addressEv U _ZN20linux_process_target20stopped_data_addressEv U
_ZN20linux_process_target20supports_exec_eventsEv U _ZN20linux_process_target20supports_exec_eventsEv U
_ZN20linux_process_target20supports_fork_eventsEv U _ZN20linux_process_target20supports_fork_eventsEv U
_ZN20linux_process_target21done_accessing_memoryEv U _ZN20linux_process_target20thread_pending_childEP11thread_info U
_ZN20linux_process_target21stopped_by_watchpointEv U _ZN20linux_process_target21stopped_by_watchpointEv U
_ZN20linux_process_target21supports_qxfer_osdataEv U _ZN20linux_process_target21supports_qxfer_osdataEv U
_ZN20linux_process_target21supports_read_offsetsEv U _ZN20linux_process_target21supports_read_offsetsEv U
_ZN20linux_process_target21supports_vfork_eventsEv U _ZN20linux_process_target21supports_vfork_eventsEv U
_ZN20linux_process_target21thread_pending_parentEP11thread_info U
_ZN20linux_process_target22handle_monitor_commandEPc U _ZN20linux_process_target22handle_monitor_commandEPc U
_ZN20linux_process_target22supports_catch_syscallEv U _ZN20linux_process_target22supports_catch_syscallEv U
_ZN20linux_process_target22supports_multi_processEv U _ZN20linux_process_target22supports_multi_processEv U
_ZN20linux_process_target22supports_qxfer_siginfoEv U _ZN20linux_process_target22supports_qxfer_siginfoEv U
_ZN20linux_process_target23supports_range_steppingEv U _ZN20linux_process_target23supports_range_steppingEv U
_ZN20linux_process_target23supports_thread_stoppedEv U _ZN20linux_process_target23supports_thread_stoppedEv U
_ZN20linux_process_target24prepare_to_access_memoryEv U
_ZN20linux_process_target24stopped_by_hw_breakpointEv U _ZN20linux_process_target24stopped_by_hw_breakpointEv U
_ZN20linux_process_target24stopped_by_sw_breakpointEv U _ZN20linux_process_target24stopped_by_sw_breakpointEv U
_ZN20linux_process_target24supports_get_tls_addressEv U _ZN20linux_process_target24supports_get_tls_addressEv U
@ -179,7 +179,7 @@ _ZN20linux_process_target33supports_stopped_by_hw_breakpointEv U
_ZN20linux_process_target33supports_stopped_by_sw_breakpointEv U _ZN20linux_process_target33supports_stopped_by_sw_breakpointEv U
_ZN20linux_process_target4joinEi U _ZN20linux_process_target4joinEi U
_ZN20linux_process_target4killEP12process_info U _ZN20linux_process_target4killEP12process_info U
_ZN20linux_process_target4waitE6ptid_tP17target_waitstatusi U _ZN20linux_process_target4waitE6ptid_tP17target_waitstatus10enum_flagsI16target_wait_flagE U
_ZN20linux_process_target5asyncEb U _ZN20linux_process_target5asyncEb U
_ZN20linux_process_target5mournEP12process_info U _ZN20linux_process_target5mournEP12process_info U
_ZN20linux_process_target6attachEm U _ZN20linux_process_target6attachEm U
@ -191,17 +191,22 @@ _ZN20linux_process_target9pause_allEb U
_ZN20linux_process_target9read_auxvEmPhj U _ZN20linux_process_target9read_auxvEmPhj U
_ZN22process_stratum_target11read_btraceEP18btrace_target_infoP6buffer16btrace_read_type U _ZN22process_stratum_target11read_btraceEP18btrace_target_infoP6buffer16btrace_read_type U
_ZN22process_stratum_target12read_loadmapEPKcmPhj U _ZN22process_stratum_target12read_loadmapEPKcmPhj U
_ZN22process_stratum_target13enable_btraceE6ptid_tPK13btrace_config U _ZN22process_stratum_target13enable_btraceEP11thread_infoPK13btrace_config U
_ZN22process_stratum_target13fetch_memtagsEmmRSt6vectorIhN3gdb22default_init_allocatorIhSaIhEEEEi U
_ZN22process_stratum_target13store_memtagsEmmRKSt6vectorIhN3gdb22default_init_allocatorIhSaIhEEEEi U
_ZN22process_stratum_target13thread_handleE6ptid_tPPhPi U _ZN22process_stratum_target13thread_handleE6ptid_tPPhPi U
_ZN22process_stratum_target14disable_btraceEP18btrace_target_info U _ZN22process_stratum_target14disable_btraceEP18btrace_target_info U
_ZN22process_stratum_target15get_tib_addressE6ptid_tPm U _ZN22process_stratum_target15get_tib_addressE6ptid_tPm U
_ZN22process_stratum_target15supports_btraceEv U
_ZN22process_stratum_target16read_btrace_confEPK18btrace_target_infoP6buffer U _ZN22process_stratum_target16read_btrace_confEPK18btrace_target_infoP6buffer U
_ZN22process_stratum_target17hostio_last_errorEPc U
_ZN22process_stratum_target21supports_read_loadmapEv U _ZN22process_stratum_target21supports_read_loadmapEv U
_ZN22process_stratum_target23breakpoint_kind_from_pcEPm U _ZN22process_stratum_target23breakpoint_kind_from_pcEPm U
_ZN22process_stratum_target23supports_memory_taggingEv U
_ZN22process_stratum_target24supports_get_tib_addressEv U _ZN22process_stratum_target24supports_get_tib_addressEv U
_ZN22process_stratum_target29supports_software_single_stepEv U _ZN22process_stratum_target29supports_software_single_stepEv U
_ZN22process_stratum_target34breakpoint_kind_from_current_stateEPm U _ZN22process_stratum_target34breakpoint_kind_from_current_stateEPm U
_ZN29scoped_restore_current_threadC1Ev U
_ZN29scoped_restore_current_threadD1Ev U
_ZN6Genode13Avl_node_baseC2Ev U _ZN6Genode13Avl_node_baseC2Ev U
_ZN6Genode14Rpc_entrypoint7_manageEPNS_15Rpc_object_baseE U _ZN6Genode14Rpc_entrypoint7_manageEPNS_15Rpc_object_baseE U
_ZN6Genode14Rpc_entrypoint9_dissolveEPNS_15Rpc_object_baseE U _ZN6Genode14Rpc_entrypoint9_dissolveEPNS_15Rpc_object_baseE U

View File

@ -1 +1 @@
601cdd5711839f85cd2d151f51d989b678a02efc 59a56418c6720518cfc7e4485557dd2c707b5e03

View File

@ -1,9 +1,9 @@
LICENSE := GPLv3 LICENSE := GPLv3
VERSION := 10.2 VERSION := 13.1
DOWNLOADS := gdb.archive DOWNLOADS := gdb.archive
URL(gdb) := ftp://ftp.fu-berlin.de/gnu/gdb/gdb-$(VERSION).tar.xz URL(gdb) := ftp://ftp.fu-berlin.de/gnu/gdb/gdb-$(VERSION).tar.xz
SHA(gdb) := aaa1223d534c9b700a8bec952d9748ee1977513f178727e1bee520ee000b4f29 SHA(gdb) := 115ad5c18d69a6be2ab15882d365dda2a2211c14f480b3502c6eba576e2e95a0
SIG(gdb) := ${URL(gdb)}.sig SIG(gdb) := ${URL(gdb)}.sig
KEY(gdb) := GNU KEY(gdb) := GNU
DIR(gdb) := src/noux-pkg/gdb DIR(gdb) := src/noux-pkg/gdb

View File

@ -32,7 +32,6 @@ SRC_CC += gdbserver/ax.cc \
gdbserver/dll.cc \ gdbserver/dll.cc \
gdbserver/fork-child.cc \ gdbserver/fork-child.cc \
gdbserver/hostio.cc \ gdbserver/hostio.cc \
gdbserver/hostio-errno.cc \
gdbserver/i387-fp.cc \ gdbserver/i387-fp.cc \
gdbserver/inferiors.cc \ gdbserver/inferiors.cc \
gdbserver/linux-low.cc \ gdbserver/linux-low.cc \
@ -59,6 +58,7 @@ SRC_CC += gdbsupport/agent.cc \
gdbsupport/environ.cc \ gdbsupport/environ.cc \
gdbsupport/errors.cc \ gdbsupport/errors.cc \
gdbsupport/event-loop.cc \ gdbsupport/event-loop.cc \
gdbsupport/event-pipe.cc \
gdbsupport/fileio.cc \ gdbsupport/fileio.cc \
gdbsupport/filestuff.cc \ gdbsupport/filestuff.cc \
gdbsupport/format.cc \ gdbsupport/format.cc \
@ -71,6 +71,7 @@ SRC_CC += gdbsupport/agent.cc \
gdbsupport/ptid.cc \ gdbsupport/ptid.cc \
gdbsupport/rsp-low.cc \ gdbsupport/rsp-low.cc \
gdbsupport/safe-strerror.cc \ gdbsupport/safe-strerror.cc \
gdbsupport/search.cc \
gdbsupport/signals.cc \ gdbsupport/signals.cc \
gdbsupport/tdesc.cc \ gdbsupport/tdesc.cc \
gdbsupport/xml-utils.cc gdbsupport/xml-utils.cc

View File

@ -8,11 +8,11 @@ Enable software single-stepping on ARM.
1 file changed, 2 insertions(+) 1 file changed, 2 insertions(+)
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index be342117..8c87f098 100644 index 2fcf104..ddff370 100644
--- a/gdb/arm-tdep.c --- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c
@@ -9339,6 +9339,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) @@ -10572,6 +10572,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
tdep = XCNEW (struct gdbarch_tdep); arm_gdbarch_tdep *tdep = new arm_gdbarch_tdep;
gdbarch = gdbarch_alloc (&info, tdep); gdbarch = gdbarch_alloc (&info, tdep);
+ set_gdbarch_software_single_step(gdbarch, arm_software_single_step); + set_gdbarch_software_single_step(gdbarch, arm_software_single_step);

View File

@ -8,10 +8,10 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
1 file changed, 2 insertions(+) 1 file changed, 2 insertions(+)
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index d97c5629..a6df6fe3 100644 index 21c1101..81c6d45 100644
--- a/gdb/i386-tdep.c --- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c
@@ -8573,7 +8573,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) @@ -8567,7 +8567,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_get_longjmp_target (gdbarch, i386_get_longjmp_target); set_gdbarch_get_longjmp_target (gdbarch, i386_get_longjmp_target);
/* Call dummy code. */ /* Call dummy code. */

View File

@ -6,23 +6,23 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
--- ---
gdb/amd64-tdep.c | 14 ++++++++++++++ gdb/amd64-tdep.c | 14 ++++++++++++++
gdb/i386-tdep.c | 5 +++++ gdb/i386-tdep.c | 5 +++++
gdb/osabi.c | 6 ++++++ gdb/osabi.c | 3 +++
gdb/osabi.h | 1 + gdb/osabi.h | 1 +
4 files changed, 26 insertions(+) 4 files changed, 23 insertions(+)
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index 1d8cfd0b..55eb6f60 100644 index 74cb9cf..bf45fd0 100644
--- a/gdb/amd64-tdep.c --- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c
@@ -50,6 +50,7 @@ @@ -51,6 +51,7 @@
#include "osabi.h"
#include "x86-tdep.h" #include "x86-tdep.h"
#include "amd64-ravenscar-thread.h"
+#include "osabi.h" +#include "osabi.h"
#include "solib-svr4.h" #include "solib-svr4.h"
/* Note that the AMD64 architecture was previously known as x86-64. /* Note that the AMD64 architecture was previously known as x86-64.
@@ -3359,7 +3360,15 @@ amd64_target_description (uint64_t xcr0, bool segments) @@ -3356,7 +3357,15 @@ amd64_target_description (uint64_t xcr0, bool segments)
return *tdesc; return *tdesc;
} }
@ -38,7 +38,7 @@ index 1d8cfd0b..55eb6f60 100644
void void
_initialize_amd64_tdep () _initialize_amd64_tdep ()
{ {
@@ -3367,6 +3376,11 @@ _initialize_amd64_tdep () @@ -3364,6 +3373,11 @@ _initialize_amd64_tdep ()
amd64_none_init_abi); amd64_none_init_abi);
gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32, GDB_OSABI_NONE, gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32, GDB_OSABI_NONE,
amd64_x32_none_init_abi); amd64_x32_none_init_abi);
@ -51,10 +51,10 @@ index 1d8cfd0b..55eb6f60 100644
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 057f3e3c..d97c5629 100644 index 49a7497..21c1101 100644
--- a/gdb/i386-tdep.c --- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c
@@ -9134,6 +9134,11 @@ Show Intel Memory Protection Extensions specific variables."), @@ -9122,6 +9122,11 @@ is \"default\"."),
gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_SVR4, gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_SVR4,
i386_svr4_init_abi); i386_svr4_init_abi);
@ -67,7 +67,7 @@ index 057f3e3c..d97c5629 100644
i386_init_reggroups (); i386_init_reggroups ();
diff --git a/gdb/osabi.c b/gdb/osabi.c diff --git a/gdb/osabi.c b/gdb/osabi.c
index 1a9cdc82..5e7e7731 100644 index d18802a..3c9a812 100644
--- a/gdb/osabi.c --- a/gdb/osabi.c
+++ b/gdb/osabi.c +++ b/gdb/osabi.c
@@ -82,6 +82,7 @@ static const struct osabi_names gdb_osabi_names[] = @@ -82,6 +82,7 @@ static const struct osabi_names gdb_osabi_names[] =
@ -78,23 +78,20 @@ index 1a9cdc82..5e7e7731 100644
{ "<invalid>", NULL } { "<invalid>", NULL }
}; };
@@ -564,6 +565,11 @@ generic_elf_osabi_sniffer (bfd *abfd) @@ -609,6 +610,8 @@ generic_elf_osabi_sniffer (bfd *abfd)
bfd_map_over_sections (abfd, if (memcmp (&elf_elfheader (abfd)->e_ident[8],
generic_elf_osabi_sniff_abi_tag_sections, "FreeBSD", sizeof ("FreeBSD")) == 0)
&osabi); osabi = GDB_OSABI_FREEBSD;
+/* Genode */ + else
+ if (osabi == GDB_OSABI_UNKNOWN)
+ osabi = GDB_OSABI_GENODE; + osabi = GDB_OSABI_GENODE;
+/* /Genode */ }
+
break;
case ELFOSABI_FREEBSD: return osabi;
diff --git a/gdb/osabi.h b/gdb/osabi.h diff --git a/gdb/osabi.h b/gdb/osabi.h
index c510f99f..06a4eb99 100644 index 35f14ec..ae521e1 100644
--- a/gdb/osabi.h --- a/gdb/osabi.h
+++ b/gdb/osabi.h +++ b/gdb/osabi.h
@@ -47,6 +47,7 @@ enum gdb_osabi @@ -46,6 +46,7 @@ enum gdb_osabi
GDB_OSABI_NEWLIB, GDB_OSABI_NEWLIB,
GDB_OSABI_SDE, GDB_OSABI_SDE,
GDB_OSABI_PIKEOS, GDB_OSABI_PIKEOS,

View File

@ -4,13 +4,13 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
--- ---
gdb/nat/fork-inferior.c | 4 + gdb/nat/fork-inferior.c | 3 +
gdb/nat/gdb_ptrace.h | 2 + gdb/nat/gdb_ptrace.h | 2 +
gdb/nat/linux-ptrace.c | 28 +++++++++ gdb/nat/linux-ptrace.c | 28 +++++++++
gdb/nat/linux-ptrace.h | 4 + gdb/nat/linux-ptrace.h | 4 +
gdbserver/linux-aarch32-low.cc | 4 + gdbserver/linux-aarch32-low.cc | 4 +
gdbserver/linux-arm-low.cc | 8 +++ gdbserver/linux-arm-low.cc | 8 +++
gdbserver/linux-low.cc | 73 ++++++++++++++++++++++++ gdbserver/linux-low.cc | 76 +++++++++++++++++++++++++
gdbserver/linux-low.h | 8 ++- gdbserver/linux-low.h | 8 ++-
gdbserver/linux-x86-low.cc | 120 +++++++++++++++++++++++++++++++++++++++- gdbserver/linux-x86-low.cc | 120 +++++++++++++++++++++++++++++++++++++++-
gdbserver/linux-x86-tdesc.cc | 8 +++ gdbserver/linux-x86-tdesc.cc | 8 +++
@ -20,19 +20,19 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
gdbsupport/common-inferior.cc | 4 + gdbsupport/common-inferior.cc | 4 +
gdbsupport/common-types.h | 17 ++++++ gdbsupport/common-types.h | 17 ++++++
gdbsupport/gdb-sigmask.h | 4 + gdbsupport/gdb-sigmask.h | 4 +
gdbsupport/gdb_tilde_expand.cc | 10 +++ gdbsupport/gdb_tilde_expand.cc | 5 ++
gdbsupport/pathstuff.cc | 2 + gdbsupport/pathstuff.cc | 2 +
18 files changed, 333 insertions(+), 14 deletions(-) gnulib/import/rawmemchr.c | 3 +
19 files changed, 333 insertions(+), 14 deletions(-)
diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c
index 559773f7..bab829fb 100644 index 968983b..0d531e0 100644
--- a/gdb/nat/fork-inferior.c --- a/gdb/nat/fork-inferior.c
+++ b/gdb/nat/fork-inferior.c +++ b/gdb/nat/fork-inferior.c
@@ -402,9 +402,9 @@ fork_inferior (const char *exec_file_arg, const std::string &allargs, @@ -400,8 +400,9 @@ fork_inferior (const char *exec_file_arg, const std::string &allargs,
undebuggable. Indeed, you probably got an error message
saying "not parent". Sorry; you'll have to use print saying "not parent". Sorry; you'll have to use print
statements! */ statements! */
-
+#ifndef __GENODE__ +#ifndef __GENODE__
restore_original_signals_state (); restore_original_signals_state ();
- -
@ -41,7 +41,7 @@ index 559773f7..bab829fb 100644
for our child in the global variable. If we've vforked, this for our child in the global variable. If we've vforked, this
clobbers the parent, but environ is restored a few lines down clobbers the parent, but environ is restored a few lines down
diff --git a/gdb/nat/gdb_ptrace.h b/gdb/nat/gdb_ptrace.h diff --git a/gdb/nat/gdb_ptrace.h b/gdb/nat/gdb_ptrace.h
index f7bdd113..8f148d10 100644 index a5e3725..a338819 100644
--- a/gdb/nat/gdb_ptrace.h --- a/gdb/nat/gdb_ptrace.h
+++ b/gdb/nat/gdb_ptrace.h +++ b/gdb/nat/gdb_ptrace.h
@@ -121,6 +121,7 @@ @@ -121,6 +121,7 @@
@ -60,7 +60,7 @@ index f7bdd113..8f148d10 100644
#endif /* NAT_GDB_PTRACE_H */ #endif /* NAT_GDB_PTRACE_H */
diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
index 17f43154..842b8077 100644 index f312779..7006c8e 100644
--- a/gdb/nat/linux-ptrace.c --- a/gdb/nat/linux-ptrace.c
+++ b/gdb/nat/linux-ptrace.c +++ b/gdb/nat/linux-ptrace.c
@@ -36,6 +36,7 @@ static int supported_ptrace_options = -1; @@ -36,6 +36,7 @@ static int supported_ptrace_options = -1;
@ -110,15 +110,15 @@ index 17f43154..842b8077 100644
/* Helper function to fork a process and make the child process call /* Helper function to fork a process and make the child process call
the function FUNCTION, passing CHILD_STACK as parameter. the function FUNCTION, passing CHILD_STACK as parameter.
@@ -341,6 +348,7 @@ static void linux_test_for_exitkill (int child_pid); @@ -322,6 +329,7 @@ static void linux_test_for_exitkill (int child_pid);
void void
linux_check_ptrace_features (void) linux_check_ptrace_features (void)
{ {
+#ifndef __GENODE__ +#ifndef __GENODE__
int child_pid, ret, status; int child_pid, ret, status;
/* Initialize the options. */ /* Initialize the options. We consider that these options are always
@@ -370,6 +378,18 @@ linux_check_ptrace_features (void) @@ -354,6 +362,18 @@ linux_check_ptrace_features (void)
/* Kill child_pid. */ /* Kill child_pid. */
kill_child (child_pid, "linux_check_ptrace_features"); kill_child (child_pid, "linux_check_ptrace_features");
@ -136,8 +136,8 @@ index 17f43154..842b8077 100644
+#endif +#endif
} }
/* Determine if PTRACE_O_TRACESYSGOOD can be used to catch /* Determine if PTRACE_O_EXITKILL can be used. */
@@ -482,6 +502,7 @@ linux_test_for_exitkill (int child_pid) @@ -378,6 +398,7 @@ linux_test_for_exitkill (int child_pid)
void void
linux_enable_event_reporting (pid_t pid, int options) linux_enable_event_reporting (pid_t pid, int options)
{ {
@ -145,7 +145,7 @@ index 17f43154..842b8077 100644
/* Check if we have initialized the ptrace features for this /* Check if we have initialized the ptrace features for this
target. If not, do it now. */ target. If not, do it now. */
if (supported_ptrace_options == -1) if (supported_ptrace_options == -1)
@@ -496,6 +517,7 @@ linux_enable_event_reporting (pid_t pid, int options) @@ -392,6 +413,7 @@ linux_enable_event_reporting (pid_t pid, int options)
/* Set the options. */ /* Set the options. */
ptrace (PTRACE_SETOPTIONS, pid, (PTRACE_TYPE_ARG3) 0, ptrace (PTRACE_SETOPTIONS, pid, (PTRACE_TYPE_ARG3) 0,
(PTRACE_TYPE_ARG4) (uintptr_t) options); (PTRACE_TYPE_ARG4) (uintptr_t) options);
@ -153,7 +153,7 @@ index 17f43154..842b8077 100644
} }
/* Disable reporting of all currently supported ptrace events. */ /* Disable reporting of all currently supported ptrace events. */
@@ -503,8 +525,10 @@ linux_enable_event_reporting (pid_t pid, int options) @@ -399,8 +421,10 @@ linux_enable_event_reporting (pid_t pid, int options)
void void
linux_disable_event_reporting (pid_t pid) linux_disable_event_reporting (pid_t pid)
{ {
@ -163,8 +163,8 @@ index 17f43154..842b8077 100644
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
} }
/* Returns non-zero if PTRACE_OPTIONS is contained within /* Display possible problems on this system. Display them only once per GDB
@@ -583,7 +607,9 @@ linux_ptrace_init_warnings (void) @@ -415,7 +439,9 @@ linux_ptrace_init_warnings (void)
return; return;
warned = 1; warned = 1;
@ -175,7 +175,7 @@ index 17f43154..842b8077 100644
/* Extract extended ptrace event from wait status. */ /* Extract extended ptrace event from wait status. */
diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h
index 6e973dc5..16ba731f 100644 index 19f4736..8e18cd4 100644
--- a/gdb/nat/linux-ptrace.h --- a/gdb/nat/linux-ptrace.h
+++ b/gdb/nat/linux-ptrace.h +++ b/gdb/nat/linux-ptrace.h
@@ -115,7 +115,11 @@ struct buffer; @@ -115,7 +115,11 @@ struct buffer;
@ -191,7 +191,7 @@ index 6e973dc5..16ba731f 100644
/* The x86 kernel gets some of the si_code values backwards, like /* The x86 kernel gets some of the si_code values backwards, like
this: this:
diff --git a/gdbserver/linux-aarch32-low.cc b/gdbserver/linux-aarch32-low.cc diff --git a/gdbserver/linux-aarch32-low.cc b/gdbserver/linux-aarch32-low.cc
index 8f733e7d..c621ec30 100644 index 990a352..960cc1f 100644
--- a/gdbserver/linux-aarch32-low.cc --- a/gdbserver/linux-aarch32-low.cc
+++ b/gdbserver/linux-aarch32-low.cc +++ b/gdbserver/linux-aarch32-low.cc
@@ -35,7 +35,11 @@ @@ -35,7 +35,11 @@
@ -207,7 +207,7 @@ index 8f733e7d..c621ec30 100644
#if (defined __ARM_EABI__ || defined __aarch64__) #if (defined __ARM_EABI__ || defined __aarch64__)
static const unsigned long arm_breakpoint = arm_eabi_breakpoint; static const unsigned long arm_breakpoint = arm_eabi_breakpoint;
diff --git a/gdbserver/linux-arm-low.cc b/gdbserver/linux-arm-low.cc diff --git a/gdbserver/linux-arm-low.cc b/gdbserver/linux-arm-low.cc
index cba0f078..521e07c0 100644 index 98ba0e0..85b6ae3 100644
--- a/gdbserver/linux-arm-low.cc --- a/gdbserver/linux-arm-low.cc
+++ b/gdbserver/linux-arm-low.cc +++ b/gdbserver/linux-arm-low.cc
@@ -32,6 +32,9 @@ @@ -32,6 +32,9 @@
@ -240,10 +240,10 @@ index cba0f078..521e07c0 100644
/* The default configuration uses legacy FPA registers, probably /* The default configuration uses legacy FPA registers, probably
simulated. */ simulated. */
diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc
index b1f997ae..823c5e56 100644 index 7e1de39..26cea36 100644
--- a/gdbserver/linux-low.cc --- a/gdbserver/linux-low.cc
+++ b/gdbserver/linux-low.cc +++ b/gdbserver/linux-low.cc
@@ -27,6 +27,11 @@ @@ -29,6 +29,11 @@
#include "nat/linux-waitpid.h" #include "nat/linux-waitpid.h"
#include "gdbsupport/gdb_wait.h" #include "gdbsupport/gdb_wait.h"
#include "nat/gdb_ptrace.h" #include "nat/gdb_ptrace.h"
@ -255,19 +255,21 @@ index b1f997ae..823c5e56 100644
#include "nat/linux-ptrace.h" #include "nat/linux-ptrace.h"
#include "nat/linux-procfs.h" #include "nat/linux-procfs.h"
#include "nat/linux-personality.h" #include "nat/linux-personality.h"
@@ -694,7 +699,11 @@ linux_process_target::handle_extended_wait (lwp_info **orig_event_lwp, @@ -718,8 +723,13 @@ linux_process_target::handle_extended_wait (lwp_info **orig_event_lwp,
/* Set the event status. */ /* Set the event status. */
event_lwp->waitstatus.kind = TARGET_WAITKIND_EXECD; event_lwp->waitstatus.set_execd
event_lwp->waitstatus.value.execd_pathname
+#ifdef __GENODE__ +#ifdef __GENODE__
+ = xstrdup ("target"); (make_unique_xstrdup
(linux_proc_pid_to_exec_file (lwpid_of (event_thr))));
+#else +#else
= xstrdup (linux_proc_pid_to_exec_file (lwpid_of (event_thr))); + (make_unique_xstrdup
+ ("target"));
+#endif +#endif
/* Mark the exec status as pending. */ /* Mark the exec status as pending. */
event_lwp->stopped = 1; event_lwp->stopped = 1;
@@ -970,8 +979,10 @@ linux_process_target::create_inferior (const char *program, @@ -968,8 +978,10 @@ linux_process_target::create_inferior (const char *program,
ptid_t ptid; ptid_t ptid;
{ {
@ -278,7 +280,7 @@ index b1f997ae..823c5e56 100644
std::string str_program_args = construct_inferior_arguments (program_args); std::string str_program_args = construct_inferior_arguments (program_args);
pid = fork_inferior (program, pid = fork_inferior (program,
@@ -1016,12 +1027,17 @@ linux_process_target::attach_lwp (ptid_t ptid) @@ -1022,12 +1034,17 @@ linux_process_target::attach_lwp (ptid_t ptid)
struct lwp_info *new_lwp; struct lwp_info *new_lwp;
int lwpid = ptid.lwp (); int lwpid = ptid.lwp ();
@ -296,7 +298,7 @@ index b1f997ae..823c5e56 100644
/* We need to wait for SIGSTOP before being able to make the next /* We need to wait for SIGSTOP before being able to make the next
ptrace call on this LWP. */ ptrace call on this LWP. */
new_lwp->must_set_ptrace_flags = 1; new_lwp->must_set_ptrace_flags = 1;
@@ -1088,6 +1104,7 @@ linux_process_target::attach_lwp (ptid_t ptid) @@ -1093,6 +1110,7 @@ linux_process_target::attach_lwp (ptid_t ptid)
end of the list, and so the new thread has not yet reached end of the list, and so the new thread has not yet reached
wait_for_sigstop (but will). */ wait_for_sigstop (but will). */
new_lwp->stop_expected = 1; new_lwp->stop_expected = 1;
@ -304,15 +306,15 @@ index b1f997ae..823c5e56 100644
return 0; return 0;
} }
@@ -1163,6 +1180,7 @@ linux_process_target::attach (unsigned long pid) @@ -1166,6 +1184,7 @@ linux_process_target::attach (unsigned long pid)
error ("Cannot attach to process %ld: %s", pid, reason.c_str ());
} open_proc_mem_file (proc);
+#ifndef __GENODE__ +#ifndef __GENODE__
/* Don't ignore the initial SIGSTOP if we just attached to this /* Don't ignore the initial SIGSTOP if we just attached to this
process. It will be collected by wait shortly. */ process. It will be collected by wait shortly. */
initial_thread = find_thread_ptid (ptid_t (pid, pid, 0)); initial_thread = find_thread_ptid (ptid_t (pid, pid));
@@ -1209,6 +1227,7 @@ linux_process_target::attach (unsigned long pid) @@ -1212,6 +1231,7 @@ linux_process_target::attach (unsigned long pid)
gdb_assert (proc->tdesc != NULL); gdb_assert (proc->tdesc != NULL);
} }
@ -320,7 +322,7 @@ index b1f997ae..823c5e56 100644
return 0; return 0;
} }
@@ -1346,6 +1365,7 @@ kill_one_lwp_callback (thread_info *thread, int pid) @@ -1347,6 +1367,7 @@ kill_one_lwp_callback (thread_info *thread, int pid)
kill_wait_lwp (lwp); kill_wait_lwp (lwp);
} }
@ -328,7 +330,7 @@ index b1f997ae..823c5e56 100644
int int
linux_process_target::kill (process_info *process) linux_process_target::kill (process_info *process)
{ {
@@ -1380,6 +1400,7 @@ linux_process_target::kill (process_info *process) @@ -1377,6 +1398,7 @@ linux_process_target::kill (process_info *process)
unstop_all_lwps (0, NULL); unstop_all_lwps (0, NULL);
return 0; return 0;
} }
@ -336,7 +338,7 @@ index b1f997ae..823c5e56 100644
/* Get pending signal of THREAD, for detaching purposes. This is the /* Get pending signal of THREAD, for detaching purposes. This is the
signal the thread last stopped for, which we need to deliver to the signal the thread last stopped for, which we need to deliver to the
@@ -1466,10 +1487,13 @@ void @@ -1458,10 +1480,13 @@ void
linux_process_target::detach_one_lwp (lwp_info *lwp) linux_process_target::detach_one_lwp (lwp_info *lwp)
{ {
struct thread_info *thread = get_lwp_thread (lwp); struct thread_info *thread = get_lwp_thread (lwp);
@ -349,8 +351,8 @@ index b1f997ae..823c5e56 100644
+#ifndef __GENODE__ +#ifndef __GENODE__
if (lwp->stop_expected) if (lwp->stop_expected)
{ {
if (debug_threads) threads_debug_printf ("Sending SIGCONT to %s",
@@ -1479,7 +1503,9 @@ linux_process_target::detach_one_lwp (lwp_info *lwp) @@ -1470,7 +1495,9 @@ linux_process_target::detach_one_lwp (lwp_info *lwp)
kill_lwp (lwpid_of (thread), SIGCONT); kill_lwp (lwpid_of (thread), SIGCONT);
lwp->stop_expected = 0; lwp->stop_expected = 0;
} }
@ -360,10 +362,10 @@ index b1f997ae..823c5e56 100644
/* Pass on any pending signal for this thread. */ /* Pass on any pending signal for this thread. */
sig = get_detach_signal (thread); sig = get_detach_signal (thread);
@@ -1540,10 +1566,12 @@ linux_process_target::detach_one_lwp (lwp_info *lwp) @@ -1529,10 +1556,12 @@ linux_process_target::detach_one_lwp (lwp_info *lwp)
target_pid_to_str (ptid_of (thread)), threads_debug_printf ("PTRACE_DETACH (%s, %s, 0) (OK)",
target_pid_to_str (ptid_of (thread)).c_str (),
strsignal (sig)); strsignal (sig));
}
+#endif +#endif
delete_lwp (lwp); delete_lwp (lwp);
@ -373,7 +375,7 @@ index b1f997ae..823c5e56 100644
int int
linux_process_target::detach (process_info *process) linux_process_target::detach (process_info *process)
{ {
@@ -1592,6 +1620,7 @@ linux_process_target::detach (process_info *process) @@ -1581,6 +1610,7 @@ linux_process_target::detach (process_info *process)
unstop_all_lwps (0, NULL); unstop_all_lwps (0, NULL);
return 0; return 0;
} }
@ -381,15 +383,15 @@ index b1f997ae..823c5e56 100644
/* Remove all LWPs that belong to process PROC from the lwp list. */ /* Remove all LWPs that belong to process PROC from the lwp list. */
@@ -1806,6 +1835,7 @@ iterate_over_lwps (ptid_t filter, @@ -1780,6 +1810,7 @@ iterate_over_lwps (ptid_t filter,
void void
linux_process_target::check_zombie_leaders () linux_process_target::check_zombie_leaders ()
{ {
+#ifndef __GENODE__ +#ifndef __GENODE__
for_each_process ([this] (process_info *proc) { for_each_process ([this] (process_info *proc)
{
pid_t leader_pid = pid_of (proc); pid_t leader_pid = pid_of (proc);
struct lwp_info *leader_lp; @@ -1852,6 +1883,7 @@ linux_process_target::check_zombie_leaders ()
@@ -1860,6 +1890,7 @@ linux_process_target::check_zombie_leaders ()
delete_lwp (leader_lp); delete_lwp (leader_lp);
} }
}); });
@ -397,21 +399,30 @@ index b1f997ae..823c5e56 100644
} }
/* Callback for `find_thread'. Returns the first LWP that is not /* Callback for `find_thread'. Returns the first LWP that is not
@@ -2606,11 +2637,13 @@ linux_process_target::wait_for_event_filtered (ptid_t wait_ptid, @@ -2253,9 +2285,11 @@ linux_process_target::filter_event (int lwpid, int wstat)
its PID and go back to waiting for the fork event to
be reported - the stopped process might be returned
from waitpid before or after the fork event is. */
+#ifndef __GENODE__
threads_debug_printf
("Saving LWP %d status %s in stopped_pids list",
lwpid, status_to_str (wstat).c_str ());
+#endif /* __GENODE__ */
add_to_pid_list (&stopped_pids, lwpid, wstat);
}
}
@@ -2586,8 +2620,10 @@ linux_process_target::wait_for_event_filtered (ptid_t wait_ptid,
if (ret > 0) if (ret > 0)
{ {
+#ifndef __GENODE__ +#ifndef __GENODE__
if (debug_threads) threads_debug_printf ("waitpid %ld received %s",
{ (long) ret, status_to_str (*wstatp).c_str ());
debug_printf ("LLW: waitpid %ld received %s\n",
(long) ret, status_to_str (*wstatp));
}
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
/* Filter all events. IOW, leave all events pending. We'll /* Filter all events. IOW, leave all events pending. We'll
randomly select an event LWP out of all that have events randomly select an event LWP out of all that have events
@@ -2884,11 +2917,12 @@ linux_process_target::stabilize_threads () @@ -2855,11 +2891,12 @@ linux_process_target::stabilize_threads ()
static ptid_t static ptid_t
ignore_event (struct target_waitstatus *ourstatus) ignore_event (struct target_waitstatus *ourstatus)
{ {
@ -422,10 +433,10 @@ index b1f997ae..823c5e56 100644
async_file_mark (); async_file_mark ();
- -
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
ourstatus->kind = TARGET_WAITKIND_IGNORE; ourstatus->set_ignore ();
return null_ptid; return null_ptid;
} }
@@ -3714,9 +3748,11 @@ linux_process_target::wait (ptid_t ptid, @@ -3615,9 +3652,11 @@ linux_process_target::wait (ptid_t ptid,
{ {
ptid_t event_ptid; ptid_t event_ptid;
@ -437,9 +448,9 @@ index b1f997ae..823c5e56 100644
do do
{ {
@@ -3726,12 +3762,14 @@ linux_process_target::wait (ptid_t ptid, @@ -3627,12 +3666,14 @@ linux_process_target::wait (ptid_t ptid,
&& event_ptid == null_ptid && event_ptid == null_ptid
&& ourstatus->kind == TARGET_WAITKIND_IGNORE); && ourstatus->kind () == TARGET_WAITKIND_IGNORE);
+#ifndef __GENODE__ +#ifndef __GENODE__
/* If at least one stop was reported, there may be more. A single /* If at least one stop was reported, there may be more. A single
@ -452,7 +463,7 @@ index b1f997ae..823c5e56 100644
return event_ptid; return event_ptid;
} }
@@ -3741,6 +3779,9 @@ linux_process_target::wait (ptid_t ptid, @@ -3642,6 +3683,9 @@ linux_process_target::wait (ptid_t ptid,
static int static int
kill_lwp (unsigned long lwpid, int signo) kill_lwp (unsigned long lwpid, int signo)
{ {
@ -462,7 +473,7 @@ index b1f997ae..823c5e56 100644
int ret; int ret;
errno = 0; errno = 0;
@@ -3752,6 +3793,7 @@ kill_lwp (unsigned long lwpid, int signo) @@ -3653,6 +3697,7 @@ kill_lwp (unsigned long lwpid, int signo)
perror_with_name (("tkill")); perror_with_name (("tkill"));
} }
return ret; return ret;
@ -470,7 +481,7 @@ index b1f997ae..823c5e56 100644
} }
void void
@@ -4253,6 +4295,21 @@ linux_process_target::resume_one_lwp_throw (lwp_info *lwp, int step, @@ -4118,6 +4163,21 @@ linux_process_target::resume_one_lwp_throw (lwp_info *lwp, int step,
regcache_invalidate_thread (thread); regcache_invalidate_thread (thread);
errno = 0; errno = 0;
lwp->stepping = step; lwp->stepping = step;
@ -492,15 +503,15 @@ index b1f997ae..823c5e56 100644
if (step) if (step)
ptrace_request = PTRACE_SINGLESTEP; ptrace_request = PTRACE_SINGLESTEP;
else if (gdb_catching_syscalls_p (lwp)) else if (gdb_catching_syscalls_p (lwp))
@@ -4265,6 +4322,7 @@ linux_process_target::resume_one_lwp_throw (lwp_info *lwp, int step, @@ -4130,6 +4190,7 @@ linux_process_target::resume_one_lwp_throw (lwp_info *lwp, int step,
/* Coerce to a uintptr_t first to avoid potential gcc warning /* Coerce to a uintptr_t first to avoid potential gcc warning
of coercing an 8 byte integer to a 4 byte pointer. */ of coercing an 8 byte integer to a 4 byte pointer. */
(PTRACE_TYPE_ARG4) (uintptr_t) signal); (PTRACE_TYPE_ARG4) (uintptr_t) signal);
+#endif +#endif
current_thread = saved_thread;
if (errno) if (errno)
@@ -4308,7 +4366,7 @@ check_ptrace_stopped_lwp_gone (struct lwp_info *lp) {
@@ -4180,7 +4241,7 @@ check_ptrace_stopped_lwp_gone (struct lwp_info *lp)
(observed in Linux 3.18). See also the note on ESRCH in the (observed in Linux 3.18). See also the note on ESRCH in the
ptrace(2) man page. Instead, check whether the LWP has any state ptrace(2) man page. Instead, check whether the LWP has any state
other than ptrace-stopped. */ other than ptrace-stopped. */
@ -509,7 +520,7 @@ index b1f997ae..823c5e56 100644
/* Don't assume anything if /proc/PID/status can't be read. */ /* Don't assume anything if /proc/PID/status can't be read. */
if (linux_proc_pid_is_trace_stopped_nowarn (lwpid_of (thread)) == 0) if (linux_proc_pid_is_trace_stopped_nowarn (lwpid_of (thread)) == 0)
{ {
@@ -4316,6 +4374,7 @@ check_ptrace_stopped_lwp_gone (struct lwp_info *lp) @@ -4188,6 +4249,7 @@ check_ptrace_stopped_lwp_gone (struct lwp_info *lp)
lp->status_pending_p = 0; lp->status_pending_p = 0;
return 1; return 1;
} }
@ -517,7 +528,7 @@ index b1f997ae..823c5e56 100644
return 0; return 0;
} }
@@ -5135,6 +5194,7 @@ regsets_fetch_inferior_registers (struct regsets_info *regsets_info, @@ -4973,6 +5035,7 @@ regsets_fetch_inferior_registers (struct regsets_info *regsets_info,
optional, do not try it again for this process mode. */ optional, do not try it again for this process mode. */
disable_regset (regsets_info, regset); disable_regset (regsets_info, regset);
} }
@ -525,7 +536,7 @@ index b1f997ae..823c5e56 100644
else if (errno == ENODATA) else if (errno == ENODATA)
{ {
/* ENODATA may be returned if the regset is currently /* ENODATA may be returned if the regset is currently
@@ -5147,6 +5207,7 @@ regsets_fetch_inferior_registers (struct regsets_info *regsets_info, @@ -4985,6 +5048,7 @@ regsets_fetch_inferior_registers (struct regsets_info *regsets_info,
already gone, in which case we simply ignore attempts already gone, in which case we simply ignore attempts
to read its registers. */ to read its registers. */
} }
@ -533,7 +544,7 @@ index b1f997ae..823c5e56 100644
else else
{ {
char s[256]; char s[256];
@@ -5445,6 +5506,7 @@ linux_process_target::usr_store_inferior_registers (const regs_info *regs_info, @@ -5283,6 +5347,7 @@ linux_process_target::usr_store_inferior_registers (const regs_info *regs_info,
#endif #endif
} }
@ -541,7 +552,7 @@ index b1f997ae..823c5e56 100644
void void
linux_process_target::fetch_registers (regcache *regcache, int regno) linux_process_target::fetch_registers (regcache *regcache, int regno)
{ {
@@ -5500,6 +5562,7 @@ linux_process_target::store_registers (regcache *regcache, int regno) @@ -5338,6 +5403,7 @@ linux_process_target::store_registers (regcache *regcache, int regno)
usr_store_inferior_registers (regs_info, regcache, regno, 1); usr_store_inferior_registers (regs_info, regcache, regno, 1);
} }
} }
@ -549,31 +560,31 @@ index b1f997ae..823c5e56 100644
bool bool
linux_process_target::low_fetch_register (regcache *regcache, int regno) linux_process_target::low_fetch_register (regcache *regcache, int regno)
@@ -5515,6 +5578,7 @@ linux_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) @@ -5353,6 +5419,7 @@ linux_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
return the_target->read_memory (memaddr, myaddr, len); return the_target->read_memory (memaddr, myaddr, len);
} }
+#ifndef __GENODE__ +#ifndef __GENODE__
/* Copy LEN bytes from inferior's memory starting at MEMADDR
to debugger memory starting at MYADDR. */
@@ -5695,6 +5759,7 @@ linux_process_target::write_memory (CORE_ADDR memaddr, /* Helper for read_memory/write_memory using /proc/PID/mem. Because
we can use a single read/write call, this can be much more
@@ -5448,6 +5515,7 @@ linux_process_target::write_memory (CORE_ADDR memaddr,
return 0; return proc_xfer_memory (memaddr, nullptr, myaddr, len);
} }
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
void void
linux_process_target::look_up_symbols () linux_process_target::look_up_symbols ()
@@ -6430,6 +6495,7 @@ linux_process_target::done_accessing_memory () @@ -6153,6 +6221,7 @@ linux_process_target::unpause_all (bool unfreeze)
target_unpause_all (true); unstop_all_lwps (unfreeze, NULL);
} }
+#ifndef __GENODE__ +#ifndef __GENODE__
/* Extract &phdr and num_phdr in the inferior. Return 0 on success. */ /* Extract &phdr and num_phdr in the inferior. Return 0 on success. */
static int static int
@@ -6922,6 +6988,7 @@ linux_process_target::qxfer_libraries_svr4 (const char *annex, @@ -6712,6 +6781,7 @@ linux_process_target::qxfer_libraries_svr4 (const char *annex,
return len; return len;
} }
@ -581,7 +592,7 @@ index b1f997ae..823c5e56 100644
#ifdef HAVE_LINUX_BTRACE #ifdef HAVE_LINUX_BTRACE
@@ -7239,8 +7306,10 @@ initialize_low (void) @@ -7055,8 +7125,10 @@ initialize_low (void)
memset (&sigchld_action, 0, sizeof (sigchld_action)); memset (&sigchld_action, 0, sizeof (sigchld_action));
set_target_ops (the_linux_target); set_target_ops (the_linux_target);
@ -593,7 +604,7 @@ index b1f997ae..823c5e56 100644
sigchld_action.sa_handler = sigchld_handler; sigchld_action.sa_handler = sigchld_handler;
sigemptyset (&sigchld_action.sa_mask); sigemptyset (&sigchld_action.sa_mask);
diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h
index 0200e9e5..0e738698 100644 index aebfe05..e2115f7 100644
--- a/gdbserver/linux-low.h --- a/gdbserver/linux-low.h
+++ b/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h
@@ -20,11 +20,16 @@ @@ -20,11 +20,16 @@
@ -613,7 +624,7 @@ index 0200e9e5..0e738698 100644
/* Included for ptrace type definitions. */ /* Included for ptrace type definitions. */
#include "nat/linux-ptrace.h" #include "nat/linux-ptrace.h"
@@ -552,10 +557,11 @@ class linux_process_target : public process_stratum_target @@ -563,10 +568,11 @@ class linux_process_target : public process_stratum_target
error. */ error. */
int attach_lwp (ptid_t ptid); int attach_lwp (ptid_t ptid);
@ -627,7 +638,7 @@ index 0200e9e5..0e738698 100644
reap their exits until all other threads in the group have reap their exits until all other threads in the group have
exited. */ exited. */
diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc
index 79284473..56555d30 100644 index 4a538b1..a0ea200 100644
--- a/gdbserver/linux-x86-low.cc --- a/gdbserver/linux-x86-low.cc
+++ b/gdbserver/linux-x86-low.cc +++ b/gdbserver/linux-x86-low.cc
@@ -31,13 +31,19 @@ @@ -31,13 +31,19 @@
@ -650,9 +661,9 @@ index 79284473..56555d30 100644
#include "gdbsupport/agent.h" #include "gdbsupport/agent.h"
#include "tdesc.h" #include "tdesc.h"
#include "tracepoint.h" #include "tracepoint.h"
@@ -52,11 +58,23 @@ static struct target_desc *tdesc_amd64_linux_no_xml; @@ -52,11 +58,23 @@ static target_desc_up tdesc_amd64_linux_no_xml;
#endif #endif
static struct target_desc *tdesc_i386_linux_no_xml; static target_desc_up tdesc_i386_linux_no_xml;
- -
static unsigned char jump_insn[] = { 0xe9, 0, 0, 0, 0 }; static unsigned char jump_insn[] = { 0xe9, 0, 0, 0, 0 };
@ -673,9 +684,9 @@ index 79284473..56555d30 100644
+ +
+#else +#else
static const char *xmltarget_i386_linux_no_xml = "@<target>\ static const char xmltarget_i386_linux_no_xml[] = "@<target>\
<architecture>i386</architecture>\ <architecture>i386</architecture>\
@@ -70,7 +88,17 @@ static const char *xmltarget_amd64_linux_no_xml = "@<target>\ @@ -70,7 +88,17 @@ static const char xmltarget_amd64_linux_no_xml[] = "@<target>\
</target>"; </target>";
#endif #endif
@ -722,7 +733,7 @@ index 79284473..56555d30 100644
}; };
#define X86_64_NUM_REGS (sizeof (x86_64_regmap) / sizeof (x86_64_regmap[0])) #define X86_64_NUM_REGS (sizeof (x86_64_regmap) / sizeof (x86_64_regmap[0]))
@@ -287,6 +321,7 @@ is_64bit_tdesc (void) @@ -286,6 +320,7 @@ is_64bit_tdesc (thread_info *thread)
/* Called by libthread_db. */ /* Called by libthread_db. */
@ -730,7 +741,7 @@ index 79284473..56555d30 100644
ps_err_e ps_err_e
ps_get_thread_area (struct ps_prochandle *ph, ps_get_thread_area (struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base) lwpid_t lwpid, int idx, void **base)
@@ -325,6 +360,7 @@ ps_get_thread_area (struct ps_prochandle *ph, @@ -326,6 +361,7 @@ ps_get_thread_area (struct ps_prochandle *ph,
return PS_OK; return PS_OK;
} }
} }
@ -738,10 +749,10 @@ index 79284473..56555d30 100644
/* Get the thread area address. This is used to recognize which /* Get the thread area address. This is used to recognize which
thread is which when tracing with the in-process agent library. We thread is which when tracing with the in-process agent library. We
@@ -380,7 +416,11 @@ x86_target::low_cannot_store_register (int regno) @@ -382,7 +418,11 @@ x86_target::low_cannot_store_register (int regno)
{ {
#ifdef __x86_64__ #ifdef __x86_64__
if (is_64bit_tdesc ()) if (is_64bit_tdesc (current_thread))
+#ifdef __GENODE__ +#ifdef __GENODE__
+ return regno >= X86_64_NUM_REGS; + return regno >= X86_64_NUM_REGS;
+#else +#else
@ -750,10 +761,10 @@ index 79284473..56555d30 100644
#endif #endif
return regno >= I386_NUM_REGS; return regno >= I386_NUM_REGS;
@@ -391,12 +431,30 @@ x86_target::low_cannot_fetch_register (int regno) @@ -393,12 +433,30 @@ x86_target::low_cannot_fetch_register (int regno)
{ {
#ifdef __x86_64__ #ifdef __x86_64__
if (is_64bit_tdesc ()) if (is_64bit_tdesc (current_thread))
+#ifdef __GENODE__ +#ifdef __GENODE__
+ return regno >= X86_64_NUM_REGS; + return regno >= X86_64_NUM_REGS;
+#else +#else
@ -779,20 +790,21 @@ index 79284473..56555d30 100644
+#endif /* __x86_64__ */ +#endif /* __x86_64__ */
+ +
static void static void
x86_fill_gregset (struct regcache *regcache, void *buf) collect_register_i386 (struct regcache *regcache, int regno, void *buf)
{ {
@@ -420,8 +478,10 @@ x86_fill_gregset (struct regcache *regcache, void *buf) @@ -447,9 +505,11 @@ x86_fill_gregset (struct regcache *regcache, void *buf)
for (i = 0; i < I386_NUM_REGS; i++) for (i = 0; i < I386_NUM_REGS; i++)
collect_register (regcache, i, ((char *) buf) + i386_regmap[i]); collect_register_i386 (regcache, i, ((char *) buf) + i386_regmap[i]);
+#ifndef __GENODE__ +#ifndef __GENODE__
collect_register_by_name (regcache, "orig_eax", /* Handle ORIG_EAX, which is not in i386_regmap. */
collect_register_i386 (regcache, find_regno (regcache->tdesc, "orig_eax"),
((char *) buf) + ORIG_EAX * REGSIZE); ((char *) buf) + ORIG_EAX * REGSIZE);
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
}
#ifdef __x86_64__ static void
/* Sign extend EAX value to avoid potential syscall restart @@ -471,8 +531,10 @@ x86_store_gregset (struct regcache *regcache, const void *buf)
@@ -458,8 +518,10 @@ x86_store_gregset (struct regcache *regcache, const void *buf)
for (i = 0; i < I386_NUM_REGS; i++) for (i = 0; i < I386_NUM_REGS; i++)
supply_register (regcache, i, ((char *) buf) + i386_regmap[i]); supply_register (regcache, i, ((char *) buf) + i386_regmap[i]);
@ -803,7 +815,7 @@ index 79284473..56555d30 100644
} }
static void static void
@@ -588,11 +650,23 @@ x86_target::low_set_pc (regcache *regcache, CORE_ADDR pc) @@ -601,11 +663,23 @@ x86_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
int int
x86_target::low_decr_pc_after_break () x86_target::low_decr_pc_after_break ()
{ {
@ -827,7 +839,7 @@ index 79284473..56555d30 100644
#define x86_breakpoint_len 1 #define x86_breakpoint_len 1
bool bool
@@ -601,7 +675,7 @@ x86_target::low_breakpoint_at (CORE_ADDR pc) @@ -614,7 +688,7 @@ x86_target::low_breakpoint_at (CORE_ADDR pc)
unsigned char c; unsigned char c;
read_memory (pc, &c, 1); read_memory (pc, &c, 1);
@ -836,7 +848,7 @@ index 79284473..56555d30 100644
return true; return true;
return false; return false;
@@ -689,8 +763,12 @@ x86_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr, @@ -702,8 +776,12 @@ x86_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
bool bool
x86_target::low_stopped_by_watchpoint () x86_target::low_stopped_by_watchpoint ()
{ {
@ -849,7 +861,7 @@ index 79284473..56555d30 100644
} }
CORE_ADDR CORE_ADDR
@@ -769,8 +847,10 @@ x86_target::low_new_fork (process_info *parent, process_info *child) @@ -782,8 +860,10 @@ x86_target::low_new_fork (process_info *parent, process_info *child)
void void
x86_target::low_prepare_to_resume (lwp_info *lwp) x86_target::low_prepare_to_resume (lwp_info *lwp)
{ {
@ -860,7 +872,7 @@ index 79284473..56555d30 100644
} }
/* See nat/x86-dregs.h. */ /* See nat/x86-dregs.h. */
@@ -798,6 +878,7 @@ x86_debug_reg_state (pid_t pid) @@ -811,6 +891,7 @@ x86_debug_reg_state (pid_t pid)
bool bool
x86_target::low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction) x86_target::low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction)
{ {
@ -868,7 +880,7 @@ index 79284473..56555d30 100644
#ifdef __x86_64__ #ifdef __x86_64__
unsigned int machine; unsigned int machine;
int tid = lwpid_of (current_thread); int tid = lwpid_of (current_thread);
@@ -812,9 +893,11 @@ x86_target::low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction) @@ -825,9 +906,11 @@ x86_target::low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction)
return amd64_linux_siginfo_fixup_common (ptrace, inf, direction, return amd64_linux_siginfo_fixup_common (ptrace, inf, direction,
FIXUP_X32); FIXUP_X32);
#endif #endif
@ -880,7 +892,7 @@ index 79284473..56555d30 100644
static int use_xml; static int use_xml;
@@ -855,6 +938,13 @@ int have_ptrace_getfpxregs = @@ -868,6 +951,13 @@ int have_ptrace_getfpxregs =
static const struct target_desc * static const struct target_desc *
x86_linux_read_description (void) x86_linux_read_description (void)
{ {
@ -894,7 +906,7 @@ index 79284473..56555d30 100644
unsigned int machine; unsigned int machine;
int is_elf64; int is_elf64;
int xcr0_features; int xcr0_features;
@@ -970,7 +1060,7 @@ x86_linux_read_description (void) @@ -983,7 +1073,7 @@ x86_linux_read_description (void)
return tdesc; return tdesc;
} }
@ -903,7 +915,7 @@ index 79284473..56555d30 100644
gdb_assert_not_reached ("failed to return tdesc"); gdb_assert_not_reached ("failed to return tdesc");
} }
@@ -1005,6 +1095,14 @@ x86_target::update_xmltarget () @@ -1016,6 +1106,14 @@ x86_target::update_xmltarget ()
void void
x86_target::process_qsupported (gdb::array_view<const char * const> features) x86_target::process_qsupported (gdb::array_view<const char * const> features)
{ {
@ -918,7 +930,7 @@ index 79284473..56555d30 100644
/* Return if gdb doesn't support XML. If gdb sends "xmlRegisters=" /* Return if gdb doesn't support XML. If gdb sends "xmlRegisters="
with "i386" in qSupported query, it supports x86 XML target with "i386" in qSupported query, it supports x86 XML target
descriptions. */ descriptions. */
@@ -1045,13 +1143,24 @@ static struct regsets_info x86_regsets_info = @@ -1056,13 +1154,24 @@ static struct regsets_info x86_regsets_info =
}; };
#ifdef __x86_64__ #ifdef __x86_64__
@ -943,7 +955,7 @@ index 79284473..56555d30 100644
static struct usrregs_info i386_linux_usrregs_info = static struct usrregs_info i386_linux_usrregs_info =
{ {
I386_NUM_REGS, I386_NUM_REGS,
@@ -1113,6 +1222,9 @@ x86_target::low_get_syscall_trapinfo (regcache *regcache, int *sysno) @@ -1124,6 +1233,9 @@ x86_target::low_get_syscall_trapinfo (regcache *regcache, int *sysno)
bool bool
x86_target::supports_tracepoints () x86_target::supports_tracepoints ()
{ {
@ -954,7 +966,7 @@ index 79284473..56555d30 100644
} }
diff --git a/gdbserver/linux-x86-tdesc.cc b/gdbserver/linux-x86-tdesc.cc diff --git a/gdbserver/linux-x86-tdesc.cc b/gdbserver/linux-x86-tdesc.cc
index 4682eb4c..f0861968 100644 index ba81daa..5eac8a2 100644
--- a/gdbserver/linux-x86-tdesc.cc --- a/gdbserver/linux-x86-tdesc.cc
+++ b/gdbserver/linux-x86-tdesc.cc +++ b/gdbserver/linux-x86-tdesc.cc
@@ -87,7 +87,11 @@ i386_linux_read_description (uint64_t xcr0) @@ -87,7 +87,11 @@ i386_linux_read_description (uint64_t xcr0)
@ -982,7 +994,7 @@ index 4682eb4c..f0861968 100644
init_target_desc (*tdesc, amd64_expedite_regs); init_target_desc (*tdesc, amd64_expedite_regs);
} }
diff --git a/gdbserver/remote-utils.cc b/gdbserver/remote-utils.cc diff --git a/gdbserver/remote-utils.cc b/gdbserver/remote-utils.cc
index 1195ce87..6e913ea2 100644 index 80310bc..a039f0d 100644
--- a/gdbserver/remote-utils.cc --- a/gdbserver/remote-utils.cc
+++ b/gdbserver/remote-utils.cc +++ b/gdbserver/remote-utils.cc
@@ -30,6 +30,12 @@ @@ -30,6 +30,12 @@
@ -1010,7 +1022,7 @@ index 1195ce87..6e913ea2 100644
static int listen_desc = -1; static int listen_desc = -1;
#ifdef USE_WIN32API #ifdef USE_WIN32API
@@ -339,7 +348,11 @@ remote_open (const char *name) @@ -341,7 +350,11 @@ remote_open (const char *name)
struct stat statbuf; struct stat statbuf;
if (stat (name, &statbuf) == 0 if (stat (name, &statbuf) == 0
@ -1023,7 +1035,7 @@ index 1195ce87..6e913ea2 100644
else else
{ {
diff --git a/gdbserver/server.cc b/gdbserver/server.cc diff --git a/gdbserver/server.cc b/gdbserver/server.cc
index 9c403a64..e0d1dfc1 100644 index d802e8b..41a2305 100644
--- a/gdbserver/server.cc --- a/gdbserver/server.cc
+++ b/gdbserver/server.cc +++ b/gdbserver/server.cc
@@ -32,6 +32,14 @@ @@ -32,6 +32,14 @@
@ -1041,7 +1053,7 @@ index 9c403a64..e0d1dfc1 100644
#include "tracepoint.h" #include "tracepoint.h"
#include "dll.h" #include "dll.h"
#include "hostio.h" #include "hostio.h"
@@ -1286,7 +1294,9 @@ handle_detach (char *own_buf) @@ -1264,7 +1272,9 @@ handle_detach (char *own_buf)
need to hang around doing nothing, until the child is need to hang around doing nothing, until the child is
gone. */ gone. */
join_inferior (pid); join_inferior (pid);
@ -1051,7 +1063,7 @@ index 9c403a64..e0d1dfc1 100644
} }
} }
} }
@@ -3156,11 +3166,11 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len) @@ -3162,11 +3172,11 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len)
return; return;
} }
} }
@ -1065,7 +1077,7 @@ index 9c403a64..e0d1dfc1 100644
if (startswith (own_buf, "vAttach;")) if (startswith (own_buf, "vAttach;"))
{ {
if ((!extended_protocol || !cs.multi_process) && target_running ()) if ((!extended_protocol || !cs.multi_process) && target_running ())
@@ -3785,7 +3795,9 @@ captured_main (int argc, char *argv[]) @@ -3867,7 +3877,9 @@ captured_main (int argc, char *argv[])
opened by remote_prepare. */ opened by remote_prepare. */
notice_open_fds (); notice_open_fds ();
@ -1075,7 +1087,7 @@ index 9c403a64..e0d1dfc1 100644
/* We need to know whether the remote connection is stdio before /* We need to know whether the remote connection is stdio before
starting the inferior. Inferiors created in this scenario have starting the inferior. Inferiors created in this scenario have
@@ -3987,7 +3999,11 @@ captured_main (int argc, char *argv[]) @@ -4070,7 +4082,11 @@ captured_main (int argc, char *argv[])
/* Main function. */ /* Main function. */
int int
@ -1087,7 +1099,7 @@ index 9c403a64..e0d1dfc1 100644
{ {
try try
@@ -4088,6 +4104,10 @@ process_serial_event (void) @@ -4169,6 +4185,10 @@ process_serial_event (void)
} }
response_needed = true; response_needed = true;
@ -1098,7 +1110,7 @@ index 9c403a64..e0d1dfc1 100644
char ch = cs.own_buf[0]; char ch = cs.own_buf[0];
switch (ch) switch (ch)
{ {
@@ -4335,7 +4355,11 @@ process_serial_event (void) @@ -4415,7 +4435,11 @@ process_serial_event (void)
return 0; return 0;
} }
else else
@ -1110,7 +1122,7 @@ index 9c403a64..e0d1dfc1 100644
case 'T': case 'T':
{ {
@@ -4410,7 +4434,9 @@ process_serial_event (void) @@ -4489,7 +4513,9 @@ process_serial_event (void)
cs.own_buf[0] = '\0'; cs.own_buf[0] = '\0';
break; break;
} }
@ -1122,7 +1134,7 @@ index 9c403a64..e0d1dfc1 100644
putpkt_binary (cs.own_buf, new_packet_len); putpkt_binary (cs.own_buf, new_packet_len);
else else
diff --git a/gdbsupport/common-defs.h b/gdbsupport/common-defs.h diff --git a/gdbsupport/common-defs.h b/gdbsupport/common-defs.h
index e5ece3ba..8fc25878 100644 index 5e529f6..19521c7 100644
--- a/gdbsupport/common-defs.h --- a/gdbsupport/common-defs.h
+++ b/gdbsupport/common-defs.h +++ b/gdbsupport/common-defs.h
@@ -28,7 +28,9 @@ @@ -28,7 +28,9 @@
@ -1135,7 +1147,7 @@ index e5ece3ba..8fc25878 100644
/* From: /* From:
https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html
@@ -102,6 +104,7 @@ @@ -104,6 +106,7 @@
#endif #endif
#include "ansidecl.h" #include "ansidecl.h"
@ -1143,16 +1155,16 @@ index e5ece3ba..8fc25878 100644
/* This is defined by ansidecl.h, but we prefer gnulib's version. On /* This is defined by ansidecl.h, but we prefer gnulib's version. On
MinGW, gnulib might enable __USE_MINGW_ANSI_STDIO, which may or not MinGW, gnulib might enable __USE_MINGW_ANSI_STDIO, which may or not
require use of attribute gnu_printf instead of printf. gnulib require use of attribute gnu_printf instead of printf. gnulib
@@ -109,6 +112,7 @@ @@ -186,6 +189,7 @@
is compatible with ATTRIBUTE_PRINTF, simply use it. */ with it everywhere. */
#undef ATTRIBUTE_PRINTF #undef ATTRIBUTE_NONNULL
#define ATTRIBUTE_PRINTF _GL_ATTRIBUTE_FORMAT_PRINTF #define ATTRIBUTE_NONNULL(m)
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
#if GCC_VERSION >= 3004 #if GCC_VERSION >= 3004
#define ATTRIBUTE_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) #define ATTRIBUTE_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
diff --git a/gdbsupport/common-inferior.cc b/gdbsupport/common-inferior.cc diff --git a/gdbsupport/common-inferior.cc b/gdbsupport/common-inferior.cc
index aed88409..2f03118d 100644 index 55149ec..53fa051 100644
--- a/gdbsupport/common-inferior.cc --- a/gdbsupport/common-inferior.cc
+++ b/gdbsupport/common-inferior.cc +++ b/gdbsupport/common-inferior.cc
@@ -23,7 +23,11 @@ @@ -23,7 +23,11 @@
@ -1168,7 +1180,7 @@ index aed88409..2f03118d 100644
/* See common-inferior.h. */ /* See common-inferior.h. */
diff --git a/gdbsupport/common-types.h b/gdbsupport/common-types.h diff --git a/gdbsupport/common-types.h b/gdbsupport/common-types.h
index 23f983d8..6c67d21d 100644 index e863d65..da0f8e8 100644
--- a/gdbsupport/common-types.h --- a/gdbsupport/common-types.h
+++ b/gdbsupport/common-types.h +++ b/gdbsupport/common-types.h
@@ -26,12 +26,29 @@ @@ -26,12 +26,29 @@
@ -1202,7 +1214,7 @@ index 23f983d8..6c67d21d 100644
/* * The largest CORE_ADDR value. */ /* * The largest CORE_ADDR value. */
#define CORE_ADDR_MAX (~(CORE_ADDR) 0) #define CORE_ADDR_MAX (~(CORE_ADDR) 0)
diff --git a/gdbsupport/gdb-sigmask.h b/gdbsupport/gdb-sigmask.h diff --git a/gdbsupport/gdb-sigmask.h b/gdbsupport/gdb-sigmask.h
index b4988cb4..a15601eb 100644 index 492b10e..26c3ebd 100644
--- a/gdbsupport/gdb-sigmask.h --- a/gdbsupport/gdb-sigmask.h
+++ b/gdbsupport/gdb-sigmask.h +++ b/gdbsupport/gdb-sigmask.h
@@ -39,6 +39,10 @@ @@ -39,6 +39,10 @@
@ -1217,40 +1229,27 @@ index b4988cb4..a15601eb 100644
diff --git a/gdbsupport/gdb_tilde_expand.cc b/gdbsupport/gdb_tilde_expand.cc diff --git a/gdbsupport/gdb_tilde_expand.cc b/gdbsupport/gdb_tilde_expand.cc
index b31fc484..dcb32777 100644 index d6bdb87..246625c 100644
--- a/gdbsupport/gdb_tilde_expand.cc --- a/gdbsupport/gdb_tilde_expand.cc
+++ b/gdbsupport/gdb_tilde_expand.cc +++ b/gdbsupport/gdb_tilde_expand.cc
@@ -71,7 +71,12 @@ private: @@ -97,7 +97,12 @@ gdb_tilde_expand (const char *dir)
std::string const std::string to_expand (d.cbegin (), first_sep);
gdb_tilde_expand (const char *dir) const std::string remainder (first_sep, d.cend ());
{
+#ifdef __GENODE__ +#ifdef __GENODE__
+ /* GLOB_TILDE_CHECK is not defined in Genode's libc */ + /* GLOB_TILDE_CHECK is not defined in Genode's libc */
+ gdb_glob glob (dir, GLOB_TILDE, NULL); + const gdb_glob glob (to_expand.c_str (), GLOB_TILDE, nullptr);
+#else +#else
gdb_glob glob (dir, GLOB_TILDE_CHECK, NULL); const gdb_glob glob (to_expand.c_str (), GLOB_TILDE_CHECK, nullptr);
+#endif /* __GENODE__ */ +#endif /* __GENODE__ */
gdb_assert (glob.pathc () > 0); gdb_assert (glob.pathc () == 1);
/* "glob" may return more than one match to the path provided by the return std::string (glob.pathv ()[0]) + remainder;
@@ -86,7 +91,12 @@ gdb_tilde_expand (const char *dir)
gdb::unique_xmalloc_ptr<char>
gdb_tilde_expand_up (const char *dir)
{
+#ifdef __GENODE__
+ /* GLOB_TILDE_CHECK is not defined in Genode's libc */
+ gdb_glob glob (dir, GLOB_TILDE, NULL);
+#else
gdb_glob glob (dir, GLOB_TILDE_CHECK, NULL);
+#endif
gdb_assert (glob.pathc () > 0);
/* "glob" may return more than one match to the path provided by the
diff --git a/gdbsupport/pathstuff.cc b/gdbsupport/pathstuff.cc diff --git a/gdbsupport/pathstuff.cc b/gdbsupport/pathstuff.cc
index 48c477fa..c3065efe 100644 index d1a61f4..69ecd7a 100644
--- a/gdbsupport/pathstuff.cc --- a/gdbsupport/pathstuff.cc
+++ b/gdbsupport/pathstuff.cc +++ b/gdbsupport/pathstuff.cc
@@ -55,6 +55,7 @@ gdb_realpath (const char *filename) @@ -59,6 +59,7 @@ gdb_realpath (const char *filename)
does not exist locally), we rely instead on GetFullPathName to does not exist locally), we rely instead on GetFullPathName to
perform the canonicalization. */ perform the canonicalization. */
@ -1258,7 +1257,7 @@ index 48c477fa..c3065efe 100644
#if defined (_WIN32) #if defined (_WIN32)
{ {
char buf[MAX_PATH]; char buf[MAX_PATH];
@@ -75,6 +76,7 @@ gdb_realpath (const char *filename) @@ -79,6 +80,7 @@ gdb_realpath (const char *filename)
return gdb::unique_xmalloc_ptr<char> (rp); return gdb::unique_xmalloc_ptr<char> (rp);
} }
#endif #endif
@ -1266,3 +1265,20 @@ index 48c477fa..c3065efe 100644
/* This system is a lost cause, just dup the buffer. */ /* This system is a lost cause, just dup the buffer. */
return make_unique_xstrdup (filename); return make_unique_xstrdup (filename);
diff --git a/gnulib/import/rawmemchr.c b/gnulib/import/rawmemchr.c
index ea68c1b..5ce70ed 100644
--- a/gnulib/import/rawmemchr.c
+++ b/gnulib/import/rawmemchr.c
@@ -34,10 +34,11 @@ rawmemchr (const void *s, int c_in)
{
/* Change this typedef to experiment with performance. */
typedef uintptr_t longword;
+#ifndef __GENODE__
/* If you change the "uintptr_t", you should change UINTPTR_WIDTH to match.
This verifies that the type does not have padding bits. */
verify (UINTPTR_WIDTH == UCHAR_WIDTH * sizeof (longword));
-
+#endif /* __GENODE__ */
const unsigned char *char_ptr;
unsigned char c = c_in;

View File

@ -4,33 +4,18 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
--- ---
gdb/configure | 10 +++++----- gdb/configure | 2 +-
gdb/dwarf2/index-write.c | 2 +- gdb/dwarf2/index-write.c | 2 +-
gdbsupport/scoped_ignore_signal.h | 2 ++
gnulib/config.in | 2 ++ gnulib/config.in | 2 ++
sim/common/Make-common.in | 2 +- sim/common/Make-common.in | 2 +-
4 files changed, 9 insertions(+), 7 deletions(-) 5 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/gdb/configure b/gdb/configure diff --git a/gdb/configure b/gdb/configure
index 03464ae5..6f705fc7 100755 index bdc84be..5122989 100755
--- a/gdb/configure --- a/gdb/configure
+++ b/gdb/configure +++ b/gdb/configure
@@ -6699,11 +6699,11 @@ fi @@ -26053,7 +26053,7 @@ sigjmp_buf env;
# configuration.
gdb_host_obs=posix-hdep.o
-if test "${target}" = "${host}"; then
- gdb_native=yes
-else
+#if test "${target}" = "${host}"; then
+# gdb_native=yes
+#else
gdb_native=no
-fi
+#fi
. $srcdir/configure.host
@@ -14353,7 +14353,7 @@ sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);
return 0; return 0;
} }
_ACEOF _ACEOF
@ -40,10 +25,10 @@ index 03464ae5..6f705fc7 100755
else else
gdb_cv_func_sigsetjmp=no gdb_cv_func_sigsetjmp=no
diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
index 0079c0fe..376a9151 100644 index ced58ea..ef0bf35 100644
--- a/gdb/dwarf2/index-write.c --- a/gdb/dwarf2/index-write.c
+++ b/gdb/dwarf2/index-write.c +++ b/gdb/dwarf2/index-write.c
@@ -777,7 +777,7 @@ class debug_names @@ -618,7 +618,7 @@ class debug_names
gdb_assert (m_abbrev_table.empty ()); gdb_assert (m_abbrev_table.empty ());
const size_t name_count = m_name_to_value_set.size (); const size_t name_count = m_name_to_value_set.size ();
m_bucket_table.resize m_bucket_table.resize
@ -52,36 +37,49 @@ index 0079c0fe..376a9151 100644
m_hash_table.reserve (name_count); m_hash_table.reserve (name_count);
m_name_table_string_offs.reserve (name_count); m_name_table_string_offs.reserve (name_count);
m_name_table_entry_offs.reserve (name_count); m_name_table_entry_offs.reserve (name_count);
diff --git a/gdbsupport/scoped_ignore_signal.h b/gdbsupport/scoped_ignore_signal.h
index 1c015a9..5105a94 100644
--- a/gdbsupport/scoped_ignore_signal.h
+++ b/gdbsupport/scoped_ignore_signal.h
@@ -22,6 +22,8 @@
#include <signal.h>
+#undef HAVE_SIGPROCMASK
+
/* RAII class used to ignore a signal in a scope. If sigprocmask is
supported, then the signal is only ignored by the calling thread.
Otherwise, the signal disposition is set to SIG_IGN, which affects
diff --git a/gnulib/config.in b/gnulib/config.in diff --git a/gnulib/config.in b/gnulib/config.in
index d8a5e8be..cc1cc9fc 100644 index f70c6a5..09675d9 100644
--- a/gnulib/config.in --- a/gnulib/config.in
+++ b/gnulib/config.in +++ b/gnulib/config.in
@@ -1192,6 +1192,7 @@ @@ -1492,6 +1492,7 @@
/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ /* Define to 1 on Solaris. */
#undef _NETBSD_SOURCE #undef _LCONV_C99
+#if 0 +#if 0
/* The _Noreturn keyword of C11. */ /* The _Noreturn keyword of C11. */
#ifndef _Noreturn #ifndef _Noreturn
# if (defined __cplusplus \ # if (defined __cplusplus \
@@ -1220,6 +1221,7 @@ @@ -1521,6 +1522,7 @@
# define _Noreturn # define _Noreturn
# endif # endif
#endif #endif
+#endif +#endif
/* Define to 2 if the system does not provide POSIX.1 features except with /* Define to 1 in order to get the POSIX compatible declarations of socket
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 21e1d991..2ea1ab60 100644 index 88c66b3..645bf41 100644
--- a/sim/common/Make-common.in --- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in +++ b/sim/common/Make-common.in
@@ -236,7 +236,7 @@ CSEARCH = -I. -I$(srcdir) -I../common -I$(srccom) \ @@ -175,7 +175,7 @@ CSEARCH = -I. -I$(srcdir) -I$(srccom) \
-I../../bfd -I$(srcroot)/bfd \ -I../../bfd -I$(srcroot)/bfd \
-I../../opcodes -I$(srcroot)/opcodes \ -I$(srcroot)/opcodes \
@INCINTL@ -I../..
-ALL_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(CFLAGS) -ALL_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(INCGNU) $(SIM_EXTRA_CFLAGS) $(CFLAGS)
+ALL_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(CPPFLAGS) $(CFLAGS) +ALL_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(INCGNU) $(SIM_EXTRA_CFLAGS) $(CPPFLAGS) $(CFLAGS)
BUILD_CFLAGS = -g -O $(CSEARCH) BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(CSEARCH)
COMMON_DEP_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) COMMON_DEP_CFLAGS = $(CONFIG_CFLAGS) $(CSEARCH) $(SIM_EXTRA_CFLAGS)

View File

@ -11,19 +11,19 @@ Enable shared library support.
4 files changed, 17 insertions(+), 2 deletions(-) 4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index 3a24b0d9..1d8cfd0b 100644 index b8cd818..74cb9cf 100644
--- a/gdb/amd64-tdep.c --- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c
@@ -50,6 +50,8 @@ @@ -51,6 +51,8 @@
#include "osabi.h"
#include "x86-tdep.h" #include "x86-tdep.h"
#include "amd64-ravenscar-thread.h"
+#include "solib-svr4.h" +#include "solib-svr4.h"
+ +
/* Note that the AMD64 architecture was previously known as x86-64. /* Note that the AMD64 architecture was previously known as x86-64.
The latter is (forever) engraved into the canonical system name as The latter is (forever) engraved into the canonical system name as
returned by config.guess, and used as the name for the AMD64 port returned by config.guess, and used as the name for the AMD64 port
@@ -3127,6 +3129,8 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch, @@ -3122,6 +3124,8 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
static const char *const stap_register_indirection_suffixes[] = { ")", static const char *const stap_register_indirection_suffixes[] = { ")",
NULL }; NULL };
@ -33,10 +33,10 @@ index 3a24b0d9..1d8cfd0b 100644
floating-point registers. */ floating-point registers. */
tdep->sizeof_fpregset = I387_SIZEOF_FXSAVE; tdep->sizeof_fpregset = I387_SIZEOF_FXSAVE;
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 415f11e1..be342117 100644 index 58b9c5f..2fcf104 100644
--- a/gdb/arm-tdep.c --- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c
@@ -66,6 +66,8 @@ @@ -67,6 +67,8 @@
#include "gdbsupport/selftest.h" #include "gdbsupport/selftest.h"
#endif #endif
@ -44,9 +44,9 @@ index 415f11e1..be342117 100644
+ +
static bool arm_debug; static bool arm_debug;
/* Macros for setting and testing a bit in a minimal symbol that marks /* Print an "arm" debug statement. */
@@ -9337,6 +9339,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) @@ -10570,6 +10572,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
tdep = XCNEW (struct gdbarch_tdep); arm_gdbarch_tdep *tdep = new arm_gdbarch_tdep;
gdbarch = gdbarch_alloc (&info, tdep); gdbarch = gdbarch_alloc (&info, tdep);
+ set_solib_svr4_fetch_link_map_offsets(gdbarch, svr4_ilp32_fetch_link_map_offsets); + set_solib_svr4_fetch_link_map_offsets(gdbarch, svr4_ilp32_fetch_link_map_offsets);
@ -55,19 +55,19 @@ index 415f11e1..be342117 100644
These are gdbarch discriminators, like the OSABI. */ These are gdbarch discriminators, like the OSABI. */
tdep->arm_abi = arm_abi; tdep->arm_abi = arm_abi;
diff --git a/gdb/configure.tgt b/gdb/configure.tgt diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index a3e11c4b..3756809c 100644 index e84e222..d7d8e29 100644
--- a/gdb/configure.tgt --- a/gdb/configure.tgt
+++ b/gdb/configure.tgt +++ b/gdb/configure.tgt
@@ -189,7 +189,7 @@ arm*-*-symbianelf*) @@ -200,7 +200,7 @@ arm*-*-openbsd*)
;; ;;
arm*-*-*) arm*-*-*)
# Target: ARM embedded system # Target: ARM embedded system
- gdb_target_obs="arm-pikeos-tdep.o" - gdb_target_obs="arm-pikeos-tdep.o"
+ gdb_target_obs="solib-svr4.o" + gdb_target_obs="solib-svr4.o"
gdb_sim=../sim/arm/libsim.a
;; ;;
@@ -725,8 +725,11 @@ x86_64-*-dicos*) avr-*-*)
@@ -698,8 +698,11 @@ x86_64-*-dicos*)
dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o" dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o"
;; ;;
x86_64-*-elf*) x86_64-*-elf*)
@ -81,20 +81,20 @@ index a3e11c4b..3756809c 100644
# Target: GNU/Linux x86-64 # Target: GNU/Linux x86-64
gdb_target_obs="amd64-linux-tdep.o ${i386_tobjs} \ gdb_target_obs="amd64-linux-tdep.o ${i386_tobjs} \
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index c33983b6..057f3e3c 100644 index 88daca4..49a7497 100644
--- a/gdb/i386-tdep.c --- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c
@@ -67,6 +67,8 @@ @@ -70,6 +70,8 @@
#include <unordered_set> #include "infcall.h"
#include "producer.h" #include "maint.h"
+#include "solib-svr4.h" +#include "solib-svr4.h"
+ +
/* Register names. */ /* Register names. */
static const char *i386_register_names[] = static const char * const i386_register_names[] =
@@ -8465,6 +8467,8 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) @@ -8459,6 +8461,8 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
tdep = XCNEW (struct gdbarch_tdep); i386_gdbarch_tdep *tdep = new i386_gdbarch_tdep;
gdbarch = gdbarch_alloc (&info, tdep); gdbarch = gdbarch_alloc (&info, tdep);
+ set_solib_svr4_fetch_link_map_offsets(gdbarch, svr4_ilp32_fetch_link_map_offsets); + set_solib_svr4_fetch_link_map_offsets(gdbarch, svr4_ilp32_fetch_link_map_offsets);

View File

@ -11,11 +11,19 @@ CFLAGS += -Wno-error=sizeof-pointer-memaccess \
-Wno-error=unused-value \ -Wno-error=unused-value \
-Wno-error=overflow -Wno-error=overflow
LIBS += stdcxx ncurses expat LIBS += stdcxx ncurses expat gmp
# workaround for problems with makeinfo version 5 # workaround for problems with makeinfo version 5
MAKE_ENV += "MAKEINFO=true" MAKE_ENV += "MAKEINFO=true"
INSTALL_TARGET = install INSTALL_TARGET = install
.SECONDARY: dummy_libs
dummy_libs: libgmp.a
libgmp.a:
$(VERBOSE)$(AR) -rc $@
Makefile: dummy_libs
include $(call select_from_repositories,mk/noux.mk) include $(call select_from_repositories,mk/noux.mk)

View File

@ -138,6 +138,13 @@ EXPAT_OK = $(call check_equal_f,\
$(shell pkg-config --exists expat && echo ok),ok,\ $(shell pkg-config --exists expat && echo ok),ok,\
Need to have 'libexpat' installed.) Need to have 'libexpat' installed.)
#
# Check if 'libgmp' is installed
#
GMP_OK = $(call check_equal_f,\
$(shell pkg-config --exists gmp && echo ok),ok,\
Need to have 'libgmp' installed.)
# #
# Check if 'GNAT' is installed # Check if 'GNAT' is installed
# #
@ -155,6 +162,10 @@ ifneq ($(filter ada,$(ENABLE_FEATURES)),)
TOOLS_OK += $(GNAT_OK) $(GPRBUILD_OK) TOOLS_OK += $(GNAT_OK) $(GPRBUILD_OK)
endif endif
ifneq ($(filter gdb,$(ENABLE_FEATURES)),)
TOOLS_OK += $(GMP_OK)
endif
ifneq ($(strip $(TOOLS_OK)),) ifneq ($(strip $(TOOLS_OK)),)
$(error Please install missing tools.) $(error Please install missing tools.)
endif endif