mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 02:05:57 +01:00
static g++: clarify pthread problems further
This commit is contained in:
@@ -3899,7 +3899,10 @@ it fails with:
|
|||||||
ld: cannot find -lopenblas
|
ld: cannot find -lopenblas
|
||||||
....
|
....
|
||||||
|
|
||||||
`g++` and pthreads also causes issues: https://stackoverflow.com/questions/35116327/when-g-static-link-pthread-cause-segmentation-fault-why
|
`g++` and pthreads also causes issues:
|
||||||
|
|
||||||
|
* https://stackoverflow.com/questions/35116327/when-g-static-link-pthread-cause-segmentation-fault-why
|
||||||
|
* https://stackoverflow.com/questions/58848694/gcc-whole-archive-recipe-for-static-linking-to-pthread-stopped-working-in-rec
|
||||||
|
|
||||||
As a consequence, the following fails:
|
As a consequence, the following fails:
|
||||||
|
|
||||||
@@ -3916,13 +3919,13 @@ qemu-x86_64: /path/to/linux-kernel-module-cheat/submodules/qemu/accel/tcg/cpu-ex
|
|||||||
|
|
||||||
and if we manually build and run natively on host it segfaults.
|
and if we manually build and run natively on host it segfaults.
|
||||||
|
|
||||||
If we hack the compilation command to do instead:
|
The workaround:
|
||||||
|
|
||||||
....
|
....
|
||||||
-pthread -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
|
-pthread -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
|
||||||
....
|
....
|
||||||
|
|
||||||
then it works. We should automate that at some point.
|
fixes some of the problems, but not all, so we are just skipping those tests for now.
|
||||||
|
|
||||||
=== gem5 syscall emulation mode
|
=== gem5 syscall emulation mode
|
||||||
|
|
||||||
|
|||||||
@@ -561,7 +561,10 @@ path_properties_tuples = (
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'abort.c': {'signal_received': signal.Signals.SIGABRT},
|
'abort.c': {'signal_received': signal.Signals.SIGABRT},
|
||||||
'atomic.c': {'baremetal': False},
|
'atomic.c': {
|
||||||
|
'baremetal': False,
|
||||||
|
'test_run_args': {'cpus': 3},
|
||||||
|
},
|
||||||
'assert_fail.c': {'signal_received': signal.Signals.SIGABRT},
|
'assert_fail.c': {'signal_received': signal.Signals.SIGABRT},
|
||||||
# This has complex failure modes, too hard to assert.
|
# This has complex failure modes, too hard to assert.
|
||||||
'smash_stack.c': {'skip_run_unclassified': True},
|
'smash_stack.c': {'skip_run_unclassified': True},
|
||||||
|
|||||||
Reference in New Issue
Block a user