問題タブ [vdso]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
5553 参照

linux - gettimeofday システムコールはどのように機能しますか?

gettimeofdayこのページによると、x86-86 の syscall です(gettimeofdayボックス内を検索するだけです)。

2 つのポインターを準備して関連する を呼び出すだけで、逆アセンブリは十分に簡単だと思いましたsyscallが、その逆アセンブリはさらに多くのことを行っています。

そして、私はまったく見えませんsyscall

誰がそれがどのように機能するか説明できますか?

0 投票する
1 に答える
1220 参照

linux - `[stack]`、`[vdso]`、`[vsyscall]` mmap はどこから来るのですか?

Linux x86_64 を対象とする次のプログラムを検討してください。

情報:

これは基本的に無限ループです。

これをリンクしてストリップすると、ELF 実行可能ファイルが得られます。

ELF 実行可能ファイルでは、最初のプログラム ヘッダーLOADに、上記の mmaps (a.out) の最初のエントリを説明するマップが含まれています。(このヘッダーとコードをすべて取り除いても、同じマップが観察されます。) execve(2)ELF ハンドラーを呼び出しfs/binfmt_elf.c、プログラム ヘッダーを読み取り、ファイルの mmap を呼び出します。

私が理解していないのは、他の 3 つ (stack、vdso、vsyscall) がどこから来たのかということです。これらは ELF ファイルには記述されていないため、Linux カーネルはこれら 3 つの「匿名」または「特別」マップをデフォルトでセットアップする必要があります。

私の質問は、Linux カーネルがこれらの他の 3 つのマップをカーネル コードのどこ (またはどのように) 作成するのかということです。それらは execve 全体で継承されますか? fs/exec.cそれらが作成された場所が見えないようです。

0 投票する
2 に答える
40473 参照

c - vdso と vsyscall とは何ですか?

やったsudo cat /proc/1/maps -vv

出力を理解しようとしています。予想どおり、多くの共有ライブラリがメモリ マッピング セグメントにマップされていることがわかります。

最後に次のようなものがあります

vdsoとはどういうvsyscall意味ですか? vsyscall はメモリのカーネル部分ですか? 誰かが問題に光を当てることができれば、それは素晴らしいことです。

0 投票する
0 に答える
173 参照

linux - Identifying Ifuncs in the VDSO

I see in the vdso that all functions are marked as STT_FUNC instead of STT_GNU_IFUNC. Especially I know "gettimeofday" is an Ifunc.

Is it true that all the functions in the VDSO are Ifuncs so they aren't tagged as such? if not - Why aren't these functions tagged as Ifuncs?

See the following on Ubuntu:

0 投票する
1 に答える
760 参照

linux - 静的バイナリの実行中に vdso が表示されるのはなぜですか?

ここに簡単なサンプルプログラムがあります。(これは基本的に、プロセスに関連付けられたprocmapを取得します)

静的に準備する

バイナリの実行

vDSOについてググっのですが、よくわかりませんでした。ウィキペディアは、「これらは、ユーザー空間からカーネルルーチンにアクセスできる方法です」と述べています。私の質問は、静的バイナリの実行時にこれらの共有オブジェクトが表示されるのはなぜですか?

0 投票する
0 に答える
505 参照

debugging - vsyscall と vdso のデバッグ情報

perf ツールを使用して、centos 6.5 (カーネル バージョン: 2.6.32-431.el6.x86_64) でカーネル モジュールのプロファイルを作成しています。カーネル デバッグ情報パッケージを個別にインストールしました。[kernel.kallsyms] 関数の一覧は表示できますが、[vdso] と [vsyscall] に関連するシンボルが認識されず、16 進数で表示されます。

これら 2 つのライブラリのデバッグ情報を追加する方法はありますか?