dc6a41b936
stack modules. It adds support for mangling symbols exported by a module by prepending a string to them. (This avoids overlapping symbols in the kernel linker.) It allows the use of a macro as the module name in the DECLARE_MACRO() and MACRO_VERSION() macros. It allows the code to register stack aliases (e.g. both a generic name ["default"] and version-specific name ["default_10_3p1"]). With these changes, it is trivial to compile TCP stack modules with the name defined in the Makefile and to load multiple versions of the same stack simultaneously. This functionality can be used to enable side-by-side testing of an old and new version of the same TCP stack. It also could support upgrading the TCP stack without a reboot. Reviewed by: gnn, sjg (makefiles only) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D11086
19 lines
437 B
Awk
19 lines
437 B
Awk
# $FreeBSD$
|
|
|
|
# Read global symbols from object file.
|
|
BEGIN {
|
|
while ("${NM:='nm'} " ARGV[1] | getline) {
|
|
if (match($0, /^[^[:space:]]+ [^AU] (.*)$/)) {
|
|
syms[$3] = $2
|
|
}
|
|
}
|
|
delete ARGV[1]
|
|
}
|
|
|
|
# Strip commons, make everything else local.
|
|
END {
|
|
for (member in syms) {
|
|
printf("--redefine-sym=%s=%s%s\n", member, prefix, member);
|
|
}
|
|
}
|