From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1062) id 9152F385800A; Sat, 13 Aug 2022 06:52:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9152F385800A Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Alan Modra To: bfd-cvs@sourceware.org Subject: [binutils-gdb] Replace elf_vma with uint64_t X-Act-Checkin: binutils-gdb X-Git-Author: Alan Modra X-Git-Refname: refs/heads/master X-Git-Oldrev: 901dd67d0d68ac5e0be145d137533f03de495272 X-Git-Newrev: 928c411de46e876edd545c3bc0d8bd6a663d0c8f Message-Id: <20220813065224.9152F385800A@sourceware.org> Date: Sat, 13 Aug 2022 06:52:24 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Aug 2022 06:52:24 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D928c411de46e= 876edd545c3bc0d8bd6a663d0c8f commit 928c411de46e876edd545c3bc0d8bd6a663d0c8f Author: Alan Modra Date: Fri Aug 12 17:14:37 2022 +0930 Replace elf_vma with uint64_t =20 This patch replaces all uses of elf_vma with uint64_t, removes tests of sizeof (elf_vma), and does a little tidying of byte_get_little_endian and byte_get_big_endian. Diff: --- binutils/elfcomm.c | 179 ++++++++++++++++++++++++-------------------------= ---- binutils/elfcomm.h | 20 +++--- binutils/readelf.c | 4 +- 3 files changed, 93 insertions(+), 110 deletions(-) diff --git a/binutils/elfcomm.c b/binutils/elfcomm.c index b772176496b..0e7d0b57ac6 100644 --- a/binutils/elfcomm.c +++ b/binutils/elfcomm.c @@ -63,12 +63,12 @@ warn (const char *message, ...) va_end (args); } =20 -void (*byte_put) (unsigned char *, elf_vma, unsigned int); +void (*byte_put) (unsigned char *, uint64_t, unsigned int); =20 void -byte_put_little_endian (unsigned char * field, elf_vma value, unsigned int= size) +byte_put_little_endian (unsigned char *field, uint64_t value, unsigned int= size) { - if (size > sizeof (elf_vma)) + if (size > sizeof (uint64_t)) { error (_("Unhandled data length: %d\n"), size); abort (); @@ -81,9 +81,9 @@ byte_put_little_endian (unsigned char * field, elf_vma va= lue, unsigned int size) } =20 void -byte_put_big_endian (unsigned char * field, elf_vma value, unsigned int si= ze) +byte_put_big_endian (unsigned char *field, uint64_t value, unsigned int si= ze) { - if (size > sizeof (elf_vma)) + if (size > sizeof (uint64_t)) { error (_("Unhandled data length: %d\n"), size); abort (); @@ -95,9 +95,9 @@ byte_put_big_endian (unsigned char * field, elf_vma value= , unsigned int size) } } =20 -elf_vma (*byte_get) (const unsigned char *, unsigned int); +uint64_t (*byte_get) (const unsigned char *, unsigned int); =20 -elf_vma +uint64_t byte_get_little_endian (const unsigned char *field, unsigned int size) { switch (size) @@ -106,61 +106,53 @@ byte_get_little_endian (const unsigned char *field, u= nsigned int size) return *field; =20 case 2: - return ((unsigned int) (field[0])) - | (((unsigned int) (field[1])) << 8); + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8)); =20 case 3: - return ((unsigned long) (field[0])) - | (((unsigned long) (field[1])) << 8) - | (((unsigned long) (field[2])) << 16); + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[2] << 16)); =20 case 4: - return ((unsigned long) (field[0])) - | (((unsigned long) (field[1])) << 8) - | (((unsigned long) (field[2])) << 16) - | (((unsigned long) (field[3])) << 24); + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[2] << 16) + | ((uint64_t) field[3] << 24)); =20 case 5: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[0])) - | (((elf_vma) (field[1])) << 8) - | (((elf_vma) (field[2])) << 16) - | (((elf_vma) (field[3])) << 24) - | (((elf_vma) (field[4])) << 32); - /* Fall through. */ + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[2] << 16) + | ((uint64_t) field[3] << 24) + | ((uint64_t) field[4] << 32)); =20 case 6: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[0])) - | (((elf_vma) (field[1])) << 8) - | (((elf_vma) (field[2])) << 16) - | (((elf_vma) (field[3])) << 24) - | (((elf_vma) (field[4])) << 32) - | (((elf_vma) (field[5])) << 40); - /* Fall through. */ + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[2] << 16) + | ((uint64_t) field[3] << 24) + | ((uint64_t) field[4] << 32) + | ((uint64_t) field[5] << 40)); =20 case 7: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[0])) - | (((elf_vma) (field[1])) << 8) - | (((elf_vma) (field[2])) << 16) - | (((elf_vma) (field[3])) << 24) - | (((elf_vma) (field[4])) << 32) - | (((elf_vma) (field[5])) << 40) - | (((elf_vma) (field[6])) << 48); - /* Fall through. */ + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[2] << 16) + | ((uint64_t) field[3] << 24) + | ((uint64_t) field[4] << 32) + | ((uint64_t) field[5] << 40) + | ((uint64_t) field[6] << 48)); =20 case 8: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[0])) - | (((elf_vma) (field[1])) << 8) - | (((elf_vma) (field[2])) << 16) - | (((elf_vma) (field[3])) << 24) - | (((elf_vma) (field[4])) << 32) - | (((elf_vma) (field[5])) << 40) - | (((elf_vma) (field[6])) << 48) - | (((elf_vma) (field[7])) << 56); - /* Fall through. */ + return ((uint64_t) field[0] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[2] << 16) + | ((uint64_t) field[3] << 24) + | ((uint64_t) field[4] << 32) + | ((uint64_t) field[5] << 40) + | ((uint64_t) field[6] << 48) + | ((uint64_t) field[7] << 56)); =20 default: error (_("Unhandled data length: %d\n"), size); @@ -168,7 +160,7 @@ byte_get_little_endian (const unsigned char *field, uns= igned int size) } } =20 -elf_vma +uint64_t byte_get_big_endian (const unsigned char *field, unsigned int size) { switch (size) @@ -177,60 +169,53 @@ byte_get_big_endian (const unsigned char *field, unsi= gned int size) return *field; =20 case 2: - return ((unsigned int) (field[1])) | (((int) (field[0])) << 8); + return ((uint64_t) field[1] + | ((uint64_t) field[0] << 8)); =20 case 3: - return ((unsigned long) (field[2])) - | (((unsigned long) (field[1])) << 8) - | (((unsigned long) (field[0])) << 16); + return ((uint64_t) field[2] + | ((uint64_t) field[1] << 8) + | ((uint64_t) field[0] << 16)); =20 case 4: - return ((unsigned long) (field[3])) - | (((unsigned long) (field[2])) << 8) - | (((unsigned long) (field[1])) << 16) - | (((unsigned long) (field[0])) << 24); + return ((uint64_t) field[3] + | ((uint64_t) field[2] << 8) + | ((uint64_t) field[1] << 16) + | ((uint64_t) field[0] << 24)); =20 case 5: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[4])) - | (((elf_vma) (field[3])) << 8) - | (((elf_vma) (field[2])) << 16) - | (((elf_vma) (field[1])) << 24) - | (((elf_vma) (field[0])) << 32); - /* Fall through. */ + return ((uint64_t) field[4] + | ((uint64_t) field[3] << 8) + | ((uint64_t) field[2] << 16) + | ((uint64_t) field[1] << 24) + | ((uint64_t) field[0] << 32)); =20 case 6: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[5])) - | (((elf_vma) (field[4])) << 8) - | (((elf_vma) (field[3])) << 16) - | (((elf_vma) (field[2])) << 24) - | (((elf_vma) (field[1])) << 32) - | (((elf_vma) (field[0])) << 40); - /* Fall through. */ + return ((uint64_t) field[5] + | ((uint64_t) field[4] << 8) + | ((uint64_t) field[3] << 16) + | ((uint64_t) field[2] << 24) + | ((uint64_t) field[1] << 32) + | ((uint64_t) field[0] << 40)); =20 case 7: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[6])) - | (((elf_vma) (field[5])) << 8) - | (((elf_vma) (field[4])) << 16) - | (((elf_vma) (field[3])) << 24) - | (((elf_vma) (field[2])) << 32) - | (((elf_vma) (field[1])) << 40) - | (((elf_vma) (field[0])) << 48); - /* Fall through. */ + return ((uint64_t) field[6] + | ((uint64_t) field[5] << 8) + | ((uint64_t) field[4] << 16) + | ((uint64_t) field[3] << 24) + | ((uint64_t) field[2] << 32) + | ((uint64_t) field[1] << 40) + | ((uint64_t) field[0] << 48)); =20 case 8: - if (sizeof (elf_vma) >=3D 8) - return ((elf_vma) (field[7])) - | (((elf_vma) (field[6])) << 8) - | (((elf_vma) (field[5])) << 16) - | (((elf_vma) (field[4])) << 24) - | (((elf_vma) (field[3])) << 32) - | (((elf_vma) (field[2])) << 40) - | (((elf_vma) (field[1])) << 48) - | (((elf_vma) (field[0])) << 56); - /* Fall through. */ + return ((uint64_t) field[7] + | ((uint64_t) field[6] << 8) + | ((uint64_t) field[5] << 16) + | ((uint64_t) field[4] << 24) + | ((uint64_t) field[3] << 32) + | ((uint64_t) field[2] << 40) + | ((uint64_t) field[1] << 48) + | ((uint64_t) field[0] << 56)); =20 default: error (_("Unhandled data length: %d\n"), size); @@ -238,10 +223,10 @@ byte_get_big_endian (const unsigned char *field, unsi= gned int size) } } =20 -elf_vma +uint64_t byte_get_signed (const unsigned char *field, unsigned int size) { - elf_vma x =3D byte_get (field, size); + uint64_t x =3D byte_get (field, size); =20 switch (size) { @@ -430,8 +415,8 @@ process_archive_index_and_symbols (struct archive_info = *arch, size -=3D arch->index_num * sizeof_ar_index; =20 /* Convert the index numbers into the host's numeric format. */ - arch->index_array =3D (elf_vma *) - malloc (arch->index_num * sizeof (* arch->index_array)); + arch->index_array =3D (uint64_t *) + malloc (arch->index_num * sizeof (*arch->index_array)); if (arch->index_array =3D=3D NULL) { free (index_buffer); diff --git a/binutils/elfcomm.h b/binutils/elfcomm.h index c2ec8d20904..bab46b03451 100644 --- a/binutils/elfcomm.h +++ b/binutils/elfcomm.h @@ -29,16 +29,14 @@ extern void error (const char *, ...) ATTRIBUTE_PRINTF_1; extern void warn (const char *, ...) ATTRIBUTE_PRINTF_1; =20 -typedef unsigned HOST_WIDEST_INT elf_vma; +extern void (*byte_put) (unsigned char *, uint64_t, unsigned int); +extern void byte_put_little_endian (unsigned char *, uint64_t, unsigned in= t); +extern void byte_put_big_endian (unsigned char *, uint64_t, unsigned int); =20 -extern void (*byte_put) (unsigned char *, elf_vma, unsigned int); -extern void byte_put_little_endian (unsigned char *, elf_vma, unsigned int= ); -extern void byte_put_big_endian (unsigned char *, elf_vma, unsigned int); - -extern elf_vma (*byte_get) (const unsigned char *, unsigned int); -extern elf_vma byte_get_signed (const unsigned char *, unsigned int); -extern elf_vma byte_get_little_endian (const unsigned char *, unsigned int= ); -extern elf_vma byte_get_big_endian (const unsigned char *, unsigned int); +extern uint64_t (*byte_get) (const unsigned char *, unsigned int); +extern uint64_t byte_get_signed (const unsigned char *, unsigned int); +extern uint64_t byte_get_little_endian (const unsigned char *, unsigned in= t); +extern uint64_t byte_get_big_endian (const unsigned char *, unsigned int); =20 #define BYTE_PUT(field, val) byte_put (field, val, sizeof (field)) #define BYTE_GET(field) byte_get (field, sizeof (field)) @@ -53,8 +51,8 @@ struct archive_info { char * file_name; /* Archive file name. */ FILE * file; /* Open file descriptor. */ - elf_vma index_num; /* Number of symbols in table. */ - elf_vma * index_array; /* The array of member offsets. */ + uint64_t index_num; /* Number of symbols in table. */ + uint64_t * index_array; /* The array of member offsets. */ char * sym_table; /* The symbol table. */ unsigned long sym_size; /* Size of the symbol table. */ char * longnames; /* The long file names table. */ diff --git a/binutils/readelf.c b/binutils/readelf.c index ed764591765..af443aa6a97 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -13395,10 +13395,10 @@ display_lto_symtab (Filedata * filedata, unsigned int kind =3D *data++; unsigned int visibility =3D *data++; =20 - elf_vma size =3D byte_get (data, 8); + uint64_t size =3D byte_get (data, 8); data +=3D 8; =20 - elf_vma slot =3D byte_get (data, 4); + uint64_t slot =3D byte_get (data, 4); data +=3D 4; =20 if (ext_data !=3D NULL)