Cast RLIM_INFINITY to rlim_t to fix 64-bit Solaris 10 build
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Tue, 18 Sep 2018 07:14:11 +0000 (09:14 +0200)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Tue, 18 Sep 2018 07:14:11 +0000 (09:14 +0200)
gdb doesn't currently build on 64-bit Solaris 10:

/vol/src/gnu/gdb/hg/master/local/gdb/utils.c: In function ‘void dump_core()’:
/vol/src/gnu/gdb/hg/master/local/gdb/utils.c:223:55: error: narrowing conversion
 of ‘-3’ from ‘long int’ to ‘rlim_t’ {aka ‘long unsigned int’} inside {
} [-Wnarrowing]
   struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY };
                                                       ^
/vol/src/gnu/gdb/hg/master/local/gdb/utils.c:223:55: error: narrowing conversion
 of ‘-3’ from ‘long int’ to ‘rlim_t’ {aka ‘long unsigned int’} inside {
} [-Wnarrowing]

This was introduced by

2018-08-27  Tom Tromey  <tom@tromey.com>

PR build/23087:
* configure: Rebuild.
* warning.m4 (AM_GDB_WARNINGS): Remove -Wno-narrowing.

and can be fixed by the following patch.

Solaris 11 isn't affected because there <sys/resource.h> has

#define RLIM_INFINITY ((rlim_t)-3l)

instead of

#define RLIM_INFINITY   (-3l)

on Solaris 10.

Tested on amd64-pc-solaris2.10 and amd64-pc-solaris2.11.

* utils.c (dump_core) [HAVE_SETRLIMIT]: Cast RLIM_INFINITY to
rlim_t.

gdb/ChangeLog
gdb/utils.c

index a468d8dc3239710ee8c0300cdf5500a6e35dd852..ddd2782d99c0893350c79d85f6e6a2eed4adb74b 100644 (file)
@@ -1,3 +1,8 @@
+2018-09-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * utils.c (dump_core) [HAVE_SETRLIMIT]: Cast RLIM_INFINITY to
+       rlim_t.
+
 2018-09-17  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
        * python/lib/gdb/command/frame_filters.py (EnableFrameFilter):
index d7980fe3a186465bdf07c82adbf2d50829b6866b..8d4a744e718c779f38b421c150ccd5e1612acf4f 100644 (file)
@@ -220,7 +220,7 @@ void
 dump_core (void)
 {
 #ifdef HAVE_SETRLIMIT
-  struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY };
+  struct rlimit rlim = { (rlim_t) RLIM_INFINITY, (rlim_t) RLIM_INFINITY };
 
   setrlimit (RLIMIT_CORE, &rlim);
 #endif /* HAVE_SETRLIMIT */