small changes in symtabAPI - - - - - - - - - - - - - - - - - - - - - -
[dyninst.git] / symtabAPI / tests / test_checkOrder.C
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <assert.h>
4
5 #include "symtabAPI/h/Dyn_Symtab.h"
6 #include "symtabAPI/h/Dyn_Archive.h"
7 #define logerror printf
8
9 static int mutatorTest(Dyn_Symtab *symtab)
10 {
11     vector <Dyn_Symbol *>syms;
12  
13     /*********************************************************************************
14      Check that none of the primary symbols is Weak. 
15     *********************************************************************************/ 
16     if(!symtab->getAllSymbolsByType(syms,Dyn_Symbol::ST_UNKNOWN))
17     {
18         logerror("unable to get all symbols\n");
19         logerror("%s\n", symtab->printError(symtab->getLastSymtabError()).c_str());
20         return -1;
21     }
22     for(unsigned i=0;i<syms.size()-1;i++)
23     { 
24         if(syms[i]->getAddr()  > syms[i]->getAddr())
25         {
26             logerror("symbols not sorted correctly");
27             return -1;
28         }
29     }
30     for(unsigned i=0; i<syms.size();i++)
31     {
32         if((syms[i]->getAllMangledNames().size() != 1) && (syms[i]->getLinkage() == Dyn_Symbol::SL_WEAK))
33         {
34             logerror("One of the primary symbols is weak");
35             return -1;
36         }
37     }
38     syms.clear();
39 }
40
41 //extern "C" TEST_DLL_EXPORT int test1__mutatorMAIN(ParameterDict &param)
42 int main()
43 {
44     // dprintf("Entered test1_1 mutatorMAIN()\n");
45     string s = "/p/paradyn/development/giri/core/testsuite/i386-unknown-linux2.4/test1.mutatee_gcc";
46     //string s = "/p/paradyn/development/giri/core/testsuite/rs6000-ibm-aix5.1/test1.mutatee_gcc";
47     Dyn_Symtab *symtab;;
48     bool err = Dyn_Symtab::openFile(s,symtab);
49     //symtab = param["symtab"]->getPtr();
50     // Get log file pointers
51     //FILE *outlog = (FILE *)(param["outlog"]->getPtr());
52     //FILE *errlog = (FILE *)(param["errlog"]->getPtr());
53     //setOutputLog(outlog);
54     //setErrorLog(errlog);
55     // Read the program's image and get an associated image object
56     // Run mutator code
57     return mutatorTest(symtab);
58 }