Fix build errors for armhf
authorLuis Machado <luis.machado@linaro.org>
Thu, 21 Jan 2021 13:27:12 +0000 (10:27 -0300)
committerLuis Machado <luis.machado@linaro.org>
Thu, 21 Jan 2021 20:16:02 +0000 (17:16 -0300)
When building for 32-bit ARM, I ran into a couple build failures.

The first one seems to be caused by recent changes to warning switches,
leading to the following error:

--
In file included from gdb/coffread.c:35:0:
gdb/coffread.c: In function  "void enter_linenos(file_ptr, int, int, objfile*)":
gdb/complaints.h:40:40: error: format "%ld" expects argument of type "long int", but argument 2 has type "file_ptr {aka long long int}" [-Werror=format=]
  complaint_internal (FMT, ##__VA_ARGS__);  \
                                        ^
gdb/coffread.c:1413:7: note: in expansion of macro "complaint"
       complaint (_("Line number pointer %ld lower than start of line numbers"),
       ^~~~~~~~~
--

The other one is due to a narrowing conversion in valops.c:

--
gdb/valops.c: In function "value* value_assign(value*, value*)":
gdb/gdbtypes.h:1798:43: error: narrowing conversion of "type->type::length" from "ULONGEST {aka long long unsigned int}" to "size_t {aka unsigned int}" inside { } [-Werror=narrowing]
 #define TYPE_LENGTH(thistype) (thistype)->length
                               ~~~~~~~~~~~~^
gdb/valops.c:1252:9: note: in expansion of macro "TYPE_LENGTH"
         TYPE_LENGTH (type)});
--

Fix both with the following patch. Validated with --enable-targets=all on
Ubuntu 18.04/20.04.

gdb/ChangeLog:

2021-01-21  Luis Machado  <luis.machado@linaro.org>

* coffread.c (enter_linenos): Passing string to complaint.
* valops.c (value_assign): Make array view.

gdb/ChangeLog
gdb/coffread.c
gdb/valops.c

index 2d820d2335742ba3b5b650ab5ede75254c4c0908..83c1de9f54352ebda49911ec2581caa376842583 100644 (file)
@@ -1,3 +1,8 @@
+2021-01-21  Luis Machado  <luis.machado@linaro.org>
+
+       * coffread.c (enter_linenos): Passing string to complaint.
+       * valops.c (value_assign): Make array view.
+
 2021-01-21  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * auto-load.h (debug_auto_load): Move here.
index 3b59ba9c922d1d55f6d2a38dab00d5bf7719d337..77752bc9111b02c35535d8a722cd1f7341646f1c 100644 (file)
@@ -1410,8 +1410,8 @@ enter_linenos (file_ptr file_offset, int first_line,
     return;
   if (file_offset < linetab_offset)
     {
-      complaint (_("Line number pointer %ld lower than start of line numbers"),
-                file_offset);
+      complaint (_("Line number pointer %s lower than start of line numbers"),
+                plongest (file_offset));
       if (file_offset > linetab_size)  /* Too big to be an offset?  */
        return;
       file_offset += linetab_offset;   /* Try reading at that linetab
index 882f6e7f0c266e5badbef4e3b04998df66daeb9c..d0d5628d11bcfb0111c346568560301cd9d6481b 100644 (file)
@@ -1246,10 +1246,12 @@ value_assign (struct value *toval, struct value *fromval)
              }
            else
              {
+               gdb::array_view<const gdb_byte> contents
+                 = gdb::make_array_view (value_contents (fromval),
+                                         TYPE_LENGTH (type));
                put_frame_register_bytes (frame, value_reg,
                                          value_offset (toval),
-                                         {value_contents (fromval),
-                                          TYPE_LENGTH (type)});
+                                         contents);
              }
          }