* [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