* mac osx 10.2 guile 1.6.0 guile-snarf @ 2002-10-12 15:54 Bill Schottstaedt 2002-10-18 21:38 ` Marius Vollmer 0 siblings, 1 reply; 5+ messages in thread From: Bill Schottstaedt @ 2002-10-12 15:54 UTC (permalink / raw) On Mac OSX 10.2, guile 1.6.0 guile-snarf screws up (It's ok in guile 1.4). I can send details, but I'm told that someone is already looking into this bug -- what is its status? _______________________________________________ Bug-guile mailing list Bug-guile@gnu.org http://mail.gnu.org/mailman/listinfo/bug-guile ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac osx 10.2 guile 1.6.0 guile-snarf 2002-10-12 15:54 mac osx 10.2 guile 1.6.0 guile-snarf Bill Schottstaedt @ 2002-10-18 21:38 ` Marius Vollmer 2002-10-20 10:43 ` Bill Schottstaedt 0 siblings, 1 reply; 5+ messages in thread From: Marius Vollmer @ 2002-10-18 21:38 UTC (permalink / raw) Cc: bug-guile Bill Schottstaedt <bil@ccrma.Stanford.EDU> writes: > On Mac OSX 10.2, guile 1.6.0 guile-snarf screws up (It's ok in guile 1.4). > I can send details, but I'm told that someone is already looking into this > bug -- what is its status? I'm not aware of such a bug (which is not saying much). Can you send details? -- GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405 _______________________________________________ Bug-guile mailing list Bug-guile@gnu.org http://mail.gnu.org/mailman/listinfo/bug-guile ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac osx 10.2 guile 1.6.0 guile-snarf 2002-10-18 21:38 ` Marius Vollmer @ 2002-10-20 10:43 ` Bill Schottstaedt 2002-11-03 15:52 ` Marius Vollmer 0 siblings, 1 reply; 5+ messages in thread From: Bill Schottstaedt @ 2002-10-20 10:43 UTC (permalink / raw) Cc: bug-guile >> On Mac OSX 10.2, guile 1.6.0 guile-snarf screws up (It's ok in guile 1.4). >> I can send details, but I'm told that someone is already looking into this >> bug -- what is its status? > > I'm not aware of such a bug (which is not saying much). Can you send > details? In either guile 1.6.0 or the CVS guile, the build process (gcc 3.1) gets many errors during the gcc -E call in guile-snarf: + cpp_ok_p=true + grep '^ *\^ *\^' /tmp/snarf.5239 + sed -e 's/^ *\^ *\^//' -e 's/\^\ *:\ *\^.*/;/' + true + exit 0 + rm -f /tmp/snarf.5239 ./guile-snarf -o eval.x eval.c -DHAVE_CONFIG_H -I.. -I.. -I../libguile-ltdl -g -O2 -Werror -Wall -Wmissing-prototypes + '[' x-o = x--help ']' + '[' x-o = x-o ']' + outfile=eval.x + shift + shift + cpp_ok_p=false + temp=/tmp/snarf.5245 + '[' x = x ']' + cpp=gcc -E + trap 'rm -f /tmp/snarf.5245' 0 1 2 15 + '[' '!' eval.x = - ']' + modern_snarf eval.c -DHAVE_CONFIG_H -I.. -I.. -I../libguile-ltdl -g -O2 -Werror -Wall -Wmissing-prototypes + echo '/* cpp arguments: eval.c' -DHAVE_CONFIG_H -I.. -I.. -I../libguile-ltdl -g -O2 -Werror -Wall '-Wmissing-prototypes */' + gcc -E -DSCM_MAGIC_SNARF_INITS -DSCM_MAGIC_SNARFER eval.c -DHAVE_CONFIG_H -I.. -I.. -I../libguile-ltdl -g -O2 -Werror -Wall -Wmissing-prototypes eval.c:247: illegal external declaration, found `^' eval.c:375: illegal external declaration, found `^' eval.c:431: illegal external declaration, found `^' eval.c:440: illegal external declaration, found `^' eval.c:482: illegal external declaration, found `^' (and others similar to this), but the output *.x files look OK. The build (CVS version of about 10 days ago) then stops at iselect.c line 636 with: gcc -DHAVE_CONFIG_H -I. -I. -I. -I.. -I.. -I../libguile-ltdl -g -O2 -Werror -Wall -Wmissing-prototypes -c iselect.c -Wp,-MD,.deps/iselect.TPlo -o iselect.o cc1: warnings being treated as errors iselect.c: In function `scm_internal_select': iselect.c:636: warning: implicit declaration of function `select' make[1]: *** [iselect.lo] Error 1 I believe this happens because select is defined in unistd.h and in iselect.c: #ifdef HAVE_UNISTD_H #include <unistd.h> #endif precedes the definition of HAVE_UNISTD_H in scmconfig.h loaded via __scm.h from iselect.h. After that we hit a duplicate definition of sleep in scmsigs.c line 70 -- MISSING_SLEEP_DECL was defined as 1 by configure but sleep is declared in unistd.h. I can't immediately see why the configure test (AC_EGREP_HEADER) screwed up. I made a quick guess at what this macro is doing: /Users/bill/test/g/guile/guile-core/libguile/ gcc -E /usr/include/unistd.h | egrep "sleep" unsigned int sleep ( unsigned int ) ; int usleep ( unsigned int ) ; Next, while building guile (the program) we get: gcc -g -O2 -Werror -Wall -Wmissing-prototypes -o guile .libs/guileS.o guile.o ./.libs/libguile.a /Users/bill/test/g/guile/guile-core/libguile-ltdl/.libs/libguile-ltdl.a -ldl -lm ld: Undefined symbols: ___libc_stack_end I couldn't find __libc_stack_end anywhere (hence another odd false-positive from configure), so I set it undefined, and in gc_os_dep.c, at the macosx check (ca. line 255) added __ppc__ since /Users/bill/cl/ touch foo.h; cpp -dM foo.h #define __MACH__ 1 #define __POWERPC__ 1 #define __NATURAL_ALIGNMENT__ 1 #define __STDC_HOSTED__ 1 #define __NO_INLINE__ 1 #define __APPLE__ 1 #define __ppc__ 1 #define __GNUC__ 1 #define __DYNAMIC__ 1 #define __BIG_ENDIAN__ 1 -> # if defined(macosx) || defined(__ppc__) This was ok until the end where the compiler complained about unused "result" at line 1849. I changed the code to: void *scm_get_stack_base() { # ifdef STACKBOTTOM return(STACKBOTTOM); # else word dummy; void *result = &dummy; /* initialize to silence compiler */ and the compilation completed. I am not an OSX expert, so perhaps __lib_stack_end does actually exist somewhere (I searched all of the usr directory). If I "make check", I get: make check-TESTS Testing /Users/bill/test/g/guile/guile-core/pre-inst-guile ... with GUILE_LOAD_PATH=/Users/bill/test/g/guile/guile-core/test-suite ERROR: In procedure dynamic-link: ERROR: file: "libguile-srfi-srfi-13-14", message: "dlcompat: dyld: /Users/bill/test/g/guile/guile-core/libguile/guile malformed library: /usr/local/lib/libguile-srfi-srfi-13-14.a (not a Mach-O file, bad magic number) " FAIL: check-guile but since I configured it -disable-shared, I'm not sure it's a bug that dynamic-link is unhappy. One oddity I notice -- if I use the standard autoconf macro AC_CHECK_LIB for some Guile function, I get: ld: Undefined symbols: _scm_sys_protects _scm_root but if I change the test program to include just the line scm_init_guile (); it's happy. Do I need the "all-load" loader switch or something? One other note: to build the CVS version from scratch, you need to update find, gawk, grep, autoconf, and libtool over the current Apple versions. _______________________________________________ Bug-guile mailing list Bug-guile@gnu.org http://mail.gnu.org/mailman/listinfo/bug-guile ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac osx 10.2 guile 1.6.0 guile-snarf 2002-10-20 10:43 ` Bill Schottstaedt @ 2002-11-03 15:52 ` Marius Vollmer 2002-11-05 12:11 ` Bill Schottstaedt 0 siblings, 1 reply; 5+ messages in thread From: Marius Vollmer @ 2002-11-03 15:52 UTC (permalink / raw) Cc: bug-guile Bill Schottstaedt <bil@ccrma.Stanford.EDU> writes: [ alot of good stuff about Mac OSX. ] Thanks for the detailed report! Could you condense this into a patch that we can apply? -- GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405 _______________________________________________ Bug-guile mailing list Bug-guile@gnu.org http://mail.gnu.org/mailman/listinfo/bug-guile ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: mac osx 10.2 guile 1.6.0 guile-snarf 2002-11-03 15:52 ` Marius Vollmer @ 2002-11-05 12:11 ` Bill Schottstaedt 0 siblings, 0 replies; 5+ messages in thread From: Bill Schottstaedt @ 2002-11-05 12:11 UTC (permalink / raw) Cc: bug-guile > Could you condense this into a patch that we can apply? For Mac OSX 10.2: change libguile/gc_os_dep.c line 255 from # if defined(macosx) to # if defined(macosx) || (defined(__APPLE__) && defined(__ppc__)) This could be # if defined(macosx) || defined(__ppc__) but in linuxppc, the compiler has __PPC__ predefined, so adding __APPLE__ seems safer. -------------------------------------------------------------------------------- change libguile/gc_os_del.c scm_get_stack_base (line 1845 ff) from word dummy; void *result = &dummy; /* initialize to silence compiler */ # define STACKBOTTOM_ALIGNMENT_M1 ((word)STACK_GRAN - 1) # ifdef STACKBOTTOM return(STACKBOTTOM); # else to # ifdef STACKBOTTOM return(STACKBOTTOM); # else word dummy; void *result = &dummy; /* initialize to silence compiler */ # define STACKBOTTOM_ALIGNMENT_M1 ((word)STACK_GRAN - 1) -------------------------------------------------------------------------------- In guile-core/configure.in line 379, the false-positive for __libc_stack_end happens because the -O2 switch optimizes out the __libc_stack_end reference: /Users/bill/test/ more stack.c #line 2343 "configure" #include "confdefs.h" extern char *__libc_stack_end; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { char *p = __libc_stack_end; ; return 0; } /Users/bill/test/ gcc stack.c -g -O2 -o foo /Users/bill/test/ foo /Users/bill/test/ gcc stack.c -g -o foo ld: Undefined symbols: ___libc_stack_end /Users/bill/test/ I can overcome this optimization by changing the test to: AC_MSG_CHECKING(for __libc_stack_end) AC_TRY_LINK([#include <string.h> extern char *__libc_stack_end;], [char *p; p = strdup(__libc_stack_end);], have_libc_stack_end=yes, have_libc_stack_end=no) AC_MSG_RESULT($have_libc_stack_end) -------------------------------------------------------------------------------- in libguile/coop.c: #include <stdio.h> #include <errno.h> #include "qt/qt.h" #include "libguile/eval.h" #ifdef HAVE_UNISTD_H #include <unistd.h> #endif (this is the same as the iselect.c change earlier). -------------------------------------------------------------------------------- On the MISSING_SLEEP problem, gcc -E ignores "preprocessed" files; on the Mac /usr/include/unistd.h falls into this category, whereas /usr/include/string.h does not; so the strptime check works, but AC_EGREP_HEADER can't be used to search unistd.h. If we make a program: #include <unistd.h> then gcc -E eg.c it just prints the #include line, not the contents of unistd.h. This strikes me as an autoconf bug, and I don't find any obvious switch in cpp/gcc to override this aspect of -E, so I just commented out the two lines (lines 346, 347) involving sleep and usleep (the declarations are not missing, so the check can only screw us up). -------------------------------------------------------------------------------- With the current CVS version, a new bug arose in threads.h: gcc -DHAVE_CONFIG_H -I. -I. -I. -I.. -I.. -I../libguile-ltdl -g -O2 -Werror -Wall -Wmissing-prototypes -c `test -f 'guile.c' || echo './'`guile.c cc1: warnings being treated as errors In file included from ../libguile.h:132, from guile.c:52: ../libguile/threads.h:150: warning: `struct timespec' declared inside parameter list ../libguile/threads.h:150: warning: its scope is only this definition or declaration, which is probably not what you want Since the threads stuff is in flux, I just commented out the offending declaration, and the function itself in threads.c. And threads.c needs to include unistd.h for select. -------------------------------------------------------------------------------- This leaves unanswered the guile-snarf problem, but its output is fine, so its blathering can be ignored. _______________________________________________ Bug-guile mailing list Bug-guile@gnu.org http://mail.gnu.org/mailman/listinfo/bug-guile ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2002-11-05 12:11 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2002-10-12 15:54 mac osx 10.2 guile 1.6.0 guile-snarf Bill Schottstaedt 2002-10-18 21:38 ` Marius Vollmer 2002-10-20 10:43 ` Bill Schottstaedt 2002-11-03 15:52 ` Marius Vollmer 2002-11-05 12:11 ` Bill Schottstaedt
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).