Значение Endianess в objcopy -O ? Искажаются ли двоичные данные?

прочитав этот ответ, я сразу подумал про себя:

Почему именно я должен сказать, это Little или Big Endian? Означает ли это, что вместо того, чтобы просто копировать мои двоичные входные данные, objcopy каким-то образом искажает данные, в зависимости от выбранного Endianess?

Пример под рукой был:

objcopy -I binary -O elf(32|64)-(big|little) binblob binblob.o

Если это действительно двоичные данные, objcopy это не должно волновать, верно? Что бы ни считывало данные позже, это необходимо, но objcopy не должно...

Изменяет ли objcopy данные на основе разрядности и порядка байтов, заданных параметром -O?


person 0xC0000022L    schedule 31.07.2019    source источник
comment
Обычно вам не нужно указывать порядок следования байтов, так как он либо хранится в объектном файле, либо выводится из хоста.   -  person Some programmer dude    schedule 31.07.2019
comment
А с двоичными данными вам действительно нужно заботиться о порядке следования байтов. Подумайте о (16-битном) значении 0xf0b2. В системе с обратным порядком байтов эти два байта хранятся 0xf0 и 0xb2 (именно в таком порядке), а в системе с прямым порядком байтов байты хранятся в порядке 0xb2, за которым следует 0xf0. Если вы используете неправильный порядок следования байтов, вместо этого вы можете получить значение 0xb2f0.   -  person Some programmer dude    schedule 31.07.2019
comment
@Someprogrammerdude, если я не дам -B, как он это выведет? В конце концов, ни один из elf32-big, elf32-little, elf64-big, elf64-little не зависит от архитектуры... но нет ничего похожего на elf-binary bfdname.   -  person 0xC0000022L    schedule 31.07.2019
comment
Каков формат binblob.o? Как он был создан? Если это объектный файл ELF, порядок байтов будет указан в заголовке ELF. Как и размер слова (32 или 64 бита).   -  person Some programmer dude    schedule 31.07.2019
comment
@Someprogrammerdude нет, мне не нужно заботиться об Endianess. В моем случае двоичные данные будут строкой. Вы делаете предположение, что двоичные данные уже представлены в форме, скажем, целых чисел или других типов C. И это именно тот вопрос, который у меня есть: objcopy тоже делает такое предположение, и если да, то как он коверкает данные? И последнее, но не менее важное: было бы намного проще, если бы мне вообще не нужно было задавать конкретное bdfname, поскольку данные, которые я хочу сохранить, не должны интерпретироваться как какой-то тип C (и если бы это было так, я бы позаботился о преобразовании в код... Обещаю ;)).   -  person 0xC0000022L    schedule 31.07.2019