This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Help With CYG_HAL_TABLEs


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 <cyg/hal/hal_tables.h>
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 <header file>
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 <header file>
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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]