From: Sebastian Huber <sebastian.huber@embedded-brains.de>
To: gcc-help@gcc.gnu.org
Subject: LTO with static libraries
Date: Mon, 24 Oct 2011 09:51:00 -0000 [thread overview]
Message-ID: <4EA534F3.9050404@embedded-brains.de> (raw)
Hello,
when I run the GCC testsuite for RTEMS and the ARM EABI target, then I get this:
Running
/home/sh/archive/gcc-4.6-20111021-work/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
...
FAIL: gcc.c-torture/execute/builtins/20010124-1.c compilation, -O2 -flto
-flto-partition=none
This is due to:
/home/sh/b-arm-gcc/gcc/xgcc -B/home/sh/b-arm-gcc/gcc/
/home/sh/archive/gcc-4.6-20111021-work/gcc/testsuite/gcc.c-torture/execute/builtins/20010124-1.c
/home/sh/archive/gcc-4.6-20111021-work/gcc/testsuite/gcc.c-torture/execute/builtins/20010124-1-lib.c
/home/sh/archive/gcc-4.6-20111021-work/gcc/testsuite/gcc.c-torture/execute/builtins/lib/main.c
gcc_tg.o -w -O2 -flto -flto-partition=none -DSTACK_SIZE=2048 -isystem
/home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/targ-include -isystem
/home/sh/archive/gcc-4.6-20111021-work/newlib/libc/include -mcpu=arm7tdmi
-B/home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/ -specs bsp_specs
-qrtems -B/home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/
-L/home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib
/home/sh/b-arm-gcc/rtems_gcc_main.o -Wl,-wrap,exit -Wl,-wrap,_exit
-Wl,-wrap,main -Wl,-wrap,abort -lm -o
/home/sh/b-arm-gcc/gcc/testsuite/gcc/20010124-1.x6 -Wl,-Map,map.txt -save-temps
[Leaving LTRANS /tmp/cc0vFDjO.args]
/tmp/ccTLtFeu.lto.o: In function `memcpy':
20010124-1.o:(.text+0x4): multiple definition of `memcpy'
/home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/libc.a(lib_a-memcpy.o):/home/sh/archive/gcc-4.6-20111021-work/newlib/libc/string/memcpy.c:79:
first defined here
collect2: ld returned 1 exit status
In the linker map file I have this:
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/start.o
LOAD /home/sh/b-arm-gcc/gcc/crti.o
LOAD /home/sh/b-arm-gcc/gcc/crtbegin.o
LOAD 20010124-1.o
LOAD /tmp/ccTLtFeu.lto.o
LOAD /home/sh/b-arm-gcc/gcc/libgcc.a
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/librtemsbsp.a
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/librtemscpu.a
LOAD /home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/libc.a
LOAD /home/sh/b-arm-gcc/gcc/libgcc.a
LOAD 20010124-1-lib.o
LOAD main.o
LOAD gcc_tg.o
LOAD /home/sh/b-arm-gcc/rtems_gcc_main.o
LOAD /home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/libm.a
START GROUP
LOAD /home/sh/b-arm-gcc/gcc/libgcc.a
START GROUP
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/librtemsbsp.a
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/librtemscpu.a
LOAD /home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/libc.a
LOAD /home/sh/b-arm-gcc/gcc/libgcc.a
END GROUP
The problem seems to be that this "/tmp/ccTLtFeu.lto.o" file pulls in memcpy()
from libc.a and later 20010124-1-lib.o defines also memcpy(). I never used the
LTO before and now I am not sure where to search for the error in this case.
Is it probably in the linker command file? Who produces this
"/tmp/ccTLtFeu.lto.o" and what is its purpose (it is not preserved with
-save-temps)?
The linker map file without LTO looks like this:
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/start.o
LOAD /home/sh/b-arm-gcc/gcc/crti.o
LOAD /home/sh/b-arm-gcc/gcc/crtbegin.o
LOAD 20010124-1.o
LOAD 20010124-1-lib.o
LOAD main.o
LOAD gcc_tg.o
LOAD /home/sh/b-arm-gcc/rtems_gcc_main.o
LOAD /home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/libm.a
START GROUP
LOAD /home/sh/b-arm-gcc/gcc/libgcc.a
START GROUP
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/librtemsbsp.a
LOAD /home/sh/install-4.6-20111021/arm-rtemseabi4.11/edb7312/lib/librtemscpu.a
LOAD /home/sh/b-arm-gcc/arm-rtemseabi4.11/./newlib/libc.a
LOAD /home/sh/b-arm-gcc/gcc/libgcc.a
END GROUP
--
Sebastian Huber, embedded brains GmbH
Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
Phone : +49 89 18 90 80 79-6
Fax : +49 89 18 90 80 79-9
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
next reply other threads:[~2011-10-24 9:51 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-24 9:51 Sebastian Huber [this message]
2011-10-24 17:06 ` Ian Lance Taylor
2011-10-25 7:53 ` Sebastian Huber
2011-10-24 17:21 ` xunxun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EA534F3.9050404@embedded-brains.de \
--to=sebastian.huber@embedded-brains.de \
--cc=gcc-help@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).