On Mon, Feb 29, 2016 at 5:13 PM, Renlin Li <renlin...@foss.arm.com> wrote: > Hi all, > > The gcc.dg/lto/pr54709, pr61526, pr64415 linking testcases keep failing on > arm/aarch64 bare-metal target. > > It's because statically built newlib library is used to link with shared > object. > And the linker complains about relocations which cannot be used in > shared object. > > For example, the following errors are produced: > > crtbegin.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be > used when making a shared object; recompile with -fPIC > > crtbegin.o: relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can > not > be used when making a shared object; recompile with -fPIC > > librdimon.a(rdimon-syscalls.o): relocation R_AARCH64_ADR_PREL_PG_HI21 > against > external symbol `_impure_ptr' can not be used when making a shared object; > recompile with -fPIC > > Presumably, bare-metal toolchain for other architecture have those test case > failures as well? > > In this patch, -shared option is replace by -r -nostdlib. So that the > standard > system startup files or libraries are not used when linking.
Note that -shared is not equivalent to -r -nostdlib so please verify that the original issue can be still reproduced with its fix reverted but -r -nostdlib used with the new -r -nostdlib handling on trunk. Otherwise simply dg-skip for aarch64. Richard. > > arm-none-eabi, aarch64-none-elf regression test OK, OK for trunk? > > Regards, > Renlin Li > > gcc/testsuite/ChangeLog: > > 2016-02-29 Renlin Li<renlin...@arm.com> > > * gcc.dg/lto/pr54709_0.c: Replace -shard with -r -nostdlib. > * gcc.dg/lto/pr61526_0.c: Ditto. > * gcc.dg/lto/pr64415_0.c: Ditto. >