Как стать автором
Обновить

Qualcomm перевела в разряд открытых проектов компоновщик ELD

Время на прочтение2 мин
Количество просмотров833

Компания Qualcomm опубликовала в открытом доступе проект ELD: Embedded LD с кодом компоновщика ELD, используемого в наборе компиляторов Qualcomm (на базе LLVM) и оптимизированного для связывания объектных файлов в проектах для встраиваемых систем.

В решение ELD учтена такая специфика, как активное использование linker‑скриптов и потребность в модификации и расширении процесса компоновки. Исходный код проекта написан на языке C++ и опубликован на GitHub под лицензией BSD.

По информации OpenNET, проект ELD может использоваться в качестве прозрачной замены GNU linker, потребляющей меньше памяти, обеспечивающей более высокую скорость связывания и позволяющей менять поведение процесса компоновки.

Архитектура решения ELD рассчитана на возможность лёгкого добавления поддержки новых платформ через подключение бэкендов. В текущем виде предложены бэкенды для целевых платформ Qualcomm Hexagon NPU, AArch32, AArch64 и RISC‑V (c расширениями Xqiu). В качестве основы при разработке использован MCLinker.

В компании Qualcomm компоновщик ELD используется в таких областях, как сборка прошивок и драйверов, подготовка компонентов для анклавов TrustZone, сборка продуктов для AI, 5G‑модемов и беспроводных сетевых устройств, создание образов Zephyr RTOS для архитектур AArch32, AArch64 и RISC‑V, разработка прошивок для микроконтроллеров на базе архитектуры RISC‑V.

Основные возможности решения ELD:

  • статическое, динамическое и частичное (опция «‑relocatable») связывание;

  • работа с форматом исполняемых и компонуемых файлов ELF (Executable and Linking Format);

  • поддержка оптимизации на этапе связывания (LTO — Link‑Time Optimization) и специфичных для компоновки оптимизаций, таких как слияние строк;

  • совместимость с GNU ld на уровне опций командной строки;

  • соответствие методам разрешения символов, работы с входящими файлами и генерации исполняемых файлов, используемых в утилитах от проекта GNU;

  • поддержка linker‑скриптов для управления связыванием, синтаксис которых совпадает со скриптами для GNU ld;

  • возможность генерации детализированных и удобочитаемых карт связывания (map‑файлов), которые можно использовать как для ручной диагностики проблем и отладки, так и как источник данных для автоматизированной генерации собственных отчётов;

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

  • функциональность воспроизведения (reproduce), позволяющая создавать tar‑архивы для воспроизведения компоновки без каких‑либо зависимостей. Подобные архивы удобно использовать в процессе разбора проблем, возникающих на этапе связывания — пользователь может отправить разработчику архив, позволяющий воспроизвести проявление проблемы;

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

Теги:
Хабы:
+4
Комментарии0

Другие новости

Работа

Ближайшие события