ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
1311162 Топик полностью
Nikolay_Po (20.05.2023 11:48, просмотров: 411) ответил Nikolay_Po на LTO wrapper failed. Error: offset out of range. Дорос мой проект до такого размера (код около 11-16кБ, в зависимости от оптимизаций), когда LTO перестала работать с таким сообщением.
Никогда такого не было, и вот опять! Error: lto-wrapper failed. Offset out of range. Теперь уже со свежим "Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24)) version 12.2.1 20221205 (arm-none-eabi)". 

Подозреваю, что использую старые ассемблерные файлы, вставки или что-то подобное, что тянется из проекта в Eclipse, созданного при помощи

Embedded C/C++ Arm Cross Compiler 6.3.1.202210101738, org.eclipse.embedcdt.managedbuild.cross.arm.feature.group Eclipse Embedded CDT

Copyright © 2009-2020 Liviu Ionescu and others.


Полагаю, что проблема не в компиляторе, а в ассемблерных вставках или файлах ассемблера, которые сгенерированы не компилятором, а идут в комплекте с упомянутым плагином среды разработки.

Упёрся вот во что: не могу разобраться, откуда берётся проблемный код. Временные файлы, на которые ругается обработчик, не сохраняются или я их просто не нашёл. Ошибка выглядит так:


GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
COLLECT_GCC_OPTIONS='-c' '-fno-openmp' '-fno-openacc' '-fno-pie' '-fcf-protection=none' '-g' '-mfloat-abi=soft' '-Os' '-mcpu=cortex-m3' '-Os' '-fmessage-length=0' '-fsigned-char' '-ffunction-sections' '-fdata-sections' '-fsingle-precision-constant' '-fno-move-loop-invariants' '-Werror' '-Wunused' '-Wuninitialized' '-Wextra' '-Wshadow' '-Waggregate-return' '-g3' '-ggdb' '-T' 'mem.ld' '-T' 'libs.ld' '-T' 'sections.ld' '-nostartfiles' '-L../ldscripts' '-specs=nano.specs' '-v' '-mfloat-abi=soft' '-mthumb' '-fltrans' '-o' '/tmp/ccntiktv.ltrans0.ltrans.o' '-mlibarch=armv7-m' '-march=armv7-m'
/opt/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/12.2.1/../../../../arm-none-eabi/bin/as -v -march=armv7-m -mfloat-abi=soft -mfloat-abi=soft -meabi=5 -o /tmp/ccntiktv.ltrans0.ltrans.o /tmp/cc45ekrL.s
GNU assembler version 2.39.0 (arm-none-eabi) using BFD version (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24)) 2.39.0.20221210
/tmp/cc45ekrL.s: Assembler messages:
/tmp/cc45ekrL.s:71: Error: offset out of range
/tmp/cc45ekrL.s:125: Error: offset out of range
/tmp/cc45ekrL.s:155: Error: offset out of range
lto-wrapper: fatal error: arm-none-eabi-g++ returned 1 exit status
compilation terminated.
/opt/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/12.2.1/../../../../arm-none-eabi/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
make: *** [makefile:84: VP_03.elf] Error 1
"make -j7 all" terminated with exit code 2. Build might be incomplete.

Про потребность в LTO, давайте, не будем вопрос поднимать. Сразу скажу, что оптимизация -Os потому, что оказывается что в моём конкретном случае, в нужном мне месте, работает быстрее, чем -O3. А LTO нужно, чтобы сразу выловить максимум ошибок проекта на ещё на этапе создания это во-первых. И чтобы было всё круто - это во-вторых. Чисто потешить своё самолюбие.


В сухом остатке: Как раскрутить в Eclipse, откуда проблемный код?