Что вызывает ошибку сегментации и дамп ядра в этом исполняемом файле ELF?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Что вызывает ошибку сегментации и дамп ядра в этом исполняемом файле ELF?

Сообщение Anonymous »

Пытаюсь написать простое сообщение Hello, World! программа с заголовками ELF на ОС x86_64, я использую Linux и пишу на C++. Программа печатает Hello, World! но за этим последовали ошибки «ошибка сегментации» и «(ядро сброшено)». Я слежу за ресурсом https://en.wikipedia.org/wiki/Executabl ... ble_Format вместе с таблицей Intel ISA.
Я новичок и изучаю заголовки ELF, поэтому мне очень признательны за подробности и пояснения. почему появляется ошибка.
Обратите внимание, что структура ELFHeader имеет их по умолчанию:

Код: Выделить всё

string e_ident_MAG[4] = {"7F", "45", "4C", "46"};
string e_ident_DATA[1] = {"01"};
string e_ident_VERSION[1] = {"01"};
string e_ident_OSABI[1] = {"03"};
string e_ident_ABIVERSION[1] = {"00"};
string e_ident_PAD[7] = {"00", "00", "00", "00", "00", "00", "00"};
string e_version[4] = {"01", "00", "00", "00"};
string e_phoff[8] = {"40", "00", "00", "00", "00", "00", "00", "00"};
string e_flags[4] = {"00", "00", "00", "00"};
string e_shstrndx[2] = {"00", "00"};
Иначе вот как выглядит мой код: если вы не видите здесь поля, вы можете предположить, что все его 00.

Код: Выделить всё

#include 
#include 
#include 
#include "dataStructs.h"
using namespace std;

int main() {
dataStructs DS; // contains ELF format
ofstream hex_dump("output/hex_dump.txt", ios::trunc);

DS.ELFHeader.e_ident_CLASS[0] = "02";
DS.ELFHeader.e_type[0] = "02";
DS.ELFHeader.e_machine[0] = "3E";
DS.ELFHeader.e_entry[2] = "40";
DS.ELFHeader.e_entry[0] = "B0";
DS.ELFHeader.e_ehsize[0] = "40";
DS.ELFHeader.e_phentsize[0] = "38";
DS.ELFHeader.e_phnum[0] = "02";
hex_dump 

Подробнее здесь: [url]https://stackoverflow.com/questions/79261396/whats-causing-a-segmentation-fault-and-core-dump-in-this-elf-executable[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»