Скомпилируйте и запустите программы на C с Gentoo Linux на Gem5 для полной симуляции системы x86 - PullRequest
1 голос
/ 28 мая 2019

Я успешно запустил полный системный симулятор gem5 для x86.Я смонтировал образ следующим образом:

sudo mount -o loop,offset=32256 linux-x86.img tempdisk

и скопировал туда программу hello world.Затем я запустил симуляцию.Linux успешно загрузился.Я использовал telnet для проверки моделируемой системы.Мне удалось скомпилировать исходный код hello world, который я поместил на диск образа через симулированную систему, и он тоже успешно работает.

Затем я повторил то же самое для другого исходного файла C, который у меня был.Этот исходный код нуждается в следующем заголовке, и я получаю эту ошибку:

  error: x86intrin.h: No such file or directory

Я пытался установить другие версии gcc.Я попробовал следующее, чтобы добавить общедоступный DNS Google для запуска apt-get:

echo "nameserver 8.8.8.8" > /etc/resolv.conf  
apt-get update

Однако команда apt-get не работает.Я обнаружил, что образ Linux, предоставленный на веб-сайте gem5 для x86, был не Ubuntu, а следующим дистрибутивом:

Gentoo Base System release 1.12.11.1

ПоэтомуЯ использовал команду emerge для обновления и установки других версий gcc, но она также не работала.

    (none) / # emerge gcc-4.8
emerge gcc-4.8
!!! /etc/make.profile is not a symlink and will probably prevent most merges.
!!! It should point into a profile within /usr/portage/profiles/
!!! (You can safely ignore this message when syncing. It's harmless.)
Calculating dependencies -
!!! 'gcc-4.8' is not a valid package atom.
!!! Please check ebuild(5) for full details.
!!! (Did you specify a version but forget to prefix with '='?)

В конечном счете, я хочу запускать атаки по побочным каналам, такие как spectre на полную систему gem5.В этих кодах используются такие инструкции, как rdtscp и clflush, для которых требуется заголовок x86intrin.h.
Есть ли другой способ запустить мой код в полной системе симуляции gem5?Я выполнил шаги, объясненные здесь для x86, но в основном это были для Arm и Ubuntu.Попытка их для x86 привела меня к вышеупомянутым ошибкам.

...