Closed Bug 79282 Opened 23 years ago Closed 23 years ago

g++ 2.95.2 does not define _LANGUAGE_C_PLUS_PLUS required for <signal.h>

Categories

(SeaMonkey :: Build Config, defect, P3)

SGI
IRIX
defect

Tracking

(Not tracked)

VERIFIED FIXED
mozilla0.9.3

People

(Reporter: jayvdb, Assigned: cls)

References

Details

Attachments

(4 files)

signal() has a different specification depending on whether it is included from 
C or C++ .  signal.h uses #ifdef _LANGUAGE_C and #ifdef _LANGUAGE_C_PLUS_PLUS 
to determine this.  When compiling with g++, I need to #define 
_LANGUAGE_C_PLUS_PLUS in netwerk/test/TestOverlappedIO.cpp and 
netwerk/test/TestSocketIO.cpp .

% man signal
...
C SYNOPSIS
     #include <signal.h>

     C:
       void (*signal (int sig, void (*func)()))();
     C++:
       void (*signal (int sig, void (*func)(int)))(int);
...
%
Blocks: 28709
I'd rather stick that define in the irix section of configure.in .  Other cases
may pop up that need this fix as well and I'm not sure what effect, if any, this
would have on non-irix systems.
Agreed.  I am going thru with workarounds until I can go no more.  Then ill 
clean my objdir, come back and clean up and test these bugs, unless of course 
you want to provide the fix? :)
While this isnt configure.in, so far this problem has not affected the rest of 
the build.  It has so far taken me 6 hours to build using gnu compilers as 
opposed to about 2.5 hours using MIPSpro, so I am reluctant to rebuild it all 
in order to test that adding the define globally does not break something 
else.  I have tested this patch does not break the MIPSpro build.
Keywords: patch
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P3
Target Milestone: --- → mozilla0.9.3
has this been reviewed? 
I have verified Chris's patch works for me if that is of any use.
I am not sure, but I believe there is a problem with the change to 
configure.in ... and am suprised that my build worked.  

AC_DEFINE will define _LANGUAGE_C_PLUS_PLUS for both c & c++, which would 
result in signals being broken in c instead of c++.

So the configure.in should have something to the effect of CXXFLAGS += -
D_LANGUAGE_C_PLUS_PLUS.
Given that this define is required on IRIX, I have opened an SGI internal bug 
(825388), to have g++ internally define it.
This issue is now also a GNU bug: c++/3047

g++ does define _LANGUAGE_C_PLUS_PLUS for .cc .cxx and .C , but obviously 
not .cpp
Can this be moved forward to 0.9.2 as the fix is in hand, and this is the only 
remaining blocker for IRIX/gcc build.
Target milestone doesn't matter that much but I will need a r= on the new patch
before drivers will accept it.
I am not familiar with the preferred method of requesting review; should I 
email the person personally, or add them to the CC, the latter seeming a little 
rude?
I think either way is fairly common practice.  Since this is a considered a port
specific branch, anyone who is familiar with the port and can verify that the
patch does work like it should can give a r=.  Ports really don't have the
owner/peer restrictions like other modules do.
Wan-Teh, could you please review this patch for the IRIX/gcc port.
r=wtc.
a= asa@mozilla.org for checkin to the trunk.
(on behalf of drivers)
Blocks: 83989
Patch has been checked in.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
verified.
Status: RESOLVED → VERIFIED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: