#61130 closed defect (fixed)
gcc8: jit/jit-result.c:52:3: error: 'dlclose' was not declared in this scope
Reported by: | kencu (Ken) | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | landonf (Landon Fuller), chrstphrchvz (Christopher Chavez), dsedivec, cooljeanius (Eric Gallager) | |
Port: | gcc8 |
Description
The recent update to all the gcc versions to include jit code has broken the 32bit builds, at least on 10.6 where I live.
The i386 build is broken, and the universal build is also broken.
I've pegged back my gcc version to the pre-jit version on suitable systems until this is sorted out.
I haven't tried the full gamut of all the gcc versions on all possible systems yet, as I don't have 102,000 days to devote to that project :>
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:52:3: error: 'dlclose' was not declared in this scope dlclose (m_dso_handle); ^~~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:52:3: note: suggested alternative: 'close' dlclose (m_dso_handle); ^~~~~~~ close /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c: In member function 'void* gcc::jit::result::get_code(const char*)': /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:78:3: error: 'dlerror' was not declared in this scope dlerror (); ^~~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:78:3: note: suggested alternative: 'perror' dlerror (); ^~~~~~~ perror /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:80:10: error: 'dlsym' was not declared in this scope code = dlsym (m_dso_handle, funcname); ^~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c: In member function 'void* gcc::jit::result::get_global(const char*)': /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:105:3: error: 'dlerror' was not declared in this scope dlerror (); ^~~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:105:3: note: suggested alternative: 'perror' dlerror (); ^~~~~~~ perror /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-result.c:107:12: error: 'dlsym' was not declared in this scope global = dlsym (m_dso_handle, name); ^~~~~ make[3]: *** [jit/jit-result.o] Error 1 make[3]: *** Waiting for unfinished jobs.... /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c: In member function 'gcc::jit::result* gcc::jit::playback::context::dlopen_built_dso()': /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2599:3: error: 'dlerror' was not declared in this scope dlerror (); ^~~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2599:3: note: suggested alternative: 'error' dlerror (); ^~~~~~~ error /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2602:6: error: 'RTLD_NOW' was not declared in this scope RTLD_NOW | RTLD_LOCAL); ^~~~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2602:6: note: suggested alternative: 'CLD_NOOP' RTLD_NOW | RTLD_LOCAL); ^~~~~~~~ CLD_NOOP /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2602:17: error: 'RTLD_LOCAL' was not declared in this scope RTLD_NOW | RTLD_LOCAL); ^~~~~~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2602:17: note: suggested alternative: 'TV_LOAD' RTLD_NOW | RTLD_LOCAL); ^~~~~~~~~~ TV_LOAD /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2601:12: error: 'dlopen' was not declared in this scope handle = dlopen (m_tempdir->get_path_so_file (), ^~~~~~ /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.4.0/gcc/jit/jit-playback.c:2601:12: note: suggested alternative: 'open' handle = dlopen (m_tempdir->get_path_so_file (), ^~~~~~ open make[3]: *** [jit/jit-playback.o] Error 1
Change History (12)
comment:1 Changed 4 years ago by kencu (Ken)
comment:2 Changed 4 years ago by kencu (Ken)
Cc: | landonf added |
---|
comment:3 Changed 4 years ago by chrstphrchvz (Christopher Chavez)
These functions are defined in dlfcn.h; is that being properly included in gcc/system.h, which in turn jit-result.c and jit-playback.c include?
comment:4 Changed 4 years ago by chrstphrchvz (Christopher Chavez)
Cc: | chrstphrchvz added |
---|
comment:6 Changed 4 years ago by kencu (Ken)
Thre is some information about building gcc with the jit here <https://gcc.gnu.org/onlinedocs/gcc-10.2.0/jit/internals/index.html>
comment:7 Changed 4 years ago by dsedivec
Cc: | dsedivec added |
---|
comment:8 Changed 3 years ago by kencu (Ken)
comment:9 Changed 3 years ago by kencu (Ken)
so getting past the missing header was not hard:
--- gcc/jit/libgccjit.h.orig 2021-06-14 14:22:15.000000000 -0700 +++ gcc/jit/libgccjit.h 2021-06-14 14:22:49.000000000 -0700 @@ -22,6 +22,10 @@ #include <stdio.h> +#if defined (HAVE_DLFCN_H) +#include <dlfcn.h> +#endif + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */
but that later led to this linkage failure anyway:
opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/./prev-gcc/xg++ -B/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/./prev-gcc/ -B/opt/local/i386-apple-darwin10/bin/ -nostdinc++ -B/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/prev-i386-apple-darwin10/libstdc++-v3/src/.libs -B/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/prev-i386-apple-darwin10/libstdc++-v3/libsupc++/.libs -isystem /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/prev-i386-apple-darwin10/libstdc++-v3/include/i386-apple-darwin10 -isystem /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/prev-i386-apple-darwin10/libstdc++-v3/include -isystem /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/libstdc++-v3/libsupc++ -L/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/prev-i386-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_gcc8/gcc8/work/build/prev-i386-apple-darwin10/libstdc++-v3/libsupc++/.libs -fno-PIE -c -DIN_GCC_FRONTEND -g -O2 -mdynamic-no-pic -gtoggle -DIN_GCC -fPIC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -I. -I. -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc/. -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc/../include -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc/../libcpp/include -I/opt/local/include -I/opt/local/include -I/opt/local/include -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc/../libdecnumber -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc/../libdecnumber/dpd -I../libdecnumber -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/gcc-8.5.0/gcc/../libbacktrace -I/opt/local/include -o cc1-checksum.o -MT cc1-checksum.o -MMD -MP -MF ./.deps/cc1-checksum.TPo cc1-checksum.c cc1plus: warning: '-mdynamic-no-pic' overrides '-fpic', '-fPIC', '-fpie' or '-fPIE' ld: illegal text-relocation to attributes_table in attribs.o from find_attribute_namespace(char const*) [clone .part.17] in attribs.o for architecture i386 collect2: error: ld returned 1 exit status make[3]: *** [libgccjit.0.dylib] Error 1 make[3]: *** Waiting for unfinished jobs.... make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build/gcc' make[2]: *** [all-stage2-gcc] Error 2 make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build' make[1]: *** [stage2-bubble] Error 2 make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build' make: *** [bootstrap-lean] Error 2 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc8/gcc8/work/build" && /usr/bin/make -j4 -w bootstrap-lean
and of course that ld: illegal text-relocation
is a common error on i386 32 bit systems, but it just indicates that -- pretty sure -- nobody has ever built this libjit component for i386 darwin, or at least not in a while.
comment:10 Changed 3 years ago by kencu (Ken)
Resolution: | → fixed |
---|---|
Status: | new → closed |
This is as fixed as I will do here. If upstream fixes the build of libgccjit on i386 gcc8 (don't hold your breath) then I'll move that fix back down here to the ports tree.
comment:11 Changed 3 years ago by cooljeanius (Eric Gallager)
Cc: | cooljeanius added |
---|
comment:12 Changed 3 years ago by cooljeanius (Eric Gallager)
Is there an upstream bug open about this?
I understand the jit is mostly to support building some kind of lisp code compiler on to be used on emacs.
Hopefully this is isn't too hard to fix, with some missing header perhaps.