Помогите написать багрепорт гнушникам / программирование :: компилятор :: пидоры помогите (реактор помоги) :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

пидоры помогите программирование geek компилятор 

Помогите написать багрепорт гнушникам

Вообщем сижу уже 9й день мучаюсь с компилятором m68k-linux-gnu-g++.

Я обнаржуил, что при компиляции по дефолту используется long в качестве всех числовых операций (например аргумент указан как short, а в ассемблере туда пишется long, т.е. все дела округляются по 4 байта, вместо нужных 2х) отсюда много косяков с оптимизацией.

Поэтому я нашел флаг -mshort, который говорит компилятору опираться на short. В таком режиме даже переменные int становятся short, что меня более чем устраивает.

Проблема в том, что компилятор испытывает трудности в таком режиме, если включить оптимизацию. А если быть точнее вылетает с внутренней ошибкой internal compiler error: in immed_wide_int_const_1, которую хрен знает как исправить.

Я всегда придерживаюсь правила, что любую проблему в своих проектах должен решать сам, но тут я реально не могу ничего поделать.

Я даже попытался (потратил 3 дня) настроить и использовать компилятор от AmigaOS, еле сумев заставить всё линковаться в нужном мне формате (ромы для Sega Mega Drive). Но этот вариант быстро отпал, потому что после всех танцев с бубном (я тупо свой линкер написал, потому что старый нормально ничего линковать не умел) оказалось, что этот компилятор совершенно не умеет оптимизировать код и по всем ассемблерным файлам понатыканы переходы в конструкторы и деструкторы, внутри которых просто выход из функции (rts). И это еще не самое страшное.

Я ассемблер m68k знаю, поэтому я вижу, где код нормально оптимизирован, а где кринж.

Вообщем принял решение написать баг-репорт на компилятор m68k-linux-gnu-g++ и тут тоже возникла проблема: Я понятия не имею как это делается. Местная инструкция написана на боярском, перевод на русский свет не проливает (либо я такое быдло, потому и не понимаю).

По-сему запрашиваю помощь у пидоров пограммистов: Помогите написать багрепорт на компилятор. Ткните мне хотя бы краткую инструкцию для чайников.
Прикладываю скрин проблемы и краткую выжимку спамящей ошибки.
(и да, я пытался исправить код и там что-то связано с массивами + аргументами в функциях/методах)

Compile Output ¿3 ^ ^ ■ 0 P. Filter + — v 12:59:06: Running steps for project SuperCyborg... 12:59:06: Starting: "/usr/bin/cnake" --build /home/segaman/Programtng/SECA/SuperCyborg/build/debug --target all [1/9 11.0/sec] Building CXX object

FAILED: src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o
/usr/lib/ccache/m68k-linux-gnu-g++-12 -DENABLE_GAME -I/home/segaman/Programming/SEGA/SuperCyborg/src -I/home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src -I/home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/include -I/home/segaman/Programming/SEGA/SuperCyborg/src/SuperCyborg -mcpu=68000 -march=68000 -mshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -O3 -g -std=gnu++17 -MD -MT src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o -MF src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o.d -o src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o -c /home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src/exception-handler/stackinspector.cpp
during GIMPLE pass: ivopts
/home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src/exception-handler/stackinspector.cpp: In function ‘void System::Exception::SI::_printHelp()’:
/home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src/exception-handler/stackinspector.cpp:145:6: internal compiler error: in immed_wide_int_const_1, at emit-rtl.cc:659
  145 | void SI::_printHelp()
  |  ^~
0x7ff372f2f249 __libc_start_call_main
   ../sysdeps/nptl/libc_start_call_main.h:58
0x7ff372f2f304 __libc_start_main_impl
   ../csu/libc-start.c:360
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions.

Подробнее

Compile Output ¿3 ^ ^ ■ 0 P. Filter + — v 12:59:06: Running steps for project SuperCyborg... 12:59:06: Starting: "/usr/bin/cnake" --build /home/segaman/Programtng/SECA/SuperCyborg/build/debug --target all [1/9 11.0/sec] Building CXX object src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o FAILED: src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o /usr/lib/ccache/m68k-linux-gnu-g++-12 -DENABLE_GAME -I/home/segaman/Programming/SEGA/SuperCyborg/src -I/home/segaman/Programing/SEGA/SuperCyborg/src/onionpower/src -I/hone/segaman/Programing/SEGA/SuperCyborg/src/onionpower/include -I/home/segaman/Programing/SEGA/SuperCyborg/ src/SuperCyborg -mcpu=6800G -march=68000 -mshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -03 -g -std=gnu++17 -MD -MT src/CMakeFiles/SuperCyborg.dir/ onionpower/src/exception-handler/stackinspector.cpp.o -HF src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o.d -o src/CMakeFiles/SuperCyborg.dir/onionpower/src/exception-handler/stackinspector.cpp.o -c /home/segaman/Programming/SEGA/SuperCyborg/ src/onionpower/src/exception-handler/stackinspector.cpp during GIMPLE pass: ivopts /home/seoaman/Programing/SEGA/SuperCyborg/src/onionpower/src/exception-handler/stackinspector.cop: In function 'void System::Exception::SI::_printHelp()': /hore/seqaman/Programing/SEGA/SuperCvborq/src/onionpower/src/exception-handler/stacklnspector.cpp:145:6: internal compiler error: in immed_wide_int_const_l, at emit-rtl.cc:659 145 | void SI::_printHelp() I 0x7ff372f2f249 _libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x7ff372f2f304 __libc_start_main_inpl ../csu/libc-start.c:360 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions. [2/9 21.5/sec] Building CXX object src/CMakeFiles/SuperCyborg.dir/stage/designctl.cpp.o FAILED: src/CMakeFiles/SuperCyborg.dir/stage/designctl.cpp.o /usr/lib/ccache/m68k-linux-gnu-g++-12 -DENABLE_GAME -I/home/segaman/Programning/SEGA/SuperCyborg/src -I/hone/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src -I/hone/segaman/Programming/SEGA/SuperCyborg/src/onionpower/include -I/hone/segaman/Programming/SEGA/SuperCyborg/ src/SuperCyborg -ncpu=68000 -march=68000 -nshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -03 -g -std=gnu++17 -MD -MT src/CMakeFiles/SuperCyborg.dir/ stage/designctl.cpp.o -MF src/CMakeFiles/SuperCyborg.dir/stage/designctl.cpp.o.d -o src/CMakeFiles/SuperCyborg.dir/stage/designctl.cpp.o -c /home/segaman/Programing/SEGA/SuperCyborg/src/stage/designctl.cpp during GIMPLE pass: ivopts /hone/seoaman/Programino/SEGA/SuperCvborq/src/staqe/desionctl.cpp: In member function 'void DesignCtl::load(const Data*)': - : - r .•---.nq/SECA/S^p.-TCyt-' /•. - / -.t :• . u;r>.: t . .pc :S0:6: internal compiler error: in immed_wide_int_const_l, at emit-rtl.cc: 659 50 | void DesignCtl::load (const Data *a_ptr) 6x7f8d39bd2249 _Ubc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x7f8d39bd2304 libc_start_main_impl ../csu/libc-start.c:360 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions. [3/9 27.8/sec] Building CXX object src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/sprite.cpp.o FAILED: src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/sprite.cpp.o /usr/lib/ccache/m68k-linux-gnu-g++-12 -DENABLE_GAME -I/home/segaman/Programming/SEGA/SuperCyborg/src -I/home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src -I/home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/include -I/home/segaman/Programming/SEGA/SuperCyborg/ src/SuperCyborg -mcpu=68000 -march=68000 -mshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -03 -g -std=gnu+*17 -MD -MT src/CMakeFiles/SuperCyborg.dir/ onionpower/src/vdp/sprite.cpp.o -MF src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/sprite.cpp.o.d -o src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/sprite.cpp.o -c /home/segaman/Programming/SEGA/SuperCyborg/src/onionpower/src/vdp/sprite.cpp during GIMPLE pass: ivopts /home/seoaman/Programing/SEGA/SuperCyborg/src/onionpower/src/vdp/sprite.cDD: In static member function ‘static void Vdp:¡Sprite:¡Object::finishDraw()': /hore/seqaman/Programing/SEGA/SuperCvborq/src/onionpower/src/vdp/sprite.cpp:45:6: internal compiler error: in immed_wide_int_const_l, at emit-rtl.cc:659 45 | void Object::finishOraw() 6x7fd3bbl7©249 _libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x7fd3bbl70304 __libc_start_main_impl ../csu/libc-start.c:360 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions. [4/9 36.7/sec] Building CXX object src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/pal.cpp.o FAILED: src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/pal.cpp.o /usr/lib/ccache/m68k-linux-gnu-g++-12 -DENABLE_GAME -I/home/segaman/Programming/SEGA/SuperCyborg/src -I/home/segaman/Programing/SEGA/SuperCyborg/src/onionpower/src -I/home/segaman/Programing/SEGA/SuperCyborg/src/onionpower/include -I/home/segaman/Programing/SEGA/SuperCyborg/ src/SuperCyborg -mcpu=68000 -march=68000 -mshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -03 -g -std=gnu++17 -MD -MT src/CMakeFiles/SuperCyborg.dir/ onionpower/src/vdp/pal.cpp.o -MF src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/pal.cpp.o.d -o src/CMakeFiles/SuperCyborg.dir/onionpower/src/vdp/pal.cpp.o -c /home/segaman/Programing/SEGA/SuperCyborg/src/onionpower/src/vdp/pal.cpp during GIMPLE pass: ivopts /home/seoaman/Programing/SEGA/SuperCyborg/src/onionpower/src/vdp/pal.coo: In static member function 'static void Vdp::Pal::init()': /hor.e/seqaman/Proqraminq/SEGA/SuperCvborq/src/onionpower/src/vdp/pal.cpp:114:6: internal compiler error: in immed_wide_int_const_l, at emit-rtl.cc:659 114 | void Pal::init() | 0x7f02a42ab249 __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x7f02a42ab304 __libc_start_main_impl ../csu/libc-start.c:360 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions. [5/9 45.0/sec] Building CXX object src/CMakeFiles/SuperCyborg.dir/main.cpp.o FAILED: src/CMakeFiles/SuperCyborg.dir/main.cpp.o /usr/lib/ccache/m68k-linux-gnu-g++-12 -DENABLE_GAME -I/home/segaman/Programming/SEGA/SuperCyborg/src -I/home/segaman/Programing/SEGA/SuperCyborg/src/onionpower/src -I/home/segaman/Programing/SEGA/SuperCyborg/src/onionpower/include -I/home/segaman/Programing/SEGA/SuperCyborg/ src/SuperCyborg -mcpu=6800G -march=68000 -mshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -03 -g -std=gnu++17 -MD -MT src/CMakeFiles/SuperCyborg.dir/ main.cpp.o -MF src/CMakeFiles/SuperCyborg.dir/main.cpp.o.d -o src/CMakeFiles/SuperCyborg.dir/main.cpp.o -c /home/segaman/Programing/SEGA/SuperCyborg/src/main.cpp during GIMPLE pass: ivopts /home/seoaman/Programing/SEGA/SuperCyborg/src/main.cpp: In function 'int main()': /home/seoaman/Programing/SEGA/SuperCyborg/src/main.cpp:223:5: internal compiler error: in imed_wide_int_const_l, at emit-rtl.cc:659 Build 223 | int main() 0x7f7d7baab249 __libc_start_call_main A *
пидоры помогите,реактор помоги,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,компилятор
Еще на тему
Развернуть
эммм если задача поправить баг, то можно же скачать исходники компилятора, потыкать где там вылазит эта ошибка и почему, поправить как тебе нужно и собрать свою версию.
а если задача оформить багрепорт, чтобы кто нить всё это сделал за тебя и быстренько выкатил тебе релиз, то с этим выйдет облом.. точнее это может быть сделают лет через десять
если мне не изменяет память, то для связи гнушниками нет красивенького интерфейсика как на гитхабе , надо подписываться на список рассылки, искать контакты конкретных людей, писать суровые брутальные письма, как например тут https://gcc.gnu.org/pipermail/gcc-bugs/2020-January/686849.html долго и упорно вежливо переписываться, предоставить тесты, воспроизводящие проблему и доказательства ,что это действительно проблема, а в конце ещё и фикс, который исправляет как надо тебе, но не ломает всё остальное, который потом может быть уйдёт в релиз.
тогда пж подскажи где сурс компилятора этого взять?
а то что-то у меня не вышло с моими лапками его найти.
для начала хотелось бы узнать что за система какая версия компилятора и всяких доп либ в ней стоит,
предположим это дебиан (или бубунта) компилятор поставлен из пакетного менеджера тогда всегда можно скачать исходный код установленной версии библиотеки
apt-get source
а вот где искать гит репозиторий из которого собралась эта библиотека, может пригодиться для изучения истории изменений, тут сложнее, либо на дебиановском репозитории, либо на гнушном, но в любом случае в редми должы быть подсказки.
всё естественно по англицки с кучей ссылок и крупицами инфы
например буквально за пару запросов и несколько кликов можно попасть на коммит в котором встречаются буковки immed_wide_int_const_1
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/emit-rtl.c;h=799b94a88d555a19e97f19a64bee289b5c401b47;hb=0c12fc9b2d605cf323cfdab28a972d86398e71a1
но проблема скорее всего не в этом месте, а где то в другом как то завязанном на machine_mode, возможно что то не прописано для той комбинации параметров которые ты пытаешься использовать
нашел репозиторий.
выкачал код актуальной версии.
собрал.
баг остался.
нашел эту функцию и закоментил строчку с ошибкой.
ну и код собрался, правда на экране месево (память в порядке, код нормально все прогрузил), но это я щас буду курить, где ошибка.
как минимум геймпад неопрашивается.
вообщем спасибо за наводку, хотя бы теперь могу продолжить работать.

а то что закоментил походу и не важно совсем:
/* Allow truncation but not extension since we do not know if the
number is signed or unsigned. */
//gcc_assert (prec
В дополнение к комменту mm33, можно ещё попробовать скачать более старую версию компилятора и попробовать собрать код ей
Качал 8,10,12 и 14 версию.
Всё едино.
В конце картинки должен быть мост с Боузером.
1 1 ■ ■ ■ I I I II II I II II I I II I I II II [[ rrp lili 1 1 1 1 1 I 1 1 1 1 I 1 1 1 1 I. I II II II II II II II II I I I I I I I I iVTVnTViViViViViViViViVrT
Как-то усложняешь. У дебиана всё просто ищется. Вот например https://packages.debian.org/bookworm/g++-m68k-linux-gnu

И там же на страничке сразу и какой код использовался и патчи, если есть.
залезь туда, откуда вылез.
Я твоей матери шиндовс переустановлю еще раз
Реактор познавательный. Я конечно не ламер, немного разбираюсь в IT, но для меня это был перебор. Почитал вопрос, почитал коммент, понял, что я ничего не понял, пошёл покурил и задался вопросом - зачем мне всё это? Я это все к чему: удачно тебе разрешить проблему, но я ничем тебе не помогу.
Та я уже исправил все косяки.
Вот гифка фона с анимацией.
Если что, вот игра которую я переношу на сегу:
Исправил? Пошли исправление мейнтейнерам компилятора. В конце концов, именно так гну и работает - у большинства проектов нет людей на зарплате, которые его делают.
Юля я бы поучился у таких людей без еды и воды пока они живы! Я тут только сертификат взял, думал вот вершина мира но теперь понял что горка по сравнению с этим
(шепотом) на сертификаты всем насрать!
Нет, серьезно, за 20+ лет опыта в ИТ я ни разу не видел и не слышал, чтобы кто-то спрашивал, смотрел, или принимал во внимание хоть какой-то сертификат.
Ну это перед HR понтоваться. Ну и плюс сертификация хотя бы немного знания по теме упорядочивает, а то как самоучка чего-то знаешь, чего-то не знаешь. Так что плюсы есть.
Добро пожаловать в волшебный мир программирования. Это баг в коде а не компиляторе, тебе если два байта вместо четырех надо, то ты так и говори: uint16_t. Short это как минимум два байта, по стандарту это может быть хоть все восемь.
Я же написал, что ассемблер знаю.
Я постоянно слежу за тем, какой код выплёвывает компилятор и ему оказалось насрать на то, что аргумент uint16_t весит 2 байта, он один фиг в аргумент пихал uint32_t с округлением.
Еще он функции ровнял по 4 байта и умножение деление отправлял в libc, которого у меня нет в исполняемом файле, чтобы неперенагружать код.
И нет, это баг компилятора. Я же написал код ошибки.
Написано "internal compiler error".
Тут проц старенький motorola 68000 на частоте 7,6Мгц (не путать ГГц).
Каждый такт процессора и каждый байтик важен.
Так что на такие ухищрения просто необходимо идти, чтобы игра шла с нормальной скоростью.
Да просто использовали либы для x86 в компиляторе, причем небось с переездом всего на х64 получились лонги - собирай они компилятор с либами х32, у тебя всё в инты32 бы складывалось.
Не думаешь же ты, что весь компилятор там с нуля для этого процессора. Значительная часть кода компилятора общая для разных архитектур, вот такое и вылезло.
Так вроде все четко написано: идешь на их багтрекер https://gcc.gnu.org/bugzilla/ и создаешь там баг. Не забываешь что им нужно четкое описание чего хочешь и вот этот список:

- the exact version of GCC;
- the system type;
- the options given when GCC was configured/built;
- the complete command line that triggers the bug;
- the compiler output (error messages, warnings, etc.); and
the preprocessed file (*.i*) that triggers the bug, generated by adding -save-temps to the complete compilation command, or, in the case of a bug report for the GNAT front end, a complete set of source files (see below).
Тебя не смущает, что либа g++-12, а запрашиваемый стандарт g++-17?
12 это версия gcc, а не стандарта.
А вот этот кусок стек трейса к чему относится?

I/home/segaman/Programming/SEGA/SuperCyborg/src/SuperCyborg -mcpu=68000 -march=68000 -mshort -Wall -fno-builtin -fno-use-cxa-atexit -fno-rtti -Wl,-flto -fuse-linker-plugin -fno-web -fno-gcse -fomit-frame-pointer -fno-asynchronous-unwind-tables -fno-exceptions -O3 -g -std=gnu++17 -MD -MT
-std это стандарт языка
если мне память неизменяет, то доступны версии 98, 04, 07, 11, 14, 17 и 20.
для С есть еще и доисторический 88 кажется.
Один компилятор можно поддерживать разные стандарты языка. Последняя версия gcc сейчас - 13.
Ааааааа ну понятно
[ code / ]
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
ГЕНЕРАТОР СИНУСА с АПЧ ^-1 . И Д 250-400 КГц МИНУТЫ 15 КНОПКИ Т АММЕР А мощность 100% .т- 50% . выход СИГНАЛА ВКЛЮЧЕНИЕ ПИТАНИЯ ПИТАНИЕ ПРИБОРА НЕТ РЕЗОНАНСА№. reзаапрувлено на риахтумге КУПОН НЯ ОДНУ БЕСПЛЯТНУЮ ПОМОШЬ ПИЯОРОВ 1