[zlib PATCH 1 of 3] complibs/zlib: Add zlib support for binutils and gdb

Khem Raj raj.khem@gmail.com
Wed Nov 23 20:17:00 GMT 2011


On Tue, Nov 22, 2011 at 9:38 AM, Yann E. MORIN
<yann.morin.1998@anciens.enib.fr> wrote:
> Zhenqiang, All,
>
> On Tuesday 22 November 2011 13:04:12 Zhenqiang Chen wrote:
>> # HG changeset patch
>> # User Zhenqiang Chen <zhenqiang.chen@linaro.org>
>> # Date 1321943491 -28800
>> # Node ID a7e34002ac6dcab9dded1c0b04391637b23e2e82
>> # Parent  a6c68712024f406df7d2da4af377f51982615833
>> complibs/zlib: Add zlib support to remove the dependence on system zlib
>> for binutils and gdb.
>
> Why don't you want to use the system zlib? What's the use-case? zlib has
> a history of many security holes, and using static means you won't get
> bug-fixes.

I guess if you are building on systems which has either no zlib or
different version of zlib
but I am looking for better use case from Zhenqiang here

>
> Note that the other complibs are needed because older distros do not have
> the needed versions, and using shared libs or static would have the same
> issue for crostool-NG: updating those libs would probably need a full
> re-build of the toolchain.
>
> Too long description line. Use:
>    complibs/zlib: add zlib as a companion library
>
>    Use our own version to remove dependence on system zlib
>    in case blabla...
>
>    sob...
>
>> Reviewed-by: Michael Hope
>> Signed-off-by: Zhenqiang Chen <zhenqiang.chen@linaro.org>
>>
>> diff --git a/config/companion_libs.in b/config/companion_libs.in
>> --- a/config/companion_libs.in
>> +++ b/config/companion_libs.in
>> @@ -37,6 +37,11 @@
>>       select LIBELF
>>       select COMPLIBS_NEEDED
>>
>> +config ZLIB_NEEDED
>> +    bool
>> +    select ZLIB
>> +    select COMPLIBS_NEEDED
>> +
>>   config COMPLIBS
>>       bool
>>
>> @@ -70,6 +75,10 @@
>>       bool
>>       select COMPLIBS
>>
>> +config ZLIB
>> +    bool
>> +    select COMPLIBS
>> +
>>   config LIBELF_TARGET
>>       bool
>>
>> @@ -93,6 +102,9 @@
>>       depends on !LIBELF
>>   source "config/companion_libs/libelf.in"
>>   endif
>> +if ZLIB
>> +source "config/companion_libs/zlib.in"
>> +endif
>>
>>   config FOO
>>       bool
>> diff --git a/config/companion_libs/zlib.in b/config/companion_libs/zlib.in
>> new file mode 100644
>> --- /dev/null
>> +++ b/config/companion_libs/zlib.in
>> @@ -0,0 +1,19 @@
>> +# ZLIB options
>> +
>> +choice
>> +    bool
>> +    prompt "ZLIB version"
>> +# Don't remove next line
>> +# CT_INSERT_VERSION_BELOW
>> +
>> +config ZLIB_V_1_2_5
>> +    bool
>> +    prompt "1.2.5"
>> +
>> +endchoice
>> +
>> +config ZLIB_VERSION
>> +    string
>> +# Don't remove next line
>> +# CT_INSERT_VERSION_STRING_BELOW
>> +    default "1.2.5" if ZLIB_V_1_2_5
>
> Do we really want to expose the zlib version? I believe it should be
> transparent, the way libncurses is managed by gdb (version-wise, I mean,
> keeping the complib build as you submitted).
>
>> diff --git a/patches/zlib/1.2.5/zlib-1.2.5.patch b/patches/zlib/1.2.5/zlib-1.2.5.patch
>> new file mode 100644
>> --- /dev/null
>> +++ b/patches/zlib/1.2.5/zlib-1.2.5.patch
>> @@ -0,0 +1,19 @@
>> +diff --git a/Makefile.in b/Makefile.in
>> +index 5b15bd0..6817b94 100644
>> +--- a/Makefile.in
>> ++++ b/Makefile.in
>> +@@ -167,8 +167,12 @@ install-libs: $(LIBS)
>> +       -@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi
>> +       -@if [ ! -d $(DESTDIR)$(man3dir)      ]; then mkdir -p $(DESTDIR)$(man3dir); fi
>> +       -@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
>> +-      cp $(STATICLIB) $(DESTDIR)$(libdir)
>> +-      cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)
>> ++      if [ "x$(STATICLIB)" != "x" ] && [ -e $(STATICLIB) ] ; then \
>> ++              cp $(STATICLIB) $(DESTDIR)$(libdir) ; \
>> ++      fi
>> ++      if [ "x$(SHAREDLIBV)" != "x" ] && [ -e $(SHAREDLIBV) ] ; then \
>> ++              cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir) ; \
>> ++      fi
>> +       cd $(DESTDIR)$(libdir); chmod u=rw,go=r $(STATICLIB)
>> +       -@(cd $(DESTDIR)$(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
>> +       -@cd $(DESTDIR)$(sharedlibdir); if test "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
>> diff --git a/scripts/build/companion_libs/zlib.sh b/scripts/build/companion_libs/zlib.sh
>> new file mode 100644
>> --- /dev/null
>> +++ b/scripts/build/companion_libs/zlib.sh
>> @@ -0,0 +1,49 @@
>> +# This file adds the functions to build the ZLIB library
>> +# Copyright 2011 Michael Edwards
>> +# Licensed under the GPL v2. See COPYING in the root of this package
>> +
>> +do_zlib_get() { :; }
>> +do_zlib_extract() { :; }
>> +do_zlib() { :; }
>> +
>> +# Overide functions depending on configuration
>> +if [ "${CT_ZLIB}" = "y" ]; then
>> +
>> +do_zlib_get() {
>> +    CT_GetFile "zlib-${CT_ZLIB_VERSION}" .tar.gz    \
>> +        http://sourceforge.net/projects/libpng/files
>> +}
>> +
>> +do_zlib_extract() {
>> +    CT_Extract "zlib-${CT_ZLIB_VERSION}"
>> +    CT_Patch "zlib" "${CT_ZLIB_VERSION}"
>> +}
>> +
>> +do_zlib() {
>> +    mkdir -p "${CT_BUILD_DIR}/build-zlib"
>> +    cd "${CT_BUILD_DIR}/build-zlib"
>> +
>> +    CT_DoStep INFO "Installing zlib"
>> +
>> +    cp -a "${CT_SRC_DIR}/zlib-${CT_ZLIB_VERSION}" "${CT_BUILD_DIR}/build-zlib"
>> +    CT_Pushd "${CT_BUILD_DIR}/build-zlib/zlib-${CT_ZLIB_VERSION}"
>> +
>> +    CT_DoLog EXTRA "Configuring zlib"
>> +
>> +    CT_DoExecLog CFG                                \
>> +    CFLAGS="${CT_CFLAGS_FOR_HOST}"                  \
>> +    CXXFLAGS="${CT_CFLAGS_FOR_HOST}"                \
>> +    ./configure  --prefix="${CT_COMPLIBS_DIR}/zlib" \
>> +        --static
>> +
>> +    CT_DoLog EXTRA "Building zlib"
>> +    CT_DoExecLog ALL make ${JOBSFLAGS}
>> +
>> +    CT_DoLog EXTRA "Installing zlib"
>> +    CT_DoExecLog ALL make install
>> +
>> +    CT_Popd
>> +    CT_EndStep
>> +}
>> +
>> +fi # CT_ZLIB
>> diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in
>> --- a/scripts/crosstool-NG.sh.in
>> +++ b/scripts/crosstool-NG.sh.in
>> @@ -117,6 +117,7 @@
>>   . "${CT_LIB_DIR}/scripts/build/companion_libs/cloog.sh"
>>   . "${CT_LIB_DIR}/scripts/build/companion_libs/mpc.sh"
>>   . "${CT_LIB_DIR}/scripts/build/companion_libs/libelf.sh"
>> +. "${CT_LIB_DIR}/scripts/build/companion_libs/zlib.sh"
>>   . "${CT_LIB_DIR}/scripts/build/binutils/binutils.sh"
>>   . "${CT_LIB_DIR}/scripts/build/binutils/elf2flt.sh"
>>   . "${CT_LIB_DIR}/scripts/build/binutils/sstrip.sh"
>> @@ -527,6 +528,7 @@
>>       do_cloog_get
>>       do_mpc_get
>>       do_libelf_get
>> +    do_zlib_get
>>       do_binutils_get
>>       do_elf2flt_get
>>       do_sstrip_get
>> @@ -557,6 +559,7 @@
>>           do_cloog_extract
>>           do_mpc_extract
>>           do_libelf_extract
>> +        do_zlib_extract
>>           do_binutils_extract
>>           do_elf2flt_extract
>>           do_sstrip_extract
>> diff --git a/steps.mk b/steps.mk
>> --- a/steps.mk
>> +++ b/steps.mk
>> @@ -23,6 +23,7 @@
>>               cloog               \
>>               mpc                 \
>>               libelf              \
>> +            zlib                \
>>               binutils            \
>>               elf2flt             \
>>               sstrip              \
>>
>> --
>> For unsubscribe information see http://sourceware.org/lists.html#faq
>>
>>
>
> --
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'
>
> --
> For unsubscribe information see http://sourceware.org/lists.html#faq
>
>

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list