On 02/12/2013 04:34 AM, Vincent wrote:
> The 'ssb' command can only be handled when we have a disassembler, to check 
> for
> branches, so remove the 'ssb' command for now.

Wow, that was fast.  This looks fine too.

I'll add it to the merge queue.

Thanks!
Jason.

>
> Signed-off-by: Vincent Stehlé <vincent.ste...@laposte.net>
> Cc: jason.wes...@windriver.com
> Cc: kgdb-bugreport@lists.sourceforge.net
> ---
>
> Hi,
>
> Here is a patch proposal to remove 'ssb' from the kernel, which "works for 
> me".
>
> For simplicity, following defines like KDB_CMD_KGDB or debug traces numbers
> have not been touched. Please let me know if they should be "renumbered".
>
> Best regards,
>
> V.
>
>  kernel/debug/kdb/kdb_bp.c       |   20 ++------------------
>  kernel/debug/kdb/kdb_debugger.c |    1 -
>  kernel/debug/kdb/kdb_main.c     |   16 ----------------
>  kernel/debug/kdb/kdb_private.h  |    4 ----
>  4 files changed, 2 insertions(+), 39 deletions(-)
>
> diff --git a/kernel/debug/kdb/kdb_bp.c b/kernel/debug/kdb/kdb_bp.c
> index 8418c2f..70a5046 100644
> --- a/kernel/debug/kdb/kdb_bp.c
> +++ b/kernel/debug/kdb/kdb_bp.c
> @@ -486,11 +486,9 @@ static int kdb_bc(int argc, const char **argv)
>  /*
>   * kdb_ss
>   *
> - *   Process the 'ss' (Single Step) and 'ssb' (Single Step to Branch)
> - *   commands.
> + *   Process the 'ss' (Single Step) command.
>   *
>   *   ss
> - *   ssb
>   *
>   * Parameters:
>   *   argc    Argument count
> @@ -498,35 +496,23 @@ static int kdb_bc(int argc, const char **argv)
>   * Outputs:
>   *   None.
>   * Returns:
> - *   KDB_CMD_SS[B] for success, a kdb error if failure.
> + *   KDB_CMD_SS for success, a kdb error if failure.
>   * Locking:
>   *   None.
>   * Remarks:
>   *
>   *   Set the arch specific option to trigger a debug trap after the next
>   *   instruction.
> - *
> - *   For 'ssb', set the trace flag in the debug trap handler
> - *   after printing the current insn and return directly without
> - *   invoking the kdb command processor, until a branch instruction
> - *   is encountered.
>   */
>  
>  static int kdb_ss(int argc, const char **argv)
>  {
> -     int ssb = 0;
> -
> -     ssb = (strcmp(argv[0], "ssb") == 0);
>       if (argc != 0)
>               return KDB_ARGCOUNT;
>       /*
>        * Set trace flag and go.
>        */
>       KDB_STATE_SET(DOING_SS);
> -     if (ssb) {
> -             KDB_STATE_SET(DOING_SSB);
> -             return KDB_CMD_SSB;
> -     }
>       return KDB_CMD_SS;
>  }
>  
> @@ -561,8 +547,6 @@ void __init kdb_initbptab(void)
>  
>       kdb_register_repeat("ss", kdb_ss, "",
>               "Single Step", 1, KDB_REPEAT_NO_ARGS);
> -     kdb_register_repeat("ssb", kdb_ss, "",
> -             "Single step to branch/call", 0, KDB_REPEAT_NO_ARGS);
>       /*
>        * Architecture dependent initialization.
>        */
> diff --git a/kernel/debug/kdb/kdb_debugger.c b/kernel/debug/kdb/kdb_debugger.c
> index be7b33b..2ab4f1a 100644
> --- a/kernel/debug/kdb/kdb_debugger.c
> +++ b/kernel/debug/kdb/kdb_debugger.c
> @@ -100,7 +100,6 @@ int kdb_stub(struct kgdb_state *ks)
>       /* Remove any breakpoints as needed by kdb and clear single step */
>       kdb_bp_remove();
>       KDB_STATE_CLEAR(DOING_SS);
> -     KDB_STATE_CLEAR(DOING_SSB);
>       KDB_STATE_SET(PAGER);
>       /* zero out any offline cpu data */
>       for_each_present_cpu(i) {
> diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
> index 8875254..c37ab68 100644
> --- a/kernel/debug/kdb/kdb_main.c
> +++ b/kernel/debug/kdb/kdb_main.c
> @@ -1112,7 +1112,6 @@ void kdb_set_current_task(struct task_struct *p)
>   *   KDB_CMD_GO      User typed 'go'.
>   *   KDB_CMD_CPU     User switched to another cpu.
>   *   KDB_CMD_SS      Single step.
> - *   KDB_CMD_SSB     Single step until branch.
>   */
>  static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
>                    kdb_dbtrap_t db_result)
> @@ -1151,14 +1150,6 @@ static int kdb_local(kdb_reason_t reason, int error, 
> struct pt_regs *regs,
>                       kdb_printf("due to Debug @ " kdb_machreg_fmt "\n",
>                                  instruction_pointer(regs));
>                       break;
> -             case KDB_DB_SSB:
> -                     /*
> -                      * In the midst of ssb command. Just return.
> -                      */
> -                     KDB_DEBUG_STATE("kdb_local 3", reason);
> -                     return KDB_CMD_SSB;     /* Continue with SSB command */
> -
> -                     break;
>               case KDB_DB_SS:
>                       break;
>               case KDB_DB_SSBPT:
> @@ -1281,7 +1272,6 @@ do_full_getstr:
>               if (diag == KDB_CMD_GO
>                || diag == KDB_CMD_CPU
>                || diag == KDB_CMD_SS
> -              || diag == KDB_CMD_SSB
>                || diag == KDB_CMD_KGDB)
>                       break;
>  
> @@ -1368,12 +1358,6 @@ int kdb_main_loop(kdb_reason_t reason, kdb_reason_t 
> reason2, int error,
>                       break;
>               }
>  
> -             if (result == KDB_CMD_SSB) {
> -                     KDB_STATE_SET(DOING_SS);
> -                     KDB_STATE_SET(DOING_SSB);
> -                     break;
> -             }
> -
>               if (result == KDB_CMD_KGDB) {
>                       if (!KDB_STATE(DOING_KGDB))
>                               kdb_printf("Entering please attach debugger "
> diff --git a/kernel/debug/kdb/kdb_private.h b/kernel/debug/kdb/kdb_private.h
> index 392ec6a..7afd3c8 100644
> --- a/kernel/debug/kdb/kdb_private.h
> +++ b/kernel/debug/kdb/kdb_private.h
> @@ -19,7 +19,6 @@
>  #define KDB_CMD_GO   (-1001)
>  #define KDB_CMD_CPU  (-1002)
>  #define KDB_CMD_SS   (-1003)
> -#define KDB_CMD_SSB  (-1004)
>  #define KDB_CMD_KGDB (-1005)
>  
>  /* Internal debug flags */
> @@ -125,8 +124,6 @@ extern int kdb_state;
>                                                * kdb control */
>  #define KDB_STATE_HOLD_CPU   0x00000010      /* Hold this cpu inside kdb */
>  #define KDB_STATE_DOING_SS   0x00000020      /* Doing ss command */
> -#define KDB_STATE_DOING_SSB  0x00000040      /* Doing ssb command,
> -                                              * DOING_SS is also set */
>  #define KDB_STATE_SSBPT              0x00000080      /* Install breakpoint
>                                                * after one ss, independent of
>                                                * DOING_SS */
> @@ -191,7 +188,6 @@ extern void kdb_bp_remove(void);
>  typedef enum {
>       KDB_DB_BPT,     /* Breakpoint */
>       KDB_DB_SS,      /* Single-step trap */
> -     KDB_DB_SSB,     /* Single step to branch */
>       KDB_DB_SSBPT,   /* Single step over breakpoint */
>       KDB_DB_NOBPT    /* Spurious breakpoint */
>  } kdb_dbtrap_t;


------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to