[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC 6/7] arm: Introduce dummy empty functions for data only C files
On Wed, 6 Nov 2019, Andrii Anisov wrote: > From: Andrii Anisov <andrii_anisov@xxxxxxxx> > > ARM Compiler 6 has a proven bug: it compiles data only C files with > SoftVFP attributes. This leads to a failed linkage afterwards with > an error: > > Error: L6242E: Cannot link object built_in.o as its attributes are > incompatible with the image attributes. > ... A64 clashes with SoftVFP. > > The known workaround is introducing some code into the affected file, > e.g. an empty (non-static) function is enough. Oh man, this is truly horrible. If we really have to do this please: - use the same dummy function name in all files - the function should be static - hiding the function within a #ifdef ARMCC block - potentially hide the whole horrible hack behind a #define so that it would become at the call site: +ARMCC_DUMMY_FUNC_HACK() > Signed-off-by: Andrii Anisov <andrii_anisov@xxxxxxxx> > > --- > xen/arch/arm/platforms/brcm-raspberry-pi.c | 2 ++ > xen/arch/arm/platforms/thunderx.c | 2 ++ > xen/xsm/flask/gen-policy.py | 4 ++++ > 3 files changed, 8 insertions(+) > > diff --git a/xen/arch/arm/platforms/brcm-raspberry-pi.c > b/xen/arch/arm/platforms/brcm-raspberry-pi.c > index b697fa2..7ab1810 100644 > --- a/xen/arch/arm/platforms/brcm-raspberry-pi.c > +++ b/xen/arch/arm/platforms/brcm-raspberry-pi.c > @@ -40,6 +40,8 @@ static const struct dt_device_match rpi4_blacklist_dev[] > __initconst = > { /* sentinel */ }, > }; > > +void brcm_raspberry_pi_dummy_func(void) {} > + > PLATFORM_START(rpi4, "Raspberry Pi 4") > .compatible = rpi4_dt_compat, > .blacklist_dev = rpi4_blacklist_dev, > diff --git a/xen/arch/arm/platforms/thunderx.c > b/xen/arch/arm/platforms/thunderx.c > index 9b32a29..8015323 100644 > --- a/xen/arch/arm/platforms/thunderx.c > +++ b/xen/arch/arm/platforms/thunderx.c > @@ -33,6 +33,8 @@ static const struct dt_device_match > thunderx_blacklist_dev[] __initconst = > { /* sentinel */ }, > }; > > +void thunderx_dummy_func(void) {} > + > PLATFORM_START(thunderx, "THUNDERX") > .compatible = thunderx_dt_compat, > .blacklist_dev = thunderx_blacklist_dev, > diff --git a/xen/xsm/flask/gen-policy.py b/xen/xsm/flask/gen-policy.py > index c7501e4..73bf7d2 100644 > --- a/xen/xsm/flask/gen-policy.py > +++ b/xen/xsm/flask/gen-policy.py > @@ -21,3 +21,7 @@ sys.stdout.write(""" > }; > const unsigned int __initconst xsm_flask_init_policy_size = %d; > """ % policy_size) > + > +sys.stdout.write(""" > +void policy_dummy_func(void) {} > +""") > -- > 2.7.4 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |