mirror of https://github.com/Nonannet/copapy.git
extract code tool updated to output addresses in
hex and some fixes and aarch64 deactivated
This commit is contained in:
parent
b0668e7449
commit
926bb9f85f
|
|
@ -71,15 +71,16 @@ jobs:
|
||||||
if: strategy.job-index == 0
|
if: strategy.job-index == 0
|
||||||
run: |
|
run: |
|
||||||
python tools/make_example.py
|
python tools/make_example.py
|
||||||
|
|
||||||
python tools/extract_code.py "bin/test.copapy" "bin/test.copapy.bin"
|
python tools/extract_code.py "bin/test.copapy" "bin/test.copapy.bin"
|
||||||
objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 bin/test.copapy.bin > bin/test.copapy.asm
|
objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 bin/test.copapy.bin > bin/test.copapy.asm
|
||||||
echo '<p>test.copapy.asm</p>' >> $GITHUB_STEP_SUMMARY
|
echo '<p>test.copapy.asm</p>' >> $GITHUB_STEP_SUMMARY
|
||||||
python tools/clean_asm.py bin/test.copapy.asm >> $GITHUB_STEP_SUMMARY
|
python tools/clean_asm.py bin/test.copapy.asm >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
python tools/extract_code.py "bin/test-aarch64.copapy" "bin/test-aarch64.copapy.bin"
|
#python tools/extract_code.py "bin/test-aarch64.copapy" "bin/test-aarch64.copapy.bin"
|
||||||
aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x1000 bin/test-aarch64.copapy.bin > bin/test-aarch64.copapy.asm
|
#aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x1000 bin/test-aarch64.copapy.bin > bin/test-aarch64.copapy.asm
|
||||||
echo '<p>test-aarch64.copapy.asm</p>' >> $GITHUB_STEP_SUMMARY
|
#echo '<p>test-aarch64.copapy.asm</p>' >> $GITHUB_STEP_SUMMARY
|
||||||
python tools/clean_asm.py bin/test-aarch64.copapy.asm >> $GITHUB_STEP_SUMMARY
|
#python tools/clean_asm.py bin/test-aarch64.copapy.asm >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
objdump -d -x src/copapy/obj/stencils_x86_64_O3.o > bin/stencils_x86_64_O3.asm
|
objdump -d -x src/copapy/obj/stencils_x86_64_O3.o > bin/stencils_x86_64_O3.asm
|
||||||
echo '<p>stencils_x86_64_O3.asm</p>' >> $GITHUB_STEP_SUMMARY
|
echo '<p>stencils_x86_64_O3.asm</p>' >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
|
||||||
|
|
@ -175,8 +175,8 @@ class stencil_database():
|
||||||
mask = 0xFFFFFFFF # 32 bit
|
mask = 0xFFFFFFFF # 32 bit
|
||||||
patch_value = symbol_address + pr.fields['r_addend'] - patch_offset
|
patch_value = symbol_address + pr.fields['r_addend'] - patch_offset
|
||||||
|
|
||||||
print(f'** {patch_offset=} {relocation.target_symbol_name=} {pr.fields['r_offset']=} {relocation.function_offset=} {relocation.start=} {function_offset=}')
|
print(f"** {patch_offset=} {relocation.target_symbol_name=} {pr.fields['r_offset']=} {relocation.function_offset=} {relocation.start=} {function_offset=}")
|
||||||
print(f' {patch_value=} {symbol_address=} {pr.fields['r_addend']=}, {function_offset=}')
|
print(f" {patch_value=} {symbol_address=} {pr.fields['r_addend']=}, {function_offset=}")
|
||||||
|
|
||||||
#elif reloc.type.endswith('_JUMP26') or reloc.type.endswith('_CALL26'):
|
#elif reloc.type.endswith('_JUMP26') or reloc.type.endswith('_CALL26'):
|
||||||
# # S + A - P
|
# # S + A - P
|
||||||
|
|
|
||||||
|
|
@ -46,34 +46,34 @@ if __name__ == "__main__":
|
||||||
offs = dr.read_int()
|
offs = dr.read_int()
|
||||||
size = dr.read_int()
|
size = dr.read_int()
|
||||||
datab = dr.read_bytes(size)
|
datab = dr.read_bytes(size)
|
||||||
print(f"COPY_DATA offs={offs} size={size} data={' '.join(hex(d) for d in datab)}")
|
print(f"COPY_DATA offs=0x{offs + data_section_offset:x} size={size} data={' '.join(hex(d) for d in datab)}")
|
||||||
elif com == Command.COPY_CODE:
|
elif com == Command.COPY_CODE:
|
||||||
offs = dr.read_int()
|
offs = dr.read_int()
|
||||||
size = dr.read_int()
|
size = dr.read_int()
|
||||||
datab = dr.read_bytes(size)
|
datab = dr.read_bytes(size)
|
||||||
program_data[offs:offs + size] = datab
|
program_data[offs:offs + size] = datab
|
||||||
print(f"COPY_CODE offs={offs} size={size} data={' '.join(hex(d) for d in datab[:5])}...")
|
print(f"COPY_CODE offs=0x{offs:x} size={size} data={' '.join(hex(d) for d in datab[:5])}...")
|
||||||
elif com == Command.PATCH_FUNC:
|
elif com == Command.PATCH_FUNC:
|
||||||
offs = dr.read_int()
|
offs = dr.read_int()
|
||||||
mask = dr.read_int()
|
mask = dr.read_int()
|
||||||
value = dr.read_int(signed=True)
|
value = dr.read_int(signed=True)
|
||||||
patch(program_data, offs, mask, value, byteorder)
|
patch(program_data, offs, mask, value, byteorder)
|
||||||
print(f"PATCH_FUNC patch_offs={offs} mask=0x{mask:x} value={value}")
|
print(f"PATCH_FUNC patch_offs=0x{offs:x} mask=0x{mask:x} value=0x{value:x}")
|
||||||
elif com == Command.PATCH_OBJECT:
|
elif com == Command.PATCH_OBJECT:
|
||||||
offs = dr.read_int()
|
offs = dr.read_int()
|
||||||
mask = dr.read_int()
|
mask = dr.read_int()
|
||||||
value = dr.read_int(signed=True)
|
value = dr.read_int(signed=True)
|
||||||
patch(program_data, offs, mask, value + data_section_offset, byteorder)
|
patch(program_data, offs, mask, value + data_section_offset, byteorder)
|
||||||
print(f"PATCH_OBJECT patch_offs={offs} mask=ox{mask:x} value={value}")
|
print(f"PATCH_OBJECT patch_offs=0x{offs:x} mask=0x{mask:x} value=0x{value + data_section_offset:x}")
|
||||||
elif com == Command.ENTRY_POINT:
|
elif com == Command.ENTRY_POINT:
|
||||||
rel_entr_point = dr.read_int()
|
rel_entr_point = dr.read_int()
|
||||||
print(f"ENTRY_POINT rel_entr_point={rel_entr_point}")
|
print(f"ENTRY_POINT rel_entr_point=0x{rel_entr_point:x}")
|
||||||
elif com == Command.RUN_PROG:
|
elif com == Command.RUN_PROG:
|
||||||
print("RUN_PROG")
|
print("RUN_PROG")
|
||||||
elif com == Command.READ_DATA:
|
elif com == Command.READ_DATA:
|
||||||
offs = dr.read_int()
|
offs = dr.read_int()
|
||||||
size = dr.read_int()
|
size = dr.read_int()
|
||||||
print(f"READ_DATA offs={offs} size={size}")
|
print(f"READ_DATA offs=0x{offs:x} size={size}")
|
||||||
elif com == Command.FREE_MEMORY:
|
elif com == Command.FREE_MEMORY:
|
||||||
print("READ_DATA")
|
print("READ_DATA")
|
||||||
elif com == Command.END_COM:
|
elif com == Command.END_COM:
|
||||||
|
|
|
||||||
|
|
@ -79,4 +79,4 @@ def test_compile_aarch64() -> None:
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_compile()
|
test_compile()
|
||||||
test_compile_aarch64()
|
#test_compile_aarch64()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue