From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6811 invoked by alias); 21 Oct 2002 19:08:48 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 6717 invoked from network); 21 Oct 2002 19:08:44 -0000 Received: from unknown (HELO touchme.toronto.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 21 Oct 2002 19:08:44 -0000 Received: from localhost.redhat.com (to-dhcp51.toronto.redhat.com [172.16.14.151]) by touchme.toronto.redhat.com (Postfix) with ESMTP id 6574C8000FB for ; Mon, 21 Oct 2002 15:08:43 -0400 (EDT) Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id CE9CC3EEA; Mon, 21 Oct 2002 14:38:45 -0400 (EDT) Message-ID: <3DB449B5.4090005@redhat.com> Date: Mon, 21 Oct 2002 12:08:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020824 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Joel Brobecker Cc: gdb-patches@sources.redhat.com Subject: Re: [RFC] want to #undef HAVE_SBRK and HAVE_POLL on Interix References: <20021021061151.GY7331@gnat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-10/txt/msg00340.txt.bz2 > Hello, > > This is something I did sometime ago, and wanted to discuss with you > before proposing a change more formally. > > Here goes: On Interix, the sbrk() function exists, but is not > sufficiently implemented to be used in GDB. Because it exists, > AC_CHECK_FUNCS (sbrk) finds it, and therefore configure adds the > associated "#define HAVE_SBRK" in config.h. > > If you look at xm-interix.h in the files I recently submitted, you will > see that there is a "#undef HAVE_SBRK" to counter the result of > AC_CHECK_FUNCS. I would like to get rid of this #undef. To do that, the > only way I found is to either: I've been wondering if the interix patch should even be allowed to add xm-interix.h. New hosts shouldn't need it, instead using autoconf for everything. > 1. let configure test for sbrk() on Interix, but then override the > test result afterward by undefining (in the configure sense) > HAVE_SBRK. Something like: > > AC_CHECK_FUNCS (....) # this line is unchanged > case "${host}" in > *-*-interix* ) > undefine (HAVE_BRK) > ;; > * ) > ;; > esac > > 2. do not do the AC_CHECK_FUNCS test for sbrk() on Interix. This way, > HAVE_SBRK will never be defined, and we don't need the undef in > xm-interix.h anymore. > > I did not find a way in the documentation to undefine a variable that > was previously defined. So I could not implement 1. I also thought that > a user might find it confusing to see the output of configure show aclocal.m4 is always a good source of ideas. > Checking for sbrk... yes > > and then no see HAVE_SBRK defined in config.h... > > So I implemented 2. A patch is attached (it is only the configure.in > part, the rest will follow if the approach to the problem is approved). > I also did the same for the poll() function, which should not be used > on Interix as well. > > Is it the best approach to the problem? Would such a patch be accepted > for inclusion? As you note, it's definitly better than 1. As for best I'm not an autoconf person so ... I'd just suggest tweaking it a little so that it: > ! AC_CHECK_FUNCS(bcopy btowc bzero canonicalize_file_name isascii \ > ! realpath setpgid setpgrp sigaction sigprocmask sigsetmask ) > ! > ! # Certain systems implement broken or incomplete versions of some > ! # functions, which cause AC_CHECK_FUNCS to define the associated HAVE_* > ! # macro. But we actually do not want to this macro to be defined on > ! # these systems where we know it is broken. So we simply skip the test > ! # for these functions and pretend that it does not exist. > ! case "${host}" in > ! *-*-interix*) > ! # On Interix, there is only a minimal sbrk(). This function does not > ! # provide the functionality that is needed in the case of GDB (there > ! # is no relationship at all with environ). > ! > ! # The poll() function is only partially implemented so far... Here, report that it wasn't even testing for sbrk() or poll(). That way, there would be no confusion over a missing test. Use AC_MSG_WARN() I think. > ! ;; > ! *) > ! AC_CHECK_FUNCS(sbrk) > ! AC_CHECK_FUNCS(poll) > ! ;; > ! esac > ! > AC_FUNC_ALLOCA > AC_FUNC_VFORK > dnl AC_FUNC_SETPGRP does not work when cross compiling Andrew