<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for gcc-testing (2010-05-18)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-18 Joel Sherrill <joel.sherrill@oarcorp.com>

        * ObjdumpProcessor.cc: Now read dlinfo from file.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ChangeLog.diff?r1=text&tr1=1.262&r2=text&tr2=1.263&diff_format=h">M</a></td><td width='1%'>1.263</td><td width='100%'>rtems-coverage/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ObjdumpProcessor.cc.diff?r1=text&tr1=1.35&r2=text&tr2=1.36&diff_format=h">M</a></td><td width='1%'>1.36</td><td width='100%'>rtems-coverage/ObjdumpProcessor.cc</td></tr>
</table>
<pre>
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ChangeLog:1.262 gcc-testing/rtems-coverage/ChangeLog:1.263
--- gcc-testing/rtems-coverage/ChangeLog:1.262  Tue May 18 09:44:01 2010
+++ gcc-testing/rtems-coverage/ChangeLog        Tue May 18 10:30:36 2010
</font><font color='#997700'>@@ -1,3 +1,7 @@
</font><font color='#000088'>+2010-05-18    Joel Sherrill <joel.sherrill@oarcorp.com>
+
+       * ObjdumpProcessor.cc: Now read dlinfo from file.
+
</font> 2010-05-18        Glenn Humphrey
 
        * TraceConverter.cc: Removed initialization of the dynamicLibrary

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.35 gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.36
--- gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.35 Tue May 18 09:21:13 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.cc      Tue May 18 10:30:37 2010
</font><font color='#997700'>@@ -16,6 +16,7 @@
</font> #include <stdlib.h>
 #include <string.h>
 #include <algorithm>
<font color='#000088'>+#include <string>
</font> 
 #include "app_common.h"
 #include "ObjdumpProcessor.h"
<font color='#997700'>@@ -129,21 +130,24 @@
</font>     ExecutableInfo* theExecutable
   )
   {
<font color='#880000'>-#if 0
</font><font color='#000088'>+    #define METHOD "ERROR: ObjdumpProcessor::determineLoadAddress - "
+    FILE*        loadAddressFile = NULL;
</font>     char         buffer[ 512 ];
     char*        cStatus;
<font color='#000088'>+    uint32_t     offset;
+
+    // This method should only be call for a dynamic library.
+    if (!theExecutable->hasDynamicLibrary())
+      return 0;
+
+#if 0
</font>     static FILE* gdbCommands = NULL;
     int          items;
     uint32_t     loadAddress;
<font color='#880000'>-    FILE*        loadAddressFile = NULL;
</font>     FILE*        objdumpFile = NULL;
<font color='#880000'>-    uint32_t     offset;
</font>     int          status;
     char         terminator;
 
<font color='#880000'>-    // This method should only be call for a dynamic library.
-    if (!theExecutable->hasDynamicLibrary())
-      return 0;
</font> 
     //
     // Invoke gdb to determine the physical load address
<font color='#997700'>@@ -253,7 +257,48 @@
</font> 
     return (loadAddress - offset);
 # endif
<font color='#880000'>-    return 0x42084000;
</font><font color='#000088'>+#if 1
+    std::string dlinfoName = theExecutable->getFileName();
+    uint32_t address;
+    char inLibName[128];
+    std::string Library = theExecutable->getLibraryName();
+
+    dlinfoName += ".dlinfo";
+    // Read load address.
+    loadAddressFile = fopen( dlinfoName.c_str(), "r" );
+    if (!loadAddressFile) {
+      fprintf( stderr, METHOD "unable to open %s\n", dlinfoName.c_str() );
+      exit( -1 );
+    }
+
+    // Process the dlinfo file.
+    while ( 1 ) {
+
+      // Get a line.
+      cStatus = fgets( buffer, 512, loadAddressFile );
+      if (cStatus == NULL) {
+        fprintf(
+          stderr,
+          METHOD "library %s not found in %s\n",
+          Library.c_str(),
+          dlinfoName.c_str()
+        );
+        fclose( loadAddressFile );
+        exit( -1 );
+      }
+      sscanf( buffer, "%s %x", inLibName, &offset );
+      std::string tmp = inLibName;
+      if ( tmp.find( Library ) != tmp.npos ) {
+        // fprintf( stderr, "%s - 0x%08x\n", inLibName, offset );
+        address = offset;<span style="background-color: #FF0000"> </span>
+        break;
+      }
+    }
+
+    fclose( loadAddressFile );
+    return address;
+#endif
+    #undef METHOD
</font>   }
 
   bool ObjdumpProcessor::IsBranch(
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>