[PATCH v2] gdb/hurd: pass memory_tagged as false to find_memory_region_ftype

Enze Li enze.li@hotmail.com
Tue Jul 26 12:35:16 GMT 2022


On Mon, 2022-07-25 at 08:55 -0700, John Baldwin wrote:
> On 7/25/22 12:39 AM, Luis Machado wrote:
> > Hi!
> > 
> > On 7/24/22 04:40, Enze Li wrote:
> > > I tried building GDB on GNU/Hurd, and ran into this error:
> > > 
> > >     CXX    gnu-nat.o
> > > gnu-nat.c: In member function ‘virtual int
> > > gnu_nat_target::find_memory_regions(find_memory_region_ftype,
> > > void*)’:
> > > gnu-nat.c:2620:21: error: too few arguments to function
> > >    2620 |             (*func) (last_region_address,
> > >         |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
> > >    2621 |                      last_region_end -
> > > last_region_address,
> > >         |                     
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2622 |                      last_protection & VM_PROT_READ,
> > >         |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2623 |                      last_protection & VM_PROT_WRITE,
> > >         |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2624 |                      last_protection & VM_PROT_EXECUTE,
> > >         |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2625 |                      1, /* MODIFIED is unknown, pass it
> > > as true.  */
> > >         |                     
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2626 |                      data);
> > >         |                      ~~~~~
> > > gnu-nat.c:2635:13: error: too few arguments to function
> > >    2635 |     (*func) (last_region_address, last_region_end -
> > > last_region_address,
> > >         |    
> > > ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > ~~~
> > >    2636 |              last_protection & VM_PROT_READ,
> > >         |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2637 |              last_protection & VM_PROT_WRITE,
> > >         |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2638 |              last_protection & VM_PROT_EXECUTE,
> > >         |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2639 |              1, /* MODIFIED is unknown, pass it as
> > > true.  */
> > >         |             
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >    2640 |              data);
> > >         |              ~~~~~
> > > make[2]: *** [Makefile:1926: gnu-nat.o] Error 1
> > > 
> > > This is because in this commit:
> > > 
> > >     commit 68cffbbd4406b4efe1aa6e18460b1d7ca02549f1
> > >     Date:   Thu Mar 31 11:42:35 2022 +0100
> > > 
> > >         [AArch64] MTE corefile support
> > > 
> > > Added a new argument to find_memory_region_ftype, but did not
> > > pass it to
> > > the function in gnu-nat.c.  Fix this by passing memory_tagged as
> > > false.
> > > 
> > > As Luis pointed out, similar bugs may also appear on FreeBSD and
> > > NetBSD,
> > > and I have reproduced them on both systems.  This patch fixes
> > > them
> > > incidentally.
> > > 
> > > Tested by rebuilding on GNU/Hurd, FreeBSD/amd64 and NetBSD/amd64.
> > > ---
> > >    gdb/fbsd-nat.c   | 2 +-
> > >    gdb/gnu-nat.c    | 2 ++
> > >    gdb/netbsd-nat.c | 2 +-
> > >    3 files changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
> > > index 398f1c18b33..a4ca4a53415 100644
> > > --- a/gdb/fbsd-nat.c
> > > +++ b/gdb/fbsd-nat.c
> > > @@ -125,7 +125,7 @@ fbsd_nat_target::find_memory_regions
> > > (find_memory_region_ftype func,
> > >          Pass MODIFIED as true, we do not know the real
> > > modification state.  */
> > >          func (kve->kve_start, size, kve->kve_protection &
> > > KVME_PROT_READ,
> > >             kve->kve_protection & KVME_PROT_WRITE,
> > > -           kve->kve_protection & KVME_PROT_EXEC, 1, data);
> > > +           kve->kve_protection & KVME_PROT_EXEC, 1, false,
> > > data);
> > >        }
> > >      return 0;
> > >    }
> > > diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
> > > index 72314824278..5dd4d148c76 100644
> > > --- a/gdb/gnu-nat.c
> > > +++ b/gdb/gnu-nat.c
> > > @@ -2623,6 +2623,7 @@ gnu_nat_target::find_memory_regions
> > > (find_memory_region_ftype func,
> > >                      last_protection & VM_PROT_WRITE,
> > >                      last_protection & VM_PROT_EXECUTE,
> > >                      1, /* MODIFIED is unknown, pass it as true. 
> > > */
> > > +                    false, /* No memory tags in the object
> > > file.  */
> > >                      data);
> > >           last_region_address = region_address;
> > >           last_region_end = region_address += region_length;
> > > @@ -2637,6 +2638,7 @@ gnu_nat_target::find_memory_regions
> > > (find_memory_region_ftype func,
> > >              last_protection & VM_PROT_WRITE,
> > >              last_protection & VM_PROT_EXECUTE,
> > >              1, /* MODIFIED is unknown, pass it as true.  */
> > > +            false, /* No memory tags in the object file.  */
> > >              data);
> > >    
> > >      return 0;
> > > diff --git a/gdb/netbsd-nat.c b/gdb/netbsd-nat.c
> > > index c45df391afc..d3bf83d35f5 100644
> > > --- a/gdb/netbsd-nat.c
> > > +++ b/gdb/netbsd-nat.c
> > > @@ -259,7 +259,7 @@ nbsd_nat_target::find_memory_regions
> > > (find_memory_region_ftype func,
> > >          Pass MODIFIED as true, we do not know the real
> > > modification state.  */
> > >          func (kve->kve_start, size, kve->kve_protection &
> > > KVME_PROT_READ,
> > >             kve->kve_protection & KVME_PROT_WRITE,
> > > -           kve->kve_protection & KVME_PROT_EXEC, 1, data);
> > > +           kve->kve_protection & KVME_PROT_EXEC, 1, false,
> > > data);
> > >        }
> > >      return 0;
> > >    }
> > 
> > The above LGTM. Thanks again for getting these files fixed. I think
> > this one can go in as it is
> > fairly obvious and addresses broken builds for hurd, fbsd and
> > netbsd
> 
> Agreed, and the BSD bits all look good to me.

Hi John, Luis,

Thank you for the review.

> 
> Enze, do you have push access or do you need someone to push this
> (and the
> other netbsd build fix) for you?
> 

Yeah, I have.  I'm checking this in now.

Thanks,
Enze



More information about the Gdb-patches mailing list