From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9241 invoked by alias); 17 Oct 2003 20:34:30 -0000 Mailing-List: contact ecos-discuss-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@sources.redhat.com Received: (qmail 9202 invoked from network); 17 Oct 2003 20:34:27 -0000 Received: from unknown (HELO mail.systech.com) (209.75.216.5) by sources.redhat.com with SMTP; 17 Oct 2003 20:34:27 -0000 Received: by mail.systech.com with Internet Mail Service (5.5.2650.21) id <4VG4F4LQ>; Fri, 17 Oct 2003 13:18:58 -0700 Message-ID: <80B97DE95AEED311BA580050047FE98494F742@mail.systech.com> From: Jay Foster To: 'Gary Thomas' , Jay Foster Cc: "'ecos-discuss@sources.redhat.com'" Date: Fri, 17 Oct 2003 20:34:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Subject: RE: [ECOS] Help With CYG_HAL_TABLEs X-SW-Source: 2003-10/txt/msg00332.txt.bz2 No, that wasn't the case. I had just discovered this on my own. Adding the "-library=libextras.a" to the compile line in the CDL resolved this. I found a good explanation in the CDL component writer's guide, chapter 4, page 102. Thanks Jay -----Original Message----- From: Gary Thomas [mailto:gary@mlbassoc.com] Sent: Friday, October 17, 2003 1:04 PM To: Jay Foster Cc: 'ecos-discuss@sources.redhat.com' Subject: Re: [ECOS] Help With CYG_HAL_TABLEs On Fri, 2003-10-17 at 12:23, Jay Foster wrote: > I'm trying to use the CYG_HAL_TABLE macros to implement an extensible table. > My table entries aren't getting added to the table. I first suspected that > the linker was removing them, since there are no references to them, but I'm > not so sure, since other tables, such as the DEVTAB table encounter the same > situation, yet its entries get added. > > In a header file, I declare the following: > > #include > typedef struct myentry > { > STUFF HERE > } CYG_HAL_TABLE_TYPE myentry_t; > > extern myentry_t __MYTABLE__[], __MYTABLE_END__; > #define MYTABLE_ENTRY(_l, arg, arg) \ > myentry_t _l CYG_HAL_TABLE_ENTRY(myentrytype) = { \ > arg, \ > arg \ > } > > In a source file, I do: > > #include
> CYG_HAL_TABLE_BEGIN( __MYTABLE__, myentrytype ); > CYG_HAL_TABLE_END( __MYTABLE_END__, myentrytype ); > > > myentry_t *p; > for (p=&(__MYTABLE__[0]; p!=&(__MYTABLE_END__); p++ > { > stuff > } > > In another source file, I do: > #include
> MYTABLE_ENTRY(l0, stuff); > MYTABLE_ENTRY(l1, stuff); > etc. > > > In my symbol table, I find entries for __MYTABLE__ and __MYTABLE_END__, but > no symbols in between for the table entries (l0, l1, etc.). There are no > references to the table entry labels, so I suspected the linker was removing > them. Other tables don't suffer from this, so I'm thinking it's something > else. What, I don't know. For example, in my symbol table I see: > > __DEVTAB__ > haldiag_io0 > __DEVTAB_END__ > > yet there are no references to haldiag_io0, except for the DEVTAB_ENTRY() > macro. > Note that any file which uses tables must either be specified directly in the link/build or be included in "libextras.a". Is this the case? -- Gary Thomas MLB Associates -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss