From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9904 invoked by alias); 27 Jun 2005 13:02:10 -0000 Mailing-List: contact ecos-devel-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: ecos-devel-owner@ecos.sourceware.org Received: (qmail 9873 invoked by uid 22791); 27 Jun 2005 13:02:05 -0000 Received: from londo.lunn.ch (HELO londo.lunn.ch) (80.238.139.98) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Mon, 27 Jun 2005 13:02:05 +0000 Received: from lunn by londo.lunn.ch with local (Exim 3.36 #1 (Debian)) id 1DmtFR-0003dH-00; Mon, 27 Jun 2005 15:02:01 +0200 Date: Mon, 27 Jun 2005 13:02:00 -0000 To: "oliver munz @ s p e a g" Cc: ecos-devel@sources.redhat.com Subject: Re: why use the SA1110-USB-driver a static /dev/usbs... definition ??? Message-ID: <20050627130201.GD11071@lunn.ch> References: <007a01c57b16$39a30890$5e188481@cadpad> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <007a01c57b16$39a30890$5e188481@cadpad> User-Agent: Mutt/1.5.9i From: Andrew Lunn X-SW-Source: 2005-06/txt/msg00007.txt.bz2 On Mon, Jun 27, 2005 at 02:46:23PM +0200, oliver munz @ s p e a g wrote: > Hello > > I'm writing a device-driver on basis of the SA1110-USB-driver. > First I made a package without functionality. Then I tryed to get a handel > of my driver. It dosent worked. There was also no entry in the > ..._install\lib\\libextras.a. > > After houres of searching, I found, that the reason is the static definition > of the ..._devtab_entry. After removing the "static" key-word, my > test-program found his handels and does some pseudo inits... > > The question for me is now, what is the reason for a static devtab? > > The original source is: > > "...\ecos\packages\devs\usb\sa11x0\current\src\usbs_sa11x0_data.cxx" > > static CHAR_DEVIO_TABLE(usbs_sa11x0_ep0_devtab_functions, > &cyg_devio_cwrite, > &cyg_devio_cread, > &cyg_devio_select, > &usbs_devtab_get_config, > &usbs_devtab_set_config); > > static CHAR_DEVTAB_ENTRY(usbs_sa11x0_ep0_devtab_entry, > CYGDAT_DEVS_USB_SA11X0_DEVTAB_BASENAME "0c", > 0, > &usbs_sa11x0_ep0_devtab_functions, > &usbs_sa11x0_devtab_ep0_init, > 0, > (void*) &usbs_sa11x0_ep0); This sounds like a garbage collection problem. Without the static the variables the macros define will be global. So the compiler cannot throw it away if its not referenced within the local file. If its declared static and nothing references it within the file the compiler has probably decided the variables are not needed and throw them away. Hence they don't end up in libextras.a. What version of gcc are you using? Something newish? Andrew