[lldb-dev] win64 "patch"

Greg Clayton via lldb-dev lldb-dev at lists.llvm.org
Thu Jun 2 11:09:59 PDT 2016


Looks good.

> On Jun 2, 2016, at 1:40 AM, Carlo Kok via lldb-dev <lldb-dev at lists.llvm.org> wrote:
> 
> Seems win64 almost works fine out of the box. 1 minor thing is needed:
> 
> 
> diff --git a/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp b/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp
> index 103cff4..4b37c3f 100644
> --- a/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp
> +++ b/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp
> @@ -136,6 +136,8 @@ RegisterInfo g_register_infos[] = {
>      nullptr},
> };
> 
> +static size_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
> +
> // Array of lldb register numbers used to define the set of all General Purpose Registers
> uint32_t g_gpr_reg_indices[] = {eRegisterIndexRax, eRegisterIndexRbx,  eRegisterIndexRcx, eRegisterIndexRdx,
>                                 eRegisterIndexRdi, eRegisterIndexRsi,  eRegisterIndexR8,  eRegisterIndexR9,
> @@ -169,7 +171,9 @@ RegisterContextWindows_x64::GetRegisterCount()
> const RegisterInfo *
> RegisterContextWindows_x64::GetRegisterInfoAtIndex(size_t reg)
> {
> -    return &g_register_infos[reg];
> +       if (reg < k_num_register_infos)
> +               return &g_register_infos[reg];
> +       return NULL;
> }
> 
> size_t
> 
> 
> The unwind logic asks for the "return address register" which doesn't exist; returns -1 and goes out of the bounds for g_register_infos.
> 
> -- 
> Carlo Kok
> RemObjects Software
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev



More information about the lldb-dev mailing list