- Fixed broken winedbg compilation on BSD.

- Fixed some corner case handling in ELF list walking (reported by
  Robert Shearman).
This commit is contained in:
Eric Pouech 2004-02-05 01:27:38 +00:00 committed by Alexandre Julliard
parent d68477711b
commit 53fa0d5433
4 changed files with 363 additions and 907 deletions

51
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.58 for Wine 20040121.
# Generated by GNU Autoconf 2.59 for Wine 20040121.
#
# Report bugs to <wine-devel@winehq.org>.
#
@ -852,37 +852,26 @@ if test -n "$ac_init_help"; then
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-win16
do not include Win16 support
--disable-debug
compile out all debugging messages
--disable-trace
compile out TRACE messages
--disable-win16 do not include Win16 support
--disable-debug compile out all debugging messages
--disable-trace compile out TRACE messages
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--without-opengl
do not use OpenGL
--without-curses
do not use curses
--with-wine-tools=<dir>
use Wine tools from directory <dir>
--without-opengl do not use OpenGL
--without-curses do not use curses
--with-wine-tools=<dir> use Wine tools from directory <dir>
--with-x use the X Window System
Some influential environment variables:
CC
C compiler command
CFLAGS
C compiler flags
LDFLAGS
linker flags, e.g. -L<lib dir> if you have
libraries in a nonstandard directory <lib dir>
CPPFLAGS
C/C++ preprocessor flags, e.g. -I<include dir> if you
have headers in a nonstandard directory <include dir>
CPP
C preprocessor
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@ -984,7 +973,7 @@ test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
Wine configure 20040121
generated by GNU Autoconf 2.58
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
@ -998,7 +987,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by Wine $as_me 20040121, which was
generated by GNU Autoconf 2.58. Invocation command line was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@ -15758,6 +15747,8 @@ done
@ -15804,7 +15795,9 @@ for ac_header in \
stdint.h \
strings.h \
sys/cdio.h \
sys/elf32.h \
sys/errno.h \
sys/exec_elf.h \
sys/file.h \
sys/filio.h \
sys/inttypes.h \
@ -19436,7 +19429,7 @@ _ASBOX
cat >&5 <<_CSEOF
This file was extended by Wine $as_me 20040121, which was
generated by GNU Autoconf 2.58. Invocation command line was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@ -19499,7 +19492,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
Wine config.status 20040121
configured by $0, generated by GNU Autoconf 2.58,
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Copyright (C) 2003 Free Software Foundation, Inc.

View File

@ -1087,7 +1087,9 @@ AC_CHECK_HEADERS(\
stdint.h \
strings.h \
sys/cdio.h \
sys/elf32.h \
sys/errno.h \
sys/exec_elf.h \
sys/file.h \
sys/filio.h \
sys/inttypes.h \

File diff suppressed because it is too large Load Diff

View File

@ -41,17 +41,29 @@
#define __ELF__
#endif
#ifdef __ELF__
#ifdef HAVE_ELF_H
# include <elf.h>
#endif
#ifdef HAVE_SYS_ELF32_H
# include <sys/elf32.h>
#endif
#ifdef HAVE_SYS_EXEC_ELF_H
# include <sys/exec_elf.h>
#endif
#if !defined(DT_NUM)
# if defined(DT_COUNT)
# define DT_NUM DT_COUNT
# else
/* this seems to be a satisfactory value on Solaris, which doesn't support this AFAICT */
# define DT_NUM 24
# endif
#endif
#ifdef HAVE_LINK_H
# include <link.h>
#endif
#ifdef HAVE_SYS_LINK_H
# include <sys/link.h>
#endif
#endif
#include "wine/debug.h"
@ -249,6 +261,24 @@ leave:
return dil;
}
static unsigned is_dt_flag_valid(unsigned d_tag)
{
#ifndef DT_PROCNUM
#define DT_PROCNUM 0
#endif
#ifndef DT_EXTRANUM
#define DT_PROCNUM 0
#endif
return (d_tag >= 0 && d_tag < DT_NUM + DT_PROCNUM + DT_EXTRANUM)
#if defined(DT_LOOS) && defined(DT_HIOS)
|| (d_tag >= DT_LOOS && d_tag < DT_HIOS)
#endif
#if defined(DT_LOPROC) && defined(DT_HIPROC)
|| (d_tag >= DT_LOPROC && d_tag < DT_HIPROC)
#endif
;
}
/*
* Loads the information for ELF module stored in 'filename'
* the module has been loaded at 'load_offset' address
@ -339,12 +369,7 @@ static enum DbgInfoLoad DEBUG_ProcessElfFile(HANDLE hProcess,
do
{
if (!ReadProcessMemory(hProcess, ptr, &dyn, sizeof(dyn), &len) ||
len != sizeof(dyn) ||
!((dyn.d_tag >= 0 &&
dyn.d_tag < DT_NUM+DT_PROCNUM+DT_EXTRANUM) ||
(dyn.d_tag >= DT_LOOS && dyn.d_tag < DT_HIOS) ||
(dyn.d_tag >= DT_LOPROC && dyn.d_tag < DT_HIPROC))
)
len != sizeof(dyn) || !is_dt_flag_valid(dyn.d_tag))
dyn.d_tag = DT_NULL;
ptr += sizeof(dyn);
} while (dyn.d_tag != DT_DEBUG && dyn.d_tag != DT_NULL);
@ -402,7 +427,7 @@ static enum DbgInfoLoad DEBUG_ProcessElfFileFromPath(HANDLE hProcess,
char *s, *t, *fn;
char* paths = NULL;
if (!path) return -1;
if (!path) return dil;
for (s = paths = DBG_strdup(path); s && *s; s = (t) ? (t+1) : NULL)
{
@ -430,7 +455,7 @@ static enum DbgInfoLoad DEBUG_ProcessElfObject(HANDLE hProcess,
{
enum DbgInfoLoad dil = DIL_ERROR;
if (filename == NULL) return DIL_ERROR;
if (filename == NULL || *filename == '\0') return DIL_ERROR;
if (DEBUG_FindModuleByName(filename, DMT_ELF))
{
assert(!(elf_info->flags & ELF_INFO_PATH));