This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR47566


Richard Guenther wrote:

> + /* { dg-lto-do run } */
> + /* { dg-lto-options { { -O0 -flto } } } */
> + /* { dg-extra-ld-options "-O2 -ffast-math -fuse-linker-plugin" } */
> + /* { dg-require-linker-plugin "" } */
> + 
> + /* We require a linker plugin because otherwise we'd need to link
> +    against libm which we are not sure here has cabs on all targets.
> +    This is because collect2 invokes ld on the -O0 object code
> +    which does not have folded cabs.  */
> + 
> + double cabs(_Complex double);
> + double __attribute__((used))
> + foo (_Complex double x, int b)
> + {
> +   if (b)
> +     x = 0;
> +   return cabs(x);
> + }
> + int main() { return 0; }

Now that we have the linker plugin, this fails on spu-elf with:

/tmp/cce6KuRb.ltrans0.ltrans.o: In function `foo':
cce6KuRb.ltrans0.o:(.text+0x28): undefined reference to `sqrt'

because nothing links against libm.  I'm a bit confused by the comment
above: even with the linker plugin, where should libm be pulled in?
Don't we need to use -lm on the linker line anyway?

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]