Hi ports!
Here is a fix [1] for libaudiofile that allows building [2] with
ports-gcc-6.4 on macppc.
I can't do better than quoting the patch commit message:
libaudiofile: fix the second undefined behaviour in the same line of
code, cstatic which isn't actually a cstatic. switch to just defining
it in the accessor. GCC optimized this undefined behaviour away leading
to an undefined reference in the builds.
Testing:
- 'make test' passes (see [2])
- i've built audio/normalize without issues, the runtime [3] is as
expected. Same thing using ports-gcc-4.9.
- it doesn't break the amd64 build and audio/normalize runtime is fine
there as well.
I'm joining a diff.
Charlène.
[1]
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/audio/libaudiofile/patches/patch-libaudiofile_modules_SimpleModule.h?rev=1.3&content-type=text/x-cvsweb-markup&only_with_tag=MAIN
[2] http://ix.io/1v1W
[3] It requires a patch for audio/mpg321 if you need to normalize mp3
files, not yet commited as i'm writing this
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/libaudiofile/Makefile,v
retrieving revision 1.58
diff -u -p -r1.58 Makefile
--- Makefile 22 Nov 2018 20:28:25 -0000 1.58
+++ Makefile 4 Dec 2018 14:03:15 -0000
@@ -10,7 +10,7 @@ SUBST_VARS= V
DISTNAME= audiofile-${V}
PKGNAME= lib${DISTNAME}
-REVISION= 5
+REVISION= 6
SHARED_LIBS += audiofile 1.0 # 1.0
Index: patches/patch-libaudiofile_modules_SimpleModule_h
===================================================================
RCS
file: /cvs/ports/devel/libaudiofile/patches/patch-libaudiofile_modules_SimpleModule_h,v
retrieving revision 1.1 diff -u -p -r1.1
patch-libaudiofile_modules_SimpleModule_h
--- patches/patch-libaudiofile_modules_SimpleModule_h 22 Nov
2018 20:28:25 -0000 1.1 +++
patches/patch-libaudiofile_modules_SimpleModule_h 4 Dec 2018
14:03:15 -0000 @@ -1,18 +1,38 @@ $OpenBSD:
patch-libaudiofile_modules_SimpleModule_h,v 1.1 2018/11/22 20:28:25
naddy Exp $ Fix undefined behavior in sign conversion.
-https://github.com/mpruett/audiofile/commit/b62c902dd258125cac86cd2df21fc898035a43d3
+From
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/audio/libaudiofile/patches/patch-libaudiofile_modules_SimpleModule.h?rev=1.3&content-type=text/x-cvsweb-markup&only_with_tag=MAIN
Index: libaudiofile/modules/SimpleModule.h
--- libaudiofile/modules/SimpleModule.h.orig
+++ libaudiofile/modules/SimpleModule.h
-@@ -123,7 +123,8 @@ struct signConverter
+@@ -122,17 +122,24 @@ struct signConverter
+ typedef typename IntTypes<Format>::SignedType SignedType;
typedef typename IntTypes<Format>::UnsignedType UnsignedType;
- static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
+- static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
- static const int kMinSignedValue = -1 << kScaleBits;
-+ static const int kMaxSignedValue = (((1 << (kScaleBits - 1))
- 1) << 1) + 1; -+ static const int kMinSignedValue =
-kMaxSignedValue - 1;
-
+-
struct signedToUnsigned : public
std::unary_function<SignedType, UnsignedType> {
+- UnsignedType operator()(SignedType x) { return x -
kMinSignedValue; } ++ UnsignedType operator()(SignedType
x) { ++ int kScaleBits = (Format + 1) * CHAR_BIT
- 1; ++ int kMaxSignedValue = (((1 <<
(kScaleBits - 1)) - 1) << 1) + 1; ++ int
kMinSignedValue = -kMaxSignedValue - 1; ++
return x - kMinSignedValue; ++ }
+ };
+
+ struct unsignedToSigned : public
std::unary_function<SignedType, UnsignedType>
+ {
+- SignedType operator()(UnsignedType x) { return x +
kMinSignedValue; } ++ SignedType operator()(UnsignedType
x) { ++ int kScaleBits = (Format + 1) * CHAR_BIT
- 1; ++ int kMaxSignedValue = (((1 <<
(kScaleBits - 1)) - 1) << 1) + 1; ++ int
kMinSignedValue = -kMaxSignedValue - 1; ++
return x + kMinSignedValue; ++ }
+ };
+ };
+
No comments:
Post a Comment