Думаю вопрос решен, основная проблема отсутствие поддержки таких бесформатных файлов ld для macos. Пришлось 7 часов устанавливать llvm ради компоновщика от туда.
1) brew install lld
2) установите кроссплатформенный gcc (называется полностью "x86_64-elf-gcc")
мой код для проверки работы утилит:
int kap1 = 0x45454545;
void func()
{
}
void* kap2 = (void*)&func;
3) компилируем это в объектный ELF файл (macho не поддерживается)
x86_64-elf-gcc -m32 -ffreestanding -c test.c -o test.o
4) линкуем файл сам с собой
ld.lld -o pop --image-base 0x100200 --oformat binary test.o
5) команда "file pop" выведет data значит формата нет
6) открываем дизассемблер и смотрим что там, нас интересует адрес в переменной kap2 он должен быть равен, вероятно, 0х100200
сначала функция потом байты kap1 и kap2 в котором корректный адрес - значит все работает а про fasm blocks можно забыть