|
|
  |
свежак KGP win32/arm/avr/mips/m68k, GNU tools chain |
|
|
|
Jun 10 2016, 20:24
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(klen @ Jun 9 2016, 23:15)  я бы всетки попробывал -Оs, иногда выдает такоьй же по скорости код. Вот и по моим наблюдениям -Os не особо проигрывает другим вариантам. По сборкам я регулярно использую для ARM Cortex-M0/M3/M4F под win64. Проблемы были, но их устранили (ну за исключением мелочей, одну я обошел переписав скрипт компоновщика, вторая не доставляет неудобств т.к. к генерации кода не относится).
Сообщение отредактировал Шаманъ - Jun 10 2016, 20:24
|
|
|
|
|
Sep 1 2016, 12:30
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Внезапно захотелось использовать больше возможностей предоставляемых C++. Выкинул из проекта старые затычки типа переопределения new delete и т.п.. Качнул последний свежак. Не собирается  Вывод линкера Код ../../../../../../src/gcc/libgcc/unwind-arm-common.inc:50:28: warning: type of '__cxa_begin_cleanup' does not match original declaration [-Wlto-type-mismatch] ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:97:1: note: return value type mismatch ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:97:1: note: type 'bool' should match type 'bool' ../../../../../../src/gcc/libgcc/unwind-arm-common.inc:39:23: note: the incompatible type is defined here ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:97:1: note: '__cxa_begin_cleanup' was previously declared here ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:97:1: note: code may be misoptimized unless -fno-strict-aliasing is used ../../../../../../src/gcc/libgcc/unwind-arm-common.inc:51:52: warning: type of '__cxa_type_match' does not match original declaration [-Wlto-type-mismatch] ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:40:1: note: type mismatch in parameter 3 ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:40:1: note: type 'bool' should match type 'bool' ../../../../../../src/gcc/libgcc/unwind-arm-common.inc:39:23: note: the incompatible type is defined here ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:40:1: note: '__cxa_type_match' was previously declared here ../../../../../../../src/gcc/libstdc++-v3/libsupc++/eh_arm.cc:40:1: note: code may be misoptimized unless -fno-strict-aliasing is used /tmp/ccDWmOks.ltrans0.ltrans.o: In function `get_eit_entry': <artificial>:(.text+0x298): undefined reference to `__exidx_start' <artificial>:(.text+0x29c): undefined reference to `__exidx_end' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-writer.o): In function `_write_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/writer.c:58: undefined reference to `_write' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-sbrkr.o): In function `_sbrk_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/sbrkr.c:58: undefined reference to `_sbrk' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-signalr.o): In function `_kill_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/signalr.c:61: undefined reference to `_kill' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-signalr.o): In function `_getpid_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/signalr.c:97: undefined reference to `_getpid' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-closer.o): In function `_close_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/closer.c:53: undefined reference to `_close' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-fstatr.o): In function `_fstat_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/fstatr.c:62: undefined reference to `_fstat' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-isattyr.o): In function `_isatty_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/isattyr.c:58: undefined reference to `_isatty' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-lseekr.o): In function `_lseek_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/lseekr.c:58: undefined reference to `_lseek' /opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/7.0.0/../../../../arm-kgp-eabi/lib/thumb/cortex-m3/libc.a(lib_a-readr.o): In function `_read_r': /opt/home/arm-kgp-eabi/newlib/arm-kgp-eabi/thumb/cortex-m3/newlib/libc/reent/../../../../../../../../src/newlib/newlib/libc/reent/readr.c:58: undefined reference to `_read' collect2: error: ld returned 1 exit status Что делать? P. S. startup и соответсвенно ld файл, самописные.
|
|
|
|
|
Sep 2 2016, 01:50
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Цитата(klen @ Sep 2 2016, 04:46)  Что-то я так и не нашёл нормального способа определения этих лишних функций, тянущих всякие _write_sbrk и т.п.  Затычки вернул. Файлик от AHTOXA нашёл, от моего отличается не сильно, __cxa_begin_cleanup и подобных (из ошибок выше) там нет. Поковыряю исходники gcc ... Печалит, что несмотря на явное указание -fno-exception, всякие unwind-ы всё равно тянутся  Вернул переопределение операторов new и delete. Простые вещи вроде адекватно работают. Посмотрим что будет дальше ...
Сообщение отредактировал Terminator - Sep 2 2016, 02:33
|
|
|
|
|
Sep 3 2016, 04:13
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Цитата(klen @ Sep 2 2016, 16:52)  сам использую фичи С++14 и все делал для того чтоб никаких "ушей и хвостов от больших машин" не прилазили в код операторы new и delete переопределены? P. S. да, с lto проект не собирается ( Error: offset out of range)  Собирается только маленькая часть, загрузчик (он по сути является сильно урезанной копией основной прошивки).
Сообщение отредактировал Terminator - Sep 3 2016, 04:16
|
|
|
|
|
Sep 3 2016, 14:12
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
соберу релизную версию 6.2.0 с LTO там должно быть без ошибок при линковке. я заметил люди не очень хотят использовать свежие сборки, наверно боятся граблей. я же грабли ищу и настигаю  релизная сборка позволит не ходить по минному полю при возможности воспользоваться С++14 вот собрал 5.4.0 linux64: http://klen.org/Files/DevTools/x86_64-kgp-....0_VACCINIUM.7zwin64: http://klen.org/Files/DevTools/x86_64-kgp-....0_VACCINIUM.7zлинуксовую протестил на своих проектах. виндовую неначем. пробуйте.
|
|
|
|
|
Sep 5 2016, 06:24
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(Genadi Zawidowski @ Sep 5 2016, 03:53)  Компиляция прошла нормально, но линковка не срослась - что надо указать кроме libm? Кроме libm надо еще libc - там находятся memcpy/memset. Но Вы, похоже, и libm не указали, судя по тому, что линкер не находит powf, sinf и т.п., которые должны там быть... Цитата(Genadi Zawidowski @ Sep 5 2016, 03:53)  И чего это memcpy/memset повылезали? Если я правильно понял, memset требуется, например, функции wave_startrecording(). Смотрите map-файл - там должно быть написано, кто какой символ потребовал.
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Sep 5 2016, 07:16
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(alx2 @ Sep 5 2016, 09:24)  Кроме libm надо еще libc - там находятся memcpy/memset. Но Вы, похоже, и libm не указали, судя по тому, что линкер не находит powf, sinf и т.п., которые должны там быть...
Если я правильно понял, memset требуется, например, функции wave_startrecording(). Смотрите map-файл - там должно быть написано, кто какой символ потребовал. Не, libm указана явно (ключил -lm компилятору): Цитата C:\user\arm-kgp-eabi_@_x86_64-kgp-mingw32_5.4.0_VACCINIUM\bin\arm-kgp-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fno-math-errno -funroll-loops -fgraphite -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -flto -gdwarf-2 -fomit-frame-pointer -Wall -Wstrict-prototypes -DNDEBUG=1 -DCPUSTYLE_STM32F7XX=1 -DSTM32F746xx=1 -MD -MP -MF ./dep/tests.o.d -I../../CMSIS-SP-00300-r4p5-00rel0/CMSIS/Include -I../ ../tests.c -o tests.o C:\user\arm-kgp-eabi_@_x86_64-kgp-mingw32_5.4.0_VACCINIUM\bin\arm-kgp-eabi-gcc bandfilters.o board.o usbd.o usbd_desc.o sequen.o elkey.o encoder.o serial.o hardware.o hd44780.o display.o display2.o keyboard.o keymaps.o nvram.o spifuncs.o formats.o synthcalcs.o filters.o pcf8535.o uc1608.o uc1601s.o lph88.o ls020.o l2f50.o s1d13781.o ILI9320.o ili9225.o st7735.o st7565s.o graphltdc.o sdram.o ili8961.o twi.o pio.o tlv320aic23.o cs4272.o nau8822.o hardwarecodecs.o buffers.o audio.o spislave.o modems.o sdcard.o ff.o ccsbcs.o tc1.o tests.o -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fno-math-errno -funroll-loops -fgraphite -ffunction-sections -fdata-sections -ffat-lto-objects -flto -Ofast -nostartfiles -T./STM32F746ZG_rom.ld -Wl,-Map=tc1_stm32f746zg_rom.map,--cref,--no-warn-mismatch -L../../CMSIS-SP-00300-r4p5-00rel0/CMSIS/Lib/GCC -lm -o tc1_stm32f746zg_rom.elf Добавление -lc проблему не решило. ПРи использовании компилятора с https://launchpad.net/gcc-arm-embedded всё нормально.
Сообщение отредактировал Genadi Zawidowski - Sep 5 2016, 07:18
|
|
|
|
|
Sep 5 2016, 07:50
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(Genadi Zawidowski @ Sep 5 2016, 10:16)  Не, libm указана явно (ключил -lm компилятору): Добавление -lc проблему не решило. ПРи использовании компилятора с https://launchpad.net/gcc-arm-embedded всё нормально. после обеда поправим, просьба "не двигатся и трогать предметы..." тоесть не править код и аборочные скрипты в своем проекте. просьба скачать и прверить ситуацию на выше выложенной сборке OXYCOCCUS я за нее ручаюсь, все должжно захаваться.это проверенная рабочая моя. мне наверно не поверят но всетаки lto оптимизатор в коде из транка лучше и устойчивей чем в "старых релизах" также очень сильно все зависить как собирать, в своих сборках мултилиб, libstdc++ libsupc++, ... собираю руками, автоматом это невозможно. с OXYCOCCUS я хорошенько потрахался чтоб все работало включая фортран.
|
|
|
|
|
Sep 5 2016, 08:21
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Хорошо, эта часть не менялась уже много месяцев. Устройство для тестирования рядом, на программаторе. Цитата(klen @ Sep 5 2016, 10:50)  просьба скачать и прверить ситуацию на выше выложенной сборке OXYCOCCUS www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20160807_OXYCOCCUS.7z Это линуховая версия... я ведь пигмей (по Вашей классификации пользователей), под виндами сижу... Но когда Вы выкладываете виндовые версии, я их пытаюсь применить.
Сообщение отредактировал Genadi Zawidowski - Sep 5 2016, 08:22
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|