-
Notifications
You must be signed in to change notification settings - Fork 80
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
Only allow Checked C extension flag for C in clang #9
Milestone
Comments
dtarditi
added a commit
to dtarditi/checkedc-clang
that referenced
this issue
Jul 1, 2016
This change only allows the -fcheckedc-extension flag to be used for C programs in clang. The clang driver will reject the use of -fcheckedc-extension for other C family languages supported by clang, including C++, Objective C, OpenCL, and CUDA. This addresses issue checkedc#9 in the checked-clang Github repo. We are currently not modifying clang to support these other languages, which is why need to disallow using the extension with them. Testing: - Add 4 new tests to clang. They test that use of the extension flag is rejected for C++, Objective C, CUDA, and OpenCL. - As recommended by the clang documentation, I placed the tests in with other similar tests in the test tree. - I updated the testing baselines to reflect the new tests. I also updated the documentation to reflect the fact that we have Checked C specific tests in clang. We need to take the new tests into account when updating to new versions of the clang/LLVM sources.
dtarditi
added a commit
that referenced
this issue
Jul 7, 2016
This change only allows the -fcheckedc-extension flag to be used for C programs in clang. The clang driver will reject the use of -fcheckedc-extension for other C family languages supported by clang, including C++, Objective C, OpenCL, and CUDA. This addresses issue #9 in the checked-clang Github repo. We are currently not modifying clang to support these other languages, which is why need to disallow using the extension with them. This change also updates the documentation on testing to reflect the fact that there are now differences in the number of tests in the master and baseline branches. For testing changes, developers should make sure that no new unexpected failures are introduced. For updating to the latest sources for LLVM/clang, developers should make sure that the additional Checked C tests in the master branch pass. Testing: - Add 5 new tests to clang. They test that use of the extension flag is accepted for C files and rejected for C++, Objective C, CUDA, and OpenCL files.. This also applies to files that are compiled as a different file type than their extension. - Also test that clang-cl understands the Checked C flag when it is passed in via -Xclang - As recommended by the clang documentation, I placed the tests in with other similar tests in the test tree.
This issue has been addressed by pull request #16. |
dtarditi
pushed a commit
that referenced
this issue
Jun 20, 2017
[Test] Make Lit tests C++11 compatible #9 Differential Revision: https://reviews.llvm.org/D20710 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@296184 91177308-0d34-0410-b5e6-96231b3b80d8
kkjeer
pushed a commit
that referenced
this issue
Sep 23, 2020
When `Target::GetEntryPointAddress()` calls `exe_module->GetObjectFile()->GetEntryPointAddress()`, and the returned `entry_addr` is valid, it can immediately be returned. However, just before that, an `llvm::Error` value has been setup, but in this case it is not consumed before returning, like is done further below in the function. In https://bugs.freebsd.org/248745 we got a bug report for this, where a very simple test case aborts and dumps core: ``` * thread #1, name = 'testcase', stop reason = breakpoint 1.1 frame #0: 0x00000000002018d4 testcase`main(argc=1, argv=0x00007fffffffea18) at testcase.c:3:5 1 int main(int argc, char *argv[]) 2 { -> 3 return 0; 4 } (lldb) p argc Program aborted due to an unhandled Error: Error value was Success. (Note: Success values must still be checked prior to being destroyed). Thread 1 received signal SIGABRT, Aborted. thr_kill () at thr_kill.S:3 3 thr_kill.S: No such file or directory. (gdb) bt #0 thr_kill () at thr_kill.S:3 #1 0x00000008049a0004 in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52 #2 0x0000000804916229 in abort () at /usr/src/lib/libc/stdlib/abort.c:67 #3 0x000000000451b5f5 in fatalUncheckedError () at /usr/src/contrib/llvm-project/llvm/lib/Support/Error.cpp:112 #4 0x00000000019cf008 in GetEntryPointAddress () at /usr/src/contrib/llvm-project/llvm/include/llvm/Support/Error.h:267 #5 0x0000000001bccbd8 in ConstructorSetup () at /usr/src/contrib/llvm-project/lldb/source/Target/ThreadPlanCallFunction.cpp:67 #6 0x0000000001bcd2c0 in ThreadPlanCallFunction () at /usr/src/contrib/llvm-project/lldb/source/Target/ThreadPlanCallFunction.cpp:114 #7 0x00000000020076d4 in InferiorCallMmap () at /usr/src/contrib/llvm-project/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp:97 #8 0x0000000001f4be33 in DoAllocateMemory () at /usr/src/contrib/llvm-project/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp:604 #9 0x0000000001fe51b9 in AllocatePage () at /usr/src/contrib/llvm-project/lldb/source/Target/Memory.cpp:347 #10 0x0000000001fe5385 in AllocateMemory () at /usr/src/contrib/llvm-project/lldb/source/Target/Memory.cpp:383 #11 0x0000000001974da2 in AllocateMemory () at /usr/src/contrib/llvm-project/lldb/source/Target/Process.cpp:2301 #12 CanJIT () at /usr/src/contrib/llvm-project/lldb/source/Target/Process.cpp:2331 #13 0x0000000001a1bf3d in Evaluate () at /usr/src/contrib/llvm-project/lldb/source/Expression/UserExpression.cpp:190 #14 0x00000000019ce7a2 in EvaluateExpression () at /usr/src/contrib/llvm-project/lldb/source/Target/Target.cpp:2372 #15 0x0000000001ad784c in EvaluateExpression () at /usr/src/contrib/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:414 #16 0x0000000001ad86ae in DoExecute () at /usr/src/contrib/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:646 #17 0x0000000001a5e3ed in Execute () at /usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandObject.cpp:1003 #18 0x0000000001a6c4a3 in HandleCommand () at /usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:1762 #19 0x0000000001a6f98c in IOHandlerInputComplete () at /usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:2760 #20 0x0000000001a90b08 in Run () at /usr/src/contrib/llvm-project/lldb/source/Core/IOHandler.cpp:548 #21 0x00000000019a6c6a in ExecuteIOHandlers () at /usr/src/contrib/llvm-project/lldb/source/Core/Debugger.cpp:903 #22 0x0000000001a70337 in RunCommandInterpreter () at /usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:2946 #23 0x0000000001d9d812 in RunCommandInterpreter () at /usr/src/contrib/llvm-project/lldb/source/API/SBDebugger.cpp:1169 #24 0x0000000001918be8 in MainLoop () at /usr/src/contrib/llvm-project/lldb/tools/driver/Driver.cpp:675 #25 0x000000000191a114 in main () at /usr/src/contrib/llvm-project/lldb/tools/driver/Driver.cpp:890``` Fix the incorrect error catch by only instantiating an `Error` object if it is necessary. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D86355 (cherry picked from commit 1ce07cd)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
We should only allow the Checked C extension flag to be used for C in clang. We should issue an error message for other languages. We're not currently doing the implementation work to enable all the language features for other C family languages supported by clang (such as C++). We're also not testing the other C family languages.
The text was updated successfully, but these errors were encountered: