Как известно, с помощью ld и objcopy можно линковать произвольные блобы в ELF (примерно так:
$ ld -r -b binary blob.bin -o blob.o
$ objcopy --rename-section .data=.rodata,contents,alloc,load,data blob.o
$ objdump -x blob.o
blob.o: file format elf64-x86-64
blob.o
architecture: i386:x86-64, flags 0x00000010:
HAS_SYMS
start address 0x0000000000000000
Sections:
Idx Name Size VMA LMA File off Algn
0 .rodata 00000100 0000000000000000 0000000000000000 00000040 2**0
CONTENTS, ALLOC, LOAD, DATA
SYMBOL TABLE:
0000000000000000 l d .rodata 0000000000000000 .rodata
0000000000000000 g .rodata 0000000000000000 _binary_blob_bin_start
0000000000000100 g *ABS* 0000000000000000 _binary_blob_bin_size
0000000000000100 g .rodata 0000000000000000 _binary_blob_bin_end
extern const char _binary_blob_bin_start[];
extern const char *_binary_blob_bin_start;