Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] gdbserver: ARM: add support for uclinux
@ 2012-04-13  9:11 Will Deacon
  2012-04-13 14:59 ` Pedro Alves
  0 siblings, 1 reply; 5+ messages in thread
From: Will Deacon @ 2012-04-13  9:11 UTC (permalink / raw)
  To: gdb-patches; +Cc: Will Deacon

When debugging a uclinux target, it is necessary to retrieve the text
and data offsets of the running program in order for symbol resolution
to work correctly.

This patch defines PT_{TEXT,DATA,TEXT_END}_ADDR for ARM, which can be
issued as `magic' addresses to the PTRACE_PEEKUSER request in order to
retrieve the child offsets.
---

2012-04-13  Will Deacon  <will.deacon@arm.com>

	* linux-low.c: Define PT_TEXT_ADDR, PT_TEXT_END_ADDR and
	PT_DATA_ADDR for ARM targets.

 gdb/gdbserver/linux-low.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 043451d..c4b52e7 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -4766,6 +4766,10 @@ linux_stopped_data_address (void)
 #define PT_TEXT_ADDR     (0x10000*4)
 #define PT_DATA_ADDR     (0x10004*4)
 #define PT_TEXT_END_ADDR (0x10008*4)
+#elif defined(__arm__)
+#define PT_TEXT_ADDR 0x10000
+#define PT_DATA_ADDR 0x10004
+#define PT_TEXT_END_ADDR 0x10008
 #endif
 
 /* Under uClinux, programs are loaded at non-zero offsets, which we need
-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdbserver: ARM: add support for uclinux
  2012-04-13  9:11 [PATCH] gdbserver: ARM: add support for uclinux Will Deacon
@ 2012-04-13 14:59 ` Pedro Alves
  2012-04-13 16:23   ` Will Deacon
  0 siblings, 1 reply; 5+ messages in thread
From: Pedro Alves @ 2012-04-13 14:59 UTC (permalink / raw)
  To: Will Deacon; +Cc: gdb-patches

On 04/13/2012 10:07 AM, Will Deacon wrote:

> When debugging a uclinux target, it is necessary to retrieve the text
> and data offsets of the running program in order for symbol resolution
> to work correctly.
> 
> This patch defines PT_{TEXT,DATA,TEXT_END}_ADDR for ARM, which can be
> issued as `magic' addresses to the PTRACE_PEEKUSER request in order to
> retrieve the child offsets.


Is this for older kernels?  I see these defined in
arch/arm/include/asm/ptrace.h in current mainline.

Anyway, looks fine.

> ---
> 
> 2012-04-13  Will Deacon  <will.deacon@arm.com>
> 
> 	* linux-low.c: Define PT_TEXT_ADDR, PT_TEXT_END_ADDR and
> 	PT_DATA_ADDR for ARM targets.
> 
>  gdb/gdbserver/linux-low.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
> index 043451d..c4b52e7 100644
> --- a/gdb/gdbserver/linux-low.c
> +++ b/gdb/gdbserver/linux-low.c
> @@ -4766,6 +4766,10 @@ linux_stopped_data_address (void)
>  #define PT_TEXT_ADDR     (0x10000*4)
>  #define PT_DATA_ADDR     (0x10004*4)
>  #define PT_TEXT_END_ADDR (0x10008*4)
> +#elif defined(__arm__)
> +#define PT_TEXT_ADDR 0x10000
> +#define PT_DATA_ADDR 0x10004
> +#define PT_TEXT_END_ADDR 0x10008
>  #endif
>  
>  /* Under uClinux, programs are loaded at non-zero offsets, which we need



-- 
Pedro Alves


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdbserver: ARM: add support for uclinux
  2012-04-13 14:59 ` Pedro Alves
@ 2012-04-13 16:23   ` Will Deacon
  2012-04-13 16:28     ` Pedro Alves
  0 siblings, 1 reply; 5+ messages in thread
From: Will Deacon @ 2012-04-13 16:23 UTC (permalink / raw)
  To: Pedro Alves; +Cc: gdb-patches

On Fri, Apr 13, 2012 at 03:57:41PM +0100, Pedro Alves wrote:
> On 04/13/2012 10:07 AM, Will Deacon wrote:
> 
> > When debugging a uclinux target, it is necessary to retrieve the text
> > and data offsets of the running program in order for symbol resolution
> > to work correctly.
> > 
> > This patch defines PT_{TEXT,DATA,TEXT_END}_ADDR for ARM, which can be
> > issued as `magic' addresses to the PTRACE_PEEKUSER request in order to
> > retrieve the child offsets.
> 
> 
> Is this for older kernels?  I see these defined in
> arch/arm/include/asm/ptrace.h in current mainline.

Actually, it's for bleeding-edge kernels (3.4-rc2) since the ptrace request
has been broken until recently (it would return -EIO).

Although the #defines are exported in the kernel headers, they don't seem to
be picked up by sys/ptrace.h, which is why I followed the same path as the
other architectures here. An alternative would be to include asm/ptrace.h
directly and introduce guards for the other architectures to avoid duplicate
#defines...

...or would you expect libc to throw these out in its headers?

Cheers,

Will


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdbserver: ARM: add support for uclinux
  2012-04-13 16:23   ` Will Deacon
@ 2012-04-13 16:28     ` Pedro Alves
  2012-04-13 17:02       ` Will Deacon
  0 siblings, 1 reply; 5+ messages in thread
From: Pedro Alves @ 2012-04-13 16:28 UTC (permalink / raw)
  To: Will Deacon; +Cc: gdb-patches

On 04/13/2012 04:59 PM, Will Deacon wrote:

> On Fri, Apr 13, 2012 at 03:57:41PM +0100, Pedro Alves wrote:
>> On 04/13/2012 10:07 AM, Will Deacon wrote:
>>
>>> When debugging a uclinux target, it is necessary to retrieve the text
>>> and data offsets of the running program in order for symbol resolution
>>> to work correctly.
>>>
>>> This patch defines PT_{TEXT,DATA,TEXT_END}_ADDR for ARM, which can be
>>> issued as `magic' addresses to the PTRACE_PEEKUSER request in order to
>>> retrieve the child offsets.
>>
>>
>> Is this for older kernels?  I see these defined in
>> arch/arm/include/asm/ptrace.h in current mainline.
> 
> Actually, it's for bleeding-edge kernels (3.4-rc2) since the ptrace request
> has been broken until recently (it would return -EIO).
> 
> Although the #defines are exported in the kernel headers, they don't seem to
> be picked up by sys/ptrace.h, which is why I followed the same path as the
> other architectures here. An alternative would be to include asm/ptrace.h
> directly and introduce guards for the other architectures to avoid duplicate
> #defines...


I think that'd be good.  We already include asm/ptrace.h in many of the linux
native files:

$ grep asm/ptrace * -rn | grep -v ChangeLog

amd64-linux-nat.c:39:   <asm/ptrace.h> because the latter redefines FS and GS for no apparent
amd64-linux-nat.c:45:#include <asm/ptrace.h>
gdbserver/linux-ppc-low.c:25:#include <asm/ptrace.h>
gdbserver/linux-ia64-low.c:32:#include <asm/ptrace_offsets.h>
gdbserver/linux-mips-low.c:53:#include <asm/ptrace.h>
gdbserver/linux-tic6x-low.c:37:#include <asm/ptrace.h>
gdbserver/linux-m68k-low.c:157:#include <asm/ptrace.h>
gdbserver/linux-bfin-low.c:25:#include <asm/ptrace.h>
gdbserver/linux-sh-low.c:30:#include <asm/ptrace.h>
gdbserver/linux-s390-low.c:26:#include <asm/ptrace.h>
hppa-linux-nat.c:32:#include <asm/ptrace.h>
ia64-linux-nat.c:39:#include <asm/ptrace_offsets.h>
mips-linux-nat.c:66:   These ``addresses'' are normally defined in <asm/ptrace.h>.
ppc-linux-nat.c:80:   ppc kernel's asm/ptrace.h defines PTRACE_GETVRREGS and
s390-nat.c:34:#include <asm/ptrace.h>
spu-linux-nat.c:33:#include <asm/ptrace.h>

So it probably doesn't hurt to include it in linux-low.c.  Want to give it a try?

-- 
Pedro Alves


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] gdbserver: ARM: add support for uclinux
  2012-04-13 16:28     ` Pedro Alves
@ 2012-04-13 17:02       ` Will Deacon
  0 siblings, 0 replies; 5+ messages in thread
From: Will Deacon @ 2012-04-13 17:02 UTC (permalink / raw)
  To: Pedro Alves; +Cc: gdb-patches

On Fri, Apr 13, 2012 at 05:22:59PM +0100, Pedro Alves wrote:
> On 04/13/2012 04:59 PM, Will Deacon wrote:
> > Although the #defines are exported in the kernel headers, they don't seem to
> > be picked up by sys/ptrace.h, which is why I followed the same path as the
> > other architectures here. An alternative would be to include asm/ptrace.h
> > directly and introduce guards for the other architectures to avoid duplicate
> > #defines...
> 
> 
> I think that'd be good.  We already include asm/ptrace.h in many of the linux
> native files:
> 
> $ grep asm/ptrace * -rn | grep -v ChangeLog
> 
> amd64-linux-nat.c:39:   <asm/ptrace.h> because the latter redefines FS and GS for no apparent
> amd64-linux-nat.c:45:#include <asm/ptrace.h>
> gdbserver/linux-ppc-low.c:25:#include <asm/ptrace.h>
> gdbserver/linux-ia64-low.c:32:#include <asm/ptrace_offsets.h>
> gdbserver/linux-mips-low.c:53:#include <asm/ptrace.h>
> gdbserver/linux-tic6x-low.c:37:#include <asm/ptrace.h>
> gdbserver/linux-m68k-low.c:157:#include <asm/ptrace.h>
> gdbserver/linux-bfin-low.c:25:#include <asm/ptrace.h>
> gdbserver/linux-sh-low.c:30:#include <asm/ptrace.h>
> gdbserver/linux-s390-low.c:26:#include <asm/ptrace.h>
> hppa-linux-nat.c:32:#include <asm/ptrace.h>
> ia64-linux-nat.c:39:#include <asm/ptrace_offsets.h>
> mips-linux-nat.c:66:   These ``addresses'' are normally defined in <asm/ptrace.h>.
> ppc-linux-nat.c:80:   ppc kernel's asm/ptrace.h defines PTRACE_GETVRREGS and
> s390-nat.c:34:#include <asm/ptrace.h>
> spu-linux-nat.c:33:#include <asm/ptrace.h>
> 
> So it probably doesn't hurt to include it in linux-low.c.  Want to give it a try?

Sure, I'll post a v2 next week. I doubt I'll be able to test on coldfire,
blackfin and co. though!

Cheers,

Will


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-04-13 16:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-13  9:11 [PATCH] gdbserver: ARM: add support for uclinux Will Deacon
2012-04-13 14:59 ` Pedro Alves
2012-04-13 16:23   ` Will Deacon
2012-04-13 16:28     ` Pedro Alves
2012-04-13 17:02       ` Will Deacon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox