From: Ben Warren <biggerbadderben@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] weak functions not being over-ridden (location dependent)
Date: Wed, 26 Nov 2008 12:48:55 -0800 [thread overview]
Message-ID: <492DB637.70005@gmail.com> (raw)
In-Reply-To: <492DAC60.6060608@gmail.com>
Graeme Russ wrote:
> Ben Warren wrote:
>
>> Graeme,
>>
>> Graeme Russ wrote:
>>
>>> Wolfgang Denk wrote:
>>>
>>>
>>>> I think this has been answered before: it doesn't work when the
>>>> functions are in libraries. It only works when the respective
>>>> functions are in explicitely linked object files.
>>>>
>>>>
>>>>
>>>>
>>> This doesn't seem right - reset_cpu () will be in a library no matter
>>> where
>>> I put it (either libsc520.a or libeNET.a)
>>>
>>>
>> Is the overriding function the only one in the source file (and thus the
>> object file)? I've found that overriding functions will link only if
>> there's other code in the source file that is strongly-linked.
>>
>> regards,
>> Ben
>>
>
> That solves the problem - Thanks
>
> I think this is an ld bug IMHO - will submit to binutils mailing list for
> comment
>
>
I found discussions through Google where this was talked about, and for
whatever reason it's intended behavior. There are ways to force linking
with ld switches, but they're only supported in newer versions of
gcc/binutils and we're constrained here to supporting older tools.
From a software architecture standpoint, it seems wrong, but the easy
fix is to add your overriding functions to existing files. For example,
you'll see that all implementations of cpu_eth_init() are in
cpu/<cpu>/cpu.c, although I would have preferred to create a new file
called something like cpu/<cpu>/enet.c
Fun stuff...
cheers,
Ben
next prev parent reply other threads:[~2008-11-26 20:48 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-26 12:02 [U-Boot] weak functions not being over-ridden (location dependent) Graeme Russ
2008-11-26 13:01 ` Remy Bohmer
2008-11-26 15:12 ` Wolfgang Denk
2008-11-26 19:32 ` Graeme Russ
2008-11-26 19:42 ` Ben Warren
2008-11-26 20:06 ` Graeme Russ
2008-11-26 20:48 ` Ben Warren [this message]
2008-11-27 19:50 ` Mike Frysinger
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=492DB637.70005@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.