123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633 |
- Patch pending upstream, probably acceptable.
- --------------------------------------------
- Daniel Jacobowitz <drow@mvista.com> writes:
- > I like this. The way func_frame_chain_valid should really be used is
- > by something like:
- >
- > /* NOTE: tm-i386nw.h and tm-i386v4.h override this. */
- > set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
- >
- > (copied from i386-tdep.c).
- >
- > Does this patch work for you?
- Yes, thanks. I've included a revised version of my patch below.
- > I'm curious as to why we can't just set this universally, or at least a
- > little more globally. Most things that have a main () use it as a
- > normal main (). I'd propose that we set it as the default frame chain,
- > and provide/document an option to ignore inside_main_func.
- Well, gdbarch is never supposed to change the default behavior of
- macros; this helps us convert pre-gdbarch targets incrementally.
- Simply turning on gdbarch for one's target ideally wouldn't change its
- behavior at all.
- [Patch revised for Debian snapshot]
- --- snap/gdb/i386-linux-tdep.c.orig 2002-08-18 19:53:57.000000000 -0400
- +++ snap/gdb/i386-linux-tdep.c 2002-08-18 19:54:31.000000000 -0400
- @@ -452,6 +452,9 @@
-
- set_solib_svr4_fetch_link_map_offsets (gdbarch,
- i386_linux_svr4_fetch_link_map_offsets);
- +
- + set_gdbarch_frame_chain_valid (gdbarch,
- + generic_func_frame_chain_valid);
- }
-
- /* Provide a prototype to silence -Wmissing-prototypes. */
- [Hurd needs 6. Take 8, since it does no real harm.]
- Package: gdb
- Severity: normal
- Tags: patch, sid
- Hello,
- GDB will crash on the Hurd after issuing the 'show' and hitting enter
- a few times:
- ../../gdb/ui-out.c:130: gdb-internal-error: push_level: Assertion +`uiout->level >= 0 && uiout->level < MAX_UI_OUT_LEVELS' failed.
- the problem is that MAX_UI_OUT_LEVELS is not high enough for the extra
- option we have on the Hurd, it should be rised to 6 then, which works
- fine:
- --- gdb-5.2.cvs20020401/gdb/ui-out.c~ Fri May 3 02:19:20 2002
- +++ gdb-5.2.cvs20020401/gdb/ui-out.c Fri May 3 02:19:32 2002
- @@ -45,7 +45,7 @@
- is always available. Stack/nested level 0 is reserved for the
- top-level result. */
-
- -enum { MAX_UI_OUT_LEVELS = 5 };
- +enum { MAX_UI_OUT_LEVELS = 8 };
-
- struct ui_out_level
- {
- --
- Robert Millan
- "5 years from now everyone will be running
- free GNU on their 200 MIPS, 64M SPARCstation-5"
- Andrew S. Tanenbaum, 30 Jan 1992
- Submitted upstream, not liked very much. It's a hack, but it will do for
- now.
- 2002-07-31 Daniel Jacobowitz <drow@mvista.com>
- Fix PR gdb/568
- * thread-db.c (lwp_from_thread): Only warn if unable to find
- the thread.
- Index: thread-db.c
- ===================================================================
- RCS file: /cvs/src/src/gdb/thread-db.c,v
- retrieving revision 1.22
- diff -u -p -r1.22 thread-db.c
- --- gdb/gdb/thread-db.c 23 Mar 2002 17:38:13 -0000 1.22
- +++ gdb/gdb/thread-db.c 31 Jul 2002 16:29:52 -0000
- @@ -260,6 +260,12 @@ lwp_from_thread (ptid_t ptid)
- return ptid;
-
- err = td_ta_map_id2thr_p (thread_agent, GET_THREAD (ptid), &th);
- + if (err == TD_ERR)
- + {
- + warning ("Cannot find thread %ld: %s",
- + (long) GET_THREAD (ptid), thread_db_err_str (err));
- + return ptid;
- + }
- if (err != TD_OK)
- error ("Cannot find thread %ld: %s",
- (long) GET_THREAD (ptid), thread_db_err_str (err));
- From Michael Fedrowitz <michaelf@debian.org>. Not submitted to FSF yet.
- Hi,
- gdb fails to build from source on m68k because some definitions have
- been removed from tm-m68k.h. The patch below readds them.
- -Michael
- diff -urN gdb-5.2.cvs20020818.orig/gdb/config/m68k/tm-m68k.h gdb-5.2.cvs20020818/gdb/config/m68k/tm-m68k.h
- --- gdb-5.2.cvs20020818.orig/gdb/config/m68k/tm-m68k.h 2002-07-10 19:01:38.000000000 +0200
- +++ gdb-5.2.cvs20020818/gdb/config/m68k/tm-m68k.h 2002-10-06 18:01:59.000000000 +0200
- @@ -26,8 +26,11 @@
- /* Generic 68000 stuff, to be included by other tm-*.h files. */
-
- /* D0_REGNM and A0_REGNUM must be defined here because they are
- - used by the monitor. */
- + used by the monitor. FPC_REGNUM, FPS_REGNUM and FPI_REGNUM are
- + defined here because they are used by m68klinux-nat.c. */
-
- #define D0_REGNUM 0
- #define A0_REGNUM 8
- -
- +#define FPC_REGNUM 26
- +#define FPS_REGNUM 27
- +#define FPI_REGNUM 28
- 2002-11-24 Daniel Jacobowitz <drow@mvista.com>
- * doublest.c (convert_floatformat_to_doublest): Cast exp_bias to int.
- * config/alpha/alpha-linux.mh (MH_CFLAGS): Add -mieee.
- --- gdb-5.2.debian90.cvs20021120/gdb/doublest.c.orig 2002-11-24 17:48:16.000000000 -0500
- +++ gdb-5.2.debian90.cvs20021120/gdb/doublest.c 2002-11-24 17:48:25.000000000 -0500
- @@ -177,7 +177,7 @@
- if (!special_exponent)
- exponent -= fmt->exp_bias;
- else if (exponent == 0)
- - exponent = 1 - fmt->exp_bias;
- + exponent = 1 - (int)fmt->exp_bias;
-
- /* Build the result algebraically. Might go infinite, underflow, etc;
- who cares. */
- --- gdb-5.2.debian90.cvs20021120/gdb/config/alpha/alpha-linux.mh.orig 2002-11-24 17:50:30.000000000 -0500
- +++ gdb-5.2.debian90.cvs20021120/gdb/config/alpha/alpha-linux.mh 2002-11-24 17:50:41.000000000 -0500
- @@ -8,3 +8,5 @@
-
- MMALLOC =
- MMALLOC_CFLAGS = -DNO_MMALLOC
- +
- +MH_CFLAGS = -mieee
- In CVS but not in 5.3 branch...
- 2002-10-23 Daniel Jacobowitz <drow@mvista.com>
- * lin-lwp.c (lin_lwp_resume): Remove resume_all test for !step.
- Index: lin-lwp.c
- ===================================================================
- RCS file: /cvs/src/src/gdb/lin-lwp.c,v
- retrieving revision 1.35
- diff -u -p -r1.35 lin-lwp.c
- --- gdb-5.2.90/gdb/lin-lwp.c 27 Aug 2002 22:37:06 -0000 1.35
- +++ gdb-5.2.90/gdb/lin-lwp.c 23 Oct 2002 04:23:13 -0000
- @@ -579,11 +579,8 @@ lin_lwp_resume (ptid_t ptid, int step, e
- struct lwp_info *lp;
- int resume_all;
-
- - /* Apparently the interpretation of PID is dependent on STEP: If
- - STEP is non-zero, a specific PID means `step only this process
- - id'. But if STEP is zero, then PID means `continue *all*
- - processes, but give the signal only to this one'. */
- - resume_all = (PIDGET (ptid) == -1) || !step;
- + /* A specific PTID means `step only this process id'. */
- + resume_all = (PIDGET (ptid) == -1);
-
- if (resume_all)
- iterate_over_lwps (resume_set_callback, NULL);
- Not submitted yet, testing.
- --- gdb-5.2.90/gdb/alpha-tdep.c.orig Sun Nov 24 21:42:53 2002
- +++ gdb-5.2.90/gdb/alpha-tdep.c Sun Nov 24 21:48:26 2002
- @@ -99,10 +99,12 @@
-
- static alpha_extra_func_info_t heuristic_proc_desc (CORE_ADDR,
- CORE_ADDR,
- - struct frame_info *);
- + struct frame_info *,
- + int);
-
- static alpha_extra_func_info_t find_proc_desc (CORE_ADDR,
- - struct frame_info *);
- + struct frame_info *,
- + int);
-
- #if 0
- static int alpha_in_lenient_prologue (CORE_ADDR, CORE_ADDR);
- @@ -512,7 +514,7 @@
- if (tmp != 0)
- pc = tmp;
-
- - proc_desc = find_proc_desc (pc, frame->next);
- + proc_desc = find_proc_desc (pc, frame->next, 1);
- pcreg = proc_desc ? PROC_PC_REG (proc_desc) : ALPHA_RA_REGNUM;
-
- if (frame->signal_handler_caller)
- @@ -596,10 +598,10 @@
-
- static alpha_extra_func_info_t
- heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
- - struct frame_info *next_frame)
- + struct frame_info *next_frame, int read_sp_p)
- {
- - CORE_ADDR sp = read_next_frame_reg (next_frame, SP_REGNUM);
- - CORE_ADDR vfp = sp;
- + CORE_ADDR sp;
- + CORE_ADDR vfp;
- CORE_ADDR cur_pc;
- int frame_size;
- int has_frame_reg = 0;
- @@ -607,6 +609,11 @@
- int pcreg = -1;
- int regno;
-
- + if (read_sp_p)
- + vfp = sp = read_next_frame_reg (next_frame, SP_REGNUM);
- + else
- + vfp = sp = 0;
- +
- if (start_pc == 0)
- return NULL;
- memset (&temp_proc_desc, '\0', sizeof (temp_proc_desc));
- @@ -761,7 +768,7 @@
- CORE_ADDR func_addr, func_end;
-
- if (!proc_desc)
- - proc_desc = find_proc_desc (pc, NULL);
- + proc_desc = find_proc_desc (pc, NULL, 0);
-
- if (proc_desc)
- {
- @@ -807,7 +814,7 @@
- }
-
- static alpha_extra_func_info_t
- -find_proc_desc (CORE_ADDR pc, struct frame_info *next_frame)
- +find_proc_desc (CORE_ADDR pc, struct frame_info *next_frame, int read_sp_p)
- {
- alpha_extra_func_info_t proc_desc;
- struct block *b;
- @@ -879,7 +886,7 @@
- {
- alpha_extra_func_info_t found_heuristic =
- heuristic_proc_desc (PROC_LOW_ADDR (proc_desc),
- - pc, next_frame);
- + pc, next_frame, read_sp_p);
- if (found_heuristic)
- {
- PROC_LOCALOFF (found_heuristic) =
- @@ -921,7 +928,7 @@
- startaddr = heuristic_proc_start (pc);
-
- proc_desc =
- - heuristic_proc_desc (startaddr, pc, next_frame);
- + heuristic_proc_desc (startaddr, pc, next_frame, read_sp_p);
- }
- return proc_desc;
- }
- @@ -937,7 +944,7 @@
- if (saved_pc == 0 || inside_entry_file (saved_pc))
- return 0;
-
- - proc_desc = find_proc_desc (saved_pc, frame);
- + proc_desc = find_proc_desc (saved_pc, frame, 1);
- if (!proc_desc)
- return 0;
-
- @@ -979,7 +986,7 @@
- {
- /* Use proc_desc calculated in frame_chain */
- alpha_extra_func_info_t proc_desc =
- - frame->next ? cached_proc_desc : find_proc_desc (frame->pc, frame->next);
- + frame->next ? cached_proc_desc : find_proc_desc (frame->pc, frame->next, 1);
-
- frame->extra_info = (struct frame_extra_info *)
- frame_obstack_alloc (sizeof (struct frame_extra_info));
- @@ -1291,7 +1298,7 @@
- /* we need proc_desc to know how to restore the registers;
- if it is NULL, construct (a temporary) one */
- if (proc_desc == NULL)
- - proc_desc = find_proc_desc (frame->pc, frame->next);
- + proc_desc = find_proc_desc (frame->pc, frame->next, 1);
-
- /* Question: should we copy this proc_desc and save it in
- frame->proc_desc? If we do, who will free it?
- Not yet submitted upstream. This requires some serious thinking about.
- If the target stack worked in any logical way, this wouldn't be necessary...
- ending up with roughly:
- thread_stratum: thread-db (silent reference to lin-lwp)
- core_stratum: corelow
- exec_stratum: exec
- dummy_stratum: dummy
- just makes no sense.
- This patch fixes debugging threaded applications which are statically linked
- without breaking debugging threaded core files. It also fixes the PIDs in
- generate-core-file'd corefiles. Mostly.
- diff -x '*~' -ur o/gdb-5.2.debian90.cvs20021120/gdb/corelow.c gdb-5.2.debian90.cvs20021120/gdb/corelow.c
- --- o/gdb-5.2.debian90.cvs20021120/gdb/corelow.c 2002-09-18 13:23:15.000000000 -0400
- +++ gdb-5.2.debian90.cvs20021120/gdb/corelow.c 2002-12-03 14:03:32.000000000 -0500
- @@ -350,7 +350,7 @@
- bfd_map_over_sections (core_bfd, add_to_thread_list,
- bfd_get_section_by_name (core_bfd, ".reg"));
-
- - if (ontop)
- + if (ontop || 1)
- {
- /* Fetch all registers from core file. */
- target_fetch_registers (-1);
- diff -x '*~' -ur o/gdb-5.2.debian90.cvs20021120/gdb/linux-proc.c gdb-5.2.debian90.cvs20021120/gdb/linux-proc.c
- --- o/gdb-5.2.debian90.cvs20021120/gdb/linux-proc.c 2002-12-03 14:13:52.000000000 -0500
- +++ gdb-5.2.debian90.cvs20021120/gdb/linux-proc.c 2002-12-03 13:56:34.000000000 -0500
- @@ -177,7 +177,7 @@
- #ifdef FILL_FPXREGSET
- gdb_fpxregset_t fpxregs;
- #endif
- - unsigned long merged_pid = ptid_get_tid (ptid) << 16 | ptid_get_pid (ptid);
- + unsigned long merged_pid = ptid_get_tid (ptid) << 16; /* | ptid_get_pid (ptid); */
-
- fill_gregset (&gregs, -1);
- note_data = (char *) elfcore_write_prstatus (obfd,
- diff -x '*~' -ur o/gdb-5.2.debian90.cvs20021120/gdb/target.c gdb-5.2.debian90.cvs20021120/gdb/target.c
- --- o/gdb-5.2.debian90.cvs20021120/gdb/target.c 2002-09-18 13:23:22.000000000 -0400
- +++ gdb-5.2.debian90.cvs20021120/gdb/target.c 2002-12-03 14:06:07.000000000 -0500
- @@ -1589,6 +1589,7 @@
- dummy_target.to_find_memory_regions = dummy_find_memory_regions;
- dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
- dummy_target.to_magic = OPS_MAGIC;
- + cleanup_target (&dummy_target);
- }
-
-
- diff -x '*~' -ur o/gdb-5.2.debian90.cvs20021120/gdb/thread-db.c gdb-5.2.debian90.cvs20021120/gdb/thread-db.c
- --- o/gdb-5.2.debian90.cvs20021120/gdb/thread-db.c 2002-12-03 14:13:50.000000000 -0500
- +++ gdb-5.2.debian90.cvs20021120/gdb/thread-db.c 2002-12-03 13:39:54.000000000 -0500
- @@ -57,6 +57,31 @@
- /* Non-zero if we're using this module's target vector. */
- static int using_thread_db;
-
- +/* Macros to pass an event to the next target if we should not be handling it
- + here in the thread_stratum. */
- +#define FIND_NEXT_TARGET(METHOD_NAME) \
- + struct target_ops *next_target = &thread_db_ops; \
- + while (1) \
- + { \
- + next_target = find_target_beneath (next_target); \
- + if (next_target->METHOD_NAME != NULL) \
- + break; \
- + }
- +
- +#define MAYBE_HAND_DOWN(METHOD_NAME,ARGS) \
- + if (proc_handle.pid == 0) \
- + { \
- + FIND_NEXT_TARGET (METHOD_NAME); \
- + (*next_target->METHOD_NAME) ARGS; \
- + return; \
- + }
- +#define MAYBE_HAND_DOWN_RETURN(METHOD_NAME,ARGS) \
- + if (proc_handle.pid == 0) \
- + { \
- + FIND_NEXT_TARGET (METHOD_NAME); \
- + return (*next_target->METHOD_NAME) ARGS; \
- + }
- +
- /* Non-zero if we have to keep this module's target vector active
- across re-runs. */
- static int keep_thread_db;
- @@ -489,9 +514,7 @@
- {
- td_err_e err;
-
- - /* Don't attempt to use thread_db on targets which can not run
- - (core files). */
- - if (objfile == NULL || !target_has_execution)
- + if (objfile == NULL)
- {
- /* All symbols have been discarded. If the thread_db target is
- active, deactivate it now. */
- @@ -515,7 +538,10 @@
- /* Initialize the structure that identifies the child process. Note
- that at this point there is no guarantee that we actually have a
- child process. */
- - proc_handle.pid = GET_PID (inferior_ptid);
- + if (target_has_execution)
- + proc_handle.pid = GET_PID (inferior_ptid);
- + else
- + proc_handle.pid = 0;
-
- /* Now attempt to open a connection to the thread library. */
- err = td_ta_new_p (&proc_handle, &thread_agent);
- @@ -758,6 +784,9 @@
- struct cleanup *old_chain = save_inferior_ptid ();
- int xfer;
-
- + MAYBE_HAND_DOWN_RETURN (to_xfer_memory, (memaddr, myaddr, len, write,
- + attrib, target));
- +
- if (is_thread (inferior_ptid))
- {
- /* FIXME: This seems to be necessary to make sure breakpoints
- @@ -782,6 +811,8 @@
- gdb_prfpregset_t fpregset;
- td_err_e err;
-
- + MAYBE_HAND_DOWN (to_fetch_registers, (regno));
- +
- if (!is_thread (inferior_ptid))
- {
- /* Pass the request to the target beneath us. */
- @@ -819,6 +850,8 @@
- gdb_prfpregset_t fpregset;
- td_err_e err;
-
- + MAYBE_HAND_DOWN (to_store_registers, (regno));
- +
- if (!is_thread (inferior_ptid))
- {
- /* Pass the request to the target beneath us. */
- @@ -908,6 +941,8 @@
- td_thrinfo_t ti;
- td_err_e err;
-
- + MAYBE_HAND_DOWN_RETURN (to_thread_alive, (ptid));
- +
- if (is_thread (ptid))
- {
- err = td_ta_map_id2thr_p (thread_agent, GET_THREAD (ptid), &th);
- @@ -961,6 +996,8 @@
- {
- td_err_e err;
-
- + MAYBE_HAND_DOWN (to_find_new_threads, ());
- +
- /* Iterate over all user-space threads to discover new threads. */
- err = td_ta_thr_iter_p (thread_agent, find_new_threads_callback, NULL,
- TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY,
- @@ -972,6 +1009,8 @@
- static char *
- thread_db_pid_to_str (ptid_t ptid)
- {
- + MAYBE_HAND_DOWN_RETURN (to_pid_to_str, (ptid));
- +
- if (is_thread (ptid))
- {
- static char buf[64];
- Trivial. Need to submit this.
- --- gdb-5.2.debian90.cvs20021120/gdb/tracepoint.c.orig 2002-12-03 14:35:44.000000000 -0500
- +++ gdb-5.2.debian90.cvs20021120/gdb/tracepoint.c 2002-12-03 14:43:02.000000000 -0500
- @@ -861,6 +861,8 @@
- else
- line = gdb_readline (0);
-
- + if (line == NULL || *line == EOF)
- + break;
- linetype = validate_actionline (&line, t);
- if (linetype == BADLINE)
- continue; /* already warned -- collect another line */
- Fix build on Sparc.
- --- gdb-5.3/gdb/sparc-nat.c.orig 2003-01-04 00:11:28.000000000 -0500
- +++ gdb-5.3/gdb/sparc-nat.c 2003-01-04 00:12:42.000000000 -0500
- @@ -33,6 +33,13 @@
- #include <sys/ptrace.h>
- #include <sys/wait.h>
- #ifdef __linux__
- +/* Sadly, <sys/ucontext.h> conflicts with <asm/reg.h> on Linux. And
- + -D_GNU_SOURCE brings in <sys/ucontext.h> implicitly with <signal.h>.
- + Hack around this. */
- +#undef FPU_REGS_TYPE
- +#define fpu asm_reg_fpu
- +#define fq asm_reg_fq
- +#define fpq asm_reg_fpq
- #include <asm/reg.h>
- #else
- #include <machine/reg.h>
- diff -urN gdb-5.3/gdb/gdbserver.orig/gdbreplay.c gdb-5.3/gdb/gdbserver/gdbreplay.c
- --- gdb-5.3/gdb/gdbserver.orig/gdbreplay.c 2002-07-09 11:38:58.000000000 -0600
- +++ gdb-5.3/gdb/gdbserver/gdbreplay.c 2003-08-20 08:44:20.000000000 -0600
- @@ -54,14 +54,15 @@
- perror_with_name (char *string)
- {
- #ifndef STDC_HEADERS
- - extern int sys_nerr;
- extern char *sys_errlist[];
- extern int errno;
- #endif
- const char *err;
- char *combined;
-
- - err = (errno < sys_nerr) ? sys_errlist[errno] : "unknown error";
- + err = strerror (errno);
- + if (err == NULL)
- + err = "unknown error";
- combined = (char *) alloca (strlen (err) + strlen (string) + 3);
- strcpy (combined, string);
- strcat (combined, ": ");
- diff -urN gdb-5.3/gdb/gdbserver.orig/low-hppabsd.c gdb-5.3/gdb/gdbserver/low-hppabsd.c
- --- gdb-5.3/gdb/gdbserver.orig/low-hppabsd.c 2002-01-17 14:13:49.000000000 -0700
- +++ gdb-5.3/gdb/gdbserver/low-hppabsd.c 2003-08-20 08:46:04.000000000 -0600
- @@ -61,7 +61,7 @@
- execv (program, allargs);
-
- fprintf (stderr, "Cannot exec %s: %s.\n", program,
- - errno < sys_nerr ? sys_errlist[errno] : "unknown error");
- + strerror (errno));
- fflush (stderr);
- _exit (0177);
- }
- diff -urN gdb-5.3/gdb/gdbserver.orig/low-lynx.c gdb-5.3/gdb/gdbserver/low-lynx.c
- --- gdb-5.3/gdb/gdbserver.orig/low-lynx.c 2002-01-17 14:13:49.000000000 -0700
- +++ gdb-5.3/gdb/gdbserver/low-lynx.c 2003-08-20 08:46:18.000000000 -0600
- @@ -79,7 +79,7 @@
-
- fprintf (stderr, "GDBserver (process %d): Cannot exec %s: %s.\n",
- getpid (), program,
- - errno < sys_nerr ? sys_errlist[errno] : "unknown error");
- + strerror (errno));
- fflush (stderr);
- _exit (0177);
- }
- diff -urN gdb-5.3/gdb/gdbserver.orig/low-nbsd.c gdb-5.3/gdb/gdbserver/low-nbsd.c
- --- gdb-5.3/gdb/gdbserver.orig/low-nbsd.c 2002-01-17 14:13:49.000000000 -0700
- +++ gdb-5.3/gdb/gdbserver/low-nbsd.c 2003-08-20 08:46:27.000000000 -0600
- @@ -137,7 +137,7 @@
- execv (program, allargs);
-
- fprintf (stderr, "Cannot exec %s: %s.\n", program,
- - errno < sys_nerr ? sys_errlist[errno] : "unknown error");
- + strerror (errno));
- fflush (stderr);
- _exit (0177);
- }
- diff -urN gdb-5.3/gdb/gdbserver.orig/low-sparc.c gdb-5.3/gdb/gdbserver/low-sparc.c
- --- gdb-5.3/gdb/gdbserver.orig/low-sparc.c 2002-01-17 14:13:50.000000000 -0700
- +++ gdb-5.3/gdb/gdbserver/low-sparc.c 2003-08-20 08:46:38.000000000 -0600
- @@ -44,7 +44,6 @@
- #include <sys/ptrace.h>
- #include <sys/reg.h>
-
- -extern int sys_nerr;
- extern char **sys_errlist;
- extern int errno;
-
- @@ -67,7 +66,7 @@
- execv (program, allargs);
-
- fprintf (stderr, "Cannot exec %s: %s.\n", program,
- - errno < sys_nerr ? sys_errlist[errno] : "unknown error");
- + strerror (errno));
- fflush (stderr);
- _exit (0177);
- }
- diff -urN gdb-5.3/gdb/gdbserver.orig/low-sun3.c gdb-5.3/gdb/gdbserver/low-sun3.c
- --- gdb-5.3/gdb/gdbserver.orig/low-sun3.c 2002-01-17 14:13:50.000000000 -0700
- +++ gdb-5.3/gdb/gdbserver/low-sun3.c 2003-08-20 08:46:51.000000000 -0600
- @@ -41,7 +41,6 @@
- #include <sys/ptrace.h>
- #include <machine/reg.h>
-
- -extern int sys_nerr;
- extern char **sys_errlist;
- extern int errno;
-
- @@ -64,7 +63,7 @@
- execv (program, allargs);
-
- fprintf (stderr, "Cannot exec %s: %s.\n", program,
- - errno < sys_nerr ? sys_errlist[errno] : "unknown error");
- + strerror (errno));
- fflush (stderr);
- _exit (0177);
- }
- diff -urN gdb-5.3/gdb/gdbserver.orig/utils.c gdb-5.3/gdb/gdbserver/utils.c
- --- gdb-5.3/gdb/gdbserver.orig/utils.c 2003-08-20 08:47:56.000000000 -0600
- +++ gdb-5.3/gdb/gdbserver/utils.c 2003-08-20 08:48:15.000000000 -0600
- @@ -33,16 +33,13 @@
- perror_with_name (char *string)
- {
- #ifndef STDC_HEADERS
- - extern int sys_nerr;
- - extern char *sys_errlist[];
- extern int errno;
- #endif
- const char *err;
- char *combined;
-
- - if (errno < sys_nerr)
- - err = sys_errlist[errno];
- - else
- + err = strerror (errno);
- + if (err == NULL)
- err = "unknown error";
-
- combined = (char *) alloca (strlen (err) + strlen (string) + 3);
- diff -urN gdb-5.3/gdb/gdbserver.orig/linux-low.c.orig gdb-5.3/gdb/gdbserver/linux-low.c.orig
- --- gdb-5.3/gdb/gdbserver.orig/linux-low.c 2003-08-20 08:40:27.000000000 -0600
- +++ gdb-5.3/gdb/gdbserver/linux-low.c 2003-08-20 08:44:54.000000000 -0600
- @@ -175,8 +175,7 @@
- if (ptrace (PTRACE_ATTACH, pid, 0, 0) != 0)
- {
- fprintf (stderr, "Cannot attach to process %d: %s (%d)\n", pid,
- - errno < sys_nerr ? sys_errlist[errno] : "unknown error",
- - errno);
- + strerror (errno), errno);
- fflush (stderr);
-
- /* If we fail to attach to an LWP, just return. */
|