Проблема ассемблера OSX GNU с 'call foo @ plt' - PullRequest
4 голосов
/ 17 июня 2011

В попытке собрать 64-битную версию PicoLisp в Mac OS X (10.6.7) мне кажется, что я столкнулся с проблемой с OSX Dev.Инструменты GNU ассемблера ('as'), который является версией 1.38.Мой Xcode - версия 3.2.4.Строки в моем (сгенерированном) x86-64.darwin.base.s, которые вызывают проблемы, обычно выглядят так:

call foo@plt

... и они выдают мне сообщения об ошибках, подобные этому:

x86-64.darwin.base.s:41694:junk `@plt' after expression

64-битный PicoLisp без проблем собирается на Linux и SunOS.Эти платформы, вероятно, имеют более совершенные (более новые) версии ассемблеров GNU.Я не знаю, доступны ли новые ассемблеры GNU для OSX / Darwin ... или могут быть другие решения?

Если вы хотите попробовать это сами на OSX / Darwin, я могу дать вам нескольконеобходимые файлы.

Ответы [ 2 ]

5 голосов
/ 23 июня 2011

К сожалению, я думаю, что здесь есть как минимум две важные проблемы:

  1. «PLT» - это концепция ELF, но OS X использует совершенно другой формат объекта / исполняемого файла - Mach-O.
  2. Apple as, по-видимому, является производным от более ранней версии ассемблера GNU, и в некоторых местах синтаксис (и параметры командной строки) довольно отличаются от последних версий (даже там, где концепции то же самое).

Похоже, что недавно в binutils была проделана некоторая работа над поддержкой Mach-O для i386 и x86-64; возможно, стоит изучить самую последнюю версию (2.21). Но если сгенерированный ассемблерный код пытается делать умные вещи, зависящие от ELF, у вас, вероятно, все равно будут серьезные проблемы ...

0 голосов
/ 29 мая 2018

PicoLisp уже давно поддерживается на Mac.Просто зайдите на стандартный сайт загрузки .

...