[PATCH 1/8] Add --with-system-zlib in bfd

Luis Machado lgustavo@codesourcery.com
Mon Mar 30 16:45:00 GMT 2015


On 03/30/2015 01:31 PM, H.J. Lu wrote:
> On Mon, Mar 30, 2015 at 8:52 AM, Steve Ellcey <sellcey@imgtec.com> wrote:
>> On Sun, 2015-03-29 at 07:10 -0700, H.J. Lu wrote:
>>> On Thu, Mar 26, 2015 at 8:57 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>>> I imported zlib from GCC.  This patch adds --with-system-zlib and remove
>>>> --with-zlib in bfd.  OK for master?
>>
>> I think the global binutils-gdb Makefile needs to have a dependency of
>> bfd on zlib.  If I build 'all-binutils' (using just the binutils-gdb
>> repository, not a combined tree with GCC) I get a build failure.  If I
>> explicitly build all-zlib before building all-binutils it works, but I
>> should not have to do that.
>>
>>
>> /bin/sh ./libtool --tag=CC   --mode=link gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -I/scratch/sellcey/repos/nightly/src/binutils-gdb/bfd/../zlib -g -O2 -rpath /scratch/sellcey/repos/nightly/install-mips-mti-linux-gnu/x86_64-unknown-linux-gnu/mips-mti-linux-gnu/lib -release `cat libtool-soversion`  -static-libstdc++ -static-libgcc  -o libbfd.la  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`  -ldl -L../zlib -lz -ldl
>> ./libtool: line 5195: cd: ../zlib: No such file or directory
>> libtool: link: cannot determine absolute directory name of `../zlib'
>> make[3]: *** [libbfd.la] Error 1
>> make[3]: Leaving directory `/scratch/sellcey/repos/nightly/obj-mips-mti-linux-gnu/binutils-gdb/bfd'
>> make[2]: *** [all-recursive] Error 1
>> make[2]: Leaving directory `/scratch/sellcey/repos/nightly/obj-mips-mti-linux-gnu/binutils-gdb/bfd'
>> make[1]: *** [all] Error 2
>> make[1]: Leaving directory `/scratch/sellcey/repos/nightly/obj-mips-mti-linux-gnu/binutils-gdb/bfd'
>> make: *** [all-bfd] Error 2
>> Error: Make command failed, stopping build.
>
> I will take a look.
>

It seems GDB's Makefile.in is also missing a few bits to make sure it 
includes ../zlib/libz.a in the final link step, otherwise it tries to 
pick the system's zlib instead of the included zlib, which may fail if 
you have an older libz installed.

--

/usr/bin/ld: ../bfd/libbfd.a(compress.o): undefined reference to symbol 
'compressBound@@ZLIB_1.2.0'
//lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO missing from 
command line
collect2: error: ld returned 1 exit status
make[2]: *** [gdb] Error 1

--

We need something like libiberty in gdb/Makefile.in, but conditionalized 
based on the configure switches to use the system's or the include zlib.

gdb/Makefile.in:

# Where is the "-liberty" library?  Typically in ../libiberty.
LIBIBERTY = ../libiberty/libiberty.a

... and then ...

CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) 
$(LIBDECNUMBER) \
         $(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) \
         @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \
         $(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) \
         $(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)



More information about the Binutils mailing list