Subject: bug#26018: Emacs workaround for Solaris 10 is unnecessary

From: Paul Eggert <[email-masked]>
Date: Tue, 7 Mar 2017 09:05:01 -0800

Going back to the old bug report copied below, because I'm trying to 
simplify the isnan code in Emacs.

I cannot reproduce the problem on Solaris 10 sparc with the bundled GCC 
3.4.3 (/usr/sfw/bin/gcc, which reports "gcc (GCC) 3.4.3 
(csl-sol210-3_4-branch+sol_rpath)". So I am inclined to think that the 
compiler mentioned below wasn't installed correctly. I notice, for 
example, that when I run the command 'nm floatfns.o' the output does not 
contain the symbols __builtin_isnan or __builtin_isfinite. Instead, the 
Fisnan function contains open code that tests where a register contains 
a NaN, which is what I would expect GCC to do. So I am now inclined to 
think that the bug report is a false alarm.

I'll CC: this to bug-gnu-emacs so that this gets a bug number.

On 10/22/2013 06:43 PM, Burt, Timothy C - GS wrote:
> Paul ---
>
> My apologies if you are not involved with emacs development or even care to be notified of what seems to be a regression to one of your fixes.  But if you're still willing to read on then can I presume on you to point me in the right direction to report this?
>
> In short, while compiling emacs 24.3 on a Sparc Solaris 10 machine with gcc v3.4.3 I encountered fatal errors[fn:1] with __builtin_isnan and __builtin_isfinite being undefined symbols.  I found your fix for isnan, but the code base I used (from http://gnu.spinellicreations.com/emacs/emacs-24.3.tar.gz) had isnan surrounded by an #ifndef/#endif guard instead of your #undef solution.  So, I changed it back and did the same for isfinite then the compilation was successful.  I think this is a bug but I hesitated to use [email-masked] since that seemed to be for emacs, not necessarily emacs development.  Would you be able to point me in the right direction?
>
>
> Thank you,
> and I'm sorry for the cold call.
>
>
>
> [fn:1] Internal compilation notes that include error at temacs step:
>     + IMPORTANT: For Solaris 10 with gcc v3.4.3 the following changes need
>        to be made to src/floatfns.c
>        : 37c37
>        : < #ifndef isfinite
>        : ---
>        : > #undef isfinite
>        : 39,40c39
>        : < #endif
>        : < #ifndef isnan
>        : ---
>        : > #undef isnan
>        : 42d40
>        : < #endif
>        - Paul Eggert noticed an fixed a problem with isnan (see
>          http://lists.gnu.org/archive/html/emacs-diffs/2011-09/msg00041.html).
>          However, somewhere between that fix and the code base used here a
>          minor, but vital, change was made that broke the compilation on
>          Solaris 10 with gcc v3.4.3.  Specifically, isnan should have
>          been #undef'd.  The changes above take away the #ifndef/#endif
>          guards and replace them with a leading #undef for both isnan and
>          isfinite since they both contribute to the fatal error making
>          temacs.
>          #+begin_src text
>          cc -std=gnu99  -Demacs  -I. -I/vendor/emacs-24.3/emacs-24.3/src -I../lib -I/vendor/emacs-24.3/emacs-24.3/src/../lib   -I/usr/openwin/include     -I/usr/include/libxml2         -MMD -MF deps/.d -MP     -g3 -O2   -L/usr/openwin/lib \
>            -o temacs  dispnew.o frame.o scroll.o xdisp.o menu.o xmenu.o window.o charset.o coding.o category.o ccl.o character.o chartab.o bidi.o cm.o term.o terminal.o xfaces.o xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o xgselect.o   emacs.o keyboard.o macros.o keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o alloc.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o font.o print.o lread.o syntax.o unexsol.o bytecode.o process.o gnutls.o callproc.o region-cache.o sound.o atimer.o doprnt.o intervals.o textprop.o composite.o xml.o profiler.o     xfont.o  fontset.o fringe.o image.o  terminfo.o lastfile.o     widget.o  ../lib/libgnu.a    ../lwlib/liblw.a  -ltiff -ljpeg -lpng -lz -lm  -lXpm -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11     -lrt -lrt   -lxml2 -lpthread -lz -lm -lsocket -lnsl    -lresolv -lsocket -lnsl -lncurses     -lfontconfig      -lpthread   -lm
>          Undefined                       first referenced
>           symbol                             in file
>          __builtin_isnan                     floatfns.o
>          __builtin_isfinite                  floatfns.o
>          ld: fatal: Symbol referencing errors. No output written to temacs
>          collect2: ld returned 1 exit status
>          gmake[1]: *** [temacs] Error 1
>          gmake[1]: Leaving directory `/ssd/system/vendor/emacs-24.3/emacs-24.3/src'
>          gmake: *** [src] Error 2
>          #+end_src
>
>
>
> Timothy C. Burt, PhD
> Senior Staff Scientist
> [email-masked]
> (585) 269-5230
>
>
>
> ________________________________
>
> This e-mail and any files transmitted with it may be proprietary and are intended solely for the use of the individual or entity to whom they are addressed. If you have received this e-mail in error please notify the sender. Please note that any views or opinions presented in this e-mail are solely those of the author and do not necessarily represent those of Exelis Inc. The recipient should check this e-mail and any attachments for the presence of viruses. Exelis Inc. accepts no liability for any damage caused by any virus transmitted by this e-mail.