
Hi, all
2008/10/3 Ben Warren biggerbadderben@gmail.com:
Jean-Christophe PLAGNIOL-VILLARD wrote:
On 23:07 Wed 01 Oct , Ben Warren wrote:
Hi Nobuhiro-san,
Nobuhiro Iwamatsu wrote:
get_prom function was used __attriute__ , but it is not enable. ax88796.o does not do link besides ne2000.o. When ld is carried out, get_prom function of ax88796.c is ignored. This problem is a thing by specifications of ld. I checked and test this patch on SuperH and MIPS.
You're seeing a common problem with weak functions - namely that they don't always get overridden. If there was a single function in ax88796.c that had strong static linkage there wouldn't be a problem. Using the weak attribute for get_prom() is an elegant solution that improves code re-use, so I'm wondering if there's a way it can be made to work.
If nobody has any suggestions over the next couple of days, I'll pull in this patch.
This get_prom() function was set as weak in commit 2ef7503a593c77a80c2a054011970227c4b62774, labeled " NE2000: Fix regresssion introduced by e710185aae90 on non AX88796" by Jean-Christophe PLAGNIOL-VILLARD. It's a shame that this was done without testing...
The NE2000 is tested every modification and Release on qemu_mips by myself
And I've no problem on this board.
Sorry, I have a hard time believing that this works if you enable CONFIG_DRIVER_AX88796L. Are you sure that the weak get_prom() is overridden?
Thank you for your check.
When I enabled CONFIG_DRIVER_AX88796L on SH and MIPS, and checked ne2000.o by nm, get_prom is set in WEAK. But get_prom is not linked, and __get_prom is linked in u-boot. With the current code, get_prom of AX88796L is not linked.
If need nm and objdump output , I can attach.
Best regards, Nobuhiro