main[-1u]={1};
Это 14 байт. По условиям конкурса к коду добавляется 15 обязательных байт.
Данный код определяет функцию
main как большой массив и инициализирует его первый элемент. Такое поведение заставляет компилятор GCC хранить весь массив в результирующем исполняемом файле.
Поскольку массив больше двух гигабайт, при компиляции следует указать флаг -mcmodel=medium.
Компиляция следующей командой:
gcc -mcmodel=medium cbomb.c -o cbomb
Не каждая машина осилит такую компиляцию. Эксперименты показали, что с ней справляется виртуальная машина RedHat 5.6 с 10 ГБRAM, свопом на 12 ГБ и большим локальным разделом в /tmp. GCC версии 4.1.2. Общее время компиляции около 27 минут.
Компилировать на продакшн-машине не рекомендуется.
В итоге получается исполняемый файл размером 17 179 875 837 байт (16 гигабайт).
Конкурс на лучшую бомбу не закончен.
Комментариев нет:
Отправить комментарий