This is the mail archive of the ecos-discuss@sourceware.org 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]

Re: Why does #include <cyg/io/eth/eth_drv> define a bunch of time-related symbols?


On 2013-06-25, Sergei Gavrikov <sergei.gavrikov@gmail.com> wrote:
> On Tue, 25 Jun 2013, Grant Edwards wrote:
>> On 2013-06-25, Grant Edwards <grant.b.edwards@gmail.com> wrote:
>> 
>> > I'm working on a new Ethernet driver.  eCos kernel/libs (including the
>> > new drive) build fine. But, when I try to link an application I get a
>> > bunch of errors because some time-related functions are defined twice.
>> > They're defined in libtarget where they're supposed to be, but they're
>> > also getting defined in the object file for my Ethernet driver [and I
>> > can't figure out why].
>  
> I guess you catch some kind of "Library Issue"
>
>   http://gcc.gnu.org/c99status.html

Sort of.  Those "library issues" refer to things in glibc that don't
yet meet the C99 standard.  There are new features/functions/macros
that haven't been added yet to glibc. You can still build applications
in C99 mode and everything works great (as long as you don't depeond
the new C library feature to be there). I've been using gcc C99 mode
to build large Linux applications with both uclibc and glibc for
years, and have never had any problems at all.

The problem I ran into with eCos is that a header file is actually
"broken" in that it doesn't even allow the file to be compiled
correctly.

> Not only libraries. Many people (me too) are surprised when they look
> at this table http://en.wikipedia.org/wiki/C99#Implementations --
> very few compilers are ready for C99.

I'm not a language-lawyer, but in my experience C99 mode in gcc,
glibc, and uclibc has been perfectly usable for years.  There may be a
few obscure features that haven't yet been added yet, but you can turn
on C99 mode and use the features that are there without any problems.

> Of course, if you (your fingers :-) have a habit... Well, you know
> about C and C++ mix in eCos. If you like for-scope declarations then
> you would use standard C with a bit of C++ sugar instead C99, eCos
> way:
>
>   % grep -Er '\<for\>\s+?\(\s+?\<int\>' $ECOS_REPOSITORY
>
> Though then here and there human can miss the needed extern "C"
> declarations and that is a penalty for the only one C99 habit.

I could do that. I'd rather try to fix the eCos header files so they
don't break when you use C99 mode. :)

-- 
Grant Edwards               grant.b.edwards        Yow! if it GLISTENS,
                                  at               gobble it!!
                              gmail.com            


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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