This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Call of weakly referenced functions
- From: Sebastian Huber <sebastian dot huber at embedded-brains dot de>
- To: binutils at sourceware dot org
- Date: Wed, 17 Jul 2013 21:37:29 +0200
- Subject: Call of weakly referenced functions
Hello,
I have a question regarding the call of weakly referenced functions. On
ARM for example we have this:
extern void weak(void);
__attribute__((weak)) extern void weak(void);
void _start(void)
{
weak();
}
GCC output:
.global _start
.type _start, %function
_start:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r3, lr}
bl weak
ldmfd sp!, {r3, lr}
bx lr
.size _start, .-_start
.weak weak
Linker output:
00008444 <_start>:
8444: e92d4008 push {r3, lr}
8448: e1a00000 nop ; (mov r0, r0)
844c: e8bd4008 pop {r3, lr}
8450: e12fff1e bx lr
So this looks really nice. Does this work on all ELF targets supported
by the GNU linker?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.