From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2.1) Gecko/20010901 Description of problem: In the large file compilation environment (_FILE_OFFSET_BITS set to 64) "dirent" and "dirent64" are different types but "dirent" should really be typedef'ed to "dirent64" so that these are the same type. Because of this minor bug I get warnings when using the Intel C/C++ compiler: "foo.cc", line 19: warning #556: a value of type "dirent64 *" cannot be assigned to an entity of type "dirent *" Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1. Get an Intel C/C++ compiler. There's a demo version. 2. Compile the attached file foo.cc: icpc -c foo.cc Actual Results: The Intel C++ compiler warns that "dirent" and "dirent64" are different types. Expected Results: "dirent" and "dirent64" should be the same type in <bits/dirent.h> when __USE_FILE_OFFSET64 is defined. Additional info: The complete output of the Intel C++ compiler is: $ icpc -c foo.cc foo.cc: "foo.cc", line 19: warning #556: a value of type "dirent64 *" cannot be assigned to an entity of type "dirent *" file = readdir(dir); ^ $
Created attachment 56406 [details] compile this C++ source file to reproduce
The problem is that either icc lacks reasonable function redirect, or glibc doesn't know how to do it for it and thus has to fall back to #define which has this problem. If you know how to code <sys/cdefs.h> __REDIRECT macro for icc, feel free to submit patch...