Re: [PATCH 0/3 v3] [AArch64] Support tagged pointer

Omair Javaid
2018-04-16T01:36:38Z

On 11 April 2018 at 23:27, Pedro Alves <palves@redhat.com> wrote:

> On 04/11/2018 12:59 PM, Omair Javaid wrote:
>
> > Yes I can submit a patch that enables set_gdbarch_significant_addr_bit
> for aarch64-linux-tdep only.
> >
> > But a point to discuss here is the use-case where some people use
> *-linux-gdb for debugging seamlessly between kernel and user-space.
> >
> > There can be ways we can distinguish between user/kernel address space
> and clear or set top byte of the address even in case of linux targets.
> >
> > Does this sound something we should do?
>
> Yeah, why not.
>
> What are the pending kernel debugging patches using to distinguish
> userspace and kernel debugging modes? Off hand, I'd think we'd want to
> make those separate ABIs / osabis / gdbarchs.
>

Sorry for late reply on this I am out of office this week.

I have given this a thought and I propose to do the following:

Turn on pointer tagging on OSABI (LINUX) by default.

Add commands set aarch64 pointer-tagging show/enable/disable.

Once LKD patches for aarch64/arm land in our need for this will
automatically be solved.

^ Does this make sense?

For Linux Kernel Debugging we have separate OSABI (LINUX_KERNEL). Patch
snippet from LKD patches by Phillip given below:

+static enum gdb_osabi
+s390_lk_osabi_sniffer (bfd *abfd)
+{
+ if (bfd_get_section_by_name (abfd, ".reg-s390-prefix")
+ || bfd_get_section_by_name (abfd, "__ksymtab"))
+ return GDB_OSABI_LINUX_KERNEL;
+
+ return GDB_OSABI_UNKNOWN;
+}
+
+extern initialize_file_ftype _initialize_s390_lk_tdep; /*
-Wmissing-prototypes */
+
+void
+_initialize_s390_lk_tdep (void)
+{
+ /* Hook us into the OSABI mechanism. */
+ gdbarch_register_osabi (bfd_arch_s390, bfd_mach_s390_64,
GDB_OSABI_LINUX_KERNEL,
+ s390_lk_init_abi_64);
+ /* Add OSABI sniffer. */
+ gdbarch_register_osabi_sniffer (bfd_arch_s390, bfd_target_elf_flavour,
+ s390_lk_osabi_sniffer);
+
+ /* Initialize the Linux kernel target descriptions. */
+ initialize_tdesc_s390x_cr_linux64 ();
+ initialize_tdesc_s390x_vxcr_linux64 ();
+}

Thanks,
> Pedro Alves
>