#67384 closed defect (fixed)

gcc10-bootstrap @10.4.0 again broken on Rosetta due to attempting to build ppc64

Reported by: barracuda156 Owned by: catap (Kirill A. Korinsky)
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: powerpc, snowleopard, rosetta Cc:
Port: gcc10-bootstrap

Description

/usr/bin/ranlib: file: libgcc_eh.a(darwin-fallback.o) has no symbols
ranlib libgcc_eh.a
ranlib: file: libgcc_eh.a(darwin-fallback.o) has no symbols
# Early copyback; see "all" above for the rationale.  The
# early copy is necessary so that the gcc -B options find
# the right startup files when linking shared libgcc.
/bin/sh /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/libgcc/../mkinstalldirs ../../.././gcc/ppc64
parts="crt3.o libd10-uwfef.a crttms.o crttme.o libemutls_w.a crt2.o crt3_2.o libef_ppc.a dw_ppc.o";					\
	for file in $parts; do					\
	  rm -f ../../.././gcc/ppc64/$file;		\
	  /usr/bin/install -c -m 644 $file ../../.././gcc/ppc64/;	\
	  case $file in 					\
	    *.a)						\
	      ranlib ../../.././gcc/ppc64/$file ;;	\
	  esac;							\
	done
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/build/./gcc/xgcc -B/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/build/./gcc/ -B/opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/bin/ -B/opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/lib/ -isystem /opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/include -isystem /opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/sys-include   -fno-checking -g -O2 -pipe -arch ppc -m64 -O2  -g -O2 -pipe -arch ppc -DIN_GCC    -W -Wall -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -mmacosx-version-min=10.4 -Wa,-force_cpusubtype_ALL -fno-common -mlong-double-128 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -mmacosx-version-min=10.4 -Wa,-force_cpusubtype_ALL -fno-common -mlong-double-128 -I. -I. -I../../.././gcc -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/libgcc -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/libgcc/. -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/libgcc/../gcc -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/libgcc/../include    -o darwin-tramp.o -MT darwin-tramp.o -MD -MP -MF darwin-tramp.dep -c -xassembler-with-cpp -include darwin-tramp.vis /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/libgcc/config/rs6000/darwin-tramp.S
xgcc: warning: m64 conflicts with ppc (arch flags ignored)
mkdir -p ppc64
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/build/./gcc/xgcc -B/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/build/./gcc/ -B/opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/bin/ -B/opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/lib/ -isystem /opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/include -isystem /opt/local/libexec/gcc10-bootstrap/powerpc-apple-darwin10.8.0/sys-include   -fno-checking -O2  -g -O2 -pipe -arch ppc -DIN_GCC    -W -Wall -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -mmacosx-version-min=10.4 -Wa,-force_cpusubtype_ALL -fno-common -mlong-double-128 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector  -m64 -dynamiclib -nodefaultlibs \
	-install_name /opt/local/libexec/gcc10-bootstrap/lib/libgcc_ehs.1.1.dylib \
	-o ppc64/libgcc_ehs.dylib -compatibility_version 1 -current_version 1.1 \
	unwind-dw2_s.o unwind-dw2-fde-darwin_s.o unwind-c_s.o darwin-world_s.o darwin-fallback.o -lSystem
xgcc: warning: m64 conflicts with ppc (arch flags ignored)
ld: warning: in /usr/lib/dylib1.o, missing required architecture ppc64 in file
ld: warning: in /usr/lib/libSystem.dylib, missing required architecture ppc64 in file
Undefined symbols:
  "_getsectdatafromheader_64", referenced from:
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
  "__keymgr_unlock_processwide_ptr", referenced from:
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
  "__keymgr_set_and_unlock_processwide_ptr", referenced from:
      _live_image_destructor in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
  "_malloc", referenced from:
      _search_object in unwind-dw2-fde-darwin_s.o
      _search_object in unwind-dw2-fde-darwin_s.o
      ___register_frame in unwind-dw2-fde-darwin_s.o
      ___register_frame_table in unwind-dw2-fde-darwin_s.o
  "__keymgr_get_and_lock_processwide_ptr", referenced from:
      _live_image_destructor in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
  "_calloc", referenced from:
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
  "_free", referenced from:
      _search_object in unwind-dw2-fde-darwin_s.o
      ___deregister_frame_info_bases in unwind-dw2-fde-darwin_s.o
      _live_image_destructor in unwind-dw2-fde-darwin_s.o
      _live_image_destructor in unwind-dw2-fde-darwin_s.o
      ___deregister_frame in unwind-dw2-fde-darwin_s.o
  "_pthread_once", referenced from:
      _uw_init_context_1 in unwind-dw2_s.o
  "_abort", referenced from:
      _uw_install_context_1 in unwind-dw2_s.o
      _read_encoded_value in unwind-dw2_s.o
      _execute_stack_op in unwind-dw2_s.o
      _uw_update_context_1 in unwind-dw2_s.o
      _execute_cfa_program in unwind-dw2_s.o
      _uw_frame_state_for in unwind-dw2_s.o
      _uw_init_context_1 in unwind-dw2_s.o
      __Unwind_RaiseException_Phase2 in unwind-dw2_s.o
      __Unwind_ForcedUnwind_Phase2 in unwind-dw2_s.o
      __Unwind_GetGR in unwind-dw2_s.o
      __Unwind_SetGR in unwind-dw2_s.o
      __Unwind_RaiseException in unwind-dw2_s.o
      __Unwind_Resume in unwind-dw2_s.o
      __Unwind_Resume_or_Rethrow in unwind-dw2_s.o
      __Unwind_Backtrace in unwind-dw2_s.o
      _read_encoded_value_with_base in unwind-dw2-fde-darwin_s.o
      _fde_single_encoding_compare in unwind-dw2-fde-darwin_s.o
      _fde_mixed_encoding_compare in unwind-dw2-fde-darwin_s.o
      _fde_mixed_encoding_compare in unwind-dw2-fde-darwin_s.o
      _classify_object_over_fdes in unwind-dw2-fde-darwin_s.o
      _classify_object_over_fdes in unwind-dw2-fde-darwin_s.o
      _add_fdes in unwind-dw2-fde-darwin_s.o
      _add_fdes in unwind-dw2-fde-darwin_s.o
      _linear_search_fdes in unwind-dw2-fde-darwin_s.o
      _linear_search_fdes in unwind-dw2-fde-darwin_s.o
      _search_object in unwind-dw2-fde-darwin_s.o
      _search_object in unwind-dw2-fde-darwin_s.o
      ___deregister_frame_info_bases in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      __Unwind_Find_FDE in unwind-dw2-fde-darwin_s.o
      _base_of_encoded_value in unwind-c_s.o
      _read_encoded_value_with_base in unwind-c_s.o
      ___gcc_personality_v0 in unwind-c_s.o
  "_memset", referenced from:
      _uw_frame_state_for in unwind-dw2_s.o
      _uw_init_context_1 in unwind-dw2_s.o
      ___frame_state_for in unwind-dw2_s.o
  "_strlen", referenced from:
      _uw_frame_state_for in unwind-dw2_s.o
      _get_cie_encoding in unwind-dw2-fde-darwin_s.o
  "_memcpy", referenced from:
      _uw_install_context_1 in unwind-dw2_s.o
      _uw_update_context_1 in unwind-dw2_s.o
      _execute_cfa_program in unwind-dw2_s.o
      _execute_cfa_program in unwind-dw2_s.o
      __Unwind_RaiseException in unwind-dw2_s.o
      __Unwind_RaiseException in unwind-dw2_s.o
      __Unwind_ForcedUnwind in unwind-dw2_s.o
      __Unwind_Resume in unwind-dw2_s.o
      __Unwind_Resume_or_Rethrow in unwind-dw2_s.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make[5]: *** [libgcc_ehs.dylib] Error 1

We only need universal for PPC on 10.5. Not on 10.6 (whether native or Rosetta).

Attachments (1)

gcc10-bootstrap_10.4.0_log.txt (7.0 MB) - added by barracuda156 12 months ago.

Change History (11)

comment:1 Changed 12 months ago by barracuda156

Keywords: powerpc snowleopard rosetta added
Port: gcc10-bootstrap added; powerpc snowleopard rosetta removed

Changed 12 months ago by barracuda156

comment:2 Changed 12 months ago by catap (Kirill A. Korinsky)

Provided log file contains:

:debug:configure system:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/build" && /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/configure --prefix=/opt/local/libexec/gcc10-bootstrap --enable-languages=c,c++,objc,obj-c++ --enable-bootstrap --with-system-zlib --without-zstd --disable-nls --disable-tls --enable-multilib --enable-multiarch --with-bugurl=https://trac.macports.org/newticket --enable-targets=powerpc-apple-darwin10,i386-apple-darwin10,x86_64-apple-darwin10 

which means that the condition from a Portfile

if {${universal_possible} && [variant_isset universal]} {

is true here.

I assume that if you disable the universal variant by adding -universal, it will work.

comment:3 in reply to:  2 ; Changed 12 months ago by barracuda156

Replying to catap:

Provided log file contains:

:debug:configure system:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/build" && /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc10-bootstrap/gcc10-bootstrap/work/gcc-10.4.0/configure --prefix=/opt/local/libexec/gcc10-bootstrap --enable-languages=c,c++,objc,obj-c++ --enable-bootstrap --with-system-zlib --without-zstd --disable-nls --disable-tls --enable-multilib --enable-multiarch --with-bugurl=https://trac.macports.org/newticket --enable-targets=powerpc-apple-darwin10,i386-apple-darwin10,x86_64-apple-darwin10 

which means that the condition from a Portfile

if {${universal_possible} && [variant_isset universal]} {

is true here.

I assume that if you disable the universal variant by adding -universal, it will work.

I think it should be set to non-universal on darwin10 when build is for ppc, since ppc64 is not supported in any version of 10.6. That is, in the portfile, to unbreak it for everyone. Perhaps on Tiger also.

comment:4 in reply to:  3 Changed 12 months ago by catap (Kirill A. Korinsky)

Replying to barracuda156:

I think it should be set to non-universal on darwin10 when build is for ppc, since ppc64 is not supported in any version of 10.6. That is, in the portfile, to unbreak it for everyone. Perhaps on Tiger also.

Perhaps.

Anyway, it works fine on BuildBot: https://build.macports.org/builders/ports-10.6_x86_64-builder/builds/153158

comment:5 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)

Yes, but the Intel buildbot workers build for Intel whereas Sergey configures his Intel Snow Leopard system to build for PowerPC, hence the problem. (I believe this configuration is what he means when he uses the term "Rosetta".) Theoretically MacPorts supports the notion of cross-compilation but in practice many ports are not prepared to deal with that.

comment:6 Changed 12 months ago by catap (Kirill A. Korinsky)

I've added into macports.conf the block to the end:

universal_archs
build_arch              ppc
cxx_stdlib              libstdc++
buildfromsource         always

and it literally switched off universal build, which disabled multilib and multiarch and allows to build it.

Also, at build log I see that it uses build folder, not build-ppc that means that it doesn't build universal build but configure string contains --enable-targets=powerpc-apple-darwin10,i386-apple-darwin10,x86_64-apple-darwin10 which is added by lines:

    set universal_targets ""
    foreach arch ${universal_archs_supported} {
        set universal_targets "${universal_targets},$merger_host(${arch})"
    }

    ui_debug "Selected targets: ${universal_targets}"

    if { [string length ${universal_targets}] > 0 } {
        configure.args-append \
            --enable-targets=[string replace ${universal_targets} 0 0]
    }

inside that if. That shuldn't be possible. Thus, I haven't see inside log a line Selected targets.

All of this puzzling me.

comment:7 in reply to:  6 ; Changed 12 months ago by barracuda156

Replying to catap:

I've added into macports.conf the block to the end:

universal_archs
build_arch              ppc
cxx_stdlib              libstdc++
buildfromsource         always

and it literally switched off universal build, which disabled multilib and multiarch and allows to build it.

Also, at build log I see that it uses build folder, not build-ppc that means that it doesn't build universal build but configure string contains --enable-targets=powerpc-apple-darwin10,i386-apple-darwin10,x86_64-apple-darwin10 which is added by lines:

    set universal_targets ""
    foreach arch ${universal_archs_supported} {
        set universal_targets "${universal_targets},$merger_host(${arch})"
    }

    ui_debug "Selected targets: ${universal_targets}"

    if { [string length ${universal_targets}] > 0 } {
        configure.args-append \
            --enable-targets=[string replace ${universal_targets} 0 0]
    }

inside that if. That shuldn't be possible. Thus, I haven't see inside log a line Selected targets.

All of this puzzling me.

I have checked now, I have this is macports.conf on 10.6.8:

build_arch			ppc
universal_archs		ppc i386 x86_64

Why it is there is because darwinbuild is set to require universal build that includes Intel, and I hoped to fix it (the port is broken, as of now).

Last edited 12 months ago by barracuda156 (previous) (diff)

comment:8 in reply to:  7 Changed 12 months ago by catap (Kirill A. Korinsky)

Replying to barracuda156:

I have checked now, I have this is macports.conf on 10.6.8:

build_arch			ppc
universal_archs		ppc i386 x86_64

Why it is there is because darwinbuild is set to require universal build that includes Intel, and I hoped to fix it (the port is broken, as of now).

When port build gcc10-bootstrap 'configure.universal_archs=ppc i386 x86_64' should repeat your build. Am I right?

I've run that command and it uses build-ppc folder to build it => munuiversal PG works. This is the second hm from your log, because I haven't found any trace of that folder in it.

Let see how it goes on my end. I assume that it should fail relatively soon.

comment:9 Changed 12 months ago by catap (Kirill A. Korinsky)

comment:10 Changed 12 months ago by catap (Kirill A. Korinsky)

Resolution: fixed
Status: assignedclosed

In 9f8b3b4f891a9b1c8289d66af8fd6893f77918ec/macports-ports (master):

gcc10-bootstrap: disable multilib and multiarch on 10.6 PPC

Closes: #67384

Note: See TracTickets for help on using tickets.