Hi, I am trying to solve a problem with regards with getline()

/usr/home/muhammad/Open64/osprey/../osprey/ipa/main/analyze/ipa_devirtual.cxx: In member function 'void IPA_VIRTUAL_FUNCTION_TRANSFORM::Read_Callsite()':
/usr/home/muhammad/Open64/osprey/../osprey/ipa/main/analyze/ipa_devirtual.cxx:830: error: no matching function for call to 'getline(char**, long unsigned int*, FILE*&)'
gmake[3]: *** [ipa_devirtual.o] Error 1
gmake[3]: Leaving directory `/usr/home/muhammad/Open64/osprey/targdir/ipa'
gmake[2]: *** [default] Error 2

Code snippet here:
Code:
void IPA_VIRTUAL_FUNCTION_TRANSFORM::Read_Callsite()
{
   if (IPA_Devirtualization_Input_File) {
      FILE *fp = fopen(IPA_Devirtualization_Input_File, "r");
      if (fp == NULL) {
         fprintf(stderr, "Invalid DEVIR_CALLSITE file %s!\n", IPA_Devirtualization_Input_File);
         return;
      }
      size_t sz = 4096;
      char *linebuf = (char*)malloc(sz);
      char buffer[2048];
      int lineno;
      int callsite_id;
      while (getline(&linebuf, &sz, fp) != -1) {
         if (*linebuf == '#') {
            // comment line starts with #
            continue;
         }
         if ( sscanf(linebuf, "Caller:%s line:%d callsite_id:%d",
                     buffer, &lineno, &callsite_id) == 3) {
            DevirCallsiteInfo *p = new DevirCallsiteInfo(buffer, lineno, callsite_id);
            DevirCallsiteMap::iterator itr = theDevirCallsiteMap.find(buffer);
            if (itr == theDevirCallsiteMap.end()) {
               // create a new entry with a new vector
                  vector<DevirCallsiteInfo *> *v = new vector<DevirCallsiteInfo *> ( );
               v->push_back(p);
               theDevirCallsiteMap.insert(std::make_pair(strdup(buffer), v));
            }
            else {
               // add the callsite info to the end of the exisiting vector
               itr->second->push_back(p);
            }
         }
Thank you.