Код: Выделить всё
test.cКод: Выделить всё
#include
#include
void f() {
int i;
for (i = 0; i < 3; ++i) {
sleep(1);
}
}
int main() {
f();
return 0;
}
Код: Выделить всё
gcc -O0 -g -fno-omit-frame-pointer test.c -o test
Код: Выделить всё
test.shКод: Выделить всё
#!/usr/bin/env sh
set -m # To prevent bg process from ignoring SIGINT
./test &
test_pid=$!
sudo offcputime-bpfcc -df -p $! &
stat_pid=$!
wait $test_pid
kill -INT $stat_pid
wait $stat_pid
Код: Выделить всё
./test.sh
Код: Выделить всё
test;[unknown];-;entry_SYSCALL_64_after_hwframe;do_syscall_64;__x64_sys_clock_nanosleep;common_nsleep;hrtimer_nanosleep;do_nanosleep;schedule;__schedule;finish_task_switch.isra.0 1000151
Код: Выделить всё
cd glibc
git checkout release/2.36/master
mkdir -p build
cd build
CFLAGS='-O2 -fno-omit-frame-pointer'
CXXFLAGS='-O2 -fno-omit-frame-pointer'
../configure --prefix=$HOME/no-omit-frame-pointer CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS"
make -j$(nproc)
make install
cd ../..
version=12.4.0
cd gcc-$version
mkdir -p build
cd build
export CFLAGS="-O2 -fno-omit-frame-pointer"
export CXXFLAGS=$CFLAGS
../configure --disable-multilib --enable-languages=c,c++ --prefix=$HOME/no-omit-frame-pointer
make -j$(nproc)
make install
cd ../..
Код: Выделить всё
INSTALL_ROOT=$HOME/no-omit-frame-pointer
export CC=$INSTALL_ROOT/bin/gcc
export CXX=$INSTALL_ROOT/bin/g++
export CFLAGS="-O2 -fno-omit-frame-pointer"
export CXXFLAGS=$CFLAGS
export LDFLAGS="-Wl,-rpath=$INSTALL_ROOT/lib -Wl,-rpath=$INSTALL_ROOT/lib64 -Wl,--dynamic-linker=$INSTALL_ROOT/lib/ld-linux-x86-64.so.2"
unset LD_LIBRARY_PATH
$CC -O0 -g test.c -o test $CFLAGS $LDFLAGS
Код: Выделить всё
$ ldd test
linux-vdso.so.1 (0x00007f7563cc1000)
libc.so.6 => /home/searchstar/no-omit-frame-pointer/lib/libc.so.6 (0x00007f7563ad1000)
/home/searchstar/no-omit-frame-pointer/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f7563cc3000)
Код: Выделить всё
./test.sh
Код: Выделить всё
test;[unknown];[unknown];[unknown];[unknown];[unknown];[unknown];[unknown];[unknown];-;entry_SYSCALL_64_after_hwframe;do_syscall_64;__x64_sys_clock_nanosleep;common_nsleep;hrtimer_nanosleep;do_nanosleep;schedule;__schedule;finish_task_switch.isra.0 1000157
Подробнее здесь: https://stackoverflow.com/questions/798 ... user-stack
Мобильная версия