のろのろとgcc 4.8.1を作ってみる(その6) パッチ編

本文書くのは後回しにして、まずは差分パッチ情報だけ。一応、このパッチは、gcc v4.8.1+前提のソースに対して当てるもので、2013/6/27のパッチを当てた後の環境に当てるものではないので、注意されたし。

パッチソースの変換

毎度の事でスマンです。パッチソースをそのまま貼り付けているので、コピペするとタブ文字がスペースになってしまい、パッチとして役立たずになるので、本来のパッチに戻す作業です(正確には戻しきれていませんが、動作するので無視しています)。いい加減、物置を探さないといかんですね。

$ perl -e 'while(<>) {
  $LAST=$_;
  if(/^\s+(\$\(LIBIBERTY.*\))/) {
    print " \t$1\n";
  } elsif(/^([+-])\s+(\$\(ZLIB.*\))/) {
    print "$1\t$2\n";
  } elsif(/^\s+(and return it\.  \*\/)/) {
    print " \t $1\n";
  } elsif(/^\s+(\/\* If all.+\*\/)/) {
    print " \t$1\n";
  } elsif(/^\s+(.+xstrdup.+;)/) {
    print " \t$1\n";
  } else {
    if(/\r$/) {
      print "$`\n";
    } else {
      print;
    }
  }
}
END {
  if($LAST !~ /\n$/) {
    print "\n";
  }
  if($LAST !~ /^\r?\n$/) {
    print "\n";
  }
}' < patch.txt > diff-gcc-4.8.1-1.patch

パッチソース

上記perlを動作させる所に、patch.txtとして保存してください。保存方法は、Windowsのメモ帳の保存でも構いません。


patch.txt

diff -Naru gcc-4.8.1/gcc/Makefile.in gcc-4.8.1-1/gcc/Makefile.in
--- gcc-4.8.1/gcc/Makefile.in   2013-05-22 01:00:49 +0900
+++ gcc-4.8.1-1/gcc/Makefile.in 2013-06-30 11:52:48 +0900
@@ -1021,7 +1021,7 @@
 LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
        $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
 BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-       $(ZLIB)
+       $(ZLIB) $(LIBIBERTY)
 # Any system libraries needed just for GNAT.
 SYSLIBS = @GNAT_LIBEXC@

diff -Naru gcc-4.8.1/gcc/configure gcc-4.8.1-1/gcc/configure
--- gcc-4.8.1/gcc/configure     2013-05-08 20:36:36 +0900
+++ gcc-4.8.1-1/gcc/configure   2013-06-30 01:50:39 +0900
@@ -27236,8 +27236,8 @@
 $as_echo_n "checking for exported symbols... " >&6; }
   if test "x$export_sym_check" != x; then
     echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
-    ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
-    if $export_sym_check conftest | grep foobar > /dev/null; then
+    ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
+    if $export_sym_check conftest$ac_exeext | grep foobar > /dev/null; then
       : # No need to use a flag
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -27246,8 +27246,8 @@
 $as_echo "yes" >&6; }
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5
 $as_echo_n "checking for -rdynamic... " >&6; }
-      ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
-      if $export_sym_check conftest | grep foobar > /dev/null; then
+      ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
+      if $export_sym_check conftest$ac_exeext | grep foobar > /dev/null; then
         plugin_rdynamic=yes
         pluginlibs="-rdynamic"
       else
diff -Naru gcc-4.8.1/isl/Makefile.in gcc-4.8.1-1/isl/Makefile.in
--- gcc-4.8.1/isl/Makefile.in   2012-12-10 19:58:03 +0900
+++ gcc-4.8.1-1/isl/Makefile.in 2013-06-30 11:11:59 +0900
@@ -385,7 +385,7 @@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
+LIBS = @LIBS@ -L../libiberty -liberty
 LIBTOOL = @LIBTOOL@
 LIB_CLANG_EDIT = @LIB_CLANG_EDIT@
 LIPO = @LIPO@
diff -Naru gcc-4.8.1/libiberty/make-temp-file.c gcc-4.8.1-1/libiberty/make-temp-file.c
--- gcc-4.8.1/libiberty/make-temp-file.c        2011-01-04 05:52:22 +0900
+++ gcc-4.8.1-1/libiberty/make-temp-file.c      2013-06-30 01:50:39 +0900
@@ -55,12 +55,18 @@
 #define DIR_SEPARATOR '/'
 #endif

+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#define IS_DIR_SEPARATOR(ch) \
+    (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif
+
 /* Name of temporary file.
    mktemp requires 6 trailing X's.  */
 #define TEMP_FILE "ccXXXXXX"
 #define TEMP_FILE_LEN (sizeof(TEMP_FILE) - 1)

-#if !defined(_WIN32) || defined(__CYGWIN__)
+#if !defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)

 /* Subroutine of choose_tmpdir.
    If BASE is non-NULL, return it.
@@ -107,7 +113,7 @@
 {
   if (!memoized_tmpdir)
     {
-#if !defined(_WIN32) || defined(__CYGWIN__)
+#if !defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
       const char *base = 0;
       char *tmpdir;
       unsigned int len;
@@ -141,12 +147,18 @@
       /* Append DIR_SEPARATOR to the directory we've chosen
         and return it.  */
       len = strlen (base);
-      tmpdir = XNEWVEC (char, len + 2);
-      strcpy (tmpdir, base);
-      tmpdir[len] = DIR_SEPARATOR;
-      tmpdir[len+1] = '\0';
+      if(IS_DIR_SEPARATOR(base[len-1])) {
+          tmpdir = XNEWVEC (char, len + 1);
+          strcpy (tmpdir, base);
+      } else {
+          tmpdir = XNEWVEC (char, len + 2);
+          strcpy (tmpdir, base);
+          tmpdir[len] = DIR_SEPARATOR;
+          ++len;
+      }
+      tmpdir[len] = '\0';
       memoized_tmpdir = tmpdir;
-#else /* defined(_WIN32) && !defined(__CYGWIN__) */
+#else /* defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) */
       DWORD len;

       /* Figure out how much space we need.  */
@@ -163,7 +175,7 @@
       if (!memoized_tmpdir)
        /* If all else fails, use the current directory.  */
        memoized_tmpdir = xstrdup (".\\");
-#endif /* defined(_WIN32) && !defined(__CYGWIN__) */
+#endif /* defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) */
     }

   return memoized_tmpdir;
diff -Naru gcc-4.8.1/libstdc++-v3/configure gcc-4.8.1-1/libstdc++-v3/configure
--- gcc-4.8.1/libstdc++-v3/configure    2013-05-25 03:10:37 +0900
+++ gcc-4.8.1-1/libstdc++-v3/configure  2013-06-30 01:50:39 +0900
@@ -19375,6 +19375,10 @@

   ac_has_clock_monotonic=no
   ac_has_clock_realtime=no
+  ac_has_nanosleep=no
+  ac_has_clock_monotonic_syscall=no
+  ac_has_sleep=no
+  ac_has_usleep=no
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libstdcxx_time" >&5
 $as_echo "$enable_libstdcxx_time" >&6; }