https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87257

            Bug ID: 87257
           Summary: i386 multilib build should be disabled for
                    x86_64-apple-darwin18
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: howarth.at.gcc at gmail dot com
  Target Milestone: ---

The Xcode 10 release on x86_64-apple-darwin18 obsoletes i386 code generation as
its default behavior. This was achieved by having the 10.14 SDK's buried
/usr/lib/libSystem.tbd only expose the x86_64 symbols contained in the fat root
level /usr/lib/libSystem.dylib.   

$ clang -m32 hello.c
ld: warning: The i386 architecture is deprecated for macOS (remove from the
Xcode build setting: ARCHS)
ld: warning: ignoring file
/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd,
missing required architecture i386 in file
/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libSystem.tbd
Undefined symbols for architecture i386:
  "_printf", referenced from:
      _main in hello-04a500.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

This can be fudged by installing the fall back header package for / so that the
/usr/lib/libSystem.dylib is used, but that package is slated for removal in a
later OS release and its use highly discouraged. So FSF gcc's configure should
be modified to default to disable-multilib for darwin18 and later.

Reply via email to