のろのろと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; }