This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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.

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]