Bug 2486 - <netinet/in.h> does not compile in C++. Patch with conventional fix available.
Summary: <netinet/in.h> does not compile in C++. Patch with conventional fix available.
Status: RESOLVED WONTFIX
Alias: None
Product: glibc
Classification: Unclassified
Component: libc (show other bugs)
Version: 2.4
: P2 normal
Target Milestone: ---
Assignee: Ulrich Drepper
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-03-24 23:52 UTC by dank
Modified: 2018-04-19 13:43 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments
Patch to make glibc's in.h compatible with gcc-2.95.3 and perhaps other C++ compilers. (386 bytes, patch)
2006-03-25 00:52 UTC, dank
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description dank 2006-03-24 23:52:19 UTC
This is a classic, longstanding bug in all versions of glibc
and many other C libraries.  The essence is that

struct ip_opts {
    ...
    char ip_opts[40]; 
    ...

is not legal C++.  The traditional way of fixing this is to
capitalize the first letter of the member when compiling for C++.
A patch which does this, and applies to all versions of glibc is at
http://www.pengutronix.de/software/ptxdist/patches-0.5.2/glibc-2.2.5/generic/glibc-2.2.5-ip_opts.patch

There have been repeated requests to fix this over the years,
but for some reason, nobody filed a glibc bug report before!
Here are a few old posts about the problem in general, and how it's
been fixed elsewhere:
http://cvs.openbsd.org/cgi-bin/query-pr-wrapper?full=yes&numbers=681
http://gcc.gnu.org/ml/gcc/2002-05/msg00791.html
http://www.cygwin.com/ml/ecos-patches/2002-06/msg00005.html
http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=19880

So, time to apply this patch in glibc head (and to the head of
the 2.3 branch, if possible)?
Comment 1 dank 2006-03-25 00:51:10 UTC
Minor detail: the only version of gcc in common use
that reports this error is gcc-2.95.3. 
The gcc296 shipped by Fedora does not report this error.
So perhaps this is only of interest to embedded system developers
and/or those who use ancient compilers.

I'm marking this bug WONTFIX for now; affected
developers can apply the patch. 
Comment 2 dank 2006-03-25 00:52:26 UTC
Created attachment 940 [details]
Patch to make glibc's in.h compatible with gcc-2.95.3 and perhaps other C++ compilers.
Comment 3 Michael Elizabeth Chastain 2006-03-25 01:18:55 UTC
Actually I think this is not a bug at all:

Older versions of gcc suppress the warning when compiling system header files.

Newer versions of gcc implement DR#80 for C++, which allows data fields to have
the same name as the class if the class does not have a user-declared constructor.

http://std.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html#80