MSP430: Add new msp430-elfbare target
contrib/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config-list.mk: Add msp430-elfbare. gcc/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config.gcc: s/msp430*-*-*/msp430-*-*. Handle msp430-*-elfbare. * config/msp430/msp430-devices.c (TARGET_SUBDIR): Define. (_MSPMKSTR): Define. (__MSPMKSTR): Define. (rest_of_devices_path): Use TARGET_SUBDIR value in string. * config/msp430/msp430.c (msp430_option_override): Error if -fuse-cxa-atexit is used when it has been disabled at configure time. * config/msp430/t-msp430: Define TARGET_SUBDIR when building msp430-devices.o. * doc/install.texi: Document msp430-*-elf and msp430-*-elfbare. * doc/invoke.texi: Update documentation about which path devices.csv is searched for. gcc/testsuite/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * g++.dg/init/dso_handle1.C: Require cxa_atexit support. * g++.dg/init/dso_handle2.C: Likewise. * g++.dg/other/cxa-atexit1.C: Likewise. * gcc.target/msp430/msp430.exp: Update csv-using-installed.c test to handle msp430-elfbare configuration. libgcc/ChangeLog: 2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config.host: s/msp430*-*-elf/msp430-*-elf*. Override default "extra_parts" variable. * configure: Regenerate. * configure.ac: Disable TM clone registry by default for msp430-elfbare. From-SVN: r279442
This commit is contained in:
parent
1edfb10a5a
commit
e8aa9f55f6
18 changed files with 121 additions and 12 deletions
|
@ -1,3 +1,7 @@
|
|||
2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
|
||||
|
||||
* config-list.mk: Add msp430-elfbare.
|
||||
|
||||
2019-12-09 Lewis Hyatt <lhyatt@gmail.com>
|
||||
|
||||
PR preprocessor/49973
|
||||
|
|
|
@ -68,7 +68,7 @@ LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
|
|||
mipsel-elf mips64-elf mips64vr-elf mips64orion-elf mips-rtems \
|
||||
mips-wrs-vxworks mipstx39-elf mmix-knuth-mmixware mn10300-elf moxie-elf \
|
||||
moxie-uclinux moxie-rtems \
|
||||
msp430-elf \
|
||||
msp430-elf msp430-elfbare \
|
||||
nds32le-elf nds32be-elf \
|
||||
nios2-elf nios2-linux-gnu nios2-rtems \
|
||||
nvptx-none \
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
|
||||
|
||||
* config.gcc: s/msp430*-*-*/msp430-*-*.
|
||||
Handle msp430-*-elfbare.
|
||||
* config/msp430/msp430-devices.c (TARGET_SUBDIR): Define.
|
||||
(_MSPMKSTR): Define.
|
||||
(__MSPMKSTR): Define.
|
||||
(rest_of_devices_path): Use TARGET_SUBDIR value in string.
|
||||
* config/msp430/msp430.c (msp430_option_override): Error if
|
||||
-fuse-cxa-atexit is used when it has been disabled at configure time.
|
||||
* config/msp430/t-msp430: Define TARGET_SUBDIR when building
|
||||
msp430-devices.o.
|
||||
* doc/install.texi: Document msp430-*-elf and msp430-*-elfbare.
|
||||
* doc/invoke.texi: Update documentation about which path devices.csv is
|
||||
searched for.
|
||||
|
||||
2019-12-16 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
PR target/92950
|
||||
|
|
|
@ -2624,7 +2624,7 @@ mn10300-*-*)
|
|||
use_collect2=no
|
||||
use_gcc_stdint=wrap
|
||||
;;
|
||||
msp430*-*-*)
|
||||
msp430-*-*)
|
||||
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
||||
c_target_objs="msp430-c.o"
|
||||
cxx_target_objs="msp430-c.o"
|
||||
|
@ -2637,6 +2637,18 @@ msp430*-*-*)
|
|||
if test x${disable_initfini_array} != xyes; then
|
||||
gcc_cv_initfini_array=yes
|
||||
fi
|
||||
case ${target} in
|
||||
msp430-*-elfbare)
|
||||
# __cxa_atexit increases code size, and we don't need to support
|
||||
# dynamic shared objects on MSP430, so regular Newlib atexit is a
|
||||
# fine replacement as it also supports registration of more than 32
|
||||
# functions.
|
||||
default_use_cxa_atexit=no
|
||||
# This target does not match the generic *-*-elf case above which
|
||||
# sets use_gcc_stdint=wrap, so explicitly set it here.
|
||||
use_gcc_stdint=wrap
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
nds32*-*-*)
|
||||
target_cpu_default="0"
|
||||
|
|
|
@ -71,8 +71,23 @@ msp430_dirname (char *path)
|
|||
return path;
|
||||
}
|
||||
|
||||
/* We need to support both the msp430-elf and msp430-elfbare target aliases.
|
||||
gcc/config/msp430/t-msp430 will define TARGET_SUBDIR to the target_subdir
|
||||
Makefile variable, which will evaluate to the correct subdirectory that
|
||||
needs to be searched for devices.csv. */
|
||||
#ifndef TARGET_SUBDIR
|
||||
#define TARGET_SUBDIR msp430-elf
|
||||
#endif
|
||||
|
||||
#define _MSPMKSTR(x) __MSPMKSTR(x)
|
||||
#define __MSPMKSTR(x) #x
|
||||
|
||||
/* devices.csv path from the toolchain root. */
|
||||
static const char rest_of_devices_path[] = "/msp430-elf/include/devices/";
|
||||
static const char rest_of_devices_path[] =
|
||||
"/" _MSPMKSTR (TARGET_SUBDIR) "/include/devices/";
|
||||
|
||||
#undef _MSPMKSTR
|
||||
#undef __MSPMKSTR
|
||||
|
||||
/* "The default value of GCC_EXEC_PREFIX is prefix/lib/gcc". Strip lib/gcc
|
||||
from GCC_EXEC_PREFIX to get the path to the installed toolchain. */
|
||||
|
|
|
@ -288,6 +288,16 @@ msp430_option_override (void)
|
|||
if (TARGET_OPT_SPACE && optimize < 3)
|
||||
optimize_size = 1;
|
||||
|
||||
#if !DEFAULT_USE_CXA_ATEXIT
|
||||
/* For some configurations, we use atexit () instead of __cxa_atexit () by
|
||||
default to save on code size and remove the declaration of __dso_handle
|
||||
from the CRT library.
|
||||
Configuring GCC with --enable-__cxa-atexit re-enables it by defining
|
||||
DEFAULT_USE_CXA_ATEXIT to 1. */
|
||||
if (flag_use_cxa_atexit)
|
||||
error ("%<-fuse-cxa-atexit%> is not supported for msp430-elf");
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_NEWLIB_NANO_FORMATTED_IO
|
||||
if (TARGET_TINY_PRINTF)
|
||||
error ("GCC must be configured with %<--enable-newlib-nano-formatted-io%> "
|
||||
|
|
|
@ -24,7 +24,7 @@ driver-msp430.o: $(srcdir)/config/msp430/driver-msp430.c \
|
|||
|
||||
msp430-devices.o: $(srcdir)/config/msp430/msp430-devices.c \
|
||||
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
|
||||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
|
||||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) -DTARGET_SUBDIR=$(target_subdir) $(INCLUDES) $<
|
||||
|
||||
# Enable multilibs:
|
||||
|
||||
|
|
|
@ -4330,10 +4330,24 @@ The moxie processor.
|
|||
<hr />
|
||||
@end html
|
||||
@anchor{msp430-x-elf}
|
||||
@heading msp430-*-elf
|
||||
@heading msp430-*-elf*
|
||||
TI MSP430 processor.
|
||||
This configuration is intended for embedded systems.
|
||||
|
||||
@samp{msp430-*-elf} is the standard configuration with most GCC
|
||||
features enabled by default.
|
||||
|
||||
@samp{msp430-*-elfbare} is tuned for a bare-metal environment, and disables
|
||||
features related to shared libraries and other functionality not used for
|
||||
this device. This reduces code and data usage of the GCC libraries, resulting
|
||||
in a minimal run-time environment by default.
|
||||
|
||||
Features disabled by default include:
|
||||
@itemize
|
||||
@item transactional memory
|
||||
@item __cxa_atexit
|
||||
@end itemize
|
||||
|
||||
@html
|
||||
<hr />
|
||||
@end html
|
||||
|
|
|
@ -23311,8 +23311,8 @@ this directory for devices.csv. If devices.csv is found, this directory will
|
|||
also be registered as an include path, and linker library path. Header files
|
||||
and linker scripts in this directory can therefore be used without manually
|
||||
specifying @code{-I} and @code{-L} on the command line.
|
||||
@item The @samp{msp430-elf/include/devices} directory
|
||||
Finally, GCC will examine @samp{msp430-elf/include/devices} from the
|
||||
@item The @samp{msp430-elf@{,bare@}/include/devices} directory
|
||||
Finally, GCC will examine @samp{msp430-elf@{,bare@}/include/devices} from the
|
||||
toolchain root directory. This directory does not exist in a default
|
||||
installation, but if the user has created it and copied @samp{devices.csv}
|
||||
there, then the MCU data will be read. As above, this directory will
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
|
||||
|
||||
* g++.dg/init/dso_handle1.C: Require cxa_atexit support.
|
||||
* g++.dg/init/dso_handle2.C: Likewise.
|
||||
* g++.dg/other/cxa-atexit1.C: Likewise.
|
||||
* gcc.target/msp430/msp430.exp: Update csv-using-installed.c test to
|
||||
handle msp430-elfbare configuration.
|
||||
|
||||
2019-12-16 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/specs/clause_on_volatile.ads,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// PR c++/17042
|
||||
// { dg-do assemble }
|
||||
/* { dg-require-weak "" } */
|
||||
// { dg-require-effective-target cxa_atexit }
|
||||
// { dg-options "-fuse-cxa-atexit" }
|
||||
|
||||
struct A
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// PR c++/58846
|
||||
// { dg-require-effective-target cxa_atexit }
|
||||
// { dg-options "-fuse-cxa-atexit" }
|
||||
|
||||
extern "C" { char* __dso_handle; }
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// { dg-do compile }
|
||||
// { dg-require-effective-target cxa_atexit }
|
||||
// { dg-options "-O2 -fuse-cxa-atexit" }
|
||||
|
||||
# 1 "cxa-atexit1.C"
|
||||
|
|
|
@ -141,18 +141,20 @@ proc msp430_device_permutations_runtest { tests } {
|
|||
}
|
||||
|
||||
|
||||
# Return $TOOLCHAIN_ROOT/msp430-elf/include/devices/
|
||||
# Return $TOOLCHAIN_ROOT/$target_alias/include/devices/
|
||||
# target_alias is expected to be either msp430-elf or msp430-elfbare.
|
||||
proc get_installed_device_data_path { } {
|
||||
global target_alias
|
||||
set compiler [lindex [regexp -all -inline {\S+} \
|
||||
[board_info [target_info name] compiler]] 0]
|
||||
# $compiler is actually a file, but normalize will still get us the desired
|
||||
# result.
|
||||
return [file normalize \
|
||||
"$compiler/../../msp430-elf/include/devices/devices.csv"]
|
||||
"$compiler/../../$target_alias/include/devices/devices.csv"]
|
||||
}
|
||||
|
||||
# If the devices.csv is installed in
|
||||
# $TOOLCHAIN_ROOT/msp430-elf/include/devices/, rename it so it doesn't
|
||||
# $TOOLCHAIN_ROOT/$target_alias/include/devices/, rename it so it doesn't
|
||||
# interfere with the hard-coded device data tests.
|
||||
proc msp430_hide_installed_devices_data { } {
|
||||
set devices_path [get_installed_device_data_path]
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2019-12-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
|
||||
|
||||
* config.host: s/msp430*-*-elf/msp430-*-elf*.
|
||||
Override default "extra_parts" variable.
|
||||
* configure: Regenerate.
|
||||
* configure.ac: Disable TM clone registry by default for
|
||||
msp430-elfbare.
|
||||
|
||||
2019-12-11 Jozef Lawrynowicz <jozef.l@mittosystems.com>
|
||||
|
||||
* config.host (msp430*-*-elf): Add crt{begin,end}_no_eh.o to
|
||||
|
|
|
@ -1043,9 +1043,9 @@ moxie-*-elf | moxie-*-moxiebox* | moxie-*-uclinux* | moxie-*-rtems*)
|
|||
tmake_file="$tmake_file moxie/t-moxie t-softfp-sfdf t-softfp-excl t-softfp"
|
||||
extra_parts="$extra_parts crti.o crtn.o crtbegin.o crtend.o"
|
||||
;;
|
||||
msp430*-*-elf)
|
||||
msp430-*-elf*)
|
||||
tmake_file="$tm_file t-crtstuff t-fdpbit msp430/t-msp430"
|
||||
extra_parts="$extra_parts crtbegin_no_eh.o crtend_no_eh.o"
|
||||
extra_parts="crtbegin.o crtend.o crtbegin_no_eh.o crtend_no_eh.o"
|
||||
extra_parts="$extra_parts libmul_none.a libmul_16.a libmul_32.a libmul_f5.a"
|
||||
;;
|
||||
nds32*-linux*)
|
||||
|
|
9
libgcc/configure
vendored
9
libgcc/configure
vendored
|
@ -4964,6 +4964,15 @@ if test "$enable_tm_clone_registry" = no; then
|
|||
use_tm_clone_registry=-DUSE_TM_CLONE_REGISTRY=0
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
use_tm_clone_registry=
|
||||
case $target in
|
||||
msp430*elfbare)
|
||||
use_tm_clone_registry=-DUSE_TM_CLONE_REGISTRY=0
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
|
|
@ -268,6 +268,14 @@ use_tm_clone_registry=
|
|||
if test "$enable_tm_clone_registry" = no; then
|
||||
use_tm_clone_registry=-DUSE_TM_CLONE_REGISTRY=0
|
||||
fi
|
||||
],
|
||||
[
|
||||
use_tm_clone_registry=
|
||||
case $target in
|
||||
msp430*elfbare)
|
||||
use_tm_clone_registry=-DUSE_TM_CLONE_REGISTRY=0
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([use_tm_clone_registry])
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue