This is an automated email from the git hooks/post-receive script.
ildumi pushed a commit to branch development
in repository libtool.
The following commit(s) were added to refs/heads/development by this push:
new da026c4f libtool: Limit a length of DLL name to 8.3 correctly
da026c4f is described below
commit da026c4f2310167e203a9c445531d3891ff2b6b6
Author: KO Myung-Hun <[email protected]>
AuthorDate: Thu Nov 13 14:41:48 2025 +0900
libtool: Limit a length of DLL name to 8.3 correctly
If a length of $release and/or $versionsuffix is more than 8 bytes,
a length of DLL name may be more than 8.
Then, this corrupts a generated DLL on OS/2.
This patch assures 3 bytes for libname, 2 bytes for release, and 3 bytes
for version at least.
* m4/libtool.m4 (soname_spec) [os2*]: Limit a length of DLL name to 8.3
correctly.
---
m4/libtool.m4 | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 6c3029f8..495bd10b 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -3173,9 +3173,14 @@ os2*)
need_lib_prefix=no
# OS/2 can only load a DLL with a base name of 8 characters or less.
soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
- v=$($ECHO $release$versuffix | tr -d .-);
- n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
- $ECHO $n$v`$shared_ext'
+ n=$($ECHO $libname | tr -d .-);
+ l=${#n}; test 3 -lt "$l" && l=3; mr=$((8 - $l));
+ r=$($ECHO $release | tr -d .-);
+ l=${#r}; test 2 -lt "$l" && l=2; mv=$(($mr - $l));
+ v=$($ECHO $versuffix | tr -d .- | cut -b -$mv);
+ r=$($ECHO $r | cut -b -$(($mr - ${#v})));
+ n=$($ECHO $n | cut -b -$((8 - ${#r} - ${#v})));
+ $ECHO $n$r$v`$shared_ext'
library_names_spec='${libname}_dll.$libext'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=BEGINLIBPATH