All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Warren <biggerbadderben@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/1] net: Add Xilinx LL Temac driver version2
Date: Tue, 24 Feb 2009 09:51:05 -0800	[thread overview]
Message-ID: <49A43389.3030706@gmail.com> (raw)
In-Reply-To: <49A40E2A.5040603@monstr.eu>

Hi Michal,

Michal Simek wrote:
> Hi Ben,
>   
>> Hi Michal,
>>
>> Michal Simek wrote:
>>
>> <snip>
>>     
>>>> All of the above mentioned issues are ones that I could easily deal
>>>> with, but one thing that really does need to change is that you need to
>>>> use the CONFIG_NET_MULTI API.  In other words, your driver should have a
>>>> single initialize() function (prototyped in include/netdev.h), and an
>>>> eth_device struct that gets registered.  All your access functions
>>>> (eth_init, eth_send, eth_recv etc.) will be static and pointed to by the
>>>> eth_device struct.  Most drivers are already this way.
>>>>     
>>>>         
>>> I look at it and I did some change and the main problem is in
>>> Microblaze GCC.
>>> We use GCC 3.4.1 and CONFIG_NET_MULTI use weak function and
>>> board_eth_init is
>>> never called. We are working on GCC 4.1.2 but I don't know when I get it.
>>>
>>>   
>>>       
>> According to the documentation I could find, weak symbols were present
>> in gcc 3.4.1.  Are you sure you're using them properly?  Due to the way
>> linking is performed in U-boot, any weak symbol overrides need to be in
>> source files that have strongly linked symbols.  You'll see that all
>> implementations of cpu_eth_init() and board_eth_init() are in files that
>> already contain stuff that is sure to be linked.
>>     
>
>
> hmm. I did some tests and I found that the my problem is with this line 40. (I
> use board_eth_init initialization)
> int board_eth_init(bd_t *bis) __attribute((weak, alias("__def_eth_init")));
> I am not gcc specialist but I smell problem with GCC.
>
>   
This essentially says "board_eth_init() = __def_eth_init() unless 
overridden by a strongly linked function".  Here's how I debug this 
stuff, and you don't need to instrument your code or even run it to know 
if the linking worked properly:

Look in the System.map file that the build system generates (it's 
human-readable).   If there are no overriding functions, you'd expect 
that the addresses of __def_eth_int(), cpu_eth_init() and 
board_eth_init() to be identical.  If YOUR board_eth_init() is linked 
in, it will have a different address.  That's it!

regards,
Ben

  reply	other threads:[~2009-02-24 17:51 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-01 11:16 [U-Boot] [PATCH 1/1] net: Add Xilinx LL Temac driver version2 monstr at monstr.eu
2009-02-17  9:35 ` Michal Simek
2009-02-23  6:45 ` Ben Warren
2009-02-23  8:03   ` Michal Simek
2009-02-23 13:51   ` Michal Simek
2009-02-23 18:29     ` Ben Warren
2009-02-24 15:11       ` Michal Simek
2009-02-24 17:51         ` Ben Warren [this message]
2009-02-24 18:27           ` Michal Simek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49A43389.3030706@gmail.com \
    --to=biggerbadderben@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.