summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe
diff options
context:
space:
mode:
authorJoshua Oreman2010-05-27 02:52:44 +0200
committerMichael Brown2010-05-27 11:19:14 +0200
commit2aad3fab233f0235f9a8f677ae7bb402f1647eb6 (patch)
treec4630d1f9e5a2c9d21b7018c63fe20878d1c00af /src/include/ipxe
parent[efi] Fix link order for elf2efi (diff)
downloadipxe-2aad3fab233f0235f9a8f677ae7bb402f1647eb6.tar.gz
ipxe-2aad3fab233f0235f9a8f677ae7bb402f1647eb6.tar.xz
ipxe-2aad3fab233f0235f9a8f677ae7bb402f1647eb6.zip
[build] Use weak definitions instead of weak declarations
This removes the need for inline safety wrappers, marginally reducing the size penalty of weak functions, and works around an apparent binutils bug that causes undefined weak symbols to not actually be NULL when compiling with -fPIE (as EFI builds do). A bug in versions of binutils prior to 2.16 (released in 2005) will cause same-file weak definitions to not work with those toolchains. Update the README to reflect our new dependency on binutils >= 2.16. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe')
-rw-r--r--src/include/ipxe/dhcp.h2
-rw-r--r--src/include/ipxe/sec80211.h37
2 files changed, 4 insertions, 35 deletions
diff --git a/src/include/ipxe/dhcp.h b/src/include/ipxe/dhcp.h
index bbfa293b1..bbbe73d2c 100644
--- a/src/include/ipxe/dhcp.h
+++ b/src/include/ipxe/dhcp.h
@@ -630,7 +630,7 @@ extern int start_pxebs ( struct job_interface *job, struct net_device *netdev,
* should look for such a packet and call store_cached_dhcpack() with
* it if it exists.
*/
-__weak_decl ( void, get_cached_dhcpack, ( void ), (), );
+extern void get_cached_dhcpack ( void );
extern void store_cached_dhcpack ( userptr_t data, size_t len );
diff --git a/src/include/ipxe/sec80211.h b/src/include/ipxe/sec80211.h
index 5ac96de1d..59ca3eb85 100644
--- a/src/include/ipxe/sec80211.h
+++ b/src/include/ipxe/sec80211.h
@@ -27,42 +27,11 @@ FILE_LICENCE ( GPL2_OR_LATER );
/** @file
*
* Definitions for general secured-network routines.
- *
- * Any function in this file which may be referenced by code which is
- * not exclusive to encryption-enabled builds (e.g. sec80211_detect(),
- * which is called by net80211_probe_step() to fill the net80211_wlan
- * structure's security fields) must be declared as a weak symbol,
- * using an inline interface similar to that used for
- * sec80211_detect() below. This prevents secure network support from
- * bloating general builds by any more than a few tiny hooks to call
- * crypto functions when crypto structures are non-NULL.
*/
-int _sec80211_detect ( struct io_buffer *iob,
- enum net80211_security_proto *secprot,
- enum net80211_crypto_alg *crypt )
- __attribute__ (( weak ));
-
-
-/**
- * Inline safety wrapper for _sec80211_detect()
- *
- * @v iob I/O buffer containing beacon frame
- * @ret secprot Security handshaking protocol used by network
- * @ret crypt Cryptosystem used by network
- * @ret rc Return status code
- *
- * This function transparently calls _sec80211_detect() if the file
- * containing it was compiled in, or returns an error indication of
- * @c -ENOTSUP if not.
- */
-static inline int sec80211_detect ( struct io_buffer *iob,
- enum net80211_security_proto *secprot,
- enum net80211_crypto_alg *crypt ) {
- if ( _sec80211_detect )
- return _sec80211_detect ( iob, secprot, crypt );
- return -ENOTSUP;
-}
+int sec80211_detect ( struct io_buffer *iob,
+ enum net80211_security_proto *secprot,
+ enum net80211_crypto_alg *crypt );
int sec80211_detect_ie ( int is_rsn, u8 *start, u8 *end,
enum net80211_security_proto *secprot,