From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19216 invoked by alias); 17 Oct 2003 18:38:51 -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 19158 invoked from network); 17 Oct 2003 18:38:48 -0000 Received: from unknown (HELO mail.systech.com) (209.75.216.5) by sources.redhat.com with SMTP; 17 Oct 2003 18:38:48 -0000 Received: by mail.systech.com with Internet Mail Service (5.5.2650.21) id <4VG4FT8S>; Fri, 17 Oct 2003 11:23:18 -0700 Message-ID: <80B97DE95AEED311BA580050047FE98494F741@mail.systech.com> From: Jay Foster To: "'ecos-discuss@sources.redhat.com'" Date: Fri, 17 Oct 2003 18:38:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Subject: [ECOS] Help With CYG_HAL_TABLEs X-SW-Source: 2003-10/txt/msg00330.txt.bz2 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. Jay -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss