Недопустимое смещение ошибки GDB, слишком большое значение (0x00000400) Невозможно создать приложение в режиме отладки, требуется помощь - PullRequest
3 голосов
/ 23 сентября 2010

У меня есть приложение, которое работало несколько дней назад.Но сегодня я получаю эту ошибку:

{стандартный ввод}: 1948: неверное смещение, слишком большое значение (0x00000400) Команда /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/Сбой gcc-4.2 с выходом> код 1

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Ок, ребята, после долгих поисков неисправностей наконец я нашел решение.Проблема была в большом корпусе выключателя.Преобразование этого в выражение if else решило проблему.

1 голос
/ 02 января 2014

У меня была похожая проблема сегодня, когда я писал процедуру сборки для процессора ARM Cortex-M0.В моем случае код, вызвавший ошибку, выглядел так:

ldr r7 ,=PRTCNFG_10

Это псевдоинструкция, заставляющая процессор загружать значение константы PRTCNFG_10 (определяемое с помощью директивы .equ) в регистр r7.Псевдоинструкция будет переведена в

ldr r7 ,[pc, #immed8]

, где # immed8 - это 8-битное непосредственное значение.Поскольку 2 ^ 8 = 256, определение PRTCNFG_10 нельзя размещать за пределами pc + 256 байт, в противном случае Ассемблер выдаст ошибку.

Я решил проблему, явно выделив PRTCNFG_10 в памяти:

PRTCNFG_10:
.word 0x606
0 голосов
/ 15 июля 2011

Только что увидел ту же проблему, которая также была вызвана корпусом коммутатора.Он был не таким уж большим (26 случаев), и в прошлом он прекрасно компилировался, но по какой-то причине сегодня начал давать сбои.Замена на if-else устраняет странную ошибку GCC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...