This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Why does #include <cyg/io/eth/eth_drv> define a bunch of time-related symbols?
- From: Grant Edwards <grant dot b dot edwards at gmail dot com>
- To: ecos-discuss at ecos dot sourceware dot org
- Date: Tue, 25 Jun 2013 16:51:48 +0000 (UTC)
- Subject: Why does #include <cyg/io/eth/eth_drv> define a bunch of time-related symbols?
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].
However, my ethernet driver file has been stripped down to nothing but
a handful of #include directives:
------------------------------lpc1800_ether.c------------------------------
#include <pkgconf/system.h>
#include <cyg/infra/diag.h>
#include <cyg/io/eth/netdev.h>
#include <cyg/io/eth/eth_drv.h>
---------------------------------------------------------------------------
If I comment out the last line (eth_drv.h), the problem goes away (the
object file is empty). With that line, I get the duplicate time
functions showing up in what should be an empty object file.
Why?
Here's some info on the object file that's generated with eth_drv.h
included:
$ size [...]/current/src/devs_eth_arm_lpc1800_lpc1800_ether.o
text data bss dec hex filename
1740 0 0 1740 6cc [...]/current/src/devs_eth_arm_lpc1800_lpc1800_ether.o
$ nm -a [...]/current/src/devs_eth_arm_lpc1800_lpc1800_ether.o
00000000 t $a
[...]
00000000 N .debug_ranges
00000000 N .debug_str
00000000 t .text
00000000 t .text.asctime
00000000 t .text.asctime_r
00000000 t .text.ctime
00000000 t .text.ctime_r
00000000 t .text.cyg_libc_time_getzoneoffsets
00000000 t .text.cyg_libc_time_setdst
00000000 t .text.cyg_libc_time_setzoneoffsets
00000000 t .text.difftime
00000000 t .text.gmtime
00000000 t .text.localtime
00000000 t .text.localtime_r
00000000 t .text.strcoll
U __aeabi_i2d
00000000 T asctime
00000000 T asctime_r
00000000 T ctime
00000000 T ctime_r
U cyg_libc_time_asctime_buf
U cyg_libc_time_current_dst_offset
U cyg_libc_time_current_dst_stat
U cyg_libc_time_current_std_offset
U cyg_libc_time_day_name
00000000 T cyg_libc_time_getzoneoffsets
U cyg_libc_time_gmtime_buf
U cyg_libc_time_itoa
U cyg_libc_time_localtime_buf
U cyg_libc_time_month_name
U cyg_libc_time_normalize_structtm
00000000 T cyg_libc_time_setdst
00000000 T cyg_libc_time_setzoneoffsets
00000000 T difftime
00000000 T gmtime
U gmtime_r
00000000 T localtime
00000000 T localtime_r
00000000 a lpc1800_ether.c
U memcpy
U strcmp
00000000 T strcoll
--
Grant Edwards grant.b.edwards Yow! I'm a fuschia bowling
at ball somewhere in Brittany
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