[Lldb-commits] [PATCH] D38897: Add specific ppc64le hardware watchpoint handler

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Thu Oct 19 05:17:16 PDT 2017


New patch is fine. Lgtm
On Thu, Oct 19, 2017 at 4:56 AM Ana Julia Caetano via Phabricator <
reviews at reviews.llvm.org> wrote:

> anajuliapc added inline comments.
>
>
> ================
> Comment at:
> source/Plugins/Process/Linux/NativeRegisterContextLinux_ppc64le.cpp:327-333
> +  for (uint32_t i = 0; i < m_max_hwp_supported; i++) {
> +    if ((m_hwp_regs[i].control & 1) == 0) {
> +      wp_index = i; // Mark last free slot
> +    } else if (m_hwp_regs[i].address == addr) {
> +      return LLDB_INVALID_INDEX32; // We do not support duplicate
> watchpoints.
> +    }
> +  }
> ----------------
> zturner wrote:
> > Can we use a range-based for here?
> >
> > ```
> > DREG *reg = nullptr;
> > for (auto &dr : m_hwp_regs) {
> >   if (dr.control & 1) == 0)
> >     reg = &dr;
> >   else if (dr.address == addr)
> >     return LLDB_INVALID_INDEX32;
> > }
> >
> > if (!reg)
> >   return LLDB_INVALID_INDEX32;
> >
> > reg->real_addr = real_addr;
> > reg->address = addr;
> > reg->control = control_value;
> > reg->mode = rw_mode;
> > ```
> >
> > etc
> I don't think it's worth the effort to do it like that. This function
> returns `wp_index` anyway, and it's easier to limit the number of
> watchpoints to PowerPC's actual limit, which is given by ptrace.
>
>
> ================
> Comment at:
> source/Plugins/Process/Linux/NativeRegisterContextLinux_ppc64le.cpp:416-417
> +
> +bool NativeRegisterContextLinux_ppc64le::WatchpointIsEnabled(
> +    uint32_t wp_index) {
> +  Log
> *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_WATCHPOINTS));
> ----------------
> zturner wrote:
> > Can this function accept a `const DREG&` instead of an index?
> No because it's called by `NativeProcessLinux.`, I would have to change it
> too and I don't think I should since is a common file.
>
>
> ================
> Comment at:
> source/Plugins/Process/Linux/NativeRegisterContextLinux_ppc64le.h:70-72
> +  uint32_t GetWatchpointSize(uint32_t wp_index);
> +
> +  bool WatchpointIsEnabled(uint32_t wp_index);
> ----------------
> zturner wrote:
> > Can these two functions take `const DREG&` instead of indices?  Also, it
> seems like they could be raised out of the class and into global static
> functions in the cpp file.
> I had some ideas while implementing your sugestions... I'm thinking about
> removing these functions and put these information in `m_hwp_regs` struct.
> Do you think I should do it in a new patch?
>
>
> https://reviews.llvm.org/D38897
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20171019/ca5e26d2/attachment-0001.html>


More information about the lldb-commits mailing list