gprof on powerpc fails if compiled with older gcc

Alan Modra alan@linuxcare.com.au
Thu Mar 30 19:12:00 GMT 2000


On Thu, 30 Mar 2000, Brad Parker wrote:

> in malloc.  Turns out the real crash is caused by a bug in gcc which
> messes up a structure copy if the lvalue is a post incremented pointer...

Thanks for the report.  I checked in your workaround since it is simple
and it's good practice anyway to only use {post,pre}{increment,decrement}
dereferenced pointers when both sides of an assignment have the same
post/pre operator.  Putting the dst++ on a separate line makes it more
obvious when skimming through code that there's no corresponding src++.
<
--- gprof/symtab.c~	Wed Jul  7 23:02:44 1999
+++ gprof/symtab.c	Fri Mar 31 12:40:32 2000
@@ -132,7 +132,8 @@
 	  /* retain sym only if it has a non-empty address range: */
 	  if (!src->end_addr || src->addr <= src->end_addr)
 	    {
-	      *dst++ = *src;
+	      *dst = *src;
+	      dst++;
 	      prev_addr = src->addr;
 	    }
 	}

-- 
Linuxcare.  Support for the Revolution.




More information about the Binutils mailing list