diff mbox

PATCH RFA: Build stages 2 and 3 with C++

Message ID CAGWvnyk1wmftNSi8Fp_-zAOR6+ibGmvkEr0qbrcu+TY3rQMGNw@mail.gmail.com
State New
Headers show

Commit Message

David Edelsohn July 20, 2011, 3:41 p.m. UTC
AIX needs libsupc++ for libstdc++ static linking.

        * Makefile.tpl (POSTSTAGE1_CONFIGURE_FLAGS): Add libsupc++ to
link directories.
        * Makefile.in: Rebuild.

Comments

Ian Lance Taylor July 20, 2011, 3:52 p.m. UTC | #1
David Edelsohn <dje.gcc@gmail.com> writes:

> AIX needs libsupc++ for libstdc++ static linking.
>
>         * Makefile.tpl (POSTSTAGE1_CONFIGURE_FLAGS): Add libsupc++ to
> link directories.
>         * Makefile.in: Rebuild.
>
> Index: Makefile.tpl
> ===================================================================
> --- Makefile.tpl        (revision 176487)
> +++ Makefile.tpl        (working copy)
> @@ -240,10 +240,13 @@
>         CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
>           -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
>           -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
> +         -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
>           -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
>           -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
>           -I$$s/libstdc++-v3/libsupc++ \
> -         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
> +         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
> +         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs";
> +         export CXX; \
>         CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD;
>  @endif target-libstdc++-v3-bootstrap

This is OK.

Thanks.

Ian
Thomas Schwinge July 20, 2011, 3:55 p.m. UTC | #2
Hi!

On Wed, 20 Jul 2011 11:41:37 -0400, David Edelsohn <dje.gcc@gmail.com> wrote:
> AIX needs libsupc++ for libstdc++ static linking.
> 
>         * Makefile.tpl (POSTSTAGE1_CONFIGURE_FLAGS): Add libsupc++ to
> link directories.
>         * Makefile.in: Rebuild.
> 
> Index: Makefile.tpl
> ===================================================================
> --- Makefile.tpl        (revision 176487)
> +++ Makefile.tpl        (working copy)
> @@ -240,10 +240,13 @@
>         CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
>           -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
>           -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
> +         -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
>           -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
>           -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
>           -I$$s/libstdc++-v3/libsupc++ \
> -         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
> +         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
> +         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs";
> +         export CXX; \
>         CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD;
>  @endif target-libstdc++-v3-bootstrap

Doesn't this need a backslash at the end of the second-last + line, too?

+         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs"; \
+         export CXX; \


Grüße,
 Thomas
David Edelsohn July 20, 2011, 7:28 p.m. UTC | #3
I now can get through the build of the compiler, but stage2 and stage3
libstdc++ and libsupc++ files have many comparison failures due to
tree.c:get_file_function_name() introducing explicit randomness to
produce different symbols for anonymous namespaces:

      /* Otherwise, the name must be unique across the entire link.
         We don't have anything that we know to be unique to this translation
         unit, so use what we do have and throw in some randomness.  */
      unsigned len;
      const char *name = weak_global_object_name;
      const char *file = main_input_filename;

      if (! name)
        name = "";
      if (! file)
        file = input_filename;

      len = strlen (file);
      q = (char *) alloca (9 * 2 + len + 1);
      memcpy (q, file, len + 1);

      sprintf (q + len, "_%08X_%08X", crc32_string (0, name),
               crc32_string (0, get_random_seed (false)));

producing differences like:

-       .lglobl
H.92.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionC2Ev
-       .lglobl
H.100.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionC1Ev
-       .lglobl
H.114.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionD2Ev
-       .lglobl
H.121.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_8F8DBED417uncatch_exceptionD1Ev
+       .lglobl
H.92.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionC2Ev
+       .lglobl
H.100.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionC1Ev
+       .lglobl
H.114.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionD2Ev
+       .lglobl
H.121.._ZN10__cxxabiv176_GLOBAL__N__farm_dje_src_src_libstdc___v3_libsupc___vec.cc_00000000_2322ABD117uncatch_exceptionD1Ev


- David
diff mbox

Patch

Index: Makefile.tpl
===================================================================
--- Makefile.tpl        (revision 176487)
+++ Makefile.tpl        (working copy)
@@ -240,10 +240,13 @@ 
        CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
          -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
          -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
+         -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
          -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
          -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
          -I$$s/libstdc++-v3/libsupc++ \
-         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
+         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
+         -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs";
+         export CXX; \
        CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD;
 @endif target-libstdc++-v3-bootstrap