bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: binutils 2.12 fails to bootstrap on sunos 4.1.4


From: Alan Modra
Subject: Re: binutils 2.12 fails to bootstrap on sunos 4.1.4
Date: Mon, 27 May 2002 18:09:36 +0930
User-agent: Mutt/1.3.25i

On Mon, May 27, 2002 at 05:31:57PM +1000, jason andrade wrote:
> 
> The platform is a SS10 running SunOS 4.1.4 with all the appropriate
> OS patches applied.
[snip]
> unwind-ia64.c: In function `unw_print_brmask':
> unwind-ia64.c:54: invalid operands to binary +

I'll bet your sprintf is declared as returning void.

        * unwind-ia64.c (unw_print_brmask): Don't use sprintf.
        (unw_print_grmask): Likewise.
        (unw_print_frmask): Likewise.

Index: binutils/unwind-ia64.c
===================================================================
RCS file: /cvs/src/src/binutils/unwind-ia64.c,v
retrieving revision 1.8
diff -u -p -r1.8 unwind-ia64.c
--- binutils/unwind-ia64.c      24 May 2002 00:33:36 -0000      1.8
+++ binutils/unwind-ia64.c      27 May 2002 08:17:11 -0000
@@ -44,15 +44,18 @@ unw_print_brmask (cp, mask)
      char * cp;
      unsigned int mask;
 {
-  char *sep = "";
+  int sep = 0;
   int i;
 
   for (i = 0; mask && (i < 5); ++i)
     {
       if (mask & 1)
        {
-         cp += sprintf (cp, "%sb%u", sep, i + 1);
-         sep = ",";
+         if (sep)
+           *cp++ = ',';
+         *cp++ = 'b';
+         *cp++ = i + 1 + '0';
+         sep = 1;
        }
       mask >>= 1;
     }
@@ -64,19 +67,22 @@ unw_print_grmask (cp, mask)
      char * cp;
      unsigned int mask;
 {
-  char *sep = "";
+  int sep = 0;
   int i;
 
-  *cp = '\0';
   for (i = 0; i < 4; ++i)
     {
       if (mask & 1)
        {
-         cp += sprintf (cp, "%sr%u", sep, i + 4);
-         sep = ",";
+         if (sep)
+           *cp++ = ',';
+         *cp++ = 'r';
+         *cp++ = i + 4 + '0';
+         sep = 1;
        }
       mask >>= 1;
     }
+  *cp = '\0';
 }
 
 static void
@@ -84,19 +90,28 @@ unw_print_frmask (cp, mask)
      char * cp;
      unsigned int mask;
 {
-  char *sep = "";
+  int sep = 0;
   int i;
 
-  *cp = '\0';
   for (i = 0; i < 20; ++i)
     {
       if (mask & 1)
        {
-         cp += sprintf (cp, "%sf%u", sep, (i < 4) ? (i + 2) : (i + 12));
-         sep = ",";
+         if (sep)
+           *cp++ = ',';
+         *cp++ = 'f';
+         if (i < 4)
+           *cp++ = i + 2 + '0';
+         else
+           {
+             *cp++ = (i + 2) / 10 + 1 + '0';
+             *cp++ = (i + 2) % 10 + '0';
+           }
+         sep = 1;
        }
       mask >>= 1;
     }
+  *cp = '\0';
 }
 
 static void

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



reply via email to

[Prev in Thread] Current Thread [Next in Thread]