diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 48d86d2..e4b11c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,15 +71,16 @@ jobs: if: strategy.job-index == 0 run: | python tools/make_example.py + 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 echo '
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" - aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x1000 bin/test-aarch64.copapy.bin > bin/test-aarch64.copapy.asm - echo 'test-aarch64.copapy.asm
' >> $GITHUB_STEP_SUMMARY - python tools/clean_asm.py bin/test-aarch64.copapy.asm >> $GITHUB_STEP_SUMMARY + #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 + #echo '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 echo 'stencils_x86_64_O3.asm
' >> $GITHUB_STEP_SUMMARY diff --git a/src/copapy/_stencils.py b/src/copapy/_stencils.py index 69a9286..53719dd 100644 --- a/src/copapy/_stencils.py +++ b/src/copapy/_stencils.py @@ -175,8 +175,8 @@ class stencil_database(): mask = 0xFFFFFFFF # 32 bit 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_value=} {symbol_address=} {pr.fields['r_addend']=}, {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=}") #elif reloc.type.endswith('_JUMP26') or reloc.type.endswith('_CALL26'): # # S + A - P diff --git a/tools/extract_code.py b/tools/extract_code.py index 13a916f..1286d34 100644 --- a/tools/extract_code.py +++ b/tools/extract_code.py @@ -46,34 +46,34 @@ if __name__ == "__main__": offs = dr.read_int() size = dr.read_int() 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: offs = dr.read_int() size = dr.read_int() datab = dr.read_bytes(size) 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: offs = dr.read_int() mask = dr.read_int() value = dr.read_int(signed=True) 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: offs = dr.read_int() mask = dr.read_int() value = dr.read_int(signed=True) 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: 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: print("RUN_PROG") elif com == Command.READ_DATA: offs = 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: print("READ_DATA") elif com == Command.END_COM: diff --git a/tools/make_example.py b/tools/make_example.py index 49787f3..f794ae0 100644 --- a/tools/make_example.py +++ b/tools/make_example.py @@ -79,4 +79,4 @@ def test_compile_aarch64() -> None: if __name__ == "__main__": test_compile() - test_compile_aarch64() + #test_compile_aarch64()