gcc 4.4.5 on dist-f13 compiles fine. gcc-4.5.1-4 and gcc-4.5.1-5 on dist-f14 fails at the excerpt below. There are no later versions in dist-f14. I've not tried upstream 4.5.[23]. Full log: http://arm.koji.fedoraproject.org/koji/getfile?taskID=93203&name=build.log Excerpt: + for h in '`find $FULLPATH/include -name \*.h`' + grep -q 'It has been auto-edited by fixincludes from' /builddir/build/BUILDROOT/gcc-4.5.1-4.fc14.arm/usr/lib/gcc/armv5tel-redhat-linux-gnueabi/4.5.1/include/ssp/stdio.h + cat + cat + chmod 755 /builddir/build/BUILDROOT/gcc-4.5.1-4.fc14.arm/usr/bin/c89 /builddir/build/BUILDROOT/gcc-4.5.1-4.fc14.arm/usr/bin/c99 + mkdir -p /builddir/build/BUILDROOT/gcc-4.5.1-4.fc14.arm/usr/sbin + gcc -static -Os /builddir/build/SOURCES/libgcc_post_upgrade.c -o /builddir/build/BUILDROOT/gcc-4.5.1-4.fc14.arm/usr/sbin/libgcc_post_upgrade /usr/lib/gcc/armv5tel-redhat-linux-gnueabi/4.4.5/../../../libc.a(libc-start.o): In function `__libc_start_main': (.text+0x0): multiple definition of `__libc_start_main' /tmp/ccefAKvc.o:libgcc_post_upgrade.c:(.text+0x8c): first defined here /usr/lib/gcc/armv5tel-redhat-linux-gnueabi/4.4.5/../../../libc.a(elf-init.o): In function `__libc_csu_fini': (.text+0x4): multiple definition of `__libc_csu_fini' /tmp/ccefAKvc.o:libgcc_post_upgrade.c:(.text+0x80): first defined here /usr/lib/gcc/armv5tel-redhat-linux-gnueabi/4.4.5/../../../libc.a(elf-init.o): In function `__libc_csu_init': (.text+0x40): multiple definition of `__libc_csu_init' /tmp/ccefAKvc.o:libgcc_post_upgrade.c:(.text+0x7c): first defined here collect2: ld returned 1 exit status RPM build errors: error: Bad exit status from /var/tmp/rpm-tmp.E4Lm2k (%install) Bad exit status from /var/tmp/rpm-tmp.E4Lm2k (%install) Child returncode was: 1
Created attachment 500281 [details] [PATCH] Pass --allow-multiple-definition to the linker when compiling libgcc_post_upgrade Linking libgcc_post_upgrade fails because there are multiple definitions of __libc_start_main, __libc_csu_fini and __libc_csu_init. These functions are defined in libgcc_post_upgrade.c and in libc.a. From "man ld" on --allow-multiple-definition: > Normally when a symbol is defined multiple times, the linker will > report a fatal error. These options allow multiple definitions and the > first definition will be used. I do not think this should be a final solution, but at least it makes it possible to build gcc on ARM. --- gcc.spec | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-)
gcc-4.6.0-9 doesn't have libgcc_post_upgrade any longer, being replaced by <lua> scriptlet. SO this problem is gone in F15 updates testing and F16.