Fix -Wundef warnings for _ABI* on MIPS

Message ID Pine.LNX.4.64.1403211822020.4557@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers March 21, 2014, 6:23 p.m. UTC
  This patch fixes -Wundef warnings related to the _ABI* macros on MIPS.
GCC predefines only the _ABI* macro related to the ABI actually in
use, meaning that a conditional such as "#if _MIPS_SIM == _ABI64" is
true only for the ABI in question (all the macros are nonzero), but
produces a -Wundef warning for the other ABIs.  The normal approach to
using these macros is to include <sgidefs.h>, which ensures that all
three _ABI* macros are defined rather than just one; this patch does
so in the places that caused warnings (the bulk of the warnings
arising from <bits/wordsize.h>).  Tested that the warnings are fixed
and committed.

2014-03-21  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/mips/bits/wordsize.h: Include <sgidefs.h>.
	* sysdeps/unix/sysv/linux/mips/getrlimit64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/setrlimit64.c: Likewise.
  

Comments

Roland McGrath March 21, 2014, 8:04 p.m. UTC | #1
I would recommend two things:

1. Give sgidefs.h clear comments that its mandate is to define only
   implementation-space macro names so that anyone considering modifying
   the file knows that must be kept name space clean so that it continues
   to be appropriate to include it in any installed header.  (While you're
   there you could clean up the existing comments to match our style.)

2. Write:
	#include <sgidefs.h>	/* Defines _MIPS_*, _ABI*.  */
   just so it's obvious what the #include is there for, since it
   has a name so far from obviously related to its purpose.
  

Patch

diff --git a/sysdeps/mips/bits/wordsize.h b/sysdeps/mips/bits/wordsize.h
index 3f05c7d..2c29d81 100644
--- a/sysdeps/mips/bits/wordsize.h
+++ b/sysdeps/mips/bits/wordsize.h
@@ -15,6 +15,8 @@ 
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <sgidefs.h>
+
 #define __WORDSIZE	_MIPS_SZPTR
 #if _MIPS_SIM == _ABI64
 # define __WORDSIZE_TIME64_COMPAT32	1
diff --git a/sysdeps/unix/sysv/linux/mips/getrlimit64.c b/sysdeps/unix/sysv/linux/mips/getrlimit64.c
index f3b3331..b4a449b 100644
--- a/sysdeps/unix/sysv/linux/mips/getrlimit64.c
+++ b/sysdeps/unix/sysv/linux/mips/getrlimit64.c
@@ -15,6 +15,8 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <sgidefs.h>
+
 #if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32
 
 # include <shlib-compat.h>
diff --git a/sysdeps/unix/sysv/linux/mips/setrlimit64.c b/sysdeps/unix/sysv/linux/mips/setrlimit64.c
index 73d6095..26bf138 100644
--- a/sysdeps/unix/sysv/linux/mips/setrlimit64.c
+++ b/sysdeps/unix/sysv/linux/mips/setrlimit64.c
@@ -15,6 +15,7 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <sgidefs.h>
 
 #if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32