Hello community,

here is the log from the commit of package ksh for openSUSE:Factory checked in 
at 2013-02-01 15:48:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ksh (Old)
 and      /work/SRC/openSUSE:Factory/.ksh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ksh", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ksh/ksh.changes  2012-12-28 15:03:17.000000000 
+0100
+++ /work/SRC/openSUSE:Factory/.ksh.new/ksh.changes     2013-02-01 
15:48:50.000000000 +0100
@@ -1,0 +2,14 @@
+Wed Jan 30 11:17:34 UTC 2013 - [email protected]
+
+- 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 - [email protected]
+
+- 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.Pt8mzw/_old  2013-02-01 15:48:52.000000000 +0100
+++ /var/tmp/diff_new_pack.Pt8mzw/_new  2013-02-01 15:48:52.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:Factory/ksh/ksh93-dttree-crash.dif
++++ and /work/SRC/openSUSE:Factory/.ksh.new/ksh93-dttree-crash.dif

++++++ ksh93-gcc.dif ++++++
--- /var/tmp/diff_new_pack.Pt8mzw/_old  2013-02-01 15:48:52.000000000 +0100
+++ /var/tmp/diff_new_pack.Pt8mzw/_new  2013-02-01 15:48:52.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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to