This seems to fix the issue where the sign flips on the offset when
running on files > 2GB (-t option). Printf(3) says "L" modifies
floating point formats, use "ll" for integers. Should be unsigned as
well.
--- ./gnu/usr.bin/binutils/binutils/strings.c.orig Wed Sep 2 13:59:16 2009
+++ ./gnu/usr.bin/binutils/binutils/strings.c Wed Sep 2 14:54:06 2009
@@ -522,7 +522,7 @@
case 8:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long))
- printf ("%7Lo ", (unsigned long long) start);
+ printf ("%7llo ", (unsigned long long) start);
else
#else
# if !BFD_HOST_64BIT_LONG
@@ -537,7 +537,7 @@
case 10:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long))
- printf ("%7Ld ", (unsigned long long) start);
+ printf ("%7llu ", (unsigned long long) start);
else
#else
# if !BFD_HOST_64BIT_LONG
@@ -552,7 +552,7 @@
case 16:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long))
- printf ("%7Lx ", (unsigned long long) start);
+ printf ("%7llx ", (unsigned long long) start);
else
#else
# if !BFD_HOST_64BIT_LONG
--
Carson Harding - harding (at) motd (dot) ca