Index: ChangeLog ================================================================== --- ChangeLog +++ ChangeLog @@ -2,10 +2,20 @@ * Changes of existing features or bugfixes + New features This file only contains the most significant changes. +ObjFW 1.1.2 -> ObjFW 1.1.3, 2024-05-12 + * Fixes +[OFSystemInfo networkInterfaces] on NetBSD. + * Properly hides private symbols so they can't be used accidentally anymore. + * Adds missing documentation for various functions and macros. + * Uses RtlGenRandom to get proper randomness on Windows now. + * No longer uses _wutime64, which is buggy in some MinGW distributions. + * Only uses blx on ARM if it is available now. + * Adds a workaround for OFSubprocess tests on Windows 9x. + * Skips symlink tests if symlinks are unavailable. + ObjFW 1.1.1 -> ObjFW 1.1.2, 2024-04-20 * Fixes configure script on systems using BusyBox for tr. * Fixes compiling for Haiku. * Fixes -[contentsOfDirectoryAtIRI:] corrupting the stack on Solaris. * Fixes compiling for Wii with newer SDK. Index: README.md ================================================================== --- README.md +++ README.md @@ -83,19 +83,21 @@ Operating System | Command ---------------------------|--------------------------------------------- Alpine Linux | `doas apk add objfw` CRUX | `sudo prt-get depinst objfw` + Debian | `sudo apt install objfw` Fedora | `sudo dnf install objfw` FreeBSD | `sudo pkg install objfw` Haiku | `pkgman install objfw` Haiku (gcc2h) | `pkgman install objfw_x86` macOS (Homebrew) | `brew install objfw` macOS (pkgsrc) | `cd $PKGSRCDIR/devel/objfw && make install` NetBSD | `cd /usr/pkgsrc/devel/objfw && make install` OpenBSD | `doas pkg_add objfw` OpenIndiana | `sudo pkg install developer/objfw` + Ubuntu | `sudo apt install objfw` Windows (MSYS2/CLANG64) | `pacman -S mingw-w64-clang-x86_64-objfw` Windows (MSYS2/CLANGARM64) | `pacman -S mingw-w64-clang-aarch64-objfw` Windows (MSYS2/UCRT64) | `pacman -S mingw-w64-ucrt-x86_64-objfw` Windows (MSYS2/MINGW32) | `pacman -S mingw-w64-i686-objfw` Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -822,10 +822,27 @@ AC_MSG_ERROR( [Floating point implementation does not conform to IEEE 754!])]) case "$host_cpu" in arm* | earm*) + AC_MSG_CHECKING(for blx) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([], [ + #if !defined(__arm64__) && !defined(__arch64__) && \ + !defined(__ARM64_ARCH_8__) + __asm__ __volatile__ ( + "blx r12" + ); + #endif + ]) + ], [ + AC_DEFINE(HAVE_BLX, 1, [Whether we have blx]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + AC_MSG_CHECKING(for VFP2 or above) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([], [ #if !defined(__arm64__) && !defined(__aarch64__) && \ !defined(__ARM64_ARCH_8__) Index: extra.mk.in ================================================================== --- extra.mk.in +++ extra.mk.in @@ -9,11 +9,11 @@ OBJFWRT_SHARED_LIB = @OBJFWRT_SHARED_LIB@ OBJFWRT_STATIC_LIB = @OBJFWRT_STATIC_LIB@ OBJFWRT_FRAMEWORK = @OBJFWRT_FRAMEWORK@ OBJFWRT_LIB_MAJOR = 1 OBJFWRT_LIB_MINOR = 1 -OBJFWRT_LIB_PATCH = 0 +OBJFWRT_LIB_PATCH = 1 OBJFWRT_LIB_MAJOR_MINOR = ${OBJFWRT_LIB_MAJOR}.${OBJFWRT_LIB_MINOR} OBJFWBRIDGE_SHARED_LIB = @OBJFWBRIDGE_SHARED_LIB@ OBJFWBRIDGE_STATIC_LIB = @OBJFWBRIDGE_STATIC_LIB@ OBJFWBRIDGE_FRAMEWORK = @OBJFWBRIDGE_FRAMEWORK@ Index: src/forwarding/forwarding-arm-elf.S ================================================================== --- src/forwarding/forwarding-arm-elf.S +++ src/forwarding/forwarding-arm-elf.S @@ -53,11 +53,16 @@ mov r12, r0 ldr r0, [sp, #0] mov r1, r4 ldr r2, [sp, #4] +#ifdef HAVE_BLX blx r12 +#else + mov lr, pc + bx r12 +#endif cmp r0, #0 beq 0f ldr r1, [sp, #0] cmp r0, r1 @@ -109,11 +114,16 @@ mov r12, r0 ldr r0, [sp, #4] mov r1, r4 ldr r2, [sp, #8] +#ifdef HAVE_BLX blx r12 +#else + mov lr, pc + bx r12 +#endif cmp r0, #0 beq 0f ldr r1, [sp, #4] cmp r0, r1 Index: src/test/Makefile ================================================================== --- src/test/Makefile +++ src/test/Makefile @@ -15,25 +15,10 @@ includesubdir = ObjFWTest include ../../buildsys.mk -CPPFLAGS += -I. \ - -I.. \ - -I../.. \ - -I../exceptions \ - -I../runtime \ - -I../hid \ - -DOBJFWTEST_LOCAL_INCLUDES -LD = ${OBJC} -FRAMEWORK_LIBS := -F.. \ - -framework ObjFW \ - -F../runtime \ - ${RUNTIME_FRAMEWORK_LIBS} \ - ${LIBS} -LIBS := -L.. -lobjfw -L../runtime ${RUNTIME_LIBS} ${LIBS} - install-extra: i=ObjFWTest.oc; \ ${INSTALL_STATUS}; \ if ${MKDIR_P} ${DESTDIR}${libdir}/objfw-config && \ ${INSTALL} -m 644 $$i ${DESTDIR}${libdir}/objfw-config/$$i; then \ @@ -50,5 +35,14 @@ else \ ${DELETE_FAILED}; \ fi \ fi rmdir ${DESTDIR}${libdir}/objfw-config >/dev/null 2>&1 || true + +CPPFLAGS += -I. \ + -I.. \ + -I../.. \ + -I../exceptions \ + -I../hid \ + -I../runtime \ + -DOBJFWTEST_LOCAL_INCLUDES +LD = ${OBJC} Index: utils/ofarc/OFArc.m ================================================================== --- utils/ofarc/OFArc.m +++ utils/ofarc/OFArc.m @@ -480,19 +480,22 @@ type: type mode: mode encoding: encoding]; #ifdef OF_MACOS - @try { - OFString *attributeName = @"com.apple.quarantine"; - - _quarantine = [[[OFFileManager defaultManager] - extendedAttributeDataForName: attributeName - ofItemAtIRI: IRI] retain]; - } @catch (OFGetItemAttributesFailedException *e) { - if (e.errNo != /*ENOATTR*/ 93) - @throw e; + if ([IRI.scheme isEqual: @"file"]) { + @try { + OFString *attributeName = + @"com.apple.quarantine"; + + _quarantine = [[[OFFileManager defaultManager] + extendedAttributeDataForName: attributeName + ofItemAtIRI: IRI] retain]; + } @catch (OFGetItemAttributesFailedException *e) { + if (e.errNo != /*ENOATTR*/ 93) + @throw e; + } } #endif if (outputDir != nil) { OFFileManager *fileManager =