Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cstdlib Line 75: 'stdlib.h' file not found #42

Closed
SteveLee123 opened this issue Mar 13, 2024 · 9 comments
Closed

cstdlib Line 75: 'stdlib.h' file not found #42

SteveLee123 opened this issue Mar 13, 2024 · 9 comments
Assignees

Comments

@SteveLee123
Copy link

when I run this bash run_tests.sh ,I get this error.

~/cppsafe/cppsafe-main/integration_test> bash run_tests.sh 
test annotation/annotation_contract.cpp
test annotation/annotation_contract_legacy.cpp
test annotation/annotation_lifetime_const.cpp
test annotation/annotation_lifetime_inout.cpp
test annotation/annotation_owner_and_pointer.cpp
test contract/contract_agg_expansion.cpp
test contract/contract_dtor.cpp
test contract/contract_inout.cpp
test contract/contract_pointer_expansion.cpp
test contract/contract_template.cpp
test contract/overrides.cpp
test contract/pointer_nullness.cpp
test contract/std_types.cpp
test contract/std_types.cpp failed, please rerun it with:
    bash test.sh contract/std_types.cpp
detail:
error: no expected directives found: consider use of 'expected-no-diagnostics'
error: 'error' diagnostics seen but not expected: 
  File /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/cstdlib Line 75: 'stdlib.h' file not found
2 errors generated.
Error while processing /home/builduser/cppsafe/cppsafe-main/integration_test/contract/std_types.cpp.

seems that is because #include_next "stdlib.h"
but I don't know how to fix it .
friend, have you met it before?

@qqiangwu
Copy link
Owner

can you provide more information about your environment?

it seems cppsafe failed to detect c include directories.

call the following and show me the result.

echo | g++ -E -xc++ -Wp,-v -

cppsafe <your-cpp-file> -- -v

if you have llvm installed, copy cppsafe to /opt/homebrew/opt/llvm/bin/ (maybe other directory in your machine) solves the problem too.

see also: #3

@SteveLee123
Copy link
Author

result:

~/cppsafe/cppsafe-main> echo | g++ -E -xc++ -Wp,-v -
ignoring nonexistent directory "/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/x86_64-pc-linux-gnu
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/backward
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include
 /usr/local/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include-fixed
 /usr/include
End of search list.
# 0 "<stdin>"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "<stdin>"
cppsafe-main> cppsafe integration_test/contract/std_types.cpp -- -v
clang version 17.0.2
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: 
Found candidate GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Selected GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
clang version 17.0.2
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
Found candidate GCC installation: /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0
Selected GCC installation: /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
clang Invocation:
 "/usr/local/bin/clang-tool" "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-fsyntax-only" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "std_types.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-v" "-fcoverage-compilation-dir=/home/builduser/cppsafe/cppsafe-main" "-resource-dir" "/usr/local/lib/clang/17" "-D" "__CPPSAFE__=0.1.0" "-internal-isystem" "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0" "-internal-isystem" "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/x86_64-pc-linux-gnu" "-internal-isystem" "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/backward" "-internal-isystem" "/usr/local/lib/clang/17/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../x86_64-pc-linux-gnu/include" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/builduser/cppsafe/cppsafe-main" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c++" "/home/builduser/cppsafe/cppsafe-main/integration_test/contract/std_types.cpp"

clang -cc1 version 17.0.2 based upon LLVM 17.0.2 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/usr/local/lib/clang/17/include"
ignoring nonexistent directory "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0"
ignoring duplicate directory "/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/x86_64-pc-linux-gnu"
ignoring duplicate directory "/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/backward"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0
 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/x86_64-pc-linux-gnu
 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/backward
 /usr/local/include
 /usr/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include-fixed
End of search list.
/home/builduser/cppsafe/cppsafe-main/integration_test/contract/std_types.cpp:9:5: warning: lifetime type category is Owner with pointee char
    9 |     __lifetime_type_category_arg(p1);  // expected-warning {{Owner with pointee char}}
      |     ^
/home/builduser/cppsafe/cppsafe-main/integration_test/contract/std_types.cpp:12:5: warning: lifetime type category is Owner with pointee char
   12 |     __lifetime_type_category_arg(p2);  // expected-warning {{Owner with pointee char}}
      |     ^
2 warnings generated.

how weird it is ! it became normal when manually i use it.

@SteveLee123
Copy link
Author

seems that the problem still exists.

cppsafe-main/integration_test> ../build/cppsafe example.cpp -- -v
clang version 17.0.2
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: 
Found candidate GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Selected GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
clang version 17.0.2
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/builduser/cppsafe/cppsafe-main/build
Found candidate GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Selected GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
clang Invocation:
 "/home/builduser/cppsafe/cppsafe-main/build/clang-tool" "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-fsyntax-only" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "example.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-v" "-fcoverage-compilation-dir=/home/builduser/cppsafe/cppsafe-main/integration_test" "-resource-dir" "/home/builduser/cppsafe/cppsafe-main/lib/clang/17" "-D" "__CPPSAFE__=0.1.0" "-internal-isystem" "/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++" "-internal-isystem" "/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++/x86_64-suse-linux" "-internal-isystem" "/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++/backward" "-internal-isystem" "/home/builduser/cppsafe/cppsafe-main/lib/clang/17/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/include" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/builduser/cppsafe/cppsafe-main/integration_test" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c++" "/home/builduser/cppsafe/cppsafe-main/integration_test/example.cpp"

clang -cc1 version 17.0.2 based upon LLVM 17.0.2 default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++/x86_64-suse-linux"
ignoring nonexistent directory "/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++/backward"
ignoring nonexistent directory "/home/builduser/cppsafe/cppsafe-main/lib/clang/17/include"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++
 /usr/local/include
 /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/include
 /usr/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/x86_64-pc-linux-gnu
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/backward
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include-fixed
End of search list.
In file included from /home/builduser/cppsafe/cppsafe-main/integration_test/example.cpp:3:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/iostream:39:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/ostream:38:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/ios:42:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/bits/ios_base.h:41:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/bits/locale_classes.h:40:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/string:55:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/bits/basic_string.h:6608:
In file included from /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/ext/string_conversions.h:41:
/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/cstdlib:75:15: fatal error: 'stdlib.h' file not found
   75 | #include_next <stdlib.h>
      |               ^~~~~~~~~~
1 error generated.
Error while processing /home/builduser/cppsafe/cppsafe-main/integration_test/example.cpp.

@SteveLee123
Copy link
Author

finally, I fix it by

vim ~/.bashrc
export C_INCLUDE_PATH=/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0
export CPLUS_INCLUDE_PATH=/usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0

source ~/.bashrc

@qqiangwu
Copy link
Owner

I'll investigate why the auto-detection failed.

@qqiangwu qqiangwu self-assigned this Mar 13, 2024
@qqiangwu
Copy link
Owner

what's your os distribution?

@qqiangwu qqiangwu reopened this Mar 13, 2024
@SteveLee123
Copy link
Author

I'll investigate why the auto-detection failed.

image

the /usr/include should be the last one.

Maybe it is because when i upgraded my gcc, i was missing some steps.

@SteveLee123
Copy link
Author

你的是什么操作系统分布?

suse

@SteveLee123
Copy link
Author

can I see your result of excuating this commands?

cppsafe-main/integration_test> ../build/cppsafe example.cpp -- -v

I want to see the sequence of your .h file searching path.
currently , mine is:

#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0
 /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++
 /usr/local/include
 /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/include
 /usr/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/x86_64-pc-linux-gnu
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/../../../../include/c++/11.4.0/backward
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include
 /usr/local/lib/gcc/x86_64-pc-linux-gnu/11.4.0/include-fixed
End of search list.

it seems so wired.
and it causes so many false positive because it can not include the correct .h file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants