Skip to content

Commit

Permalink
build: fix "pragma weak" mixups
Browse files Browse the repository at this point in the history
Not only was there a minor typo in the "pragma weak" preprocessor
checks, but also were the tests not behaving as needed - they only
indicated support for the /first/ method of implementing weak aliases,
which on Linux is __attribute__ and not #pragma.

* m4/ax_sys_weak_alias.m4: set defines for _all_ weak alias methods
* zebra/kernel_null.c: fix typo

Cc: Doug VanLeuven <[email protected]>
Signed-off-by: David Lamparter <[email protected]>
  • Loading branch information
eqvinox committed Feb 9, 2013
1 parent b0baf07 commit b2baffe
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 14 deletions.
22 changes: 9 additions & 13 deletions m4/ax_sys_weak_alias.m4
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,8 @@ void weakf(int c) __attribute__((weak, alias("__weakf")));],
])
# What was the result of the test?
AS_IF([test $ax_sys_weak_alias = no &&
test $ax_cv_sys_weak_alias_attribute = yes], [
ax_sys_weak_alias=attribute
AS_IF([test $ax_cv_sys_weak_alias_attribute = yes], [
test $ax_sys_weak_alias = no && ax_sys_weak_alias=attribute
AC_DEFINE([HAVE_SYS_WEAK_ALIAS_ATTRIBUTE], 1,
[Define this if weak aliases may be created with __attribute__])
])
Expand All @@ -192,9 +191,8 @@ void __weakf(int c) {}],
])
# What was the result of the test?
AS_IF([test $ax_sys_weak_alias = no &&
test $ax_cv_sys_weak_alias_pragma = yes], [
ax_sys_weak_alias=pragma
AS_IF([test $ax_cv_sys_weak_alias_pragma = yes], [
test $ax_sys_weak_alias = no && ax_sys_weak_alias=pragma
AC_DEFINE([HAVE_SYS_WEAK_ALIAS_PRAGMA], 1,
[Define this if weak aliases may be created with @%:@pragma weak])
])
Expand All @@ -217,9 +215,8 @@ void __weakf(int c) {}],
])
# What was the result of the test?
AS_IF([test $ax_sys_weak_alias = no &&
test $ax_cv_sys_weak_alias_hpsecondary = yes], [
ax_sys_weak_alias=hpsecondary
AS_IF([test $ax_cv_sys_weak_alias_hpsecondary = yes], [
test $ax_sys_weak_alias = no && ax_sys_weak_alias=hpsecondary
AC_DEFINE([HAVE_SYS_WEAK_ALIAS_HPSECONDARY], 1,
[Define this if weak aliases may be created with @%:@pragma _HP_SECONDARY_DEF])
])
Expand All @@ -242,9 +239,8 @@ void __weakf(int c) {}],
])
# What was the result of the test?
AS_IF([test $ax_sys_weak_alias = no &&
test $ax_cv_sys_weak_alias_criduplicate = yes], [
ax_sys_weak_alias=criduplicate
AS_IF([test $ax_cv_sys_weak_alias_criduplicate = yes], [
test $ax_sys_weak_alias = no && ax_sys_weak_alias=criduplicate
AC_DEFINE([HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE], 1,
[Define this if weak aliases may be created with @%:@pragma _CRI duplicate])
])
Expand All @@ -271,14 +267,14 @@ _ACEOF
@%:@ifndef HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
extern void weakf(int c);
@%:@endif
@%:@if defined(HAVE_SYS_WEAK_ALIAS_PRAGMA)
@%:@pragma weak weakf = __weakf
@%:@elif defined(HAVE_SYS_WEAK_ALIAS_HPSECONDARY)
@%:@pragma _HP_SECONDARY_DEF __weakf weakf
@%:@elif defined(HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE)
@%:@pragma _CRI duplicate weakf as __weakf
@%:@endif
@%:@endif
void __weakf(int c) {}
@%:@ifdef HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
void weakf(int c) __attribute((weak, alias("__weakf")));
Expand Down
2 changes: 1 addition & 1 deletion zebra/kernel_null.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ int kernel_delete_ipv4 (struct prefix *a, struct rib *b) { return 0; }
#endif

int kernel_add_ipv6 (struct prefix *a, struct rib *b) { return 0; }
#ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA_PRAGMA
#ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA
#pragma weak kernel_delete_ipv6 = kernel_add_ipv6
#else
int kernel_delete_ipv6 (struct prefix *a, struct rib *b) { return 0; }
Expand Down

0 comments on commit b2baffe

Please sign in to comment.