#include_next: wrong search order?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

[Please keep me in CC:]

below is a result of running cpp on a simple source that contains
just "#include <limits.h>" (numbers before # added by me for further
references):

[1] # 1 "y.c"
[2] # 1 "/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/limits.h" 1 3 4
[3] # 11 "/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/limits.h" 3 4
[4] # 1 "/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/syslimits.h" 1 3 4
[5] # 1 "/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/limits.h" 1 3 4
[6] # 122 "/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/limits.h" 3 4
[7] # 1 "/usr/include/limits.h" 1 3 4
[8] # 26 "/usr/include/limits.h" 3 4
    /* snip */

The files do the following:
<gcc-include-dir>/limits.h does '#include "syslimits.h"'
<gcc-include-dir>/syslimits.h does '#include_next <limits.h>'

The description for the #include_next in the cpp.info states:
"This directive works like `#include' except in searching for the
specified file: it starts searching the list of header file
directories _after_ the directory in which the current file was
found."

Therefore, it appears that the lines [5] and [6] are wrong:
<syslimits.h> resides in /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/
and therefore the search for #include_next should have commenced at
the next system include directory, that is /usr/include.

Why does GCC first pick up the limits.h from the same directory as the
<syslimits.h> file? Is it a bug?

PS. x86, Fedora Core 2, tested with GCC 4.1 also - with the same effect.

Regards,
Alexey.

-- 
Do you sleep with your window unlocked? Be seeing you...
                        -- Arilou, SC2

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux