// test function addresses with __attribute__((weak)) extern void * ffoo1a (void) __attribute__((weak)); extern void * ffoo1a (void); void * foo1a (void) { return (void *)ffoo1a; } extern void * ffoo2a (void); extern void * ffoo2a (void) __attribute__((weak)); void * foo2a (void) { return (void *)ffoo2a; } extern void * ffoo3a (void); void * foo3a (void) { return (void *)ffoo3a; } extern void * ffoo3a (void) __attribute__((weak)); // test function addresses with #pragma weak #pragma weak ffoo1b extern void * ffoo1b (void); void * foo1b (void) { return (void *)ffoo1b; } extern void * ffoo2b (void); #pragma weak ffoo2b void * foo2b (void) { return (void *)ffoo2b; } extern void * ffoo3b (void); void * foo3b (void) { return (void *)ffoo3b; } #pragma weak ffoo3b // test variable addresses with __attribute__((weak)) extern int vfoo1c __attribute__((weak)); extern int vfoo1c; void * foo1c (void) { return (void *)&vfoo1c; } extern int vfoo2c; extern int vfoo2c __attribute__((weak)); void * foo2c (void) { return (void *)&vfoo2c; } extern int vfoo3c; void * foo3c (void) { return (void *)&vfoo3c; } extern int vfoo3c __attribute__((weak)); extern int vfoo4c __attribute__((weak)); int vfoo4c; void * foo4c (void) { return (void *)&vfoo4c; } int vfoo5c; extern int vfoo5c __attribute__((weak)); void * foo5c (void) { return (void *)&vfoo5c; } int vfoo6c; void * foo6c (void) { return (void *)&vfoo6c; } extern int vfoo6c __attribute__((weak)); extern int vfoo7c; void * foo7c (void) { return (void *)&vfoo7c; } int vfoo7c __attribute__((weak)); extern int vfoo8c __attribute__((weak)); void * foo8c (void) { return (void *)&vfoo8c; } extern int vfoo8c __attribute__((weak)); int vfoo8c; // test variable addresses with #pragma weak #pragma weak vfoo1d extern int vfoo1d; void * foo1d (void) { return (void *)&vfoo1d; } extern int vfoo2d; #pragma weak vfoo2d void * foo2d (void) { return (void *)&vfoo2d; } extern int vfoo3d; void * foo3d (void) { return (void *)&vfoo3d; } #pragma weak vfoo3d #pragma weak vfoo4d int vfoo4d; void * foo4d (void) { return (void *)&vfoo4d; } int vfoo5d; #pragma weak vfoo5d void * foo5d (void) { return (void *)&vfoo5d; } int vfoo6d; void * foo6d (void) { return (void *)&vfoo6d; } #pragma weak vfoo6d extern int vfoo7d; void * foo7d (void) { return (void *)&vfoo7d; } #pragma weak vfoo7d int vfoo7d; extern int vfoo8d; void * foo8d (void) { return (void *)&vfoo8d; } int vfoo8d; #pragma weak vfoo8d