Add x1 C example / improve extract.py to extract all sections after .text

This commit is contained in:
Takumi Sueda 2021-03-04 06:15:54 +09:00
parent beb13f7943
commit a1ff34dbca
5 changed files with 36 additions and 3 deletions

View File

@ -1,10 +1,20 @@
CROSS_COMPILE:=arm-linux-gnueabihf-
AS:=$(CROSS_COMPILE)as
CC:=$(CROSS_COMPILE)gcc
.PHONY:
all: return.bin mrc.bin
all: return.bin mrc.bin c/main.bin
.PHONY:
clean:
@rm -f *.bin */*.bin
%.bin: %.S
@$(AS) $<
@./extract.py a.out $@
@rm -f a.out
c/main.bin:
@$(CC) -nostdlib -static -fPIC -mcpu=cortex-a7 c/start.S c/main.c
@./extract.py a.out $@
#@rm -f a.out

BIN
x1/c/main.bin Normal file

Binary file not shown.

14
x1/c/main.c Normal file
View File

@ -0,0 +1,14 @@
void main() {
char *str = "Hello World";
int aa = 1234;
int i;
for (i=0; i<999; i++) {
asm volatile(
"mrc p15, 0, r10, c1, c0, 0\n"
"bic r10, #1\n"
"mcr p15, 0, r10, c1, c0, 0\n"
: "=r" (aa)
);
aa += 1;
}
}

7
x1/c/start.S Normal file
View File

@ -0,0 +1,7 @@
.align 2
.global _start
_start:
push {r4, lr}
bl main
pop {r4, pc}

View File

@ -19,9 +19,11 @@ def extract(elf):
print('Input ELF has no .text section', file=sys.stderr)
with open(sys.argv[2], 'wb') as f:
f.write(text.data())
elf.stream.seek(0)
elf.stream.read(text.header.sh_offset)
f.write(elf.stream.read())
print(f'Successfully extracted the .text section to "{sys.argv[2]}"')
print(f'Successfully extracted the necessary sections to "{sys.argv[2]}"')
main()