Я ищу формальную грамматику сценария компоновщика. Что-то похожее на те, что даны lex и yacc, но не с другим багажом yacc. Может быть, я могу найти yacc как грамматику, если я посмотрю прямо в исходном коде ld
. Но я не хочу этого делать сейчас.Где я могу найти формальный синтаксис скрипта ld linker?
Я видел this question and its answers, но относится к файлам ld
. Манипуляции в значительной степени хороши, но они задают вещи несколько неоднозначно. Например, Возьмите этот отрывок из Assignment: Defining Symbols Он говорит:
Например, чтобы создать абсолютный символ, адрес которого последний байт выходной секции .data имени:
SECTIONS{ ...
.data :
{
*(.data)
_edata = ABSOLUTE(.) ;
}
... }
Как интерпретировать ...
?
Это один из примеров. Я могу с достаточной точностью интерпретировать эту вещь после некоторой борьбы; но таких примеров много; поэтому мой вопрос: есть ли более эффективная формальная спецификация для сценариев компоновщика? Что-то вроде грамматики C, которую вы видите в приложении книги The C Language
от Ritchie и Kernighan?
Голосование, чтобы закрыть, как гее ресурсов. Маловероятно, что любой источник будет более точным, чем документы, помимо исходного кода, конечно ... Я также рекомендую вам создавать минимальные 32-битные примеры ASM для Linux и анализировать их с помощью objdump. –