Та же проблемаа, нету функции exported_test_function в таблице экспорта, как исправить?
$ cat > 1027136.cс
__attribute__((visibility("default"))) bool exported_test_function()
{
return true;
}
$ g++ -fPIC -shared 1027136.cc -o 1027136.so
$ objdump -T 1027136.so
1027136.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
0000000000000000 w D *UND* 0000000000000000 _ITM_deregisterTMCloneTable
0000000000000000 w D *UND* 0000000000000000 __gmon_start__
0000000000000000 w D *UND* 0000000000000000 _ITM_registerTMCloneTable
00000000000010f5 g DF .text 000000000000000b Base _Z22exported_test_functionv
На OSDev Wiki прочитал что работать с pci невозможно из защищённого режима в котором я и "сижу".
Как тогда войти в виртуальный режим?
Почему ядро паникует
$ echo 'Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f' | scripts/decodecode
Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f
All code
========
0: 0f 7f 44 17 f0 movq %mm0,-0x10(%rdi,%rdx,1)
5: f3 0f 7f 07 movdqu %xmm0,(%rdi)
9: c3 retq
a: 48 83 fa 40 cmp $0x40,%rdx
e: 77 16 ja 0x26
10: f3 0f 7f 07 movdqu %xmm0,(%rdi)
14: f3 0f 7f 47 10 movdqu %xmm0,0x10(%rdi)
19: f3 0f 7f 44 17 f0 movdqu %xmm0,-0x10(%rdi,%rdx,1)
1f: f3 0f 7f 44 17 e0 movdqu %xmm0,-0x20(%rdi,%rdx,1)
25: c3 retq
26: 48 8d 4f 40 lea 0x40(%rdi),%rcx
2a:* f3 0f 7f 07 movdqu %xmm0,(%rdi) <-- trapping instruction
2e: 48 83 e1 c0 and $0xffffffffffffffc0,%rcx
32: f3 0f 7f 44 17 f0 movdqu %xmm0,-0x10(%rdi,%rdx,1)
38: f3 0f 7f 47 10 movdqu %xmm0,0x10(%rdi)
3d: f3 repz
3e: 0f .byte 0xf
3f: 7f .byte 0x7f
Code starting with the faulting instruction
===========================================
0: f3 0f 7f 07 movdqu %xmm0,(%rdi)
4: 48 83 e1 c0 and $0xffffffffffffffc0,%rcx
8: f3 0f 7f 44 17 f0 movdqu %xmm0,-0x10(%rdi,%rdx,1)
e: f3 0f 7f 47 10 movdqu %xmm0,0x10(%rdi)
13: f3 repz
14: 0f .byte 0xf
15: 7f .byte 0x7f
Загрузчик нормально работает при загрузке 1 сектора
$ nasm test.s -o test
$ head -c 2b /dev/urandom >> test
$ hexdump -Cv test | tail -n2
000005f0 49 93 ad 56 25 97 25 82 61 1d d9 a1 66 2a cb 19 |I..V%.%.a...f*..|
00000600
$ qemu-system-i386 -hda test -gdb tcp::1235 -S
$ wget https://gist.githubusercontent.com/MatanShahar/1441433e19637cf1bb46b1aa38a90815/raw/2687fb5daf60cf6aa8435efc8450d89f1ccf2205/target.xml
$ gdb
(gdb) set tdesc filename target.xml
warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default i8086 settings.
(gdb) target remote :1235
(gdb) set disassembly-flavor intel
(gdb) b *0x7c32
Breakpoint 2 at 0x7c32
(gdb) c
Continuing.
Breakpoint 2, 0x00007c32 in ?? ()
(gdb) x/2i $pc
=> 0x7c32: int 0x13
0x7c34: jb 0x7c3e
(gdb) tb *0x7c34
Temporary breakpoint 3 at 0x7c34
(gdb) c
Continuing.
Temporary breakpoint 3, 0x00007c34 in ?? ()
(gdb) x/16x 0x13f0
0x13f0: 0x49 0x93 0xad 0x56 0x25 0x97 0x25 0x82
0x13f8: 0x61 0x1d 0xd9 0xa1 0x66 0x2a 0xcb 0x19
mov dl, 80h
для выбора первого ЖД, для определённости. Хотелось бы овладеть той математической базой чтобы +- свободно ориентироваться в книге и понимать ее, чтобы знания откладывались а не просто страницы переворачивались.
#include <iostream>
#include <thread>
#include <vector>;
using namespace std;
void go(int p) {
while (1) {
cout << p << endl;
}
}
void main() {
thread *t[3];
for (int i = 0; i <= 2; i++) {
t[i] = new thread(go, i);
cout << 123;
}
for (int i = 0; i <= 2; i++) {
t[i]->join();
delete t[i];
}
}