#ios #c #gcc #linker #mach-o
#iOS #c #gcc #компоновщик #mach-o
Вопрос:
Кажется, что добавление -Wl,-sectcreate,__RESTRICT,__restrict,/dev/null
Other Linker Flags
добавит пустой раздел.
И в коде мы можем __attribute((used,section("segmentname,sectionname")))
объявить переменную или функцию.
Но как объявить пустой раздел в коде?
Ответ №1:
Вы уже обнаружили section(...)
атрибут, но независимо от того, к чему вы его применяете (четный struct {}
и char[0]
), он займет некоторое место и создаст непустой сегмент.
Кажется, нет способа сделать именно то, что вы просите, из фактического кода C, но вы можете найти обходной путь, используя встроенную сборку.
Включить этот блок кода где-нибудь за пределами функции:
asm(".section __RESTRICT,__restrictn"
"empty:n"
".no_dead_strip emptyn");
Это приведет:
- добавьте действительно пустой (размер файла: 0) сегмент / раздел в ваш объектный файл.
- добавьте
empty
символ в свою таблицу символов, но:- он будет закрытым (т. Е. Не связанным).
- пока он не начинается с символа подчеркивания, вероятность его столкновения с чем-либо еще практически равна нулю.
- работает во всех сборках i386, x86_64, arm и arm64.