LINUX.ORG.RU

R_ARM_RABS22 или R_ARM_RABS32?

 , , , ,


0

1

Ковыряю тут ELF-лоадеры под ARM, раздел посвящённый обработке динамических релокаций и их типов.

В хедере glibc есть такое:

$ cat /usr/include/elf.h | grep RABS
#define R_ARM_RABS22		253

[Источник]

Тогда как много где в интернете и в том же binutils – внезапно R_ARM_RABS32, то есть 32 вместо 22. Оба вида релокаций этих имеют один ID – 253

Во FreeBSD тоже R_ARM_RABS32 –

https://github.com/freebsd/freebsd-src/blob/main/sys/sys/elf_common.h#L1123

Так кто же по итогу прав и почему в других случаях некорректное название? Мне не хватает опыта, чтобы это понять.

★★★★★

Последнее исправление: EXL (всего исправлений: 1)

Что же вы дефы рядом не показали?

#define R_ARM_RXPC25            249
#define R_ARM_RSBREL32          250
#define R_ARM_THM_RPC22         251
#define R_ARM_RREL32            252
#define R_ARM_RABS22            253
#define R_ARM_RPC24             254

Это количество бит использующихся в релокации. Значит для определения правильности надо смотреть как используется.

jpegqs
()
Ответ на: комментарий от LamerOk

Ага, спасибо, вроде официальный документик.

Похоже на очепятку в глибц.

Исправлять её они по ходу конечно не будут… Наверняка это поломает кучу всего. Не самого glibc, а миллионов биндингов под него всяких.

https://github.com/search?q=R_ARM_RABS22&type=code

EXL ★★★★★
() автор топика
Ответ на: комментарий от jpegqs

Это количество бит использующихся в релокации. Значит для определения правильности надо смотреть как используется.

Да, количество бит. И вот мне не особо понятно сколько бит там действительно должно использоваться…

EXL ★★★★★
() автор топика
Ответ на: комментарий от jpegqs
Ответ на: комментарий от firkax

Да вот не факт что такое исправление «нормальное». Человек, который будет писать ELF Loader какой-нибудь может не залезть в этот хедер, а, к примеру, вытянуть это автодополнением и пойдёт писать держа в уме что используются только 22 бита…

EXL ★★★★★
() автор топика
Ответ на: комментарий от LamerOk

Да я про всякие такие штуки, которые при обновлении могут развалиться:

Ну кому не лень и кого есть опыт отправки багрепортов в GNU, можете попробовать зафиксить, примут вот только они это или нет неизвестно.

EXL ★★★★★
() автор топика