(2022-09-19 13:54:59 отредактировано ursoft)

libgrdapi и clang14 (position independent) - замечание линкера

команда линкера (здесь сокращена):

clang++ -ccc-gcc-name g++ -ldl -lrt -rdynamic -o test test.o -lstdc++fs -lgrdapi -lpthread

завершается замечанием

/usr/bin/ld: /home/builder/projects/ALL/PSO/core/guardant/libgrdapi.a(grdapi.o): warning: relocation in read-only section `.text'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE

при этом тот же проект в clang10 ничего не выдает.

Надеюсь, libgrdapi просто устарела и можно обновить так, чтобы предупреждений не было?
У нас система сборки очень не любит предупреждения.

Re: libgrdapi и clang14 (position independent) - замечание линкера

Добрый день.
Просьба уточнить

  • какую версию SDK вы используете

  • в каких версиях операционных систем воспроизводится предупреждение

Re: libgrdapi и clang14 (position independent) - замечание линкера

Изначально мы использовали результат Ticket#1094675, но с версией GuardantSDK-7_0-update_8 ситуация аналогичная. Ubuntu 22.04.1 LTS, clang version 14.0.0-1ubuntu1 (x86_64-pc-linux-gnu). Минимальный пример тут.

Re: libgrdapi и clang14 (position independent) - замечание линкера

Добрый день. Проверили ваш пример. Действительно, со статической библиотекой libgrdapi.a получаем такое же предупреждение.
При использовании динамической библиотеки libgrdapi.so ошибку воспроизвести не удалось. Пример работает корректно.
Если есть возможность, попробуйте поработать с динамической библиотекой.
Информацию об ошибке мы передали в наш отдел разработки. Как только разработчики дадут свои комментарии мы напишем вам.

Re: libgrdapi и clang14 (position independent) - замечание линкера

ursoft пишет:

команда линкера (здесь сокращена):

clang++ -ccc-gcc-name g++ -ldl -lrt -rdynamic -o test test.o -lstdc++fs -lgrdapi -lpthread

завершается замечанием

/usr/bin/ld: /home/builder/projects/ALL/PSO/core/guardant/libgrdapi.a(grdapi.o): warning: relocation in read-only section `.text'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE

при этом тот же проект в clang10 ничего не выдает.

Надеюсь, libgrdapi просто устарела и можно обновить так, чтобы предупреждений не было?
У нас система сборки очень не любит предупреждения.

Добрый день.
Все же просьба уточнить, верно ли что проект собирается и работает, но беспокоит именно предупреждение?
Или же проект не работает после сборки?

Re: libgrdapi и clang14 (position independent) - замечание линкера

Исполняемый модуль создаётся и запускается, но именно "ключевые" дела пока не тестировали.

Re: libgrdapi и clang14 (position independent) - замечание линкера

Добрый день.
В результате тестирования мы не обнаружили ошибки во время работы именно нашего API. Действительно, при использовании статической библиотеки libgrdapi.a возникает предупреждение, но пример работает корректно. В ближайшем будущем наш отдел разработки не сможет исправить такое поведение.

Re: libgrdapi и clang14 (position independent) - замечание линкера

Тимофей Ершов пишет:

В ближайшем будущем наш отдел разработки не сможет исправить такое поведение.

При компиляции исходников для статической библиотеки использовать ключ -fPIC?

Re: libgrdapi и clang14 (position independent) - замечание линкера

Добрый день. Не нашел описание такого параметра.

Но наш стандартный пример собирается с минимальным набором опций

-lgrdapi -lpthread -L./ -I./

Re: libgrdapi и clang14 (position independent) - замечание линкера

Если собирать пример с флагом -no-pie, предупреждений нет. Следовательно, статическая б-ка не PIC-совместимая. В дистрибутив, запрещающий неперемещаемое ПО, такой пример не поместить. Следовательно, нужно исправлять. Я не знаю, что происходит после предупреждений - генерация рабочего перемещаемого кода, генерация кода, рабочего только до тех пор, пока система не задумает переместить или вовсе отказ от перемещения.

Предлагаю пересобрать б-ку новым компилятором CLANG (где PIC вроде бы по умолчанию), либо при сборке старым указать флаг -fPIC / -fPIE (https://gcc.gnu.org/onlinedocs/gcc/Code … tions.html). Какой именно флаг, не уверен - нужно тестировать.

Re: libgrdapi и clang14 (position independent) - замечание линкера

https://habr.com/ru/company/badoo/blog/323904/

Re: libgrdapi и clang14 (position independent) - замечание линкера

Тимофей Ершов пишет:

При использовании динамической библиотеки libgrdapi.so ошибку воспроизвести не удалось.

Динамическая б-ка выглядит как приглашение хакерам отломить ее.

Re: libgrdapi и clang14 (position independent) - замечание линкера

Та же ситуация на 9.4.0 при статической линковке.
Поддерживаю пользователя ursoft с динамической линковкой
- во-первых отломают
- во-вторых таскать эту либу как чужой продукт в своем deb пакете - сомнительное решение.