From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27016 invoked by alias); 8 Aug 2004 05:14:23 -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 27005 invoked from network); 8 Aug 2004 05:14:21 -0000 Received: from unknown (HELO takamaka.act-europe.fr) (142.179.108.108) by sourceware.org with SMTP; 8 Aug 2004 05:14:21 -0000 Received: by takamaka.act-europe.fr (Postfix, from userid 507) id 360C647D91; Sat, 7 Aug 2004 22:14:20 -0700 (PDT) Date: Sun, 08 Aug 2004 05:14:00 -0000 From: Joel Brobecker To: gdb-patches@sources.redhat.com Cc: Andrew Cagney , Peter Schauer , Kevin Buettner Subject: [RFC/AIX] xm-aix4.h - Move some host-specific stuff Message-ID: <20040808051420.GH24160@gnat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i X-SW-Source: 2004-08/txt/msg00238.txt.bz2 The last part of config/xm-aix4.h contains the following definitions: | /* Signal handler for SIGWINCH `window size changed'. */ | | #define SIGWINCH_HANDLER aix_resizewindow | extern void aix_resizewindow (int); | | /* `lines_per_page' and `chars_per_line' are local to utils.c. Rectify this. */ | #define SIGWINCH_HANDLER_BODY \ | \ | /* Respond to SIGWINCH `window size changed' signal, and reset GDB's \ | window settings appropriately. */ \ | \ | void \ | aix_resizewindow (signo) \ | int signo; \ | { \ | int fd = fileno (stdout); \ | if (isatty (fd)) { \ | int val; \ | \ | val = atoi (termdef (fd, 'l')); \ | if (val > 0) \ | lines_per_page = val; \ | val = atoi (termdef (fd, 'c')); \ | if (val > 0) \ | chars_per_line = val; \ | } \ | } Not sure how to handle this part... First problem: SIGWINCH_HANDLER is used in several files. So when we define SIGWINCH_HANDLER, we also need to make sure that the prototype of the procedure it has been defined to is placed somewhere these files can see them. Second problem: The body of aix_resizewindow() needs to be moved somewhere aix-host-specific. Do we have a mechanism for storing host-specific code? *-nat files, maybe (I wouldn't think so). Moving that body would allow us to get rid of SIGWINCH_HANDLER_BODY. If we had a location that would be host-specific to AIX, I would do the following: Declare in one of .h files a variable, initialized to NULL, that would be a pointer to the SIGWINCH event. Then, initialize this variable to aix_resizewindow during the initialization phase of that aix file. Then modify all the users of this macro from #ifdef SIGWINCH_HANDLER do_something_with (SIGWINCH_HANDLER); #endif to code like this: if (sigwinch_handler != NULL) do_something_with (SIGWINCH_HANDLER); -- Joel