Add missing parameter to 'amd64_create_target_description' (and unbreak build)
authorSergio Durigan Junior <sergiodj@redhat.com>
Sat, 30 Jun 2018 01:36:42 +0000 (21:36 -0400)
committerSergio Durigan Junior <sergiodj@redhat.com>
Sat, 30 Jun 2018 01:38:46 +0000 (21:38 -0400)
While building gdbserver on GNU/Linux, the build failed with:

  ../../../binutils-gdb/gdb/gdbserver/linux-x86-tdesc.c: In function ‘const target_desc* amd64_linux_read_description(uint64_t, bool)’:
  ../../../binutils-gdb/gdb/gdbserver/linux-x86-tdesc.c:121:67: error: too few arguments to function ‘target_desc* amd64_create_target_description(uint64_t, bool, bool, bool)’
         *tdesc = amd64_create_target_description (xcr0, is_x32, true);
                                                                     ^
  In file included from ../../../binutils-gdb/gdb/gdbserver/linux-x86-tdesc.c:26:0:
  ../../../binutils-gdb/gdb/gdbserver/../arch/amd64.h:21:14: note: declared here
   target_desc *amd64_create_target_description (uint64_t xcr0, bool is_x32,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

According to Joel Brobecker:

> I think the parameter should be set to "true". Otherwise, it will
> not include the fs_base and gs_base register in the list of registers.
> Although the name of the source file says x86, the code itself is
> protected by...
>
>     #ifdef __x86_64__
>
> ... and is inside a function called amd64_linux_read_description.
> I also verified that this file gets compiled on amd64-linux platforms.
> See gdb/gdbserver/configure.srv:
>
>   x86_64-*-linux*)      srv_regobj="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
>
> The last piece of confirmation is that setting the parameter to "true"
> provides the behavior before the parameter was added; and the reason
> for adding the parameter was to remove the {fs,gs}_base registers
> from the list for Windows only.

Therefore I'm pushing the patch to unbreak the build.

gdb/gdbserver/ChangeLog:
2018-06-29  Joel Brobecker  <brobecker@adacore.com>

* linux-x86-tdesc.c (amd64_linux_read_description): Add missing
parameter in call to 'amd64_create_target_description'.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-x86-tdesc.c

index 2fd2d90a49cb707cf0c66b827ad8bdddd9bff4fb..c90de7c98ab225524c236f7c108abd8cbf8c3683 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-29  Joel Brobecker  <brobecker@adacore.com>
+
+       * linux-x86-tdesc.c (amd64_linux_read_description): Add missing
+       parameter in call to 'amd64_create_target_description'.
+
 2018-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * x86-tdesc.h: Remove executable permission flag.
index 358659b29510bb6002307fe36a7c50ac2f8deb22..c3aa20c982c33c3fb129f00f8021398254e26036 100644 (file)
@@ -118,7 +118,7 @@ amd64_linux_read_description (uint64_t xcr0, bool is_x32)
 
   if (*tdesc == NULL)
     {
-      *tdesc = amd64_create_target_description (xcr0, is_x32, true);
+      *tdesc = amd64_create_target_description (xcr0, is_x32, true, true);
 
       init_target_desc (*tdesc, amd64_expedite_regs);
     }