Skip to content

Instantly share code, notes, and snippets.

@mmozeiko mmozeiko/incbin.c
Last active Dec 20, 2019

What would you like to do?
Include binary file with gcc
#include <stdio.h>
#define STR2(x) #x
#define STR(x) STR2(x)
#define INCBIN(name, file) \
__asm__(".section .rodata\n" \
".global incbin_" STR(name) "_start\n" \
".type incbin_" STR(name) "_start, @object\n" \
".balign 16\n" \
"incbin_" STR(name) "_start:\n" \
".incbin \"" file "\"\n" \
".global incbin_" STR(name) "_end\n" \
".type incbin_" STR(name) "_end, @object\n" \
".balign 1\n" \
"incbin_" STR(name) "_end:\n" \
".byte 0\n" \
); \
extern const __attribute__((aligned(16))) void* incbin_ ## name ## _start; \
extern const void* incbin_ ## name ## _end; \
INCBIN(foobar, "binary.bin");
int main()
printf("start = %p\n", &incbin_foobar_start);
printf("end = %p\n", &incbin_foobar_end);
printf("size = %zu\n", (char*)&incbin_foobar_end - (char*)&incbin_foobar_start);
printf("first byte = 0x%02x\n", ((unsigned char*)&incbin_foobar_start)[0]);

This comment has been minimized.

Copy link

Kochise commented Jun 7, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.