PLCrashReporter не компилируется в Xcode 10 beta 5

PLCrashReporter не компилируется в бета-версии Xcode 10. Похоже, проблема размера регистра.

ошибка: неверный операнд для команды movq %cs, 160(%rsp);

ошибка: неверный операнд для команды movq %fs, 168(%rsp);

ошибка: неверный операнд для инструкции movq %gs, 176(%rsp);

Я перешел по этой ссылке https://github.com/plausiblelabs/plcrashreporter/pull/12/files после внесения изменений в код, другие инструкции получают ошибку.

ошибка: неверный операнд для инструкции movl %cs, 16 +56(%esp);

ошибка: неверный операнд для инструкции movl %ds, 16 +60(%esp);

ошибка: неверный операнд для инструкции movl %es, 16 +64(%esp);

Буду признателен за любую оказанную помощь.

1 ответ

Кажется, в бета-5 есть много ошибок.

Мой ln ошибка

бета 1~4 все отлично работает. плюс Xcode 9

Попробуйте изменить MOVQ к movw от строки 96 до строки 98 в PLCrashAsyncThread_current.S,нравится:

movw    %cs, 160(%rsp);
movw    %fs, 168(%rsp);
movw    %gs, 176(%rsp);

больше информации проверьте здесь

ps, в файле есть еще одна ошибка, вы можете проверить решение здесь, о котором упоминал yumoji.

С наилучшими пожеланиями!

Используйте эту версию, которая исправляет некоторые проблемы из репозитория автора

https://github.com/Microsoft/PLCrashReporter

Если вы хотите использовать оригинальную версию, замените следующую в PLCrashAsyncThread_current.S файл (около строки № 149), как указано здесь

#if 0
MOVL    (cs, 56);
MOVL    (ds, 60);
MOVL    (es, 64);
MOVL    (fs, 68);
MOVL    (gs, 72);
#undef MOVL
#else
movl    $0, 56(%esp);
movw    %cs, 56+OFF(%esp);
movl    $0, 60(%esp);
movw    %ds, 60+OFF(%esp);
movl    $0, 64(%esp);
movw    %es, 64+OFF(%esp);
movl    $0, 68(%esp);
movw    %fs, 68+OFF(%esp);
movl    $0, 72(%esp);
movw    %gs, 72+OFF(%esp);
#endif

Обратите внимание, что это разрешит только частично. PLCR по-прежнему использует некоторые устаревшие функции для спин-блокировки и барьера памяти, которые необходимо исправить.

Другие вопросы по тегам