All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viallard Anthony <viallard@syscom-instruments.com>
To: buildroot@busybox.net
Subject: [Buildroot] Failed to build gdb on host side
Date: Tue, 07 Jul 2015 11:44:19 +0200	[thread overview]
Message-ID: <559B9F73.6010101@syscom-instruments.com> (raw)
In-Reply-To: <5596C015.9070201@mind.be>

On 07/03/2015 07:02 PM, Arnout Vandecappelle wrote:
> On 07/03/15 12:29, Viallard Anthony wrote:
>> Hi,
>>
>> I have a problem when I enabled gdb compilation on host side:
>>
>> ----
>> /bin/bash ./libtool --tag=CC   --mode=link
>> /home/avd/wksp/dev/output/host/usr/bin/ccache /usr/bin/gcc -W -Wall
>> -Wstrict-prototypes -Wmissing-prototypes -Wshadow -O2
>> -I/home/avd/wksp/dev/output/host/usr/include  -release `cat libtool-soversion`
>> -static-libstdc++ -static-libgcc -L/home/avd/wksp/dev/output/host/lib
>> -L/home/avd/wksp/dev/output/host/usr/lib
>> -Wl,-rpath,/home/avd/wksp/dev/output/host/usr/lib -o libbfd.la -rpath
>> /home/avd/wksp/dev/output/host/usr/x86_64-unknown-linux-gnu/arm-buildroot-linux-uclibcgnueabi/lib
>> archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo coff-bfd.lo
>> compress.lo corefile.lo format.lo hash.lo init.lo libbfd.lo linker.lo merge.lo
>> opncls.lo reloc.lo section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo
>> binary.lo ihex.lo srec.lo tekhex.lo verilog.lo `cat ofiles`
>> -L/home/avd/wksp/dev/output/build/host-gdb-7.9/bfd/../libiberty/pic -liberty
>
>   This is where libiberty should be found...
>
>> -Wl,-lc,--as-needed,-lm,--no-as-needed -ldl -lz -ldl
>> libtool: link: /home/avd/wksp/dev/output/host/usr/bin/ccache /usr/bin/gcc
>> -shared  -fPIC -DPIC  .libs/archive.o .libs/archures.o .libs/bfd.o .libs/bfdio.o
>> .libs/bfdwin.o .libs/cache.o .libs/coff-bfd.o .libs/compress.o .libs/corefile.o
>> .libs/format.o .libs/hash.o .libs/init.o .libs/libbfd.o .libs/linker.o
>> .libs/merge.o .libs/opncls.o .libs/reloc.o .libs/section.o .libs/simple.o
>> .libs/stab-syms.o .libs/stabs.o .libs/syms.o .libs/targets.o .libs/binary.o
>> .libs/ihex.o .libs/srec.o .libs/tekhex.o .libs/verilog.o .libs/elf32-arm.o
>> .libs/elf32.o .libs/elf-nacl.o .libs/elf-vxworks.o .libs/elf.o .libs/elflink.o
>> .libs/elf-attrs.o .libs/elf-strtab.o .libs/elf-eh-frame.o .libs/dwarf1.o
>> .libs/dwarf2.o .libs/elf32-gen.o .libs/plugin.o .libs/cpu-arm.o
>> .libs/cpu-plugin.o .libs/archive64.o -L/home/avd/wksp/dev/output/host/lib
>> -L/home/avd/wksp/dev/output/host/usr/lib
>> -L/home/avd/wksp/dev/output/build/host-gdb-7.9/bfd/../libiberty/pic -liberty -lz
>> -ldl  -Wl,-rpath -Wl,/home/avd/wksp/dev/output/host/usr/lib -Wl,-lc
>> -Wl,--as-needed -Wl,-lm -Wl,--no-as-needed   -Wl,-soname -Wl,libbfd-2.25.51.so
>> -o .libs/libbfd-2.25.51.so
>> /usr/bin/ld: /home/avd/wksp/dev/output/host/usr/lib/libiberty.a(cplus-dem.o):
>
>   ... but instead, it is found in host/usr/lib.
>
>   That's pretty bad, libiberty should not be installed in the host dir. I also
> can't find any code that does that (nothing passes --enable-install-libiberty
> except the target binutils).
>
>   So can you trace back which step of the build installed libiberty in the host
> dir? Perhaps share your defconfig?
>
>
>   Regards,
>   Arnout
>
> [snip]
>

Hi Arnout and all,

If I look over the output directory about libiberty.a, here what I find:

----------------
[avd:~/wksp/dev] $ for f in $(find output/ -name "libiberty.a"); do 
md5sum $f; done
5c79d008976401db98e014f8b4cf74aa 
output/build/host-gcc-final-4.7.4/build/build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
1139e997c007ab5187665e98c23659f6 
output/build/host-gcc-final-4.7.4/build/libiberty/libiberty.a
fc9ca886f8c6e8d1cbc3293a496ac179 
output/build/host-gcc-final-4.7.4/build/libiberty/pic/libiberty.a
626fcb7a10b75bad14a14886c111e3b4 
output/build/host-gcc-initial-4.7.4/build/build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
480750b2bf20cb389ba84d875667c8e0 
output/build/host-gcc-initial-4.7.4/build/libiberty/libiberty.a
4903b2aaa94fed7579685aa6789778f2 
output/build/host-gcc-initial-4.7.4/build/libiberty/pic/libiberty.a
c1303d7bbcf87fb95eb18a604ef1bbc2 
output/build/gdb-7.9/gdb/gdbserver/build-libiberty-gdbserver/libiberty.a
a86309dd08155fc1b664f7c066402513 
output/build/gdb-7.9/gdb/gdbserver/build-libiberty-gdbserver/pic/libiberty.a
09901aa03336b1ef814b866c1a532015 
output/build/host-binutils-2.24/libiberty/libiberty.a
d228daa645bb5d167ee9d86c2756fa75 
output/build/host-gdb-7.9/libiberty/libiberty.a
70b7d21a71b8f79322ca71b3df0e98cf 
output/build/host-gdb-7.9/libiberty/pic/libiberty.a
96e90ee6aeffcfb418ea31eb9c7ce802  output/host/usr/lib/libiberty.a
----------------

----------------
[avd:~/wksp/dev] $ for f in $(find output/ -name "libiberty.a"); do ls 
-l $f; done
-rw-r--r-- 1 avd 401332 Jul  6 16:18 
output/build/host-gcc-final-4.7.4/build/build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
-rw-r--r-- 1 avd 401332 Jul  6 16:18 
output/build/host-gcc-final-4.7.4/build/libiberty/libiberty.a
-rw-r--r-- 1 avd 405500 Jul  6 16:18 
output/build/host-gcc-final-4.7.4/build/libiberty/pic/libiberty.a
-rw-r--r-- 1 avd 401332 Jul  6 16:16 
output/build/host-gcc-initial-4.7.4/build/build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
-rw-r--r-- 1 avd 401332 Jul  6 16:16 
output/build/host-gcc-initial-4.7.4/build/libiberty/libiberty.a
-rw-r--r-- 1 avd 405500 Jul  6 16:16 
output/build/host-gcc-initial-4.7.4/build/libiberty/pic/libiberty.a
-rw-r--r-- 1 avd 982840 Jul  6 16:31 
output/build/gdb-7.9/gdb/gdbserver/build-libiberty-gdbserver/libiberty.a
-rw-r--r-- 1 avd 1003652 Jul  6 16:31 
output/build/gdb-7.9/gdb/gdbserver/build-libiberty-gdbserver/pic/libiberty.a
-rw-r--r-- 1 avd 447600 Jul  6 16:14 
output/build/host-binutils-2.24/libiberty/libiberty.a
-rw-r--r-- 1 avd 483720 Jul  6 16:31 
output/build/host-gdb-7.9/libiberty/libiberty.a
-rw-r--r-- 1 avd 521136 Jul  6 16:31 
output/build/host-gdb-7.9/libiberty/pic/libiberty.a
-rw-r--r-- 1 avd 401332 Jul  6 16:20 output/host/usr/lib/libiberty.a
----------------

The file libiberty.a seems to come from the gcc-final package but it 
doesn't have the same md5 hash. I think gcc doesn't make a simple copy 
but modify the installed ar archive ?

Near the end of the build of gcc-final, I can see this:

----------------
make[3]: Leaving directory 
'/home/avd/wksp/dev/output/build/host-gcc-final-4.7.4/build/libdecnumber'
make[3]: Entering directory 
'/home/avd/wksp/dev/output/build/host-gcc-final-4.7.4/build/libiberty'
make[4]: Entering directory 
'/home/avd/wksp/dev/output/build/host-gcc-final-4.7.4/build/libiberty/testsuite'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory 
'/home/avd/wksp/dev/output/build/host-gcc-final-4.7.4/build/libiberty/testsuite'
make[4]: Entering directory 
'/home/avd/wksp/dev/output/build/host-gcc-final-4.7.4/build/libiberty/testsuite'
make[4]: Nothing to be done for 'install'.
make[4]: Leaving directory 
'/home/avd/wksp/dev/output/build/host-gcc-final-4.7.4/build/libiberty/testsuite'
/bin/bash ../../libiberty/../mkinstalldirs 
/home/avd/wksp/dev/output/host/usr/lib/`/home/avd/wksp/dev/output/host/usr/bin/ccache 
/usr/bin/gcc -O2 -I/home/avd/wksp/dev/output/host/usr/include 
-print-multi-os-directory`
/usr/bin/install -c -m 644 ./libiberty.a 
/home/avd/wksp/dev/output/host/usr/lib/`/home/avd/wksp/dev/output/host/usr/bin/ccache 
/usr/bin/gcc -O2 -I/home/avd/wksp/dev/output/host/usr/include 
-print-multi-os-directory`/./libiberty.an
( cd 
/home/avd/wksp/dev/output/host/usr/lib/`/home/avd/wksp/dev/output/host/usr/bin/ccache 
/usr/bin/gcc -O2 -I/home/avd/wksp/dev/output/host/usr/include 
-print-multi-os-directory` ; chmod 644 ./libiberty.an ;/usr/bin/ranlib 
./libiberty.an )
mv -f 
/home/avd/wksp/dev/output/host/usr/lib/`/home/avd/wksp/dev/output/host/usr/bin/ccache 
/usr/bin/gcc -O2 -I/home/avd/wksp/dev/output/host/usr/include 
-print-multi-os-directory`/./libiberty.an 
/home/avd/wksp/dev/output/host/usr/lib/`/home/avd/wksp/dev/output/host/usr/bin/ccache 
/usr/bin/gcc -O2 -I/home/avd/wk\
      sp/dev/output/host/usr/include 
-print-multi-os-directory`/./libiberty.a
----------------

I can see in my build log there is binutils which can install the lib 
but the install command is surrounded with "if test	-n ""; then \" so 
nothing is done.

The openwrt guys did a patch in gcc/final package: 
https://dev.openwrt.org/changeset/42625

I use gcc 4.7.4.

I pasted my config and the build log here:

http://dropcanvas.com/k1YRbqW9GW9bMLthese links:

Regards,
Anthony.

  reply	other threads:[~2015-07-07  9:44 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-03 10:29 [Buildroot] Failed to build gdb on host side Viallard Anthony
2015-07-03 17:02 ` Arnout Vandecappelle
2015-07-07  9:44   ` Viallard Anthony [this message]
2015-07-09 22:56     ` Arnout Vandecappelle

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=559B9F73.6010101@syscom-instruments.com \
    --to=viallard@syscom-instruments.com \
    --cc=buildroot@busybox.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.