XC3216/xc8-avr-info.txt

79 wiersze
2.7 KiB
Plaintext

Here is the info needed to remove restrictions on the GPL licensed XC8-AVR compiler
This is done on a Linux pc, so only refers to the Linux version.
change data at file offset specified for the 3 files cc1,cc1plus,lto1
objdump will show the global var virtual addresses, and the .data section virtual address
is used to figure out where the vars are located in the file-
virtual var address - virtual section base address + section file offset = var file offset
The vars and what they do can be found in the gpl source code available from microchip.
This example is for version 2.20 and and the same method will work for later versions also (until they
change their methods). Earlier versions did not use global variables so another method was used which
was a little more difficult as you needed to modify the code instead.
==cc1==
objdump -T cc1 | grep license_valid
00000000017fe880 g DO .data 0000000000000008 Base mchp_xccov_license_valid
00000000017fe878 g DO .data 0000000000000008 Base mchp_avr_license_valid
objdump -h cc1 | grep " .data "
25 .data 000086f0 00000000017f6860 00000000017f6860 011f6860 2**5
cc1-
0x17fe878 - 0x17f6860 = 0x8018 +011f6860 = file offset 0x11fe878 - change FFFFFFFFFFFFFFFF to 0200000000000000
0x17fe880 - 0x17f6860 = 0x8020 +011f6860 = file offset 0x11fe880 - change FFFFFFFFFFFFFFFF to 0900000000000000
==cc1plus==
objdump -T cc1plus | grep license_valid
0000000001985980 g DO .data 0000000000000008 Base mchp_xccov_license_valid
0000000001985978 g DO .data 0000000000000008 Base mchp_avr_license_valid
objdump -h cc1plus | grep " .data "
25 .data 000087d0 000000000197d880 000000000197d880 0137d880 2**5
cc1plus-
0x1985978 - 0x197d880 = 80F8 +0x137d880 = file offset 0x1385978 - change FFFFFFFFFFFFFFFF to 0200000000000000
0x1985980 - 0x197d880 = 8100 +0x137d880 = file offset 0x1385980 - change FFFFFFFFFFFFFFFF to 0900000000000000
==lto1==
objdump -T lto1 | grep license_valid
0000000001713660 g DO .data 0000000000000008 Base mchp_xccov_license_valid
0000000001713658 g DO .data 0000000000000008 Base mchp_avr_license_valid
objdump -h lto1 | grep " .data "
25 .data 000083d0 000000000170b960 000000000170b960 0110b960 2**5
lto1-
0x1713658 - 0x170b960 = 7CF8 +0x110b960 = file offset 0x1113658 - change FFFFFFFFFFFFFFFF to 0200000000000000
0x1713660 - 0x170b960 = 7D00 +0x110b960 = file offset 0x1113660 - change FFFFFFFFFFFFFFFF to 0900000000000000
Version 2.31 - Windows
from FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
to 02 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00
file offset
cc1.exe 0xC98648
cc1plus.exe 0xDC03A8
lto1.exe 0xC10CA8