Re: [MSP430][PATCH 2/2] Read MCU data from external file
On Mon, 12 Aug 2019 14:34:39 -0600 Jeff Law wrote: > On 8/8/19 6:17 AM, Jozef Lawrynowicz wrote: > > This patch extends the MCU data handling so that MCU data can be provided > > in an external file (devices.csv). This means the compiler doesn't have to > > be > > updated and rebuilt to support new devices when they are released. > > > > TI distribute devices.csv with other support files (header files, linker > > scripts) on their website. I have also tested that a program builds > > successfully > > for every MCU and the correct hwmult library is passed to the linker. > > I also built the msp430 cross compiler using a trunk build of native GCC to > > ensure all the error and warning messages added by my code are correct, as > > checked by -Wformat-diag. > > > > > > 0002-MSP430-Devices-2-Read-MCU-data-from-external-devices.patch > > > > From 6f67cdd282f2351d7450e343314beeaa745f0159 Mon Sep 17 00:00:00 2001 > > From: Jozef Lawrynowicz > > Date: Tue, 6 Aug 2019 10:52:54 +0100 > > Subject: [PATCH 2/2] MSP430: Devices [2]: Read MCU data from external > > devices.csv file, if it exists > > > > gcc/ChangeLog: > > > > 2019-08-XX Jozef Lawrynowicz > > > > * gcc/config/msp430/driver-msp430.c (msp430_set_driver_var): New. > > * gcc/config/msp430/msp430-devices.c (canonicalize_path_dirsep): New. > > (msp430_check_path_for_devices): New. > > (parse_devices_csv_1): New. > > (parse_devices_csv): New. > > (msp430_extract_mcu_data): Try to find devices.csv and search for the > > MCU data in devices.csv before using the hard-coded data. > > Warn if devices.csv isn't found and the MCU wasn't found in the > > hard-coded data either. > > * gcc/config/msp430/msp430.h (DRIVER_SELF_SPECS): Call > > msp430_set_driver_var for -mno-warn-devices-csv and -mdevices-csv-loc. > > Search for devices.csv on -I and -L paths. > > (EXTRA_SPEC_FUNCTIONS): Add msp430_check_path_for_devices and > > msp430_set_driver_var. > > * gcc/config/msp430/msp430.opt: Add -mwarn-devices-csv and > > -mdevices-csv-loc=. > > * gcc/doc/invoke.texi (-mmcu): Document that -I and -L paths are > > searched for devices.csv. > > (mwarn-devices-csv): Document option. > > > > gcc/testsuite/ChangeLog: > > > > 2019-08-XX Jozef Lawrynowicz > > > > * gcc.target/msp430/msp430.exp (msp430_device_permutations_runtest): > > Handle csv-* and bad-devices-* tests. > > * gcc.target/msp430/devices/README: Document how bad-devices-* tests > > work. > > * gcc.target/msp430/devices/bad-devices-1.c: New test. > > * gcc.target/msp430/devices/bad-devices-2.c: Likewise. > > * gcc.target/msp430/devices/bad-devices-3.c: Likewise. > > * gcc.target/msp430/devices/bad-devices-4.c: Likewise. > > * gcc.target/msp430/devices/bad-devices-5.c: Likewise. > > * gcc.target/msp430/devices/bad-devices-6.c: Likewise. > > * gcc.target/msp430/devices/csv-device-order.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_00.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_01.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_02.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_04.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_08.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_10.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_11.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_12.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_14.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_18.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_20.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_21.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_22.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_24.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430_28.c: Likewise. > > * gcc.target/msp430/devices/csv-msp430fr5969.c: Likewise. > > * gcc.target/msp430/devices/hard-foo.c: Likewise. > > * gcc.target/msp430/devices/bad-devices-1.csv: New test support file. > > * gcc.target/msp430/devices/bad-devices-2.csv: Likewise. > > * gcc.target/msp430/devices/bad-devices-3.csv: Likewise. > > * gcc.target/msp430/devices/bad-devices-4.csv: Likewise. > > * gcc.target/msp430/devices/bad-devices-5.csv: Likewise. > > * gcc.target/msp430/devices/bad-devices-6.csv: Likewise. > > * gcc.target/msp430/devices/devices.csv: Likewise. > > --- > So it's good we don't have to do updates when a new devices.csv is > released -- except when we devices require new multilibs, but I don't > offhand see a sensible way to deal with that. For a given device, the only choice to make regarding multilibs at the moment is whether to use a 430 or 430X multilib. The large memory model multilib will only be used if a user passes -mlarge for a 430X device. So if a device is added which uses a new extension to the ISA (which is not forw
Re: [MSP430][PATCH 2/2] Read MCU data from external file
On 8/8/19 6:17 AM, Jozef Lawrynowicz wrote: > This patch extends the MCU data handling so that MCU data can be provided > in an external file (devices.csv). This means the compiler doesn't have to be > updated and rebuilt to support new devices when they are released. > > TI distribute devices.csv with other support files (header files, linker > scripts) on their website. I have also tested that a program builds > successfully > for every MCU and the correct hwmult library is passed to the linker. > I also built the msp430 cross compiler using a trunk build of native GCC to > ensure all the error and warning messages added by my code are correct, as > checked by -Wformat-diag. > > > 0002-MSP430-Devices-2-Read-MCU-data-from-external-devices.patch > > From 6f67cdd282f2351d7450e343314beeaa745f0159 Mon Sep 17 00:00:00 2001 > From: Jozef Lawrynowicz > Date: Tue, 6 Aug 2019 10:52:54 +0100 > Subject: [PATCH 2/2] MSP430: Devices [2]: Read MCU data from external > devices.csv file, if it exists > > gcc/ChangeLog: > > 2019-08-XX Jozef Lawrynowicz > > * gcc/config/msp430/driver-msp430.c (msp430_set_driver_var): New. > * gcc/config/msp430/msp430-devices.c (canonicalize_path_dirsep): New. > (msp430_check_path_for_devices): New. > (parse_devices_csv_1): New. > (parse_devices_csv): New. > (msp430_extract_mcu_data): Try to find devices.csv and search for the > MCU data in devices.csv before using the hard-coded data. > Warn if devices.csv isn't found and the MCU wasn't found in the > hard-coded data either. > * gcc/config/msp430/msp430.h (DRIVER_SELF_SPECS): Call > msp430_set_driver_var for -mno-warn-devices-csv and -mdevices-csv-loc. > Search for devices.csv on -I and -L paths. > (EXTRA_SPEC_FUNCTIONS): Add msp430_check_path_for_devices and > msp430_set_driver_var. > * gcc/config/msp430/msp430.opt: Add -mwarn-devices-csv and > -mdevices-csv-loc=. > * gcc/doc/invoke.texi (-mmcu): Document that -I and -L paths are > searched for devices.csv. > (mwarn-devices-csv): Document option. > > gcc/testsuite/ChangeLog: > > 2019-08-XX Jozef Lawrynowicz > > * gcc.target/msp430/msp430.exp (msp430_device_permutations_runtest): > Handle csv-* and bad-devices-* tests. > * gcc.target/msp430/devices/README: Document how bad-devices-* tests > work. > * gcc.target/msp430/devices/bad-devices-1.c: New test. > * gcc.target/msp430/devices/bad-devices-2.c: Likewise. > * gcc.target/msp430/devices/bad-devices-3.c: Likewise. > * gcc.target/msp430/devices/bad-devices-4.c: Likewise. > * gcc.target/msp430/devices/bad-devices-5.c: Likewise. > * gcc.target/msp430/devices/bad-devices-6.c: Likewise. > * gcc.target/msp430/devices/csv-device-order.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_00.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_01.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_02.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_04.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_08.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_10.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_11.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_12.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_14.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_18.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_20.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_21.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_22.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_24.c: Likewise. > * gcc.target/msp430/devices/csv-msp430_28.c: Likewise. > * gcc.target/msp430/devices/csv-msp430fr5969.c: Likewise. > * gcc.target/msp430/devices/hard-foo.c: Likewise. > * gcc.target/msp430/devices/bad-devices-1.csv: New test support file. > * gcc.target/msp430/devices/bad-devices-2.csv: Likewise. > * gcc.target/msp430/devices/bad-devices-3.csv: Likewise. > * gcc.target/msp430/devices/bad-devices-4.csv: Likewise. > * gcc.target/msp430/devices/bad-devices-5.csv: Likewise. > * gcc.target/msp430/devices/bad-devices-6.csv: Likewise. > * gcc.target/msp430/devices/devices.csv: Likewise. > --- So it's good we don't have to do updates when a new devices.csv is released -- except when we devices require new multilibs, but I don't offhand see a sensible way to deal with that. OK. jeff
[MSP430][PATCH 2/2] Read MCU data from external file
This patch extends the MCU data handling so that MCU data can be provided in an external file (devices.csv). This means the compiler doesn't have to be updated and rebuilt to support new devices when they are released. TI distribute devices.csv with other support files (header files, linker scripts) on their website. I have also tested that a program builds successfully for every MCU and the correct hwmult library is passed to the linker. I also built the msp430 cross compiler using a trunk build of native GCC to ensure all the error and warning messages added by my code are correct, as checked by -Wformat-diag. From 6f67cdd282f2351d7450e343314beeaa745f0159 Mon Sep 17 00:00:00 2001 From: Jozef Lawrynowicz Date: Tue, 6 Aug 2019 10:52:54 +0100 Subject: [PATCH 2/2] MSP430: Devices [2]: Read MCU data from external devices.csv file, if it exists gcc/ChangeLog: 2019-08-XX Jozef Lawrynowicz * gcc/config/msp430/driver-msp430.c (msp430_set_driver_var): New. * gcc/config/msp430/msp430-devices.c (canonicalize_path_dirsep): New. (msp430_check_path_for_devices): New. (parse_devices_csv_1): New. (parse_devices_csv): New. (msp430_extract_mcu_data): Try to find devices.csv and search for the MCU data in devices.csv before using the hard-coded data. Warn if devices.csv isn't found and the MCU wasn't found in the hard-coded data either. * gcc/config/msp430/msp430.h (DRIVER_SELF_SPECS): Call msp430_set_driver_var for -mno-warn-devices-csv and -mdevices-csv-loc. Search for devices.csv on -I and -L paths. (EXTRA_SPEC_FUNCTIONS): Add msp430_check_path_for_devices and msp430_set_driver_var. * gcc/config/msp430/msp430.opt: Add -mwarn-devices-csv and -mdevices-csv-loc=. * gcc/doc/invoke.texi (-mmcu): Document that -I and -L paths are searched for devices.csv. (mwarn-devices-csv): Document option. gcc/testsuite/ChangeLog: 2019-08-XX Jozef Lawrynowicz * gcc.target/msp430/msp430.exp (msp430_device_permutations_runtest): Handle csv-* and bad-devices-* tests. * gcc.target/msp430/devices/README: Document how bad-devices-* tests work. * gcc.target/msp430/devices/bad-devices-1.c: New test. * gcc.target/msp430/devices/bad-devices-2.c: Likewise. * gcc.target/msp430/devices/bad-devices-3.c: Likewise. * gcc.target/msp430/devices/bad-devices-4.c: Likewise. * gcc.target/msp430/devices/bad-devices-5.c: Likewise. * gcc.target/msp430/devices/bad-devices-6.c: Likewise. * gcc.target/msp430/devices/csv-device-order.c: Likewise. * gcc.target/msp430/devices/csv-msp430_00.c: Likewise. * gcc.target/msp430/devices/csv-msp430_01.c: Likewise. * gcc.target/msp430/devices/csv-msp430_02.c: Likewise. * gcc.target/msp430/devices/csv-msp430_04.c: Likewise. * gcc.target/msp430/devices/csv-msp430_08.c: Likewise. * gcc.target/msp430/devices/csv-msp430_10.c: Likewise. * gcc.target/msp430/devices/csv-msp430_11.c: Likewise. * gcc.target/msp430/devices/csv-msp430_12.c: Likewise. * gcc.target/msp430/devices/csv-msp430_14.c: Likewise. * gcc.target/msp430/devices/csv-msp430_18.c: Likewise. * gcc.target/msp430/devices/csv-msp430_20.c: Likewise. * gcc.target/msp430/devices/csv-msp430_21.c: Likewise. * gcc.target/msp430/devices/csv-msp430_22.c: Likewise. * gcc.target/msp430/devices/csv-msp430_24.c: Likewise. * gcc.target/msp430/devices/csv-msp430_28.c: Likewise. * gcc.target/msp430/devices/csv-msp430fr5969.c: Likewise. * gcc.target/msp430/devices/hard-foo.c: Likewise. * gcc.target/msp430/devices/bad-devices-1.csv: New test support file. * gcc.target/msp430/devices/bad-devices-2.csv: Likewise. * gcc.target/msp430/devices/bad-devices-3.csv: Likewise. * gcc.target/msp430/devices/bad-devices-4.csv: Likewise. * gcc.target/msp430/devices/bad-devices-5.csv: Likewise. * gcc.target/msp430/devices/bad-devices-6.csv: Likewise. * gcc.target/msp430/devices/devices.csv: Likewise. --- gcc/config/msp430/driver-msp430.c | 23 ++ gcc/config/msp430/msp430-devices.c| 276 +- gcc/config/msp430/msp430.h| 10 +- gcc/config/msp430/msp430.opt | 9 + gcc/doc/invoke.texi | 14 +- .../gcc.target/msp430/devices/README | 5 + .../gcc.target/msp430/devices/bad-devices-1.c | 5 + .../msp430/devices/bad-devices-1.csv | 3 + .../gcc.target/msp430/devices/bad-devices-2.c | 5 + .../msp430/devices/bad-devices-2.csv | 3 + .../gcc.target/msp430/devices/bad-devices-3.c | 5 + .../msp430/devices/bad-devices-3.csv | 3 + .../gcc.target/msp430/devices/bad-devices-4.c | 5 + .../msp430/devices/bad-devices-4.csv | 3 + .../gcc.target/msp430/devices/bad-devices-5.c | 5 + .../msp430/devices/bad-devices-5.csv | 3 + .../gcc.target/msp430/devices/bad-devices-6.c | 5 + .../msp430/devices/bad-devices-6.csv | 3 + .../msp430/devices/csv-device-order.c | 11 + .../gcc.target/msp430/devices/csv-msp430_00.c | 7 + .../gcc.target/msp430/devices/csv-msp43