LINUX.ORG.RU

Обновление GNU toolchain за март 2014 г.

 , , , ,


0

1

GNU toolchain — это набор созданных в рамках проекта GNU программ, необходимых для компиляции и генерации исполняемого кода из исходных текстов. В него входят GCC, libc, binutils, GNU make и многое другое.

В этом месяце разработка не отличалась особой активностью. Основная ветка GCC вплотную подобралась к релизу 4.9, а работа над проектами GDB и BINUTILS заключалась в основном в исправлении ошибок. Однако есть и несколько достойных внимания вещей:

  • В эмулятор ARM добавлены некоторые возможности трассировки, таким образом, теперь можно отслеживать инструкции по ходу их эмуляции.
  • Линковщик теперь автоматически добавляет стандартный манифест ко всем полностью слинкованным исполняемым файлам cygwin или MinGW. Это необходимо для выполнения файла под Windows версии 8 и позднее. Если приложение снабжено собственным манифестом, стандартный включаться не будет.
  • В ARM-версию линковщика добавлен новый ключ командной строки — --long-plt, включающий генерацию больших PLT-записей, которые могут поддерживать вплоть до 4GB кода. По умолчанию используются PLT-записи меньшего размера, которые поддерживают лишь до 512 MB кода. Помимо этого, ARM-линковщик теперь поддерживает генерацию PLT-записей, использующих лишь Thumb2-инструкции, для ядер, не поддерживающих набор инструкций ARM.
  • Одним из ограничений формата PE, используемого преимущественно в исполняемых файлах Windows, является поддержка максимум 2¹⁵ секций. Это может быть проблемой для больших проектов, особенно если используются ключи командной строки типа -ffunction-sections и -fdata-sections. Microsoft недавно выпустила небольшую модификацию формата PE, расширяющую некоторые поля для подержки до 2³¹ секций, и теперь линковщик GNU поддерживает это расширение.
  • MIPS-версия gcc теперь поддерживает ключ командной строки -mvirt, позволяющий использовать MIPS Virtualization Application Specific инструкции.
  • TileGX-версия gcc теперь поддерживает прямой и обратный порядок байтов.

>>> Источник

Одним из ограничений формата PE, используемого преимущественно в исполняемых файлах Windows, является поддержка максимум 2¹⁵ секций. Это может быть проблемой для больших проектов, особенно если используются ключи командной строки типа -ffunction-sections и -fdata-sections. Microsoft недавно выпустила небольшую модификацию формата PE, расширяющую некоторые поля для подержки до 2³¹ секций

У меня как-то даже слова кончились.

buddhist ★★★★★ ()
Ответ на: комментарий от deterok

Некий именованный линейный кусок. Обычно содержащий код или данные как-либо логически связанные

exception13 ★★★★★ ()
Ответ на: комментарий от deterok

Упрощенно говоря - область памяти внутри PE бинарника. Для разных ресурсов обычно выделяется отдельная секция, например секция кода, секция данных (константы) и т.п.

m0rph ★★★★★ ()
Ответ на: комментарий от deterok

Например секция .text содержит основной код и имеет права на исполнение, секция .rodata грубо говоря константы с правами только чтение и т.п. и т.д.

exception13 ★★★★★ ()
Ответ на: комментарий от exception13

А если -ffunction-sections и -fdata-sections, то по секции не функцию/переменную. Вот тут и кроется ж.

dekar ()

MRD пишет новости интереснее, чем fractal4all. Пока он - промежуточный победитель соцсоревнования, ибо качество важнее количества. :)

feofil ()

Одним из ограничений формата PE, используемого преимущественно в исполняемых файлах Windows, является поддержка максимум 2¹⁵ секций. Это может быть проблемой для больших проектов, особенно если используются ключи командной строки типа -ffunction-sections и -fdata-sections. Microsoft недавно выпустила небольшую модификацию формата PE, расширяющую некоторые поля для подержки до 2³¹ секций

Кто-нибудь может привести реальные примеры из практики программирования. А то яннп, что за epic overhead?

Twissel ★★★★★ ()
Ответ на: комментарий от MiniRoboDancer

блин, имя забыл, склероз, рифма нашептала :) fallout4all

feofil ()
Ответ на: комментарий от Twissel

Ну к этому запросто может привести ООП головного мозга и масса методов, состоящих из одного лишь return true;. А с учётом того, что для большого проекта 64k функций не так уж и много, а собрать его могут в один бинарь...

MiniRoboDancer ★☆ ()
Ответ на: комментарий от MiniRoboDancer

Мне кажется, что Twissel-а интересовало, кому и зачем может понадобиться каждую функцию/переменную в отдельную секцию пихать.

anonymous ()
Ответ на: комментарий от anonymous

Мне кажется, что Twissel-а интересовало, кому и зачем может понадобиться каждую функцию/переменную в отдельную секцию пихать.

чтоб потом выкинуть неиспользуемое на этапе линковки --gc-sections

programmist ()
Ответ на: комментарий от programmist

чтоб потом выкинуть неиспользуемое на этапе линковки

А причём тут секции в конечном .exe/.dll? Промежуточные-то .o компилятор явно не в формате PE пишет.

anonymous ()
Ответ на: комментарий от programmist

В последующих секциях указаны виртуальные адреса с учетом предыдущих, их нельзя просто так выкинуть особенно если это код, - тем более, что образ в памяти должен быть непрерывным

frame ★★★ ()

лучше скажите мне, когда уже D фронтэнд будет включён в состав GCC?

anonymous ()

Линковщик теперь автоматически добавляет стандартный манифест ко всем полностью слинкованным исполняемым файлам cygwin или MinGW. Это необходимо для выполнения файла под Windows версии 8 и позднее. Если приложение снабжено собственным манифестом, стандартный включаться не будет.

Что за дегенеративная привычка пихать в результат то чего не просили пихать туда?

FeyFre ★★★★ ()
Ответ на: комментарий от FeyFre

В таком случае, вам вообще лучше не пользоваться большинством современных компиляторов.

anonymous ()
Ответ на: комментарий от FeyFre

Если б это было какой-то плюшкой, то это было бы целесообразно вынести в ключ. Однако в данном случае мастхэв, без которого приложение будет неработоспособным на актуальных версиях форточек - потому дефолт.

MiniRoboDancer ★☆ ()

Одним из ограничений формата PE, используемого преимущественно в исполняемых файлах Windows, является поддержка максимум 2¹⁵ секций. Это может быть проблемой для больших проектов, особенно если используются ключи командной строки типа -ffunction-sections и -fdata-sections. Microsoft недавно выпустила небольшую модификацию формата PE, расширяющую некоторые поля для подержки до 2³¹ секций, и теперь линковщик GNU поддерживает это расширение.

кто-то собирает большие проекты «этим» под оффтопик? ССЗБ в степени

anonymous ()
Ответ на: комментарий от anonymous

И как не странно, но в первую очередь я забракую именно gcc. Ибо именно больше всего таких тараканов. У cl таких тараканов на порядок меньше.

FeyFre ★★★★ ()
Ответ на: комментарий от programmist

Мне кажется, что Twissel-а интересовало, кому и зачем может понадобиться каждую функцию/переменную в отдельную секцию пихать.

чтоб потом выкинуть неиспользуемое на этапе линковки --gc-sections

Но ведь в каждом объектном файле уже есть список определённых в нём глобальных идентификаторов, как и список используемых внешних функций и переменных. Информации для выкидывания лишнего достаточно и мне лично всё-таки не понятно, что мешало использовать эту информацию и зачем было придумывать это уродство с созданием 100500 секций.

anonymous ()
Ответ на: комментарий от MiniRoboDancer

Однако в данном случае мастхэв

Конкретный пример приложения которое не работает без манифеста? Я попробовал пару десятков таких - все работают. ЧЯДНТ?

FeyFre ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.