1
我生成一個ELF可執行文件,該文件加載到LOAD段。它拆卸很好,但試圖gdb
下運行它給During startup program terminated with signal SIGSEGV, Segmentation fault.
啓動期間生成的ELF可執行文件段錯誤
readelf
給出:
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x400056
Start of program headers: 759 (bytes into file)
Start of section headers: 503 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 1
Size of section headers: 64 (bytes)
Number of section headers: 4
Section header string table index: 2
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 0] NULL 0000000000000000 00000000
0000000000000000 0000000000000000 0 0 0
[ 1] .text PROGBITS 0000000000400040 00000040
000000000000005b 0000000000000000 AX 0 0 16
[ 2] .strtab STRTAB 0000000000000000 0000009b
000000000000009c 0000000000000000 0 0 4
[ 3] .symtab SYMTAB 0000000000000000 00000137
00000000000000c0 0000000000000018 2 1 4
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
There are no section groups in this file.
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000000040 0x0000000000400000 0x0000000000400000
0x000000000000009b 0x000000000000009b R E 200000
Section to Segment mapping:
Segment Sections...
00 .text
There is no dynamic section in this file.
There are no relocations in this file.
The decoding of unwind sections for machine type Advanced Micro Devices X86-64 is not currently supported.
Symbol table '.symtab' contains 8 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FUNC GLOBAL DEFAULT 1
2: 0000000000400040 16 FUNC GLOBAL DEFAULT 1 _R_Potato
3: 0000000000400050 6 FUNC GLOBAL DEFAULT 1 _R_Main
4: 0000000000000000 0 SECTION LOCAL DEFAULT 1
5: 0000000000400056 18 FUNC GLOBAL DEFAULT 1 _start
6: 0000000000400068 25 FUNC GLOBAL DEFAULT 1 GetStringLength
7: 0000000000400081 26 FUNC GLOBAL DEFAULT 1 _R_Print
的hexdump都可以,如果需要的話,可以發現here。 我假設問題是內核試圖從LOAD段映射的東西,但我沒有看到問題。這裏發生了什麼?
非常感謝! –