--- Begin Message ---
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: binutils at sources dot redhat dot com
- Date: Tue, 16 Mar 2004 00:48:53 +1030
- Subject: 64 bit types for bfd
- Delivery-date: Mon, 15 Mar 2004 09:56:55 -0500
- Envelope-to: cagney@gnu.org
Here's why I was fiddling with the low level byte/word access functions.
Defines bfd_int64_t and bfd_uint64_t types for use by the 64 bit bfd_get
and bfd_put functions, which makes them usable when bfd_vma is 32 bit.
I've also tweaked dwarf2.c to use the 64 bit types when handling values
that must be 64 bit according to the dwarf spec.
* bfd-in.h (bfd_int64_t, bfd_uint64_t): New types.
(BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Don't define here.
(bfd_getb64, bfd_getl64, bfd_get_bits): Return bfd_uint64_t.
(bfd_getb_signed_64, bfd_getl_signed_64): Return bfd_int64_t.
(bfd_putb64, bfd_putl64, bfd_put_bits): Accept bfd_uint64_t.
* configure.in (HOST_U_64BIT_TYPE): Set when sizeof long is 8.
(BFD_HOST_64_BIT_DEFINED, BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Set
when using long.
* libbfd.c (EIGHT_GAZILLION, COERCE64): Use bfd_int64_t.
(bfd_getb64): Return bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_putb64): Accept bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_putl64, bfd_put_bits, bfd_get_bits): Likewise.
* dwarf2.c (struct attribute): Use bfd_int64_t and bfd_uint64_t.
(read_8_bytes, read_indirect_string, read_address): Likewise.
(read_abbrevs, parse_comp_unit): Likewise.
* targets.c (struct bfd_target): Likewise.
* aix386-core.c (NO_GET64, NO_PUT64, NO_GETS64): Define and use.
* hppabsd-core.c: Likewise. Formatting.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
Index: bfd/bfd-in.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in.h,v
retrieving revision 1.73
diff -u -p -r1.73 bfd-in.h
--- bfd/bfd-in.h 15 Mar 2004 12:23:10 -0000 1.73
+++ bfd/bfd-in.h 15 Mar 2004 13:01:49 -0000
@@ -55,6 +55,8 @@ extern "C" {
#if @BFD_HOST_64_BIT_DEFINED@
#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
+typedef BFD_HOST_64_BIT bfd_int64_t;
+typedef BFD_HOST_U_64_BIT bfd_uint64_t;
#endif
#if BFD_ARCH_SIZE >= 64
@@ -95,24 +97,6 @@ typedef int bfd_boolean;
#define true dont_use_true_in_bfd
#endif
-/* Support for different sizes of target format ints and addresses.
- If the type `long' is at least 64 bits, BFD_HOST_64BIT_LONG will be
- set to 1 above. Otherwise, if the host compiler used during
- configuration supports long long, this code will use it.
- Otherwise, BFD_HOST_64_BIT must be defined above. */
-
-#ifndef BFD_HOST_64_BIT
-# if BFD_HOST_64BIT_LONG
-# define BFD_HOST_64_BIT long
-# define BFD_HOST_U_64_BIT unsigned long
-# else
-# if BFD_HOST_LONG_LONG
-# define BFD_HOST_64_BIT long long
-# define BFD_HOST_U_64_BIT unsigned long long
-# endif /* ! BFD_HOST_LONG_LONG */
-# endif /* ! BFD_HOST_64BIT_LONG */
-#endif /* ! defined (BFD_HOST_64_BIT) */
-
#ifdef BFD64
#ifndef BFD_HOST_64_BIT
@@ -160,6 +144,15 @@ typedef unsigned long bfd_size_type;
#endif /* not BFD64 */
+#ifndef BFD_HOST_64_BIT
+/* Fall back on a 32 bit type. The idea is to make these types always
+ available for function return types, but in the case that
+ BFD_HOST_64_BIT is undefined such a function should abort or
+ otherwise signal an error. */
+typedef bfd_signed_vma bfd_int64_t;
+typedef bfd_vma bfd_uint64_t;
+#endif
+
/* An offset into a file. BFD always uses the largest possible offset
based on the build time availability of fseek, fseeko, or fseeko64. */
typedef @bfd_file_ptr@ file_ptr;
@@ -518,10 +511,10 @@ extern bfd_boolean bfd_record_phdr
/* Byte swapping routines. */
-bfd_vma bfd_getb64 (const void *);
-bfd_vma bfd_getl64 (const void *);
-bfd_signed_vma bfd_getb_signed_64 (const void *);
-bfd_signed_vma bfd_getl_signed_64 (const void *);
+bfd_uint64_t bfd_getb64 (const void *);
+bfd_uint64_t bfd_getl64 (const void *);
+bfd_int64_t bfd_getb_signed_64 (const void *);
+bfd_int64_t bfd_getl_signed_64 (const void *);
bfd_vma bfd_getb32 (const void *);
bfd_vma bfd_getl32 (const void *);
bfd_signed_vma bfd_getb_signed_32 (const void *);
@@ -530,8 +523,8 @@ bfd_vma bfd_getb16 (const void *);
bfd_vma bfd_getl16 (const void *);
bfd_signed_vma bfd_getb_signed_16 (const void *);
bfd_signed_vma bfd_getl_signed_16 (const void *);
-void bfd_putb64 (bfd_vma, void *);
-void bfd_putl64 (bfd_vma, void *);
+void bfd_putb64 (bfd_uint64_t, void *);
+void bfd_putl64 (bfd_uint64_t, void *);
void bfd_putb32 (bfd_vma, void *);
void bfd_putl32 (bfd_vma, void *);
void bfd_putb16 (bfd_vma, void *);
@@ -539,8 +532,8 @@ void bfd_putl16 (bfd_vma, void *);
/* Byte swapping routines which take size and endiannes as arguments. */
-bfd_vma bfd_get_bits (const void *, int, bfd_boolean);
-void bfd_put_bits (bfd_vma, void *, int, bfd_boolean);
+bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
+void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
/* Externally visible ECOFF routines. */
Index: bfd/configure.in
===================================================================
RCS file: /cvs/src/src/bfd/configure.in,v
retrieving revision 1.145
diff -u -p -r1.145 configure.in
--- bfd/configure.in 13 Mar 2004 12:33:48 -0000 1.145
+++ bfd/configure.in 15 Mar 2004 13:01:56 -0000
@@ -133,6 +133,7 @@ AC_COMPILE_CHECK_SIZEOF(long)
if test "x${ac_cv_sizeof_long}" = "x8"; then
host64=true
HOST_64BIT_TYPE="long"
+ HOST_U_64BIT_TYPE="unsigned long"
elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
HOST_64BIT_TYPE="long long"
HOST_U_64BIT_TYPE="unsigned long long"
@@ -140,7 +141,8 @@ fi
if test "x${HOST_64BIT_TYPE}" = "xlong"; then
BFD_HOST_64BIT_LONG=1
-elif test "x${HOST_64BIT_TYPE}" != "x"; then
+fi
+if test "x${HOST_64BIT_TYPE}" != "x"; then
BFD_HOST_64_BIT_DEFINED=1
BFD_HOST_64_BIT=${HOST_64BIT_TYPE}
BFD_HOST_U_64_BIT=${HOST_U_64BIT_TYPE}
Index: bfd/aix386-core.c
===================================================================
RCS file: /cvs/src/src/bfd/aix386-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 aix386-core.c
--- bfd/aix386-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/aix386-core.c 15 Mar 2004 13:01:47 -0000
@@ -225,6 +225,9 @@ swap_abort ()
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target aix386_core_vec = {
"aix386-core",
@@ -239,10 +242,10 @@ const bfd_target aix386_core_vec = {
0, /* leading underscore */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT,
+ NO_GET64, NO_GETS64, NO_PUT64,
NO_GET, NO_GETS, NO_PUT,
NO_GET, NO_GETS, NO_PUT, /* data */
- NO_GET, NO_GETS, NO_PUT,
+ NO_GET64, NO_GETS64, NO_PUT64,
NO_GET, NO_GETS, NO_PUT,
NO_GET, NO_GETS, NO_PUT, /* hdrs */
Index: bfd/dwarf2.c
===================================================================
RCS file: /cvs/src/src/bfd/dwarf2.c,v
retrieving revision 1.53
diff -u -p -r1.53 dwarf2.c
--- bfd/dwarf2.c 12 Jan 2004 05:34:16 -0000 1.53
+++ bfd/dwarf2.c 15 Mar 2004 13:01:59 -0000
@@ -61,8 +61,8 @@ struct attribute
{
char *str;
struct dwarf_block *blk;
- bfd_vma val;
- bfd_signed_vma sval;
+ bfd_uint64_t val;
+ bfd_int64_t sval;
}
u;
};
@@ -230,7 +230,7 @@ read_4_bytes (bfd *abfd, char *buf)
return bfd_get_32 (abfd, buf);
}
-static bfd_vma
+static bfd_uint64_t
read_8_bytes (bfd *abfd, char *buf)
{
return bfd_get_64 (abfd, buf);
@@ -268,7 +268,7 @@ read_indirect_string (struct comp_unit*
char *buf,
unsigned int *bytes_read_ptr)
{
- bfd_vma offset;
+ bfd_uint64_t offset;
struct dwarf2_debug *stash = unit->stash;
if (unit->offset_size == 4)
@@ -378,7 +378,7 @@ read_signed_leb128 (bfd *abfd ATTRIBUTE_
/* END VERBATIM */
-static bfd_vma
+static bfd_uint64_t
read_address (struct comp_unit *unit, char *buf)
{
switch (unit->addr_size)
@@ -422,7 +422,7 @@ lookup_abbrev (unsigned int number, stru
in a hash table. */
static struct abbrev_info**
-read_abbrevs (bfd *abfd, bfd_vma offset, struct dwarf2_debug *stash)
+read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash)
{
struct abbrev_info **abbrevs;
char *abbrev_ptr;
@@ -1436,7 +1436,7 @@ parse_comp_unit (bfd *abfd,
{
struct comp_unit* unit;
unsigned int version;
- bfd_vma abbrev_offset = 0;
+ bfd_uint64_t abbrev_offset = 0;
unsigned int addr_size;
struct abbrev_info** abbrevs;
unsigned int abbrev_number, bytes_read, i;
Index: bfd/hppabsd-core.c
===================================================================
RCS file: /cvs/src/src/bfd/hppabsd-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 hppabsd-core.c
--- bfd/hppabsd-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/hppabsd-core.c 15 Mar 2004 13:02:11 -0000
@@ -239,6 +239,9 @@ swap_abort ()
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target hppabsd_core_vec =
{
@@ -253,26 +256,26 @@ const bfd_target hppabsd_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- hppabsd_core_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ hppabsd_core_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
@@ -288,5 +291,5 @@ const bfd_target hppabsd_core_vec =
NULL,
(PTR) 0 /* backend_data */
-};
+ };
#endif
Index: bfd/hpux-core.c
===================================================================
RCS file: /cvs/src/src/bfd/hpux-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 hpux-core.c
--- bfd/hpux-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/hpux-core.c 15 Mar 2004 13:02:11 -0000
@@ -348,9 +348,13 @@ swap_abort ()
{
abort(); /* This way doesn't require any declaration for ANSI to fuck up */
}
+
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target hpux_core_vec =
{
@@ -365,26 +369,26 @@ const bfd_target hpux_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- hpux_core_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ hpux_core_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
@@ -400,4 +404,4 @@ const bfd_target hpux_core_vec =
NULL,
(PTR) 0 /* backend_data */
-};
+ };
Index: bfd/irix-core.c
===================================================================
RCS file: /cvs/src/src/bfd/irix-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 irix-core.c
--- bfd/irix-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/irix-core.c 15 Mar 2004 13:02:11 -0000
@@ -299,9 +299,13 @@ swap_abort()
{
abort(); /* This way doesn't require any declaration for ANSI to fuck up */
}
+
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target irix_core_vec =
{
@@ -316,26 +320,26 @@ const bfd_target irix_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- irix_core_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ irix_core_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
@@ -351,6 +355,6 @@ const bfd_target irix_core_vec =
NULL,
(PTR) 0 /* backend_data */
-};
+ };
#endif /* IRIX_CORE */
Index: bfd/libbfd.c
===================================================================
RCS file: /cvs/src/src/bfd/libbfd.c,v
retrieving revision 1.30
diff -u -p -r1.30 libbfd.c
--- bfd/libbfd.c 15 Mar 2004 12:23:10 -0000 1.30
+++ bfd/libbfd.c 15 Mar 2004 13:02:12 -0000
@@ -391,9 +391,9 @@ DESCRIPTION
/* Sign extension to bfd_signed_vma. */
#define COERCE16(x) (((bfd_signed_vma) (x) ^ 0x8000) - 0x8000)
#define COERCE32(x) (((bfd_signed_vma) (x) ^ 0x80000000) - 0x80000000)
-#define EIGHT_GAZILLION ((BFD_HOST_64_BIT) 1 << 63)
+#define EIGHT_GAZILLION ((bfd_int64_t) 1 << 63)
#define COERCE64(x) \
- (((bfd_signed_vma) (x) ^ EIGHT_GAZILLION) - EIGHT_GAZILLION)
+ (((bfd_int64_t) (x) ^ EIGHT_GAZILLION) - EIGHT_GAZILLION)
bfd_vma
bfd_getb16 (const void *p)
@@ -491,12 +491,12 @@ bfd_getl_signed_32 (const void *p)
return COERCE32 (v);
}
-bfd_vma
+bfd_uint64_t
bfd_getb64 (const void *p ATTRIBUTE_UNUSED)
{
-#ifdef BFD64
+#ifdef BFD_HOST_64_BIT
const bfd_byte *addr = p;
- bfd_vma v;
+ bfd_uint64_t v;
v = addr[0]; v <<= 8;
v |= addr[1]; v <<= 8;
@@ -514,12 +514,12 @@ bfd_getb64 (const void *p ATTRIBUTE_UNUS
#endif
}
-bfd_vma
+bfd_uint64_t
bfd_getl64 (const void *p ATTRIBUTE_UNUSED)
{
-#ifdef BFD64
+#ifdef BFD_HOST_64_BIT
const bfd_byte *addr = p;
- bfd_vma v;
+ bfd_uint64_t v;
v = addr[7]; v <<= 8;
v |= addr[6]; v <<= 8;
@@ -538,12 +538,12 @@ bfd_getl64 (const void *p ATTRIBUTE_UNUS
}
-bfd_signed_vma
+bfd_int64_t
bfd_getb_signed_64 (const void *p ATTRIBUTE_UNUSED)
{
-#ifdef BFD64
+#ifdef BFD_HOST_64_BIT
const bfd_byte *addr = p;
- bfd_vma v;
+ bfd_uint64_t v;
v = addr[0]; v <<= 8;
v |= addr[1]; v <<= 8;
@@ -561,12 +561,12 @@ bfd_getb_signed_64 (const void *p ATTRIB
#endif
}
-bfd_signed_vma
+bfd_int64_t
bfd_getl_signed_64 (const void *p ATTRIBUTE_UNUSED)
{
-#ifdef BFD64
+#ifdef BFD_HOST_64_BIT
const bfd_byte *addr = p;
- bfd_vma v;
+ bfd_uint64_t v;
v = addr[7]; v <<= 8;
v |= addr[6]; v <<= 8;
@@ -605,9 +605,9 @@ bfd_putl32 (bfd_vma data, void *p)
}
void
-bfd_putb64 (bfd_vma data ATTRIBUTE_UNUSED, void *p ATTRIBUTE_UNUSED)
+bfd_putb64 (bfd_uint64_t data ATTRIBUTE_UNUSED, void *p ATTRIBUTE_UNUSED)
{
-#ifdef BFD64
+#ifdef BFD_HOST_64_BIT
bfd_byte *addr = p;
addr[0] = (data >> (7*8)) & 0xff;
addr[1] = (data >> (6*8)) & 0xff;
@@ -623,9 +623,9 @@ bfd_putb64 (bfd_vma data ATTRIBUTE_UNUSE
}
void
-bfd_putl64 (bfd_vma data ATTRIBUTE_UNUSED, void *p ATTRIBUTE_UNUSED)
+bfd_putl64 (bfd_uint64_t data ATTRIBUTE_UNUSED, void *p ATTRIBUTE_UNUSED)
{
-#ifdef BFD64
+#ifdef BFD_HOST_64_BIT
bfd_byte *addr = p;
addr[7] = (data >> (7*8)) & 0xff;
addr[6] = (data >> (6*8)) & 0xff;
@@ -641,7 +641,7 @@ bfd_putl64 (bfd_vma data ATTRIBUTE_UNUSE
}
void
-bfd_put_bits (bfd_vma data, void *p, int bits, bfd_boolean big_p)
+bfd_put_bits (bfd_uint64_t data, void *p, int bits, bfd_boolean big_p)
{
bfd_byte *addr = p;
int i;
@@ -660,11 +660,11 @@ bfd_put_bits (bfd_vma data, void *p, int
}
}
-bfd_vma
+bfd_uint64_t
bfd_get_bits (const void *p, int bits, bfd_boolean big_p)
{
const bfd_byte *addr = p;
- bfd_vma data;
+ bfd_uint64_t data;
int i;
int bytes;
Index: bfd/netbsd-core.c
===================================================================
RCS file: /cvs/src/src/bfd/netbsd-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 netbsd-core.c
--- bfd/netbsd-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/netbsd-core.c 15 Mar 2004 13:02:13 -0000
@@ -231,6 +231,9 @@ swap_abort ()
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target netbsd_core_vec =
{
@@ -245,39 +248,39 @@ const bfd_target netbsd_core_vec =
0, /* Symbol prefix. */
' ', /* ar_pad_char. */
16, /* ar_max_namelen. */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data. */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data. */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data. */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data. */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs. */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs. */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs. */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs. */
- { /* bfd_check_format. */
- _bfd_dummy_target, /* Unknown format. */
- _bfd_dummy_target, /* Object file. */
- _bfd_dummy_target, /* Archive. */
- netbsd_core_file_p /* A core file. */
+ { /* bfd_check_format. */
+ _bfd_dummy_target, /* Unknown format. */
+ _bfd_dummy_target, /* Object file. */
+ _bfd_dummy_target, /* Archive. */
+ netbsd_core_file_p /* A core file. */
},
{ /* bfd_set_format. */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents. */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
- BFD_JUMP_TABLE_GENERIC (_bfd_generic),
- BFD_JUMP_TABLE_COPY (_bfd_generic),
- BFD_JUMP_TABLE_CORE (netbsd),
- BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
- BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
- BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
- BFD_JUMP_TABLE_WRITE (_bfd_generic),
- BFD_JUMP_TABLE_LINK (_bfd_nolink),
- BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+ BFD_JUMP_TABLE_GENERIC (_bfd_generic),
+ BFD_JUMP_TABLE_COPY (_bfd_generic),
+ BFD_JUMP_TABLE_CORE (netbsd),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
+ BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
+ BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
+ BFD_JUMP_TABLE_WRITE (_bfd_generic),
+ BFD_JUMP_TABLE_LINK (_bfd_nolink),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
(PTR) 0 /* Backend_data. */
-};
+ };
Index: bfd/osf-core.c
===================================================================
RCS file: /cvs/src/src/bfd/osf-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 osf-core.c
--- bfd/osf-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/osf-core.c 15 Mar 2004 13:02:13 -0000
@@ -185,9 +185,13 @@ swap_abort()
{
abort(); /* This way doesn't require any declaration for ANSI to fuck up */
}
+
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target osf_core_vec =
{
@@ -202,26 +206,26 @@ const bfd_target osf_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- osf_core_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ osf_core_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
@@ -237,4 +241,4 @@ const bfd_target osf_core_vec =
NULL,
(PTR) 0 /* backend_data */
-};
+ };
Index: bfd/ptrace-core.c
===================================================================
RCS file: /cvs/src/src/bfd/ptrace-core.c,v
retrieving revision 1.9
diff -u -p -r1.9 ptrace-core.c
--- bfd/ptrace-core.c 15 Mar 2004 12:23:11 -0000 1.9
+++ bfd/ptrace-core.c 15 Mar 2004 13:02:16 -0000
@@ -167,9 +167,13 @@ swap_abort ()
{
abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
+
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target ptrace_core_vec =
{
@@ -184,41 +188,41 @@ const bfd_target ptrace_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- ptrace_unix_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ ptrace_unix_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
- BFD_JUMP_TABLE_GENERIC (_bfd_generic),
- BFD_JUMP_TABLE_COPY (_bfd_generic),
- BFD_JUMP_TABLE_CORE (ptrace_unix),
- BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
- BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
- BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
- BFD_JUMP_TABLE_WRITE (_bfd_generic),
- BFD_JUMP_TABLE_LINK (_bfd_nolink),
- BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+ BFD_JUMP_TABLE_GENERIC (_bfd_generic),
+ BFD_JUMP_TABLE_COPY (_bfd_generic),
+ BFD_JUMP_TABLE_CORE (ptrace_unix),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
+ BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
+ BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
+ BFD_JUMP_TABLE_WRITE (_bfd_generic),
+ BFD_JUMP_TABLE_LINK (_bfd_nolink),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
(PTR) 0 /* backend_data */
-};
+ };
#endif /* PTRACE_CORE */
Index: bfd/sco5-core.c
===================================================================
RCS file: /cvs/src/src/bfd/sco5-core.c,v
retrieving revision 1.10
diff -u -p -r1.10 sco5-core.c
--- bfd/sco5-core.c 15 Mar 2004 12:23:11 -0000 1.10
+++ bfd/sco5-core.c 15 Mar 2004 13:02:16 -0000
@@ -361,9 +361,13 @@ swap_abort ()
{
abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
+
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target sco5_core_vec =
{
@@ -378,26 +382,26 @@ const bfd_target sco5_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- sco5_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ sco5_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
@@ -413,4 +417,4 @@ const bfd_target sco5_core_vec =
NULL,
(PTR) 0 /* backend_data */
-};
+ };
Index: bfd/targets.c
===================================================================
RCS file: /cvs/src/src/bfd/targets.c,v
retrieving revision 1.104
diff -u -p -r1.104 targets.c
--- bfd/targets.c 15 Mar 2004 12:23:11 -0000 1.104
+++ bfd/targets.c 15 Mar 2004 13:02:17 -0000
@@ -203,9 +203,9 @@ DESCRIPTION
. {* Entries for byte swapping for data. These are different from the
. other entry points, since they don't take a BFD asthe first argument.
. Certain other handlers could do the same. *}
-. bfd_vma (*bfd_getx64) (const void *);
-. bfd_signed_vma (*bfd_getx_signed_64) (const void *);
-. void (*bfd_putx64) (bfd_vma, void *);
+. bfd_uint64_t (*bfd_getx64) (const void *);
+. bfd_int64_t (*bfd_getx_signed_64) (const void *);
+. void (*bfd_putx64) (bfd_uint64_t, void *);
. bfd_vma (*bfd_getx32) (const void *);
. bfd_signed_vma (*bfd_getx_signed_32) (const void *);
. void (*bfd_putx32) (bfd_vma, void *);
@@ -214,9 +214,9 @@ DESCRIPTION
. void (*bfd_putx16) (bfd_vma, void *);
.
. {* Byte swapping for the headers. *}
-. bfd_vma (*bfd_h_getx64) (const void *);
-. bfd_signed_vma (*bfd_h_getx_signed_64) (const void *);
-. void (*bfd_h_putx64) (bfd_vma, void *);
+. bfd_uint64_t (*bfd_h_getx64) (const void *);
+. bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
+. void (*bfd_h_putx64) (bfd_uint64_t, void *);
. bfd_vma (*bfd_h_getx32) (const void *);
. bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
. void (*bfd_h_putx32) (bfd_vma, void *);
Index: bfd/trad-core.c
===================================================================
RCS file: /cvs/src/src/bfd/trad-core.c,v
retrieving revision 1.15
diff -u -p -r1.15 trad-core.c
--- bfd/trad-core.c 15 Mar 2004 12:23:11 -0000 1.15
+++ bfd/trad-core.c 15 Mar 2004 13:02:17 -0000
@@ -272,9 +272,13 @@ swap_abort ()
{
abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
+
#define NO_GET ((bfd_vma (*) (const void *)) swap_abort)
#define NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
#define NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
+#define NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
+#define NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
+#define NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
const bfd_target trad_core_vec =
{
@@ -289,39 +293,39 @@ const bfd_target trad_core_vec =
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit data */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data */
NO_GET, NO_GETS, NO_PUT, /* 32 bit data */
NO_GET, NO_GETS, NO_PUT, /* 16 bit data */
- NO_GET, NO_GETS, NO_PUT, /* 64 bit hdrs */
+ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 32 bit hdrs */
NO_GET, NO_GETS, NO_PUT, /* 16 bit hdrs */
{ /* bfd_check_format */
- _bfd_dummy_target, /* unknown format */
- _bfd_dummy_target, /* object file */
- _bfd_dummy_target, /* archive */
- trad_unix_core_file_p /* a core file */
+ _bfd_dummy_target, /* unknown format */
+ _bfd_dummy_target, /* object file */
+ _bfd_dummy_target, /* archive */
+ trad_unix_core_file_p /* a core file */
},
{ /* bfd_set_format */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
{ /* bfd_write_contents */
- bfd_false, bfd_false,
- bfd_false, bfd_false
+ bfd_false, bfd_false,
+ bfd_false, bfd_false
},
- BFD_JUMP_TABLE_GENERIC (_bfd_generic),
- BFD_JUMP_TABLE_COPY (_bfd_generic),
- BFD_JUMP_TABLE_CORE (trad_unix),
- BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
- BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
- BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
- BFD_JUMP_TABLE_WRITE (_bfd_generic),
- BFD_JUMP_TABLE_LINK (_bfd_nolink),
- BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+ BFD_JUMP_TABLE_GENERIC (_bfd_generic),
+ BFD_JUMP_TABLE_COPY (_bfd_generic),
+ BFD_JUMP_TABLE_CORE (trad_unix),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
+ BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
+ BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
+ BFD_JUMP_TABLE_WRITE (_bfd_generic),
+ BFD_JUMP_TABLE_LINK (_bfd_nolink),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
(PTR) 0 /* backend_data */
-};
+ };
--
Alan Modra
IBM OzLabs - Linux Technology Centre
--- End Message ---