[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] avr/bin/ld: skipping incompatible /usr/lib/gcc/avr/4.
From: |
Paolo Patruno |
Subject: |
Re: [avr-gcc-list] avr/bin/ld: skipping incompatible /usr/lib/gcc/avr/4.9.0/libgcc.a when searching for -lgcc |
Date: |
Tue, 25 Mar 2014 22:59:30 +0100 |
Thanks Senthil,
the library in the build tree is OK, so I found that the problem is in
the rpm build macros, I think in binary stripping in rpmbuild.
I have disabled it and it works well now !
The rpm macro __os_install_post is defined to execute these scripts. The
scripts used to compress the binary file size are as follows.
$ rpm --showrc | grep -A 4 ': __os_install_post'
-14: __os_install_post
%{_rpmconfigdir}/brp-compress
%{_rpmconfigdir}/brp-strip %{__strip}
%{_rpmconfigdir}/brp-strip-static-archive %{__strip}
%{_rpmconfigdir}/brp-strip-comment-note %{__strip}
%{__objdump}
To prevent binary stripping for this rpm, I have added the following
line at the top of the rpm spec file.
%global __os_install_post %{nil}
Thanks
Paolo
Il giorno lun, 24/03/2014 alle 12.55 +0530, Senthil Kumar Selvaraj ha
scritto:
> On Sat, Mar 22, 2014 at 01:29:56PM +0100, Paolo Patruno wrote:
> > I want try to use gcc 4.9.
> > Starting from a working toolchain of Fedora 19 with avr-gcc 4.8; I get
> > the last snapshot and buid it inside rpm build system with:
> > ../gcc-4.9/configure --prefix=/usr --mandir=/usr/share/man
> > --infodir=/usr/share/info --target=avr --enable-languages=c,c++ -
> > -disable-nls --disable-libssp --with-system-zlib
> > --enable-version-specific-runtime-libs --with-pkgversion=Fedora
> > 4.9-1.fc19 --with-bugurl=https://bugzilla.redhat.com/
> >
> > I install the rpm and compile works well but at link stage:
> >
> > /usr/bin/avr-gcc -mmcu=atmega328p -Wl,--gc-sections -Wl,-Map -Wl,t.map -o
> > .build/uno/firmware.elf .build/uno/src/helloworld_rx.o -v
> > Using built-in specs.
> > COLLECT_GCC=/usr/bin/avr-gcc
> > COLLECT_LTO_WRAPPER=/usr/libexec/gcc/avr/4.9.0/lto-wrapper
> > Target: avr
> > Configured with: ../gcc-4.9/configure --prefix=/usr --mandir=/usr/share/man
> > --infodir=/usr/share/info --target=avr --enable-languages=c,c++
> > --disable-nls --disable-libssp --with-system-zlib
> > --enable-version-specific-runtime-libs --with-pkgversion='Fedora
> > 4.9-1.fc19' --with-bugurl=https://bugzilla.redhat.com/
> > Thread model: single
> > gcc version 4.9.0 20140316 (experimental) (Fedora 4.9-1.fc19)
> > COMPILER_PATH=/usr/libexec/gcc/avr/4.9.0/:/usr/libexec/gcc/avr/4.9.0/:/usr/libexec/gcc/avr/:/usr/lib/gcc/avr/4.9.0/:/usr/lib/gcc/avr/:/usr/lib/gcc/avr/4.9.0/../../../../avr/bin/
> > LIBRARY_PATH=/usr/lib/gcc/avr/4.9.0/avr5/:/usr/lib/gcc/avr/4.9.0/../../../../avr/lib/avr5/:/usr/lib/gcc/avr/4.9.0/:/usr/lib/gcc/avr/4.9.0/../../../../avr/lib/
> > COLLECT_GCC_OPTIONS='-mmcu=atmega328p' '-o' '.build/uno/firmware.elf' '-v'
> > /usr/libexec/gcc/avr/4.9.0/collect2 -plugin
> > /usr/libexec/gcc/avr/4.9.0/liblto_plugin.so
> > -plugin-opt=/usr/libexec/gcc/avr/4.9.0/lto-wrapper
> > -plugin-opt=-fresolution=/tmp/ccaF7CSb.res -plugin-opt=-pass-through=-lgcc
> > -plugin-opt=-pass-through=-lm -plugin-opt=-pass-through=-lc -m avr5 -Tdata
> > 0x800100 -o .build/uno/firmware.elf
> > /usr/lib/gcc/avr/4.9.0/../../../../avr/lib/avr5/crtm328p.o
> > -L/usr/lib/gcc/avr/4.9.0/avr5
> > -L/usr/lib/gcc/avr/4.9.0/../../../../avr/lib/avr5 -L/usr/lib/gcc/avr/4.9.0
> > -L/usr/lib/gcc/avr/4.9.0/../../../../avr/lib --gc-sections -Map t.map
> > .build/uno/src/helloworld_rx.o --start-group -lgcc -lm -lc --end-group
> > /usr/lib/gcc/avr/4.9.0/../../../../avr/bin/ld: skipping incompatible
> > /usr/lib/gcc/avr/4.9.0/avr5/libgcc.a when searching for -lgcc
> > /usr/lib/gcc/avr/4.9.0/../../../../avr/bin/ld: skipping incompatible
> > /usr/lib/gcc/avr/4.9.0/libgcc.a when searching for -lgcc
> > /usr/lib/gcc/avr/4.9.0/../../../../avr/bin/ld: cannot find -lgcc
> > collect2: error: ld returned 1 exit status
> >
> >
> > objdump results:
> >
> > avr-objdump -f .build/uno/src/helloworld_rx.o
> >
> > .build/uno/src/helloworld_rx.o: file format elf32-avr
> > architecture: avr:5, flags 0x00000011:
> > HAS_RELOC, HAS_SYMS
> > start address 0x00000000
> >
> >
> >
> > avr-objdump -f /usr/lib/gcc/avr/4.9.0/avr5/libgcc.a|head -n 20
> > In archive /usr/lib/gcc/avr/4.9.0/avr5/libgcc.a:
> >
> > _absvhi2.o: file format elf32-little
> > architecture: UNKNOWN!, flags 0x00000011:
> > HAS_RELOC, HAS_SYMS
> > start address 0x00000000
> >
>
> That's weird - can you check the configure/make logs in the build folder
> to see how this was compiled?
>
> FWIW, with the latest sources of binutils and gcc, this is the output on
> my machine.
>
> $ ~/scratch/avr/install/bin/avr-objdump -f
> /home/saaadhu/scratch/avr/install/lib/gcc/avr/4.9.0/avr5/libgcc.a | head -n20
> In archive /home/saaadhu/scratch/avr/install/lib/gcc/avr/4.9.0/avr5/libgcc.a:
>
> _absvhi2.o: file format elf32-avr
> architecture: avr:5, flags 0x00000011:
> HAS_RELOC, HAS_SYMS
> start address 0x00000000
>
>
> _addvhi3.o: file format elf32-avr
> architecture: avr:5, flags 0x00000011:
> HAS_RELOC, HAS_SYMS
> start address 0x00000000
>
>
> _subvhi3.o: file format elf32-avr
> architecture: avr:5, flags 0x00000011:
> HAS_RELOC, HAS_SYMS
> start address 0x00000000
>
>
> $ ~/scratch/avr/install/bin/avr-as -v
> GNU assembler version 2.24.51 (avr) using BFD version (GNU Binutils)
> 2.24.51.20131021
> ^C
>
> Regards
> Senthil