Prepare for gnulib update

After the last gnulib import (Dec 2012), gnulib upstream started
replacing mingw's 'struct timeval' with a version with 64-bit time_t,
for POSIX compliance:

 commit f8e84098084b3b53bc6943a5542af1f607ffd477
 Author: Bruno Haible <bruno@clisp.org>
 Date:   Sat Jan 28 18:12:10 2012 +0100
     sys_time: Override 'struct timeval' on some native Windows platforms.

See:

 https://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00372.html

However, that results in conflicts with native Winsock2's 'select':

select()'s argument
	http://sourceforge.net/p/mingw-w64/mailman/message/29610438/

... and libiberty's timeval-utils.h timeval_add/timeval_sub, at the
least.

We don't really need the POSIX compliance, so this patch prepares us
to simply not use gnulib's 'struct timeval' replacement once a more
recent gnulib is imported, thus preserving the current behavior, by
adding a sys/time.h wrapper header that undefs gnulib's replacements,
and including that everywhere instead.

The SIZE -> OSIZE change is necessary because newer gnulib's
sys/time.h also includes windows.h/winsock2.h, which defines a
conflicting SIZE symbol.

Cross build-tested mingw-w64 32-bit and 64-bit.
Regtested on x86_64 Fedora 20.

gdb/ChangeLog:
2015-08-24  Pedro Alves  <palves@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Add common/gdb_sys_time.h.
	* common/gdb_sys_time.h: New file.
	* event-loop.c: Include gdb_sys_time.h instead of sys/time.h.
	* gdb_select.h: Likewise.
	* gdb_usleep.c: Likewise.
	* maint.c: Likewise.
	* mi/mi-main.c: Likewise.
	* mi/mi-parse.h: Likewise.
	* remote-fileio.c: Likewise.
	* remote-m32r-sdi.c: Likewise.
	* remote.c: Likewise.
	* ser-base.c: Likewise.
	* ser-pipe.c: Likewise.
	* ser-tcp.c: Likewise.
	* ser-unix.c: Likewise.
	* symfile.c: Likewise.
	* symfile.c: Likewise.  Rename OSIZE to SIZE throughout.
	* target-memory.c: Include gdb_sys_time.h instead of sys/time.h.
	* utils.c: Likewise.

gdb/gdbserver/ChangeLog:
2015-08-24  Pedro Alves  <palves@redhat.com>

	* debug.c: Include gdb_sys_time.h instead of sys/time.h.
	* event-loop.c: Likewise.
	* remote-utils.c: Likewise.
	* tracepoint.c: Likewise.
This commit is contained in:
Pedro Alves 2015-08-24 18:50:55 +01:00
parent a8c6d4fcd6
commit 438e1e427e
24 changed files with 94 additions and 28 deletions

View File

@ -1,3 +1,25 @@
2015-08-24 Pedro Alves <palves@redhat.com>
* Makefile.in (HFILES_NO_SRCDIR): Add common/gdb_sys_time.h.
* common/gdb_sys_time.h: New file.
* event-loop.c: Include gdb_sys_time.h instead of sys/time.h.
* gdb_select.h: Likewise.
* gdb_usleep.c: Likewise.
* maint.c: Likewise.
* mi/mi-main.c: Likewise.
* mi/mi-parse.h: Likewise.
* remote-fileio.c: Likewise.
* remote-m32r-sdi.c: Likewise.
* remote.c: Likewise.
* ser-base.c: Likewise.
* ser-pipe.c: Likewise.
* ser-tcp.c: Likewise.
* ser-unix.c: Likewise.
* symfile.c: Likewise.
* symfile.c: Likewise. Rename OSIZE to SIZE throughout.
* target-memory.c: Include gdb_sys_time.h instead of sys/time.h.
* utils.c: Likewise.
2015-08-24 Pedro Alves <palves@redhat.com>
* NEWS: Mention removed support for the various ROM monitors.

View File

@ -986,7 +986,7 @@ common/common-debug.h common/cleanups.h common/gdb_setjmp.h \
common/common-exceptions.h target/target.h common/symbol.h \
common/common-regcache.h fbsd-tdep.h nat/linux-personality.h \
common/fileio.h nat/x86-linux.h nat/x86-linux-dregs.h \
nat/linux-namespaces.h arch/arm.h
nat/linux-namespaces.h arch/arm.h common/gdb_sys_time.h
# Header files that already have srcdir in them, or which are in objdir.

38
gdb/common/gdb_sys_time.h Normal file
View File

@ -0,0 +1,38 @@
/* Copyright (C) 2015 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef GDB_SYS_TIME_H
#define GDB_SYS_TIME_H
#include <sys/time.h>
/* On MinGW-w64, gnulib's sys/time.h replaces 'struct timeval' and
gettimeofday with versions that support 64-bit time_t, for POSIX
compliance. However, the gettimeofday replacement does not ever
return time_t values larger than 31-bit, as it simply returns the
system's gettimeofday's (signed) 32-bit result as (signed) 64-bit.
Because we don't really need the POSIX compliance, and it ends up
causing conflicts with other libraries we use that don't use gnulib
and thus work with the native struct timeval, such as Winsock2's
native 'select' and libiberty, simply undefine away gnulib's
replacements. */
#if GNULIB_defined_struct_timeval
# undef timeval
# undef gettimeofday
#endif
#endif /* #ifndef GDB_SYS_TIME_H */

View File

@ -31,7 +31,7 @@
#endif
#include <sys/types.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include "gdb_select.h"
#include "observer.h"

View File

@ -23,7 +23,7 @@
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#else
#include <sys/time.h>
#include "gdb_sys_time.h"
#endif
#ifdef USE_WIN32API

View File

@ -18,8 +18,7 @@
#include "defs.h"
#include "gdb_usleep.h"
#include "gdb_select.h"
#include <sys/time.h>
#include "gdb_sys_time.h"
int
gdb_usleep (int usec)

View File

@ -1,3 +1,10 @@
2015-08-24 Pedro Alves <palves@redhat.com>
* debug.c: Include gdb_sys_time.h instead of sys/time.h.
* event-loop.c: Likewise.
* remote-utils.c: Likewise.
* tracepoint.c: Likewise.
2015-08-24 Pedro Alves <palves@redhat.com>
* spu-low.c (spu_request_interrupt): Use lwpid_of instead of

View File

@ -17,7 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "server.h"
#include <sys/time.h>
#include "gdb_sys_time.h"
/* Enable miscellaneous debugging output. The name is historical - it
was originally used to debug LinuxThreads support. */

View File

@ -22,7 +22,7 @@
#include "queue.h"
#include <sys/types.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#ifdef USE_WIN32API
#include <windows.h>

View File

@ -51,7 +51,7 @@
#if HAVE_FCNTL_H
#include <fcntl.h>
#endif
#include <sys/time.h>
#include "gdb_sys_time.h"
#include <unistd.h>
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>

View File

@ -25,7 +25,7 @@
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include <inttypes.h>
#include "ax.h"
#include "tdesc.h"

View File

@ -24,7 +24,7 @@
#include "arch-utils.h"
#include <ctype.h>
#include <signal.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include <time.h>
#include "command.h"
#include "gdbcmd.h"

View File

@ -55,7 +55,7 @@
#include "gdbcmd.h"
#include <ctype.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#if defined HAVE_SYS_RESOURCE_H
#include <sys/resource.h>

View File

@ -20,7 +20,7 @@
#ifndef MI_PARSE_H
#define MI_PARSE_H
#include <sys/time.h>
#include "gdb_sys_time.h"
/* MI parser */

View File

@ -31,7 +31,7 @@
#include "filestuff.h"
#include <fcntl.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#ifdef __CYGWIN__
#include <sys/cygwin.h> /* For cygwin_conv_path. */
#endif

View File

@ -36,7 +36,7 @@
#include <netinet/in.h>
#endif
#include <sys/types.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include <time.h>
#include "gdb_bfd.h"
#include "cli/cli-utils.h"

View File

@ -47,7 +47,7 @@
#include "disasm.h"
#include "location.h"
#include <sys/time.h>
#include "gdb_sys_time.h"
#include "event-loop.h"
#include "event-top.h"

View File

@ -23,7 +23,7 @@
#include "event-loop.h"
#include "gdb_select.h"
#include <sys/time.h>
#include "gdb_sys_time.h"
#ifdef USE_WIN32API
#include <winsock2.h>
#endif

View File

@ -27,7 +27,7 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include <fcntl.h>
#include "filestuff.h"

View File

@ -35,7 +35,7 @@
#include <sys/ioctl.h> /* For FIONBIO. */
#endif
#include <sys/time.h>
#include "gdb_sys_time.h"
#ifdef USE_WIN32API
#include <winsock2.h>

View File

@ -26,7 +26,7 @@
#include <sys/types.h>
#include "terminal.h"
#include <sys/socket.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include "gdb_select.h"
#include "gdbcmd.h"

View File

@ -62,7 +62,7 @@
#include <sys/stat.h>
#include <ctype.h>
#include <time.h>
#include <sys/time.h>
#include "gdb_sys_time.h"
#include "psymtab.h"
@ -3518,12 +3518,12 @@ overlay_command (char *args, int from_tty)
In this simple implementation, the target data structures are as follows:
unsigned _novlys; /# number of overlay sections #/
unsigned _ovly_table[_novlys][4] = {
{VMA, SIZE, LMA, MAPPED}, /# one entry per overlay section #/
{VMA, OSIZE, LMA, MAPPED}, /# one entry per overlay section #/
{..., ..., ..., ...},
}
unsigned _novly_regions; /# number of overlay regions #/
unsigned _ovly_region_table[_novly_regions][3] = {
{VMA, SIZE, MAPPED_TO_LMA}, /# one entry per overlay region #/
{VMA, OSIZE, MAPPED_TO_LMA}, /# one entry per overlay region #/
{..., ..., ...},
}
These functions will attempt to update GDB's mappedness state in the
@ -3541,7 +3541,7 @@ static unsigned cache_novlys = 0;
static CORE_ADDR cache_ovly_table_base = 0;
enum ovly_index
{
VMA, SIZE, LMA, MAPPED
VMA, OSIZE, LMA, MAPPED
};
/* Throw away the cached copy of _ovly_table. */
@ -3641,14 +3641,14 @@ simple_overlay_update_1 (struct obj_section *osect)
for (i = 0; i < cache_novlys; i++)
if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
&& cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
/* && cache_ovly_table[i][SIZE] == size */ )
/* && cache_ovly_table[i][OSIZE] == size */ )
{
read_target_long_array (cache_ovly_table_base + i * word_size,
(unsigned int *) cache_ovly_table[i],
4, word_size, byte_order);
if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
&& cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
/* && cache_ovly_table[i][SIZE] == size */ )
/* && cache_ovly_table[i][OSIZE] == size */ )
{
osect->ovly_mapped = cache_ovly_table[i][MAPPED];
return 1;
@ -3714,7 +3714,7 @@ simple_overlay_update (struct obj_section *osect)
for (i = 0; i < cache_novlys; i++)
if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
&& cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect)
/* && cache_ovly_table[i][SIZE] == size */ )
/* && cache_ovly_table[i][OSIZE] == size */ )
{ /* obj_section matches i'th entry in ovly_table. */
osect->ovly_mapped = cache_ovly_table[i][MAPPED];
break; /* finished with inner for loop: break out. */

View File

@ -23,7 +23,7 @@
#include "target.h"
#include "memory-map.h"
#include <sys/time.h>
#include "gdb_sys_time.h"
static int
compare_block_starting_address (const void *a, const void *b)

View File

@ -62,7 +62,7 @@
#include "readline/readline.h"
#include <sys/time.h>
#include "gdb_sys_time.h"
#include <time.h>
#include "gdb_usleep.h"