Hi Greg, Now that you've got this release out, have you given any thought to the message I sent earlier about merging gdb server versions?
Here it is again in case you've forgotten: Hi, The current version of gdbserver in uClinux-dist only works on the m68k. In my v850-specific version of uClinux-dist, I include a version of gdbserver that works on the v850, which I created based on gdb-5.3. I think it should generally be much more portable than the old version, as it's far less hacked up (the only changes I made to put it into the uClinux-dist/user tree are to move the files around to fit the old scheme better; I have a shell script that does that automatically). I haven't yet sent my patches to gdb-central because I'm waiting to get a copyright disclaimer, but perhaps you might want to include this newer version in uClinux-dist? I suppose it will work on other platforms too; the issues that I know about are: (1) In linux-low.c, I do this to get the various address offsets (similar to the code in the old m68k gdbserver, which uses hard-wired constants): text = ptrace (PTRACE_PEEKUSER, pid, (long)PT_TEXT_ADDR, 0); text_len = ptrace (PTRACE_PEEKUSER, pid, (long)PT_TEXT_LEN, 0); real_data = ptrace (PTRACE_PEEKUSER, pid, (long)PT_DATA_ADDR, 0); I defined PT_TEXT_ADDR, PT_TEXT_LEN, and PT_DATA_ADDR in include/asm-v850/ptrace.h in the kernel: /* These are `magic' values for PTRACE_PEEKUSR that return info about where a process is located in memory. */ #define PT_TEXT_ADDR (PT_SIZE + 1) #define PT_TEXT_LEN (PT_SIZE + 2) #define PT_DATA_ADDR (PT_SIZE + 3) Could you add similar to defines to the other uClinux ports, so that the linux-low.c code will work on them too? BTW, notice that I used `PT_TEXT_LEN' instead of `PT_TEXT_END_ADDR' (which is what the m68k uses), as addr-len pairs generally seem cleaner to me than addr-endaddr pairs (makes the code slightly simpler too). (2) Since stuff in uClinux-dist comes `pre-configured' (i.e. doesn't get to run the configure script), and I of course configured it for the v850, the gdbserver Makefile needs to somehow select the proper machine-dependent files to use. Currently the only machine-dependent bits seem to be these: DEPFILES = reg-v850e.o linux-low.o linux-v850e-low.o Perhaps it would be good enough to change this to something like: DEPFILES = reg-$(CPU).o linux-low.o linux-$(CPU)-low.o But I'm not sure where I can get CPU from; is there something handy in the uClinux-dist Makefiles that could be used? The set of CPU values used in (my version of) gdbserver are: v850e, s390, arm, x86-64, i386, mips, ppc, sh, ia64, m68k So it seems that the most `obvious' value should work OK Hmmm, perhaps I ought to change `v850e' to be `v850' for compatibility with the kernel, etc... sigh. What are your thoughts? Thanks, -Miles -- `To alcohol! The cause of, and solution to, all of life's problems' --Homer J. Simpson