Bug 49137
| Summary: | internal compiler error when compiling avifile | ||
|---|---|---|---|
| Product: | [Retired] Red Hat Raw Hide | Reporter: | Knut J BJuland <knutjbj> |
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> |
| Status: | CLOSED WORKSFORME | QA Contact: | David Lawrence <dkl> |
| Severity: | high | Docs Contact: | |
| Priority: | high | ||
| Version: | 1.0 | ||
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | i386 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2001-07-20 11:56:56 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
It compiles with gcc3-3 Is it always reproducible? If yes, please attach codeckeeper.ii. It looks like cc1plus was killed by g++ driver because there was some error in assembler, the thing now is whether: there was bogus assembly coming from source (e.g. inline assembly), bogus assembly created by cc1plus or some bug in binutils. Which version of binutils are you using BTW? I fix it by deleting avifile and download a fresh cvs copy. It was casue by some file which was lying around froma previous builds. Binutils 2.11-90.0.8-3 make[2]: Leaving directory `/home/knutjbj/vmware/avifile-0.6/lib/common' make[2]: Entering directory `/home/knutjbj/vmware/avifile-0.6/lib' /bin/sh ../libtool --mode=compile c++ -DHAVE_CONFIG_H -I. -I. -I../include -Wall -Wno-unused -DPLUGIN_PATH=\"/usr/lib/avifile\" -g -O2 -march=i686 -pipe -fno-inline -c codeckeeper.cpp c++ -DHAVE_CONFIG_H -I. -I. -I../include -Wall -Wno-unused -DPLUGIN_PATH=\"/usr/lib/avifile\" -g -O2 -march=i686 -pipe -fno-inline -Wp,-MD,.deps/codeckeeper.pp -c codeckeeper.cpp -fPIC -DPIC -o codeckeeper.lo /bin/sh ../libtool --mode=compile c++ -DHAVE_CONFIG_H -I. -I. -I../include -Wall -Wno-unused -DPLUGIN_PATH=\"/usr/lib/avifile\" -g -O2 -march=i686 -pipe -fno-inline -c Uncompressed.cpp |
gcc-2.96-94 From Bugzilla Helper: User-Agent: Mozilla/4.77 [en] (X11; U; Linux 2.4.6-2 i686) Description of problem: How reproducible: Always Steps to Reproduce: 1../configure, make 2. 3. Actual Results: (cd .libs && rm -f libaviplay.la && ln -s ../libaviplay.la libaviplay.la) make[2]: Leaving directory `/home/knutjbj/vmware/avifile-0.6/lib/aviplay' make[2]: Entering directory `/home/knutjbj/vmware/avifile-0.6/lib' /bin/sh ../libtool --mode=compile c++ -DHAVE_CONFIG_H -I. -I. -I../include -g -Wall -Wno-unused -DPLUGIN_PATH=\"/usr/lib/avifile\" -g -O2 -march=i686 -pipe -c codeckeeper.cpp c++ -DHAVE_CONFIG_H -I. -I. -I../include -g -Wall -Wno-unused -DPLUGIN_PATH=\"/usr/lib/avifile\" -g -O2 -march=i686 -pipe -Wp,-MD,.deps/codeckeeper.pp -c codeckeeper.cpp -fPIC -DPIC -o codeckeeper.lo c++: {standard input}: Assembler messages: {standard input}:644: Warning: end of file not at end of a line; newline inserted {standard input}:779: Error: ignoring unrecognized symbol type "" Internal error: Killed (program cc1plus) Please submit a full bug report. See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions. make[2]: *** [codeckeeper.lo] Error 1 make[2]: Leaving directory `/home/knutjbj/vmware/avifile-0.6/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/knutjbj/vmware/avifile-0.6/lib' make: *** [all-recursive] Error 1 Expected Results: it should work Additional info: codekeeper.cpp #include <cpuinfo.h> #include <creators.h> #include <plugin.h> #include "../plugins/libwin32/fillplugins.h" #include "../plugins/libaudiodec/fillplugins.h" #include "../plugins/libffmpeg/fillplugins.h" #include "../plugins/libmp3lame_audioenc/fillplugins.h" #include "../plugins/libmpeg_audiodec/fillplugins.h" #include "Uncompressed.h" #include <stdlib.h> #include <dirent.h> #include <dlfcn.h> #include <fstream> #include <strstream> #include <iostream> #include <cstdio> using namespace std; #ifndef RTLD_PARENT #define RTLD_PARENT 0 #endif vector<CodecInfo> video_codecs; vector<CodecInfo> audio_codecs; const char* dll_def_path=PLUGIN_PATH; CPU_Info freq; // will be initialized as the first thing class CodecInfoKeeper { public: CodecInfoKeeper(); }; CodecInfoKeeper codec_keeper; static bool isPluginCompatible(void* handle, const char* name) { int (*Version)()=(int(*)())dlsym(handle, "GetPluginVersion"); if(!Version || (Version()!=PLUGIN_API_VERSION)) { if (Version) cerr<<"WARNING: plugin "<< name<<" is version "<<Version() <<", expected "<<PLUGIN_API_VERSION<<endl; else cerr<<"WARNING: plugin "<< name<<" is in incompatible format"<<endl; dlclose(handle); return false; } return true; } static void addPlugins(vector<CodecInfo>& ci, const string fullname) { int vp = 0; for(unsigned i = 0; i < ci.size(); i++) { ci[i].modulename = fullname; if(ci[i].media == CodecInfo::Video) { vp++; //cout << "add " << ci[i].text << endl; video_codecs.push_back(ci[i]); } else audio_codecs.push_back(ci[i]); } cerr << fullname << ": found " << ci.size() << ((ci.size() == 1) ? " plugin" : " plugins") << " (A: " << ci.size() - vp << " V: " << vp << ")" << endl; } CodecInfoKeeper::CodecInfoKeeper() { static const int zero[]={fccYUY2, fccYV12, 0}; video_codecs.push_back(CodecInfo(zero, "Uncompressed", "", none_about, CodecInfo::Source)); if (getenv("WIN32_PATH")) dll_def_path=getenv("WIN32_PATH"); struct dirent *dp; #if HAVE_SCANDIR struct dirent **namelist; int n; n = scandir(dll_def_path, &namelist, 0, alphasort); if(n>0) while(n--) { dp = namelist[n]; #else // !HAVE_SCANDIR DIR *dir = opendir(dll_def_path); if (dir != NULL) while ((dp = readdir(dir)) != NULL) { #endif // HAVE_SCANDIR char* name=dp->d_name; // cerr<<"Checking "<<endl; // cerr<<name<<endl; if(strlen(name)<4)continue; // if(!n)continue; if(strcmp(name+strlen(name)-3, ".la"))continue; string lfn=string(dll_def_path)+"/"+name; string dllname=""; string temp; ifstream file(lfn.c_str()); while(getline(file, temp)) { // file=getline(file, temp); if(temp.substr(0, 8)=="dlname='") { dllname=temp.substr(8); dllname.erase(dllname.size()-1); break; } } if(!dllname.size()) { cerr<<"WARNING: plugin "<<lfn<<" is invalid"<<endl; continue; } string fullname=string(dll_def_path) + "/" + dllname; static const struct plugin_map { const char* name; void (*fill)(vector<CodecInfo>& ci); } pm[] = { { "libffmpeg.", libffmpeg_FillPlugins }, { "libwin32.", libwin32_FillPlugins }, { "libaudiodec.", libaudiodec_FillPlugins }, { "libmp3lame_audioenc.", libmp3lame_FillPlugins }, { "libmpeg_audiodec.", libmpeg_audiodec_FillPlugins }, { 0, 0 } }; /** This chunk of code eliminates the need to open four shared * libraries ( some 5 Megabytes of data ) while starting every app */ const plugin_map* c = pm; for (; c->name; c++) { if (dllname.substr(0, strlen(c->name)) == c->name) { vector<CodecInfo> ci; c->fill(ci); addPlugins(ci, fullname); break; } } if (c->name) continue; // we have found this in the code above // third party pluggin void* handle=dlopen(fullname.c_str(), RTLD_LAZY); // cerr<<lfn<<endl; // void* handle=dlopen(lfn.c_str(), RTLD_LAZY); // DlOpener opener; // void* handle=