Replace bfd_hostptr_t with uintptr_t
authorAlan Modra <amodra@gmail.com>
Fri, 27 May 2022 05:58:34 +0000 (15:28 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 27 May 2022 12:38:59 +0000 (22:08 +0930)
bfd_hostptr_t is defined as a type large enough to hold either a long
or a pointer.  It mostly appears in the coff backend code in casts.
include/coff/internal.h struct internal_syment and union
internal_auxent have the only uses in data structures, where
comparison with include/coff/external.h and other code reveals that
the type only needs to be large enough for a 32-bit integer or a
pointer.  That should mean replacing with uintptr_t is OK.

14 files changed:
bfd/Makefile.in
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/coff-bfd.c
bfd/coffcode.h
bfd/coffgen.c
bfd/configure
bfd/configure.ac
bfd/configure.com
bfd/elflink.c
bfd/peicode.h
gas/symbols.c
gas/write.c
include/coff/internal.h

index 9999a07ea9be9397123f7b70ea39cd2b74a4cedb..741e08d603c36089551781e17ce768aee5a24fa1 100644 (file)
@@ -330,7 +330,6 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BFD_HOSTPTR_T = @BFD_HOSTPTR_T@
 BFD_HOST_64BIT_LONG = @BFD_HOST_64BIT_LONG@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
index 8c4c838f3f8b90606194b18731237c671869964d..dce682af9972a765e48ffb92250f1423f42d274b 100644 (file)
@@ -77,9 +77,6 @@ extern "C" {
 #define BFD64
 #endif
 
-/* Declaring a type wide enough to hold a host long and a host pointer.  */
-typedef @BFD_HOSTPTR_T@ bfd_hostptr_t;
-
 /* Forward declaration.  */
 typedef struct bfd bfd;
 
index 8140b50f00224fb80483c18d4c4abf66f5d36ca2..25061e153c7fe10b453d7e9c1decaa8e8e3f2703 100644 (file)
@@ -84,9 +84,6 @@ extern "C" {
 #define BFD64
 #endif
 
-/* Declaring a type wide enough to hold a host long and a host pointer.  */
-typedef @BFD_HOSTPTR_T@ bfd_hostptr_t;
-
 /* Forward declaration.  */
 typedef struct bfd bfd;
 
index 93ded37053dc7c1430d061fa997c0a34f34d1d39..2152bec182fed7d563d8dc2b5cd1ad4b8a5b509f 100644 (file)
@@ -46,7 +46,7 @@ bfd_coff_get_syment (bfd *abfd,
 
   if (csym->native->fix_value)
     psyment->n_value =
-      ((psyment->n_value - (bfd_hostptr_t) obj_raw_syments (abfd))
+      ((psyment->n_value - (uintptr_t) obj_raw_syments (abfd))
        / sizeof (combined_entry_type));
 
   /* FIXME: We should handle fix_line here.  */
index 1ffb6032bed73443a3034c2aa64934be275a9dc1..36e07025c6a370b3c13ffc79f70985ae50257b3f 100644 (file)
@@ -4620,7 +4620,7 @@ coff_slurp_symbol_table (bfd * abfd)
          BFD_ASSERT (src->is_sym);
          dst->symbol.name = (char *) (src->u.syment._n._n_n._n_offset);
          /* We use the native name field to point to the cached field.  */
-         src->u.syment._n._n_n._n_zeroes = (bfd_hostptr_t) dst;
+         src->u.syment._n._n_n._n_zeroes = (uintptr_t) dst;
          dst->symbol.section = coff_section_from_bfd_index (abfd,
                                                     src->u.syment.n_scnum);
          dst->symbol.flags = 0;
@@ -4829,7 +4829,7 @@ coff_slurp_symbol_table (bfd * abfd)
                 to the symbol instead of the index.  FIXME: This
                 should use a union.  */
              src->u.syment.n_value
-               = (bfd_hostptr_t) (native_symbols + src->u.syment.n_value);
+               = (uintptr_t) (native_symbols + src->u.syment.n_value);
              dst->symbol.value = src->u.syment.n_value;
              src->fix_value = 1;
              break;
index 0f0a785c72e254ce94956b590837b89236155834..c693cfc00cb5a140f950b8fada71e21ffa016b5d 100644 (file)
@@ -803,8 +803,8 @@ coff_mangle_symbols (bfd *bfd_ptr)
            {
              /* FIXME: We should use a union here.  */
              s->u.syment.n_value =
-               (bfd_hostptr_t) ((combined_entry_type *)
-                         ((bfd_hostptr_t) s->u.syment.n_value))->offset;
+               (uintptr_t) ((combined_entry_type *)
+                            (uintptr_t) s->u.syment.n_value)->offset;
              s->fix_value = 0;
            }
          if (s->fix_line)
@@ -1833,10 +1833,12 @@ coff_get_normalized_symtab (bfd *abfd)
 
              if ((bfd_size_type)(aux->u.auxent.x_file.x_n.x_n.x_offset)
                  >= obj_coff_strings_len (abfd))
-               internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) _("<corrupt>");
+               internal_ptr->u.syment._n._n_n._n_offset =
+                 (uintptr_t) _("<corrupt>");
              else
                internal_ptr->u.syment._n._n_n._n_offset =
-                 (bfd_hostptr_t) (string_table + (aux->u.auxent.x_file.x_n.x_n.x_offset));
+                 (uintptr_t) (string_table
+                              + aux->u.auxent.x_file.x_n.x_n.x_offset);
            }
          else
            {
@@ -1846,13 +1848,13 @@ coff_get_normalized_symtab (bfd *abfd)
              if (internal_ptr->u.syment.n_numaux > 1
                  && coff_data (abfd)->pe)
                internal_ptr->u.syment._n._n_n._n_offset =
-                 (bfd_hostptr_t)
-                 copy_name (abfd,
-                            aux->u.auxent.x_file.x_n.x_fname,
-                            internal_ptr->u.syment.n_numaux * symesz);
+                 ((uintptr_t)
+                  copy_name (abfd,
+                             aux->u.auxent.x_file.x_n.x_fname,
+                             internal_ptr->u.syment.n_numaux * symesz));
              else
                internal_ptr->u.syment._n._n_n._n_offset =
-                 ((bfd_hostptr_t)
+                 ((uintptr_t)
                   copy_name (abfd,
                              aux->u.auxent.x_file.x_n.x_fname,
                              (size_t) bfd_coff_filnmlen (abfd)));
@@ -1877,14 +1879,16 @@ coff_get_normalized_symtab (bfd *abfd)
 
                    if ((bfd_size_type)(aux->u.auxent.x_file.x_n.x_n.x_offset)
                        >= obj_coff_strings_len (abfd))
-                     aux->u.auxent.x_file.x_n.x_n.x_offset = (bfd_hostptr_t) _("<corrupt>");
+                     aux->u.auxent.x_file.x_n.x_n.x_offset =
+                       (uintptr_t) _("<corrupt>");
                    else
                      aux->u.auxent.x_file.x_n.x_n.x_offset =
-                       (bfd_hostptr_t) (string_table + (aux->u.auxent.x_file.x_n.x_n.x_offset));
+                       (uintptr_t) (string_table
+                                    + (aux->u.auxent.x_file.x_n.x_n.x_offset));
                  }
                else
                  aux->u.auxent.x_file.x_n.x_n.x_offset =
-                   ((bfd_hostptr_t)
+                   ((uintptr_t)
                     copy_name (abfd,
                                aux->u.auxent.x_file.x_n.x_fname,
                                (size_t) bfd_coff_filnmlen (abfd)));
@@ -1909,11 +1913,11 @@ coff_get_normalized_symtab (bfd *abfd)
              if (newstring == NULL)
                return NULL;
              strncpy (newstring, internal_ptr->u.syment._n._n_name, i);
-             internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) newstring;
+             internal_ptr->u.syment._n._n_n._n_offset = (uintptr_t) newstring;
              internal_ptr->u.syment._n._n_n._n_zeroes = 0;
            }
          else if (internal_ptr->u.syment._n._n_n._n_offset == 0)
-           internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) "";
+           internal_ptr->u.syment._n._n_n._n_offset = (uintptr_t) "";
          else if (!bfd_coff_symname_in_debug (abfd, &internal_ptr->u.syment))
            {
              /* Long name already.  Point symbol at the string in the
@@ -1926,12 +1930,12 @@ coff_get_normalized_symtab (bfd *abfd)
                }
              if (internal_ptr->u.syment._n._n_n._n_offset >= obj_coff_strings_len (abfd)
                  || string_table + internal_ptr->u.syment._n._n_n._n_offset < string_table)
-               internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) _("<corrupt>");
+               internal_ptr->u.syment._n._n_n._n_offset =
+                 (uintptr_t) _("<corrupt>");
              else
                internal_ptr->u.syment._n._n_n._n_offset =
-                 ((bfd_hostptr_t)
-                  (string_table
-                   + internal_ptr->u.syment._n._n_n._n_offset));
+                 ((uintptr_t) (string_table
+                               + internal_ptr->u.syment._n._n_n._n_offset));
            }
          else
            {
@@ -1944,13 +1948,15 @@ coff_get_normalized_symtab (bfd *abfd)
                  /* PR binutils/17512: Catch out of range offsets into the debug data.  */
                  if (internal_ptr->u.syment._n._n_n._n_offset > debug_sec->size
                      || debug_sec_data + internal_ptr->u.syment._n._n_n._n_offset < debug_sec_data)
-                   internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) _("<corrupt>");
+                   internal_ptr->u.syment._n._n_n._n_offset =
+                     (uintptr_t) _("<corrupt>");
                  else
-                   internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t)
-                     (debug_sec_data + internal_ptr->u.syment._n._n_n._n_offset);
+                   internal_ptr->u.syment._n._n_n._n_offset =
+                     (uintptr_t) (debug_sec_data
+                                  + internal_ptr->u.syment._n._n_n._n_offset);
                }
              else
-               internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) "";
+               internal_ptr->u.syment._n._n_n._n_offset = (uintptr_t) "";
            }
        }
       internal_ptr += internal_ptr->u.syment.n_numaux;
@@ -2035,8 +2041,8 @@ coff_get_symbol_info (bfd *abfd, asymbol *symbol, symbol_info *ret)
       && coffsymbol (symbol)->native->fix_value
       && coffsymbol (symbol)->native->is_sym)
     ret->value
-      = (((bfd_hostptr_t) coffsymbol (symbol)->native->u.syment.n_value
-         - (bfd_hostptr_t) obj_raw_syments (abfd))
+      = (((uintptr_t) coffsymbol (symbol)->native->u.syment.n_value
+         - (uintptr_t) obj_raw_syments (abfd))
         / sizeof (combined_entry_type));
 }
 
@@ -2085,8 +2091,7 @@ coff_print_symbol (bfd *abfd,
          if (! combined->fix_value)
            val = (bfd_vma) combined->u.syment.n_value;
          else
-           val = (((bfd_hostptr_t) combined->u.syment.n_value
-                   - (bfd_hostptr_t) root)
+           val = (((uintptr_t) combined->u.syment.n_value - (uintptr_t) root)
                   / sizeof (combined_entry_type));
 
          fprintf (file, "(sec %2d)(fl 0x%02x)(ty %4x)(scl %3d) (nx %d) 0x",
index a0071d97b68e8c736a00baabcce8a7654d867ac9..3d2656229e583c115d85ccc3ef644a01b61607e9 100755 (executable)
@@ -656,7 +656,6 @@ zlibinc
 zlibdir
 EXEEXT_FOR_BUILD
 CC_FOR_BUILD
-BFD_HOSTPTR_T
 BFD_HOST_64BIT_LONG
 HDEFINES
 MSGMERGE
@@ -11088,7 +11087,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11091 "configure"
+#line 11090 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11194,7 +11193,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11197 "configure"
+#line 11196 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12843,18 +12842,12 @@ if test "x${ac_cv_sizeof_void_p}" = "x8"; then
 fi
 
 BFD_HOST_64BIT_LONG=0
-BFD_HOSTPTR_T="unsigned long"
 if test "x${ac_cv_sizeof_long}" = "x8"; then
   BFD_HOST_64BIT_LONG=1
-elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
-  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-    BFD_HOSTPTR_T="unsigned long long"
-  fi
 fi
 
 
 
-
 # Put a plausible default for CC_FOR_BUILD in Makefile.
 if test -z "$CC_FOR_BUILD"; then
   if test "x$cross_compiling" = "xno"; then
index 52e9f8f8dcc7317908f03e218a39470fb10aac6a..8ad0e05959d6435016b1e36026f6bfb76e0463d3 100644 (file)
@@ -219,17 +219,11 @@ if test "x${ac_cv_sizeof_void_p}" = "x8"; then
 fi
 
 BFD_HOST_64BIT_LONG=0
-BFD_HOSTPTR_T="unsigned long"
 if test "x${ac_cv_sizeof_long}" = "x8"; then
   BFD_HOST_64BIT_LONG=1
-elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
-  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-    BFD_HOSTPTR_T="unsigned long long"
-  fi
 fi
 
 AC_SUBST(BFD_HOST_64BIT_LONG)
-AC_SUBST(BFD_HOSTPTR_T)
 
 BFD_CC_FOR_BUILD
 
index 2418bddd8af272fd09889d595e2d0d2da5490e95..cc8499a45893f50549a27c093d8b948a142fb935 100644 (file)
@@ -66,12 +66,6 @@ $DECK
       ERASE(match_pos);
       COPY_TEXT('0');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOSTPTR_T@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('unsigned __int64');
-   ENDIF;
    match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
index fc3a335c72d8f602ce6919240ef6f1a88e1d03f8..e4f6df430428e4be609bbe2928c0263e42f50430 100644 (file)
@@ -8372,8 +8372,7 @@ elf_create_symbuf (size_t symcount, Elf_Internal_Sym *isymbuf)
       ssymhead->count++;
     }
   BFD_ASSERT ((size_t) (ssymhead - ssymbuf) == shndx_count
-             && (((bfd_hostptr_t) ssym - (bfd_hostptr_t) ssymbuf)
-                 == total_size));
+             && (uintptr_t) ssym - (uintptr_t) ssymbuf == total_size);
 
   free (indbuf);
   return ssymbuf;
index 0346bc2174ec37d31b1872a7a1e7ee864700d71f..02573c8469455bfb83fb2e2f9c66f8c063ac1eec 100644 (file)
@@ -588,7 +588,7 @@ pe_ILF_make_a_symbol (pe_ILF_vars *  vars,
   /* Initialise the internal symbol structure.  */
   ent->u.syment.n_sclass         = sclass;
   ent->u.syment.n_scnum                  = section->target_index;
-  ent->u.syment._n._n_n._n_offset = (bfd_hostptr_t) sym;
+  ent->u.syment._n._n_n._n_offset = (uintptr_t) sym;
   ent->is_sym = true;
 
   sym->symbol.the_bfd = vars->abfd;
index fb480be6f2198d9e904d23417e90012c3bcea969..e3fddee8c79753e83a406f9f473a560243cd4bbd 100644 (file)
@@ -3023,7 +3023,7 @@ print_symbol_value_1 (FILE *file, symbolS *sym)
   if (!name || !name[0])
     name = "(unnamed)";
   fprintf (file, "sym ");
-  fprintf_vma (file, (bfd_vma) ((bfd_hostptr_t) sym));
+  fprintf_vma (file, (bfd_vma) (uintptr_t) sym);
   fprintf (file, " %s", name);
 
   if (sym->flags.local_symbol)
@@ -3034,7 +3034,7 @@ print_symbol_value_1 (FILE *file, symbolS *sym)
          && locsym->frag != NULL)
        {
          fprintf (file, " frag ");
-         fprintf_vma (file, (bfd_vma) ((bfd_hostptr_t) locsym->frag));
+         fprintf_vma (file, (bfd_vma) (uintptr_t) locsym->frag);
        }
       if (locsym->flags.resolved)
        fprintf (file, " resolved");
@@ -3045,7 +3045,7 @@ print_symbol_value_1 (FILE *file, symbolS *sym)
       if (sym->frag != &zero_address_frag)
        {
          fprintf (file, " frag ");
-         fprintf_vma (file, (bfd_vma) ((bfd_hostptr_t) sym->frag));
+         fprintf_vma (file, (bfd_vma) (uintptr_t) sym->frag);
        }
       if (sym->flags.written)
        fprintf (file, " written");
@@ -3121,7 +3121,7 @@ void
 print_expr_1 (FILE *file, expressionS *exp)
 {
   fprintf (file, "expr ");
-  fprintf_vma (file, (bfd_vma) ((bfd_hostptr_t) exp));
+  fprintf_vma (file, (bfd_vma) (uintptr_t) exp);
   fprintf (file, " ");
   switch (exp->X_op)
     {
index f607562794a77dbc809d9e013e79e8cd2a12aefc..20f5ce24d5fb17e25b487ee887e567432ed0bf4f 100644 (file)
@@ -3212,7 +3212,7 @@ print_fixup (fixS *fixp)
 {
   indent_level = 1;
   fprintf (stderr, "fix ");
-  fprintf_vma (stderr, (bfd_vma)((bfd_hostptr_t) fixp));
+  fprintf_vma (stderr, (bfd_vma) (uintptr_t) fixp);
   fprintf (stderr, " %s:%d",fixp->fx_file, fixp->fx_line);
   if (fixp->fx_pcrel)
     fprintf (stderr, " pcrel");
@@ -3223,7 +3223,7 @@ print_fixup (fixS *fixp)
   if (fixp->fx_done)
     fprintf (stderr, " done");
   fprintf (stderr, "\n    size=%d frag=", fixp->fx_size);
-  fprintf_vma (stderr, (bfd_vma) ((bfd_hostptr_t) fixp->fx_frag));
+  fprintf_vma (stderr, (bfd_vma) (uintptr_t) fixp->fx_frag);
   fprintf (stderr, " where=%ld offset=%lx addnumber=%lx",
           (long) fixp->fx_where,
           (unsigned long) fixp->fx_offset,
index 4d2046ee0904f3a90342aecea0d3d99f198b3e59..4e0319155022a291806c9fa2e7441a173ca0c3b2 100644 (file)
@@ -469,8 +469,8 @@ struct internal_syment
     char _n_name[SYMNMLEN] ATTRIBUTE_NONSTRING;        /* old COFF version     */
     struct
     {
-      bfd_hostptr_t _n_zeroes; /* new == 0                     */
-      bfd_hostptr_t _n_offset; /* offset into string table     */
+      uintptr_t _n_zeroes;     /* new == 0                     */
+      uintptr_t _n_offset;     /* offset into string table     */
     }      _n_n;
     char *_n_nptr[2];          /* allows for overlaying        */
   }     _n;
@@ -595,11 +595,11 @@ union internal_auxent
       char x_fname[20];
       struct
       {
-       /* PR 28630: We use bfd_hostptr_t because these fields may be
+       /* PR 28630: We use uintptr_t because these fields may be
           used to hold pointers.  We assume that this type is at least
-          as big as the long type.  */
-       bfd_hostptr_t x_zeroes;
-       bfd_hostptr_t x_offset;
+          32 bits.  */
+       uintptr_t x_zeroes;
+       uintptr_t x_offset;
       }      x_n;
     } x_n;