sim: fix BFD_VMA format arguments on 32-bit hosts [PR gdb/29184]
authorSergei Trofimovich <siarheit@google.com>
Sat, 21 May 2022 07:53:50 +0000 (08:53 +0100)
committerSergei Trofimovich <siarheit@google.com>
Wed, 15 Jun 2022 22:12:56 +0000 (23:12 +0100)
Noticed format mismatch when attempted to build gdb on i686-linux-gnu
in --enable-64-bit-bfd mode:

    sim/../../sim/cris/sim-if.c:576:28:
        error: format '%lx' expects argument of type 'long unsigned int',
        but argument 4 has type 'bfd_size_type' {aka 'long long unsigned int'} [-Werror=format=]
      576 |       sim_do_commandf (sd, "memory region 0x%" BFD_VMA_FMT "x,0x%lx",
          |                            ^~~~~~~~~~~~~~~~~~~
      577 |          interp_load_addr, interpsiz);
          |                            ~~~~~~~~~
          |                            |
          |                            bfd_size_type {aka long long unsigned int}

While at it fixed format string for time-related types.

sim/cris/sim-if.c
sim/m32c/syscalls.c
sim/rx/syscalls.c

index 5b1240f041ff519b2d71719de51c0181a65df20f..d7c1005fcacccefa3fbbb3ca058d46d5b000b80f 100644 (file)
@@ -257,7 +257,8 @@ cris_load_elf_file (SIM_DESC sd, struct bfd *abfd, sim_write_fn do_write)
 
       if (verbose)
        sim_io_printf (sd,
-                      "Loading segment at 0x%" BFD_VMA_FMT "x, size 0x%lx\n",
+                      "Loading segment at 0x%" BFD_VMA_FMT "x, "
+                      "size 0x%" BFD_VMA_FMT "x\n",
                       lma, phdr[i].p_filesz);
 
       if (bfd_seek (abfd, phdr[i].p_offset, SEEK_SET) != 0
@@ -265,7 +266,7 @@ cris_load_elf_file (SIM_DESC sd, struct bfd *abfd, sim_write_fn do_write)
        {
          sim_io_eprintf (sd,
                          "%s: could not read segment at 0x%" BFD_VMA_FMT "x, "
-                         "size 0x%lx\n",
+                         "size 0x%" BFD_VMA_FMT "x\n",
                          STATE_MY_NAME (sd), lma, phdr[i].p_filesz);
          free (buf);
          return FALSE;
@@ -275,7 +276,7 @@ cris_load_elf_file (SIM_DESC sd, struct bfd *abfd, sim_write_fn do_write)
        {
          sim_io_eprintf (sd,
                          "%s: could not load segment at 0x%" BFD_VMA_FMT "x, "
-                         "size 0x%lx\n",
+                         "size 0x%" BFD_VMA_FMT "x\n",
                          STATE_MY_NAME (sd), lma, phdr[i].p_filesz);
          free (buf);
          return FALSE;
@@ -572,7 +573,8 @@ cris_handle_interpreter (SIM_DESC sd, struct bfd *abfd)
         memory area, so we go via a temporary area.  Luckily, the
         interpreter is supposed to be small, less than 0x40000
         bytes.  */
-      sim_do_commandf (sd, "memory region 0x%" BFD_VMA_FMT "x,0x%lx",
+      sim_do_commandf (sd, "memory region 0x%" BFD_VMA_FMT "x,"
+                      "0x%" BFD_VMA_FMT "x",
                       interp_load_addr, interpsiz);
 
       /* Now that memory for the interpreter is defined, load it.  */
index 27d4e8f737fe7649ffdfea02db98e8d674352569..fff4fc93314c6b781f52fedba43579bb558f5708 100644 (file)
@@ -299,8 +299,8 @@ m32c_syscall (int id)
 
        rv = gettimeofday (&tv, 0);
        if (trace)
-         printf ("gettimeofday: %ld sec %ld usec to 0x%x\n", tv.tv_sec,
-                 tv.tv_usec, tvaddr);
+         printf ("gettimeofday: %" PRId64 " sec %" PRId64 " usec to 0x%x\n",
+                 (int64_t)tv.tv_sec, (int64_t)tv.tv_usec, tvaddr);
        mem_put_si (tvaddr, tv.tv_sec);
        mem_put_si (tvaddr + 4, tv.tv_usec);
        put_reg (r0, rv);
index 285d4573da1654badcb958717baf545ebc0ed047..35ba7d9000beecd2c04abab0bc9f721a47bf76a0 100644 (file)
@@ -270,8 +270,8 @@ rx_syscall (int id)
 
        rv = gettimeofday (&tv, 0);
        if (trace)
-         printf ("gettimeofday: %ld sec %ld usec to 0x%x\n", tv.tv_sec,
-                 tv.tv_usec, tvaddr);
+         printf ("gettimeofday: %" PRId64 " sec %" PRId64 " usec to 0x%x\n",
+                 (int64_t)tv.tv_sec, (int64_t)tv.tv_usec, tvaddr);
        mem_put_si (tvaddr, tv.tv_sec);
        mem_put_si (tvaddr + 4, tv.tv_usec);
        put_reg (1, rv);