* [KGDB][RFC] Send a fuller T packet
@ 2004-03-02 22:02 Tom Rini
2004-03-02 23:28 ` [Kgdb-bugreport] " George Anzinger
0 siblings, 1 reply; 8+ messages in thread
From: Tom Rini @ 2004-03-02 22:02 UTC (permalink / raw)
To: Kernel Mailing List, kgdb-bugreport, amit, Pavel Machek
Hello. Since a 'T' packet is allowed to send back information on an
arbitrary number of registers, and on PPC32 we've always been including
information on the stack pointer and program counter, I was wondering
what people thought of the following patch:
diff -u linux-2.6.3/include/asm-x86_64/kgdb.h linux-2.6.3/include/asm-x86_64/kgdb.h
--- linux-2.6.3/include/asm-x86_64/kgdb.h 2004-02-27 11:30:37.445782703 -0700
+++ linux-2.6.3/include/asm-x86_64/kgdb.h 2004-03-02 14:42:47.854532793 -0700
@@ -48,6 +48,10 @@
/* Number of bytes of registers. */
#define NUMREGBYTES (_LASTREG*8)
+#define PC_REGNUM _PC /* Program Counter */
+#define SP_REGNUM _RSP /* Stack Pointer */
+#define PTRACE_PC rip /* Program Counter, in ptrace regs. */
+
#define BREAKPOINT() asm(" int $3");
#define BREAK_INSTR_SIZE 1
diff -u linux-2.6.3/include/asm-i386/kgdb.h linux-2.6.3/include/asm-i386/kgdb.h
--- linux-2.6.3/include/asm-i386/kgdb.h 2004-02-26 13:14:41.769186750 -0700
+++ linux-2.6.3/include/asm-i386/kgdb.h 2004-03-02 14:42:03.232624041 -0700
@@ -43,6 +43,10 @@
_GS /* 15 */
};
+#define PC_REGNUM _PC /* Program Counter */
+#define SP_REGNUM _ESP /* Stack Pointer */
+#define PTRACE_PC eip /* Program Counter, in ptrace regs. */
+
#define BREAKPOINT() asm(" int $3");
#define BREAK_INSTR_SIZE 1
diff -u linux-2.6.3/kernel/kgdb.c linux-2.6.3/kernel/kgdb.c
--- linux-2.6.3/kernel/kgdb.c 2004-03-02 14:25:42.590401068 -0700
+++ linux-2.6.3/kernel/kgdb.c 2004-03-02 14:51:51.535627684 -0700
@@ -695,12 +695,24 @@
/* Master processor is completely in the debugger */
kgdb_post_master_code(linux_regs, exVector, err_code);
+ /* If kgdb is connected, then an exception has occured, and
+ * we need to pass something back to GDB. */
if (kgdb_connected) {
- /* reply to host that an exception has occurred */
ptr = remcom_out_buffer;
*ptr++ = 'T';
*ptr++ = hexchars[(signo >> 4) % 16];
*ptr++ = hexchars[signo % 16];
+ *ptr++ = hexchars[(PC_REGNUM >> 4) % 16];
+ *ptr++ = hexchars[PC_REGNUM % 16];
+ *ptr++ = ':';
+ ptr = kgdb_mem2hex((char *)&linux_regs->PTRACE_PC, ptr, 4);
+ *ptr++ = ';';
+ *ptr++ = hexchars[SP_REGNUM >> 4];
+ *ptr++ = hexchars[SP_REGNUM & 0xf];
+ *ptr++ = ':';
+ ptr = kgdb_mem2hex(((char *)linux_regs) + SP_REGNUM * 4, ptr,
+ 4);
+ *ptr++ = ';';
ptr += strlen(strcpy(ptr, "thread:"));
int_to_threadref(&thref, shadow_pid(current->pid));
ptr = pack_threadid(ptr, &thref);
@@ -728,11 +740,28 @@
* we clear out our breakpoints now incase
* GDB is reconnecting. */
remove_all_break();
- remcom_out_buffer[0] = 'S';
- remcom_out_buffer[1] = hexchars[signo >> 4];
- remcom_out_buffer[2] = hexchars[signo % 16];
+ /* reply to host that an exception has occurred */
+ ptr = remcom_out_buffer;
+ *ptr++ = 'T';
+ *ptr++ = hexchars[(signo >> 4) % 16];
+ *ptr++ = hexchars[signo % 16];
+ *ptr++ = hexchars[(PC_REGNUM >> 4) % 16];
+ *ptr++ = hexchars[PC_REGNUM % 16];
+ *ptr++ = ':';
+ ptr = kgdb_mem2hex((char *)&linux_regs->PTRACE_PC, ptr,
+ 4);
+ *ptr++ = ';';
+ *ptr++ = hexchars[SP_REGNUM >> 4];
+ *ptr++ = hexchars[SP_REGNUM & 0xf];
+ *ptr++ = ':';
+ ptr = kgdb_mem2hex(((char *)linux_regs) + SP_REGNUM * 4,
+ ptr, 4);
+ *ptr++ = ';';
+ ptr += strlen(strcpy(ptr, "thread:"));
+ int_to_threadref(&thref, shadow_pid(current->pid));
+ ptr = pack_threadid(ptr, &thref);
+ *ptr++ = ';';
break;
-
case 'g': /* return the value of the CPU registers */
thread = kgdb_usethread;
Is this too much extra stuff to bother with, since that information can
be gotten elsewhere?
--
Tom Rini
http://gate.crashing.org/~trini/
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-02 22:02 [KGDB][RFC] Send a fuller T packet Tom Rini
@ 2004-03-02 23:28 ` George Anzinger
2004-03-02 23:36 ` Tom Rini
0 siblings, 1 reply; 8+ messages in thread
From: George Anzinger @ 2004-03-02 23:28 UTC (permalink / raw)
To: Tom Rini; +Cc: Kernel Mailing List, kgdb-bugreport, amit, Pavel Machek
Tom Rini wrote:
> Hello. Since a 'T' packet is allowed to send back information on an
> arbitrary number of registers, and on PPC32 we've always been including
> information on the stack pointer and program counter, I was wondering
> what people thought of the following patch:
>
> diff -u linux-2.6.3/include/asm-x86_64/kgdb.h linux-2.6.3/include/asm-x86_64/kgdb.h
> --- linux-2.6.3/include/asm-x86_64/kgdb.h 2004-02-27 11:30:37.445782703 -0700
> +++ linux-2.6.3/include/asm-x86_64/kgdb.h 2004-03-02 14:42:47.854532793 -0700
> @@ -48,6 +48,10 @@
> /* Number of bytes of registers. */
> #define NUMREGBYTES (_LASTREG*8)
>
> +#define PC_REGNUM _PC /* Program Counter */
> +#define SP_REGNUM _RSP /* Stack Pointer */
> +#define PTRACE_PC rip /* Program Counter, in ptrace regs. */
I would really like to keep this stuff out of kgdb.h since it may be included by
the user to pick up the BREAKPOINT() (which, by the way we should standardize as
I note that here it has () while not on the current x86).
Isn't there a kgdb_local.h which is used only by kdgd and friends? We really do
want to keep the name space as clean as possible to prevent possible conflicts.
> +
> #define BREAKPOINT() asm(" int $3");
> #define BREAK_INSTR_SIZE 1
>
> diff -u linux-2.6.3/include/asm-i386/kgdb.h linux-2.6.3/include/asm-i386/kgdb.h
> --- linux-2.6.3/include/asm-i386/kgdb.h 2004-02-26 13:14:41.769186750 -0700
> +++ linux-2.6.3/include/asm-i386/kgdb.h 2004-03-02 14:42:03.232624041 -0700
> @@ -43,6 +43,10 @@
> _GS /* 15 */
> };
>
> +#define PC_REGNUM _PC /* Program Counter */
> +#define SP_REGNUM _ESP /* Stack Pointer */
> +#define PTRACE_PC eip /* Program Counter, in ptrace regs. */
> +
> #define BREAKPOINT() asm(" int $3");
> #define BREAK_INSTR_SIZE 1
>
> diff -u linux-2.6.3/kernel/kgdb.c linux-2.6.3/kernel/kgdb.c
> --- linux-2.6.3/kernel/kgdb.c 2004-03-02 14:25:42.590401068 -0700
> +++ linux-2.6.3/kernel/kgdb.c 2004-03-02 14:51:51.535627684 -0700
> @@ -695,12 +695,24 @@
> /* Master processor is completely in the debugger */
> kgdb_post_master_code(linux_regs, exVector, err_code);
>
> + /* If kgdb is connected, then an exception has occured, and
> + * we need to pass something back to GDB. */
> if (kgdb_connected) {
> - /* reply to host that an exception has occurred */
> ptr = remcom_out_buffer;
> *ptr++ = 'T';
> *ptr++ = hexchars[(signo >> 4) % 16];
> *ptr++ = hexchars[signo % 16];
> + *ptr++ = hexchars[(PC_REGNUM >> 4) % 16];
> + *ptr++ = hexchars[PC_REGNUM % 16];
> + *ptr++ = ':';
> + ptr = kgdb_mem2hex((char *)&linux_regs->PTRACE_PC, ptr, 4);
> + *ptr++ = ';';
> + *ptr++ = hexchars[SP_REGNUM >> 4];
> + *ptr++ = hexchars[SP_REGNUM & 0xf];
> + *ptr++ = ':';
> + ptr = kgdb_mem2hex(((char *)linux_regs) + SP_REGNUM * 4, ptr,
> + 4);
> + *ptr++ = ';';
> ptr += strlen(strcpy(ptr, "thread:"));
> int_to_threadref(&thref, shadow_pid(current->pid));
> ptr = pack_threadid(ptr, &thref);
> @@ -728,11 +740,28 @@
> * we clear out our breakpoints now incase
> * GDB is reconnecting. */
> remove_all_break();
> - remcom_out_buffer[0] = 'S';
> - remcom_out_buffer[1] = hexchars[signo >> 4];
> - remcom_out_buffer[2] = hexchars[signo % 16];
> + /* reply to host that an exception has occurred */
> + ptr = remcom_out_buffer;
> + *ptr++ = 'T';
> + *ptr++ = hexchars[(signo >> 4) % 16];
> + *ptr++ = hexchars[signo % 16];
> + *ptr++ = hexchars[(PC_REGNUM >> 4) % 16];
> + *ptr++ = hexchars[PC_REGNUM % 16];
> + *ptr++ = ':';
> + ptr = kgdb_mem2hex((char *)&linux_regs->PTRACE_PC, ptr,
> + 4);
> + *ptr++ = ';';
> + *ptr++ = hexchars[SP_REGNUM >> 4];
> + *ptr++ = hexchars[SP_REGNUM & 0xf];
> + *ptr++ = ':';
> + ptr = kgdb_mem2hex(((char *)linux_regs) + SP_REGNUM * 4,
> + ptr, 4);
> + *ptr++ = ';';
> + ptr += strlen(strcpy(ptr, "thread:"));
> + int_to_threadref(&thref, shadow_pid(current->pid));
> + ptr = pack_threadid(ptr, &thref);
> + *ptr++ = ';';
> break;
> -
> case 'g': /* return the value of the CPU registers */
> thread = kgdb_usethread;
>
>
> Is this too much extra stuff to bother with, since that information can
> be gotten elsewhere?
>
--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-02 23:28 ` [Kgdb-bugreport] " George Anzinger
@ 2004-03-02 23:36 ` Tom Rini
2004-03-03 0:22 ` George Anzinger
2004-03-03 10:52 ` Pavel Machek
0 siblings, 2 replies; 8+ messages in thread
From: Tom Rini @ 2004-03-02 23:36 UTC (permalink / raw)
To: George Anzinger; +Cc: Kernel Mailing List, kgdb-bugreport, amit, Pavel Machek
On Tue, Mar 02, 2004 at 03:28:45PM -0800, George Anzinger wrote:
> Tom Rini wrote:
> >Hello. Since a 'T' packet is allowed to send back information on an
> >arbitrary number of registers, and on PPC32 we've always been including
> >information on the stack pointer and program counter, I was wondering
> >what people thought of the following patch:
> >
> >diff -u linux-2.6.3/include/asm-x86_64/kgdb.h
> >linux-2.6.3/include/asm-x86_64/kgdb.h
> >--- linux-2.6.3/include/asm-x86_64/kgdb.h 2004-02-27
> >11:30:37.445782703 -0700
> >+++ linux-2.6.3/include/asm-x86_64/kgdb.h 2004-03-02
> >14:42:47.854532793 -0700
> >@@ -48,6 +48,10 @@
> > /* Number of bytes of registers. */
> > #define NUMREGBYTES (_LASTREG*8)
> >
> >+#define PC_REGNUM _PC /* Program Counter */
> >+#define SP_REGNUM _RSP /* Stack Pointer */
> >+#define PTRACE_PC rip /* Program Counter, in ptrace regs. */
>
> I would really like to keep this stuff out of kgdb.h since it may be
> included by the user to pick up the BREAKPOINT() (which, by the way we
> should standardize as I note that here it has () while not on the current
> x86).
It's BREAKPOINT() everywhere:
$ grep BREAKPOINT include/asm-*/kgdb.h
include/asm-i386/kgdb.h:#define BREAKPOINT() asm(" int $3");
include/asm-ppc/kgdb.h:#define BREAKPOINT() asm(".long 0x7d821008") /* twge r2, r2 */
include/asm-x86_64/kgdb.h:#define BREAKPOINT() asm(" int $3");
> Isn't there a kgdb_local.h which is used only by kdgd and friends? We
> really do want to keep the name space as clean as possible to prevent
> possible conflicts.
The simple answer is you don't call BREAKPOINT() in your code anywhere.
You call breakpoint() or kgdb_schedule_breakpoint().
The split here is different in that <linux/kgdb.h> should be standalone
(it's not, _yet_).
But this is all an aside to my question. :)
--
Tom Rini
http://gate.crashing.org/~trini/
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-02 23:36 ` Tom Rini
@ 2004-03-03 0:22 ` George Anzinger
2004-03-03 5:06 ` Amit S. Kale
2004-03-03 10:52 ` Pavel Machek
1 sibling, 1 reply; 8+ messages in thread
From: George Anzinger @ 2004-03-03 0:22 UTC (permalink / raw)
To: Tom Rini; +Cc: Kernel Mailing List, kgdb-bugreport, amit, Pavel Machek
Tom Rini wrote:
> On Tue, Mar 02, 2004 at 03:28:45PM -0800, George Anzinger wrote:
>
>
>>Tom Rini wrote:
>>
>>>Hello. Since a 'T' packet is allowed to send back information on an
>>>arbitrary number of registers, and on PPC32 we've always been including
>>>information on the stack pointer and program counter, I was wondering
>>>what people thought of the following patch:
>>>
>>>diff -u linux-2.6.3/include/asm-x86_64/kgdb.h
>>>linux-2.6.3/include/asm-x86_64/kgdb.h
>>>--- linux-2.6.3/include/asm-x86_64/kgdb.h 2004-02-27
>>>11:30:37.445782703 -0700
>>>+++ linux-2.6.3/include/asm-x86_64/kgdb.h 2004-03-02
>>>14:42:47.854532793 -0700
>>>@@ -48,6 +48,10 @@
>>>/* Number of bytes of registers. */
>>>#define NUMREGBYTES (_LASTREG*8)
>>>
>>>+#define PC_REGNUM _PC /* Program Counter */
>>>+#define SP_REGNUM _RSP /* Stack Pointer */
>>>+#define PTRACE_PC rip /* Program Counter, in ptrace regs. */
>>
>>I would really like to keep this stuff out of kgdb.h since it may be
>>included by the user to pick up the BREAKPOINT() (which, by the way we
>>should standardize as I note that here it has () while not on the current
>>x86).
>
>
> It's BREAKPOINT() everywhere:
Yeah, something you changed? Oh well, I will just have to learn to put the "()"
in :)
> $ grep BREAKPOINT include/asm-*/kgdb.h
> include/asm-i386/kgdb.h:#define BREAKPOINT() asm(" int $3");
> include/asm-ppc/kgdb.h:#define BREAKPOINT() asm(".long 0x7d821008") /* twge r2, r2 */
> include/asm-x86_64/kgdb.h:#define BREAKPOINT() asm(" int $3");
>
>
>>Isn't there a kgdb_local.h which is used only by kdgd and friends? We
>>really do want to keep the name space as clean as possible to prevent
>>possible conflicts.
>
>
> The simple answer is you don't call BREAKPOINT() in your code anywhere.
> You call breakpoint() or kgdb_schedule_breakpoint().
Uh, why? Last I knew that was a real function. Most of the time I just want a
simple breakpoint. I surly don't want the register dumps and such that a
function call causes, not to mention that it may do something else that is not
friendly.
> The split here is different in that <linux/kgdb.h> should be standalone
> (it's not, _yet_).
Yeah, but it will most likely include asm/kgdb.h....
>
> But this is all an aside to my question. :)
Right, my answer on that is if it reduces the line traffic yes, if not, no.
Because then it is just bloat.
>
--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-03 0:22 ` George Anzinger
@ 2004-03-03 5:06 ` Amit S. Kale
0 siblings, 0 replies; 8+ messages in thread
From: Amit S. Kale @ 2004-03-03 5:06 UTC (permalink / raw)
To: George Anzinger, Tom Rini
Cc: Kernel Mailing List, kgdb-bugreport, Pavel Machek
Hi,
Polution of kgdb.h is definitely bad.
I tried this code from Tom's bitkeeper tree some time back. It was incorrect
in two aspects hence I took only the minimal 'T' packet.
1. It assumes 32 bit pc and sp.
2. sp is not equal to ((char *)linux_regs) + SP_REGNUM * 4 on powerpc.
A full 'T' packet is still a good idea because it saves a 'g' packet in
following cases:
1. gdb internal breakpoints, like module_event.
2. conditional breakpoints.
3. tracepoints.
In general we can report an arbitrary number of registers in a 'T' packet.
Reporting registers other than PC and SP is effectively making 'T' packet
into a 'g' packet.
Architecture dependent code is the right place to compose the PC and SP part
of a 'T' packet. Given a pt_regs pointer, an architecture dependent function
can compose PC number, PC value, SP number and SP value, all of which are
arch dependent. How about architecture dependent function:
int make_pcsp_packet(struct pt_regs *, char *buffer)
-Amit
On Wednesday 03 Mar 2004 5:52 am, George Anzinger wrote:
> Tom Rini wrote:
> > On Tue, Mar 02, 2004 at 03:28:45PM -0800, George Anzinger wrote:
> >>Tom Rini wrote:
> >>>Hello. Since a 'T' packet is allowed to send back information on an
> >>>arbitrary number of registers, and on PPC32 we've always been including
> >>>information on the stack pointer and program counter, I was wondering
> >>>what people thought of the following patch:
> >>>
> >>>diff -u linux-2.6.3/include/asm-x86_64/kgdb.h
> >>>linux-2.6.3/include/asm-x86_64/kgdb.h
> >>>--- linux-2.6.3/include/asm-x86_64/kgdb.h 2004-02-27
> >>>11:30:37.445782703 -0700
> >>>+++ linux-2.6.3/include/asm-x86_64/kgdb.h 2004-03-02
> >>>14:42:47.854532793 -0700
> >>>@@ -48,6 +48,10 @@
> >>>/* Number of bytes of registers. */
> >>>#define NUMREGBYTES (_LASTREG*8)
> >>>
> >>>+#define PC_REGNUM _PC /* Program Counter */
> >>>+#define SP_REGNUM _RSP /* Stack Pointer */
> >>>+#define PTRACE_PC rip /* Program Counter, in ptrace regs. */
> >>
> >>I would really like to keep this stuff out of kgdb.h since it may be
> >>included by the user to pick up the BREAKPOINT() (which, by the way we
> >>should standardize as I note that here it has () while not on the current
> >>x86).
> >
> > It's BREAKPOINT() everywhere:
>
> Yeah, something you changed? Oh well, I will just have to learn to put the
> "()" in :)
>
> > $ grep BREAKPOINT include/asm-*/kgdb.h
> > include/asm-i386/kgdb.h:#define BREAKPOINT() asm(" int $3");
> > include/asm-ppc/kgdb.h:#define BREAKPOINT() asm(".long
> > 0x7d821008") /* twge r2, r2 */ include/asm-x86_64/kgdb.h:#define
> > BREAKPOINT() asm(" int $3");
> >
> >>Isn't there a kgdb_local.h which is used only by kdgd and friends? We
> >>really do want to keep the name space as clean as possible to prevent
> >>possible conflicts.
> >
> > The simple answer is you don't call BREAKPOINT() in your code anywhere.
> > You call breakpoint() or kgdb_schedule_breakpoint().
>
> Uh, why? Last I knew that was a real function. Most of the time I just
> want a simple breakpoint. I surly don't want the register dumps and such
> that a function call causes, not to mention that it may do something else
> that is not friendly.
>
> > The split here is different in that <linux/kgdb.h> should be standalone
> > (it's not, _yet_).
>
> Yeah, but it will most likely include asm/kgdb.h....
>
> > But this is all an aside to my question. :)
>
> Right, my answer on that is if it reduces the line traffic yes, if not, no.
> Because then it is just bloat.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-02 23:36 ` Tom Rini
2004-03-03 0:22 ` George Anzinger
@ 2004-03-03 10:52 ` Pavel Machek
2004-03-03 15:08 ` Tom Rini
1 sibling, 1 reply; 8+ messages in thread
From: Pavel Machek @ 2004-03-03 10:52 UTC (permalink / raw)
To: Tom Rini; +Cc: George Anzinger, Kernel Mailing List, kgdb-bugreport, amit
Hi!
> > I would really like to keep this stuff out of kgdb.h since it may be
> > included by the user to pick up the BREAKPOINT() (which, by the way we
> > should standardize as I note that here it has () while not on the current
> > x86).
>
> It's BREAKPOINT() everywhere:
> $ grep BREAKPOINT include/asm-*/kgdb.h
> include/asm-i386/kgdb.h:#define BREAKPOINT() asm(" int $3");
> include/asm-ppc/kgdb.h:#define BREAKPOINT() asm(".long 0x7d821008") /* twge r2, r2 */
> include/asm-x86_64/kgdb.h:#define BREAKPOINT() asm(" int $3");
Notice how it ends with ';' on everything but ppc. Perhaps it needs do
{ } while (0) wrapping?
Pavel
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-03 10:52 ` Pavel Machek
@ 2004-03-03 15:08 ` Tom Rini
2004-03-04 0:36 ` George Anzinger
0 siblings, 1 reply; 8+ messages in thread
From: Tom Rini @ 2004-03-03 15:08 UTC (permalink / raw)
To: Pavel Machek; +Cc: George Anzinger, Kernel Mailing List, kgdb-bugreport, amit
On Wed, Mar 03, 2004 at 11:52:47AM +0100, Pavel Machek wrote:
> Hi!
>
>
> > > I would really like to keep this stuff out of kgdb.h since it may be
> > > included by the user to pick up the BREAKPOINT() (which, by the way we
> > > should standardize as I note that here it has () while not on the current
> > > x86).
> >
> > It's BREAKPOINT() everywhere:
> > $ grep BREAKPOINT include/asm-*/kgdb.h
> > include/asm-i386/kgdb.h:#define BREAKPOINT() asm(" int $3");
> > include/asm-ppc/kgdb.h:#define BREAKPOINT() asm(".long 0x7d821008") /* twge r2, r2 */
> > include/asm-x86_64/kgdb.h:#define BREAKPOINT() asm(" int $3");
>
> Notice how it ends with ';' on everything but ppc. Perhaps it needs do
> { } while (0) wrapping?
... not that PPC works right now :) But yes, you're right.
--
Tom Rini
http://gate.crashing.org/~trini/
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [Kgdb-bugreport] [KGDB][RFC] Send a fuller T packet
2004-03-03 15:08 ` Tom Rini
@ 2004-03-04 0:36 ` George Anzinger
0 siblings, 0 replies; 8+ messages in thread
From: George Anzinger @ 2004-03-04 0:36 UTC (permalink / raw)
To: Tom Rini; +Cc: Pavel Machek, Kernel Mailing List, kgdb-bugreport, amit
Tom Rini wrote:
> On Wed, Mar 03, 2004 at 11:52:47AM +0100, Pavel Machek wrote:
>
>>Hi!
>>
>>
>>
>>>>I would really like to keep this stuff out of kgdb.h since it may be
>>>>included by the user to pick up the BREAKPOINT() (which, by the way we
>>>>should standardize as I note that here it has () while not on the current
>>>>x86).
>>>
>>>It's BREAKPOINT() everywhere:
>>>$ grep BREAKPOINT include/asm-*/kgdb.h
>>>include/asm-i386/kgdb.h:#define BREAKPOINT() asm(" int $3");
>>>include/asm-ppc/kgdb.h:#define BREAKPOINT() asm(".long 0x7d821008") /* twge r2, r2 */
>>>include/asm-x86_64/kgdb.h:#define BREAKPOINT() asm(" int $3");
>>
>>Notice how it ends with ';' on everything but ppc. Perhaps it needs do
>>{ } while (0) wrapping?
>
>
> ... not that PPC works right now :) But yes, you're right.
>
I agree, lets force the ";".
--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2004-03-04 0:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-02 22:02 [KGDB][RFC] Send a fuller T packet Tom Rini
2004-03-02 23:28 ` [Kgdb-bugreport] " George Anzinger
2004-03-02 23:36 ` Tom Rini
2004-03-03 0:22 ` George Anzinger
2004-03-03 5:06 ` Amit S. Kale
2004-03-03 10:52 ` Pavel Machek
2004-03-03 15:08 ` Tom Rini
2004-03-04 0:36 ` George Anzinger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox