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

            Bug ID: 82829
           Summary: libsanitizer build failure on darwin10 (Snow Leopard)
                    due to missing getsectiondata
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Keywords: build
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: egallager at gcc dot gnu.org
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at 
gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-apple-darwin10
            Target: x86_64-apple-darwin10
             Build: x86_64-apple-darwin10

Trying to build gcc with MacPorts on OS X 10.6 results in the following error
in libsanitizer:

libtool: compile: 
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/build/./gcc/xgcc
-shared-libgcc
-B/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/build/./gcc
-nostdinc++
-L/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/build/x86_64-apple-darwin10/libstdc++-v3/src
-L/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/build/x86_64-apple-darwin10/libstdc++-v3/src/.libs
-L/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/build/x86_64-apple-darwin10/libstdc++-v3/libsupc++/.libs
-B/opt/local/x86_64-apple-darwin10/bin/ -B/opt/local/x86_64-apple-darwin10/lib/
-isystem /opt/local/x86_64-apple-darwin10/include -isystem
/opt/local/x86_64-apple-darwin10/sys-include -D_GNU_SOURCE -D_DEBUG
-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 -DCAN_SANITIZE_UB=0
-DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -I.
-I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan
-I.. -I
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/include
-I
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer
-Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC
-fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables
-fvisibility=hidden -Wno-variadic-macros -fno-ipa-icf
-I../../libstdc++-v3/include -I../../libstdc++-v3/include/x86_64-apple-darwin10
-I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/../libstdc++-v3/libsupc++
-std=gnu++11 -g -O2 -pipe -Os -MT asan_mac.lo -MD -MP -MF .deps/asan_mac.Tpo -c
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan/asan_mac.cc
 -fno-common -DPIC -o .libs/asan_mac.o
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan/asan_mac.cc:
In function 'void __asan::AsanApplyToGlobals(__asan::globals_op_fptr, const
void*)':
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan/asan_mac.cc:84:45:
error: 'getsectiondata' was not declared in this scope
   __asan_global *globals = (__asan_global *)getsectiondata(
                                             ^~~~~~~~~~~~~~
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan/asan_mac.cc:84:45:
note: suggested alternative: 'getsectdata'
   __asan_global *globals = (__asan_global *)getsectiondata(
                                             ^~~~~~~~~~~~~~
                                             getsectdata

Same error results when trying to build it manually with the same options that
MacPorts uses. When building manually on Snow Leopard I usually hack around it
with a patch like this:

---
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan/asan_mac.cc~
    2016-11-08 17:04:09.000000000 -0500
+++
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc7/libgcc/work/gcc-7.2.0/libsanitizer/asan/asan_mac.cc
     2017-11-03 16:10:03.000000000 -0400
@@ -81,10 +81,10 @@

   // Look up the __asan_globals section in that image and register its globals
   unsigned long size = 0;
-  __asan_global *globals = (__asan_global *)getsectiondata(
-      mh,
+  __asan_global *globals = (__asan_global *)getsectdata(
       "__DATA", "__asan_globals",
       &size);
+  (void)mh;

   if (!globals) return;
   if (size % sizeof(__asan_global) != 0) return;

This gets it to build but I don't know if it's actually correct. I'd almost
kinda prefer it if there were a configure flag to disable libsanitizer
completely for other occasions when it breaks...

Reply via email to