Hello community, here is the log from the commit of package ksh for openSUSE:12.3 checked in at 2013-02-01 15:48:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.3/ksh (Old) and /work/SRC/openSUSE:12.3/.ksh.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "ksh", Maintainer is "werner@suse.com" Changes: -------- --- /work/SRC/openSUSE:12.3/ksh/ksh.changes 2013-01-31 01:22:41.000000000 +0100 +++ /work/SRC/openSUSE:12.3/.ksh.new/ksh.changes 2013-02-01 15:48:54.000000000 +0100 @@ -1,0 +2,14 @@ +Wed Jan 30 11:17:34 UTC 2013 - werner@suse.de + +- Finally found the reason for bnc#795324, that is avoid to free + data which is used lateron in the has tree of reloaded shell + functions. + +------------------------------------------------------------------- +Thu Jan 17 11:19:59 UTC 2013 - werner@suse.de + +- Avoid to skip builtin functions of the gcc if the libast does not + provide them. Maybe related, to bnc#795324, where a crash happens + in libc strcmp() if optimized for sse2 on AMD Opteron[tm] 6128. + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ksh.spec ++++++ --- /var/tmp/diff_new_pack.P4w1nR/_old 2013-02-01 15:48:55.000000000 +0100 +++ /var/tmp/diff_new_pack.P4w1nR/_new 2013-02-01 15:48:55.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package ksh # -# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -109,11 +109,17 @@ Patch23: ksh93-foreground-prgrp.dif Patch24: ksh93-builtin.dif Patch25: ksh93-vmleak.dif +# PATCH-FIX-UPSTREAM ksh93-read-dont-ignore-esc.dif [bnc#765171] Patch26: ksh93-read-dont-ignore-esc.dif +# PATCH-EXTEND-UPSTREAM astksh_builtin_poll20120806_001.diff [bnc#779888] Patch27: astksh_builtin_poll20120806_001.diff +# PATCH-FIX-UPSTREAM ksh93-env.dif [bnc#785266] Patch28: ksh93-env.dif +# PATCH-FIX-UPSTREAM ksh93-zerofill.dif [bnc#785360] Patch29: ksh93-zerofill.dif +# PATCH-FIX-UPSTREAM ksh93-pathtemp.dif [bnc#786134] Patch30: ksh93-pathtemp.dif +# PATCH-FIX-UPSTREAM ksh93-dttree-crash.dif [bnc#795324] Patch31: ksh93-dttree-crash.dif Patch42: ksh-locale.patch @@ -246,32 +252,11 @@ # RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-funwind-tables/}" RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-fasynchronous-unwind-tables/}" - nobuiltin=${TMPDIR:-/tmp}/nobuiltin - set -C - (cat<<-EOF - -fno-builtin-putenv - -fno-builtin-setenv - -fno-builtin-strftime - -fno-builtin-strlcat - -fno-builtin-strlcpy - -fno-builtin-strptime - -fno-builtin-strtod - -fno-builtin-strtol - -fno-builtin-strtold - -fno-builtin-strtoll - -fno-builtin-strtoul - -fno-builtin-strtoull - EOF - find src/lib/ -name '*.h' | xargs \ - sed -nr '\@^extern[[:blank:]].*[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc).*\(@{ - s@[[:blank:]]+_ARG_@@ - s@[a-zA-Z_\*]+[[:blank:]]+@@g - s@([^\(\)]+)\(.*\);$@-fno-builtin-\1@; p}') | \ - sort -u > $nobuiltin - set +C # This package failed when testing with -Wl,-as-needed being default. # So we disable it here, if you want to retest, just delete this # comment and the line below. + RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-as-needed/-no-as-needed/}" + # Use POSIX as environment test -n "${!LC_*}" && unset "${!LC_*}" cflags () { @@ -405,7 +390,6 @@ LDSOFLG="" cflags -std=gnu99 RPM_OPT_FLAGS cflags -fPIC RPM_OPT_FLAGS - cflags @$nobuiltin RPM_OPT_FLAGS cflags -fno-strict-aliasing RPM_OPT_FLAGS cflags -fno-zero-initialized-in-bss RPM_OPT_FLAGS cflags -fno-delete-null-pointer-checks RPM_OPT_FLAGS @@ -414,8 +398,9 @@ cflags -fsigned-chars RPM_OPT_FLAGS cflags -fsigned-zeros RPM_OPT_FLAGS case "$(gcc --version | head -n 1)" in - *4.3.*) cflags -fno-tree-sink RPM_OPT_FLAGS ;; - *4.6.*) cflags -ftree-loop-linear RPM_OPT_FLAGS ;; + *4.[012345].*) + cflags -fno-tree-sink RPM_OPT_FLAGS ;; + *) cflags -ftree-loop-linear RPM_OPT_FLAGS ;; esac cflags -g2 RPM_OPT_FLAGS cflags -pipe RPM_OPT_FLAGS @@ -435,6 +420,51 @@ printenv getconf PAGESIZE + # + # Build libast first and then determine the library functions used + # by this library simply to avoid that gcc will overwrites those with + # its own builtin functions. + # + bin/package make ast-ast CCFLAGS="$RPM_OPT_FLAGS -fno-builtin" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" + root=$(echo ${PWD}/arch/linux*) + test -d $root || exit 1 + log=${root}/lib/package/gen/make.out + test -s $log || exit 1 + for lib in libast ; do + test -s ${root}/lib/${lib}.a || exit 1 + obj=$(ar t ${root}/lib/${lib}.a) + test $? -eq 0 || exit 1 + case "$lib" in + libast) + base=src/lib/$lib + vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@") + link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast $LDSOFLG" + ;; + esac + soname="-Wl,-soname,${lib}.so.${vers%.*},-stats" + pushd ${root}/${base} + $CC -shared $soname -o ${root}/lib/${lib}.so.${vers} ${obj} $link + ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so.${vers%.*} + ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so + popd + done + nobuiltin=${TMPDIR:-/tmp}/nobuiltin + nm -D ${root}/lib/libast.so | \ + grep -E 'T[[:blank:]](_ast_)?(str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \ + sed -r 's/[[:xdigit:]]+[[:blank:]]+T[[:blank:]]+(_ast_)?([^[:blank:]]*)/-fno-builtin-\2/' | \ + sort -u > $nobuiltin + rm -rf $root + case "$(gcc --version | head -n 1)" in + *4.[01].*) + set +x + for opt in $(cat $nobuiltin) ; do + cflags $opt RPM_OPT_FLAGS + done + set -x + ;; + *) cflags @$nobuiltin RPM_OPT_FLAGS + esac + bin/package make CCFLAGS="$RPM_OPT_FLAGS" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" root=$(echo ${PWD}/arch/linux*) test -d $root || exit 1 @@ -473,11 +503,6 @@ ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so popd done - nm -D ${root}/lib/libast.so | \ - grep -E 'T[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \ - awk '{print "-fno-builtin-"$3}' | \ - sort -u | \ - diff -u $nobuiltin - || true base=src/cmd/ksh93 test=${PWD}/${base}/tests OPATH=$PATH @@ -563,7 +588,7 @@ $bin --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "%{date}" "" "Korn shell utilities"/' > ../man/man1/$bin.1 done popd - test -d /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR} + test -d /tmp -a /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR} SHELL=$OSHELL PATH=$OPATH ++++++ ksh93-dttree-crash.dif ++++++ ++++ 614 lines (skipped) ++++ between /work/SRC/openSUSE:12.3/ksh/ksh93-dttree-crash.dif ++++ and /work/SRC/openSUSE:12.3/.ksh.new/ksh93-dttree-crash.dif ++++++ ksh93-gcc.dif ++++++ --- /var/tmp/diff_new_pack.P4w1nR/_old 2013-02-01 15:48:55.000000000 +0100 +++ /var/tmp/diff_new_pack.P4w1nR/_new 2013-02-01 15:48:55.000000000 +0100 @@ -39,3 +39,69 @@ /* * search for an include file * if (flags&SEARCH_INCLUDE) then +--- src/lib/libcmd/Mamfile ++++ src/lib/libcmd/Mamfile 2013-01-28 10:46:23.141952570 +0000 +@@ -429,6 +429,7 @@ make uniq.c + prev cmd.h implicit + done uniq.c + make vmstate.c ++prev ${PACKAGE_ast_INCLUDE}/sfdisc.h implicit + prev ${PACKAGE_ast_INCLUDE}/vmalloc.h implicit + prev cmd.h implicit + done vmstate.c +--- src/lib/libast/misc/optget.c ++++ src/lib/libast/misc/optget.c 2013-01-28 14:52:53.069452260 +0000 +@@ -2406,7 +2406,6 @@ opthelp(const char* oopts, const char* w + int bflags = 0; + int dflags = 0; + int hflags = 0; +- int sflags = 0; + int matched = 0; + int paragraph = 0; + Push_t* psp = 0; +@@ -4368,9 +4367,9 @@ optget(register char** argv, const char* + */ + + opt_info.assignment = 0; +- num = 1; +- w = v = 0; +- x = 0; ++ nov = no = num = 1; ++ e = w = v = 0; ++ n = x = 0; + for (;;) + { + if (!opt_info.offset) +@@ -4609,6 +4608,7 @@ optget(register char** argv, const char* + opt_info.num = (long)(opt_info.number = optnumber(opt_info.arg, &e, &err)); + if (err || e == opt_info.arg) + { ++ opt_info.num = (long)(opt_info.number = 0); + if (!err && (k & OPT_cache_optional)) + { + opt_info.arg = 0; +@@ -4636,6 +4636,7 @@ optget(register char** argv, const char* + opt_info.arg = 0; + opt_info.index--; + opt_info.offset = 0; ++ opt_info.num = (long)(opt_info.number = 0); + return c; + } + if (k & OPT_cache_string) +@@ -5213,7 +5214,7 @@ optget(register char** argv, const char* + + if (opt_info.num != LONG_MIN) + opt_info.num = (long)(opt_info.number = num); +- if ((n = *++s == '#') || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e)) ++ if ((n = (*++s == '#')) || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e)) + { + if (w) + { +@@ -5306,6 +5307,7 @@ optget(register char** argv, const char* + opt_info.index++; + if (*(s + 1) == '?' && (*opt_info.arg == '-' || (pass->flags & OPT_plus) && *opt_info.arg == '+') && *(opt_info.arg + 1)) + { ++ opt_info.num = (long)(opt_info.number = 0); + opt_info.index--; + opt_info.arg = 0; + } -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org