Я столкнулся с такой же ситуацией несколько лет назад и снова в этом году.
Два способа справиться с этим:
- Напишите свой собственный 16-битный дружественный компоновщик (вам нужно как минимум разобрать секцию .rel.text).
- Используйте базовый символ (или символы) для вычисления абсолютных адресов вручную (разделы .rel все еще создаются, но могут быть удалены). Однако этот метод очень подвержен ошибкам.
Я всегда заканчиваю тем, что делаю 2, но мне, вероятно, следует уделить время написанию компоновщика (или исправлению GNU ld ...).