The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз набора компиляторов GCC 13, opennews (??), 26-Апр-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


167. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (167), 27-Апр-23, 12:35 
Решил тут попробовать G++. И что?
1) Возможности явно указать точку входа прямо в коде нет, хотя она была в любом древнем компиляторе. Отрубаешь stdlib и приходится указывать точку входа через командную строку.
2) Отрубить .edata если она пустая возможности нет, даже при использовании gc-sections
3) Отрубить hintы в импорте возможности нет
4) 64х битный и 32х битный компиляторы ведут себя по разному, так что везде приходится тыкать условную компиляцию.
Ответить | Правка | Наверх | Cообщить модератору

188. "Релиз набора компиляторов GCC 13"  +/
Сообщение от Аноним (187), 27-Апр-23, 14:44 
Разве манипуляции с секциями ELF не задача линкера?
Ответить | Правка | Наверх | Cообщить модератору

189. "Релиз набора компиляторов GCC 13"  +1 +/
Сообщение от Аноним (7), 27-Апр-23, 14:54 
Просто тут другой под к вопросу. Один ламеровендузятский, где всё пихают в кучу, и другой нормальный, где инструменты занимаются своими вещами и дают контроль программисту. Я так понимаю, в этом суть проблемы.
Ответить | Правка | Наверх | Cообщить модератору

225. "Релиз набора компиляторов GCC 13"  +/
Сообщение от n00by (ok), 27-Апр-23, 18:46 
В Виндосе в MSVC точка входа задавалась ключём линкеру /ENTRY:function. В ассемблерах можно в исходном тексте указывать. Может он так троллит?
Ответить | Правка | Наверх | Cообщить модератору

260. "Релиз набора компиляторов GCC 13"  +2 +/
Сообщение от Аноним (245), 28-Апр-23, 00:43 
> 1) Возможности явно указать точку входа прямо в коде нет,

Си это не ассемблер. Но если сильно хочется, линкерскрипт или командлайн к вашим услугам.

> хотя она была в любом древнем компиляторе.

Не есть стандартный си и никак не регламентировано. По факту в gcc можно что угодно сделать, как микроконтроллерщик говорю.

> Отрубаешь stdlib и приходится указывать точку входа через командную строку.

Можно в линкерскрипте указать. Да и хотели вы наверное что-то типа:
-fno-common -fno-builtin -nostdlib -ffreestanding или около того...

А может еще и это, если про gc sections в курсе:
-fdata-sections -ffunction-sections

Лучше всего оно в паре с LTO, если тот выносит лишнее (умеет!) есть __attribute__(used).

> 2) Отрубить .edata если она пустая возможности нет, даже при использовании gc-sections

Можете отрубить все что угодно - добро пожаловать в чуднй мир линкер скриптов. Как хотите так и компонуйте свой бинарь. Все гибко и настраиваемо. Есть даже директива DISCARD для неугодных вам секций. Если они были нужны и не стало работать кто ж вам виноват? :)

> 3) Отрубить hintы в импорте возможности нет

А что такое "импорт" в вон том flat binary фирмвари например? :)

> 4) 64х битный и 32х битный компиляторы ведут себя по разному, так
> что везде приходится тыкать условную компиляцию.

А они и не обязаны себя одинаково вести. Они обязаны имплементить стандарт сей (ну или плюсов).

Ответить | Правка | К родителю #167 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру