Skip to content

Commit a756010

Browse files
authored
Merge pull request wolfSSL#8492 from douzzer/20250221-fix-Kbuild-EXPORT_SYMBOL_NS_GPL
20250221-fix-Kbuild-EXPORT_SYMBOL_NS_GPL
2 parents 0116ab6 + c9cf413 commit a756010

File tree

4 files changed

+53
-38
lines changed

4 files changed

+53
-38
lines changed

.wolfssl_known_macro_extras

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ CONFIG_WOLFSSL_TARGET_PORT
138138
CONFIG_WOLFSSL_TLS13_ENABLED
139139
CONFIG_WOLFSSL_TLS_VERSION_1_2
140140
CONFIG_WOLFSSL_TLS_VERSION_1_3
141-
CONFIG_WOLFTPM_EXAMPLE_NAME_ESPRESSIF
142141
CONFIG_WOLFTPM
142+
CONFIG_WOLFTPM_EXAMPLE_NAME_ESPRESSIF
143143
CONFIG_X86
144144
CONV_WITH_DIV
145145
CPA_CY_API_VERSION_NUM_MAJOR
@@ -619,7 +619,6 @@ WOLFSSL_DILITHIUM_VERIFY_NO_MALLOC
619619
WOLFSSL_DILITHIUM_VERIFY_SMALL_MEM
620620
WOLFSSL_DISABLE_EARLY_SANITY_CHECKS
621621
WOLFSSL_DTLS_DISALLOW_FUTURE
622-
WOLFSSL_DTLS_DROP_STATS
623622
WOLFSSL_DTLS_RESEND_ONLY_TIMEOUT
624623
WOLFSSL_DUMP_MEMIO_STREAM
625624
WOLFSSL_DUP_CERTPOL
@@ -802,7 +801,6 @@ WOLFSSL_TLS13_MIDDLEBOX_COMPAT
802801
WOLFSSL_TLS13_SHA512
803802
WOLFSSL_TLS13_TICKET_BEFORE_FINISHED
804803
WOLFSSL_TLSX_PQC_MLKEM_STORE_PRIV_KEY
805-
WOLFSSL_TLSX_PQC_MLKEM_STORE_OBJ
806804
WOLFSSL_TRACK_MEMORY_FULL
807805
WOLFSSL_TRAP_MALLOC_SZ
808806
WOLFSSL_UNALIGNED_64BIT_ACCESS
@@ -918,8 +916,8 @@ __MINGW64_VERSION_MAJOR
918916
__MINGW64__
919917
__MWERKS__
920918
__NT__
921-
__OpenBSD__
922919
__OS2__
920+
__OpenBSD__
923921
__PIE__
924922
__POWERPC__
925923
__PPC__

linuxkm/Kbuild

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
# along with this program; if not, write to the Free Software
1919
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
2020

21+
.ONESHELL:
2122
SHELL=bash
2223

2324
ifeq "$(WOLFSSL_OBJ_FILES)" ""
@@ -158,30 +159,30 @@ rename-pie-text-and-data-sections:
158159
ifneq "$(quiet)" "silent_"
159160
@echo -n ' Checking wolfCrypt for unresolved symbols and forbidden relocations... '
160161
endif
161-
@cd "$(obj)" || exit $$?; \
162-
$(LD) -relocatable -o wolfcrypt_test_link.o $(WOLFCRYPT_PIE_FILES) || exit $$?; \
163-
undefined=$$($(NM) --undefined-only wolfcrypt_test_link.o) || exit $$?; \
164-
GOT_relocs=$$($(READELF) --relocs --wide wolfcrypt_test_link.o | egrep '^[^ ]+ +[^ ]+ +[^ ]*GOT[^ ]* ') || [ $$? = 1 ] || exit 2; \
165-
rm wolfcrypt_test_link.o; \
166-
if [ -n "$$undefined" ]; then \
167-
echo "wolfCrypt container has unresolved symbols:" 1>&2; \
168-
echo "$$undefined" 1>&2; \
169-
exit 1; \
170-
fi; \
171-
if [ -n "$$GOT_relocs" ]; then \
172-
echo "wolfCrypt container has GOT relocations (non-local function address used as operand?):" 1>&2; \
173-
echo "$$GOT_relocs" 1>&2; \
174-
exit 1; \
162+
@cd "$(obj)" || exit $$?
163+
$(LD) -relocatable -o wolfcrypt_test_link.o $(WOLFCRYPT_PIE_FILES) || exit $$?
164+
undefined=$$($(NM) --undefined-only wolfcrypt_test_link.o) || exit $$?
165+
GOT_relocs=$$($(READELF) --relocs --wide wolfcrypt_test_link.o | egrep '^[^ ]+ +[^ ]+ +[^ ]*GOT[^ ]* ') || [ $$? = 1 ] || exit 2
166+
rm wolfcrypt_test_link.o
167+
if [ -n "$$undefined" ]; then
168+
echo "wolfCrypt container has unresolved symbols:" 1>&2
169+
echo "$$undefined" 1>&2
170+
exit 1
171+
fi
172+
if [ -n "$$GOT_relocs" ]; then
173+
echo "wolfCrypt container has GOT relocations (non-local function address used as operand?):" 1>&2
174+
echo "$$GOT_relocs" 1>&2
175+
exit 1
175176
fi
176177
ifneq "$(quiet)" "silent_"
177-
@echo 'OK.'
178+
echo 'OK.'
178179
endif
179-
@cd "$(obj)" || exit $$?; \
180-
for file in $(WOLFCRYPT_PIE_FILES); do \
181-
$(OBJCOPY) --rename-section .text=.text.wolfcrypt --rename-section .data=.data.wolfcrypt --rename-section .rodata=.rodata.wolfcrypt "$$file" || exit $$?; \
180+
cd "$(obj)" || exit $$?
181+
for file in $(WOLFCRYPT_PIE_FILES); do
182+
$(OBJCOPY) --rename-section .text=.text.wolfcrypt --rename-section .data=.data.wolfcrypt --rename-section .rodata=.rodata.wolfcrypt "$$file" || exit $$?
182183
done
183184
ifneq "$(quiet)" "silent_"
184-
@echo ' wolfCrypt .{text,data,rodata} sections containerized to .{text,data,rodata}.wolfcrypt'
185+
echo ' wolfCrypt .{text,data,rodata} sections containerized to .{text,data,rodata}.wolfcrypt'
185186
endif
186187

187188
$(obj)/linuxkm/module_exports.c: rename-pie-text-and-data-sections
@@ -192,14 +193,20 @@ endif
192193
# auto-generate the exported symbol list, leveraging the WOLFSSL_API visibility tags.
193194
# exclude symbols that don't match wc_* or wolf*.
194195
$(obj)/linuxkm/module_exports.c: $(src)/module_exports.c.template $(WOLFSSL_OBJ_TARGETS)
195-
@cp $< $@
196-
@$(READELF) --symbols --wide $(WOLFSSL_OBJ_TARGETS) | \
197-
$(AWK) '/^ *[0-9]+: / { \
198-
if ($$8 !~ /^(wc_|wolf|WOLF|TLSX_)/){next;} \
199-
if (($$4 == "FUNC") && ($$5 == "GLOBAL") && ($$6 == "DEFAULT")) { \
200-
print "EXPORT_SYMBOL_NS_GPL(" $$8 ", EXPORT_SYMBOL_NS_Q(WOLFSSL));";\
201-
} \
202-
}' >> $@
203-
@echo -e '#ifndef NO_CRYPT_TEST\nEXPORT_SYMBOL_NS_GPL(wolfcrypt_test, EXPORT_SYMBOL_NS_Q(WOLFSSL));\n#endif' >> $@
196+
@cp $< $@ || exit $$?
197+
if [[ "$${VERSION}" -gt 6 || ("$${VERSION}" -eq 6 && "$${PATCHLEVEL}" -ge 13) ]]; then
198+
# use ASCII octal escape to avoid syntax disruption in the awk script.
199+
ns='\042WOLFSSL\042'
200+
else
201+
ns='WOLFSSL'
202+
fi
203+
$(READELF) --symbols --wide $(WOLFSSL_OBJ_TARGETS) |
204+
$(AWK) '/^ *[0-9]+: / {
205+
if ($$8 !~ /^(wc_|wolf|WOLF|TLSX_)/){next;}
206+
if (($$4 == "FUNC") && ($$5 == "GLOBAL") && ($$6 == "DEFAULT")) {
207+
print "EXPORT_SYMBOL_NS_GPL(" $$8 ", '"$$ns"');";
208+
}
209+
}' >> $@ || exit $$?
210+
echo -e "#ifndef NO_CRYPT_TEST\nEXPORT_SYMBOL_NS_GPL(wolfcrypt_test, $${ns});\n#endif" >> $@
204211

205212
clean-files := linuxkm src wolfcrypt

linuxkm/module_exports.c.template

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,6 @@
4747
#define EXPORT_SYMBOL_NS_GPL(sym, ns) EXPORT_SYMBOL_GPL(sym)
4848
#endif
4949

50-
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0))
51-
#define EXPORT_SYMBOL_NS_Q(x) #x
52-
#else
53-
#define EXPORT_SYMBOL_NS_Q(x) x
54-
#endif
55-
5650
#include <wolfssl/wolfcrypt/memory.h>
5751
#include <wolfssl/wolfcrypt/wc_port.h>
5852
#include <wolfssl/wolfcrypt/logging.h>

wolfssl/wolfcrypt/settings.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3620,6 +3620,22 @@ extern void uITRON4_free(void *p) ;
36203620
#ifdef __PIE__
36213621
#define WC_NO_INTERNAL_FUNCTION_POINTERS
36223622
#endif
3623+
3624+
#ifndef NO_OLD_WC_NAMES
3625+
#define NO_OLD_WC_NAMES
3626+
#endif
3627+
#ifndef NO_OLD_SHA_NAMES
3628+
#define NO_OLD_SHA_NAMES
3629+
#endif
3630+
#ifndef NO_OLD_MD5_NAME
3631+
#define NO_OLD_MD5_NAME
3632+
#endif
3633+
#ifndef OPENSSL_COEXIST
3634+
#define OPENSSL_COEXIST
3635+
#endif
3636+
#ifndef NO_OLD_SSL_NAMES
3637+
#define NO_OLD_SSL_NAMES
3638+
#endif
36233639
#endif
36243640

36253641

0 commit comments

Comments
 (0)