Overview
Comment: | Merge trunk into branch "tagged-pointers" |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | tagged-pointers |
Files: | files | file ages | folders |
SHA3-256: |
be250b4fb358c63b5086f11579c80670 |
User & Date: | js on 2020-07-12 10:54:59 |
Other Links: | branch diff | manifest | tags |
Context
2020-07-12
| ||
11:50 | Obfuscate tagged pointers check-in: 0bfac2b513 user: js tags: tagged-pointers | |
10:54 | Merge trunk into branch "tagged-pointers" check-in: be250b4fb3 user: js tags: tagged-pointers | |
10:35 | Split of_random() into of_random{16,32,64}() check-in: 14f05841a3 user: js tags: trunk | |
2020-07-09
| ||
00:11 | lookup-asm-arm-elf.S: Support tagged pointers check-in: eb007abba9 user: js tags: tagged-pointers | |
Changes
Modified .travis.yml from [f5a0aabab2] to [0b214ac062].
︙ | ︙ | |||
237 238 239 240 241 242 243 244 245 246 247 248 249 250 | # Nintendo Wii - os: linux dist: bionic env: - config=wii before_install: - if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then case "$TRAVIS_CPU_ARCH" in amd64 | s390x) pkgs="gobjc-multilib"; ;; *) | > > | 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | # Nintendo Wii - os: linux dist: bionic env: - config=wii services: docker before_install: - if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then case "$TRAVIS_CPU_ARCH" in amd64 | s390x) pkgs="gobjc-multilib"; ;; *) |
︙ | ︙ | |||
264 265 266 267 268 269 270 | fi; if grep precise /etc/lsb-release >/dev/null; then sudo ipx_internal_net add 1234 123456; fi; fi | | < < < < < < | < < < < < < | < | < < < < < < < < < < < < < | 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | fi; if grep precise /etc/lsb-release >/dev/null; then sudo ipx_internal_net add 1234 123456; fi; fi - if [ "$config" = "nintendo_3ds" -o "$config" = "nintendo_ds" ]; then docker pull devkitpro/devkitarm; fi - if [ "$config" = "wii" ]; then docker pull devkitpro/devkitppc; fi - if [ "$config" = "amigaos" ]; then wget -q https://franke.ms/download/amiga-gcc.tgz; tar -C / -xzf amiga-gcc.tgz; fi script: - build() { if ! git clean -fxd >/tmp/clean_log 2>&1; then cat /tmp/clean_log; exit 1; fi; ./autogen.sh; .travis/build.sh "$@"; } - if [ "$TRAVIS_OS_NAME" = "linux" -a -z "$config" ]; then build_32_64() { build OBJC="$CC" $@; case "$TRAVIS_CPU_ARCH" in |
︙ | ︙ | |||
421 422 423 424 425 426 427 | build --host=m68k-amigaos; build --host=m68k-amigaos --disable-amiga-lib; build --host=m68k-amigaos --enable-static; fi - if [ "$config" = "nintendo_3ds" ]; then | > | | | | > | | | | > | | | > | | 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 | build --host=m68k-amigaos; build --host=m68k-amigaos --disable-amiga-lib; build --host=m68k-amigaos --enable-static; fi - if [ "$config" = "nintendo_3ds" ]; then ./autogen.sh; docker run -e DEVKITPRO=/opt/devkitpro -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm /objfw/.travis/build.sh --host=arm-none-eabi --with-3ds; fi - if [ "$config" = "nintendo_ds" ]; then ./autogen.sh; docker run -e DEVKITPRO=/opt/devkitpro -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitarm /objfw/.travis/build.sh --host=arm-none-eabi --with-nds; fi - if [ "$config" = "wii" ]; then ./autogen.sh; docker run -e DEVKITPRO=/opt/devkitpro -e PATH="/opt/devkitpro/devkitPPC/bin:$PATH" -v $TRAVIS_BUILD_DIR:/objfw devkitpro/devkitppc /objfw/.travis/build.sh ac_cv_prog_wiiload= --host=powerpc-eabi --with-wii; fi |
Added .travis/build.sh version [02fcddbdad].
> > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/sh cd $(dirname $0)/.. echo ">> Configuring with $@" if ! ./configure ac_cv_path_TPUT= "$@"; then cat config.log exit 1 fi echo ">> Building (configured with $@)" if ! make -j4 >/tmp/make_log 2>&1; then cat /tmp/make_log exit 1 fi echo ">> Installing (configured with $@)" if ! sudo PATH="$PATH" make install >/tmp/install_log 2>&1; then cat /tmp/install_log exit 1 fi |
Modified Makefile from [4ae8b8a509] to [a860b9a6b0].
︙ | ︙ | |||
21 22 23 24 25 26 27 | doxygen >/dev/null tarball: docs echo "Generating tarball for version ${PACKAGE_VERSION}..." rm -fr objfw-${PACKAGE_VERSION} objfw-${PACKAGE_VERSION}.tar \ objfw-${PACKAGE_VERSION}.tar.gz fossil tarball --name objfw-${PACKAGE_VERSION} current - \ | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | doxygen >/dev/null tarball: docs echo "Generating tarball for version ${PACKAGE_VERSION}..." rm -fr objfw-${PACKAGE_VERSION} objfw-${PACKAGE_VERSION}.tar \ objfw-${PACKAGE_VERSION}.tar.gz fossil tarball --name objfw-${PACKAGE_VERSION} current - \ --exclude '.cirrus*,.fossil-settings/*,.gitignore,.travis*' | \ ofarc -ttgz -xq - cp configure config.h.in objfw-${PACKAGE_VERSION}/ ofarc -cq objfw-${PACKAGE_VERSION}.tar \ $$(find objfw-${PACKAGE_VERSION} | sort) rm -fr objfw-${PACKAGE_VERSION} gzip -9 objfw-${PACKAGE_VERSION}.tar rm -f objfw-${PACKAGE_VERSION}.tar |
︙ | ︙ |
Modified configure.ac from [a08bfedbde] to [69c688a7b0].
︙ | ︙ | |||
816 817 818 819 820 821 822 | case "$host_cpu" in arm* | earm*) AC_MSG_CHECKING(for VFP2 or above) AC_TRY_COMPILE([], [ #if !defined(__arm64__) && !defined(__aarch64__) && \ !defined(__ARM64_ARCH_8__) __asm__ __volatile__ ( | | | 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 | case "$host_cpu" in arm* | earm*) AC_MSG_CHECKING(for VFP2 or above) AC_TRY_COMPILE([], [ #if !defined(__arm64__) && !defined(__aarch64__) && \ !defined(__ARM64_ARCH_8__) __asm__ __volatile__ ( "vstmdb sp!, {d0-d7}" ); #endif ], [ AC_DEFINE(HAVE_VFP2, 1, [Whether we have VFP2 or above]) AC_MSG_RESULT(yes) ], [ AC_MSG_RESULT(no) |
︙ | ︙ | |||
897 898 899 900 901 902 903 | ]) AS_IF([test x"$enable_static" = x"yes" -o x"$enable_shared" = x"no"], [ AC_SUBST(ENCODINGS_A, "encodings.a") AC_SUBST(ENCODINGS_ENCODINGS_A, "encodings/encodings.a") ]) ]) | < < < | < < < | 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 | ]) AS_IF([test x"$enable_static" = x"yes" -o x"$enable_shared" = x"no"], [ AC_SUBST(ENCODINGS_A, "encodings.a") AC_SUBST(ENCODINGS_ENCODINGS_A, "encodings/encodings.a") ]) ]) AC_CHECK_FUNCS(arc4random getrandom random, break) AS_IF([test x"$host_os" != x"morphos"], [ AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl") ]) AC_CHECK_HEADERS_ONCE(dlfcn.h) case "$host_os" in netbsd*) |
︙ | ︙ |
Modified src/OFDNSResolver.m from [7061e87e9f] to [6319b8ebc8].
︙ | ︙ | |||
810 811 812 813 814 815 816 | { void *pool = objc_autoreleasePoolPush(); OFNumber *ID; OFDNSResolverContext *context; /* Random, unused ID */ do { | | | 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 | { void *pool = objc_autoreleasePoolPush(); OFNumber *ID; OFDNSResolverContext *context; /* Random, unused ID */ do { ID = [OFNumber numberWithUInt16: of_random16()]; } while ([_queries objectForKey: ID] != nil); if (query.domainName.UTF8StringLength > 253) @throw [OFOutOfRangeException exception]; if (_settings->_nameServers.count == 0) { id exception = [OFDNSQueryFailedException |
︙ | ︙ |
Modified src/OFMapTable.m from [8ca8ae429a] to [ec26b7463a].
︙ | ︙ | |||
163 164 165 166 167 168 169 | if (_capacity < MIN_CAPACITY) _capacity = MIN_CAPACITY; _buckets = [self allocZeroedMemoryWithSize: sizeof(*_buckets) count: _capacity]; if (of_hash_seed != 0) | | | 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | if (_capacity < MIN_CAPACITY) _capacity = MIN_CAPACITY; _buckets = [self allocZeroedMemoryWithSize: sizeof(*_buckets) count: _capacity]; if (of_hash_seed != 0) _rotate = of_random16() & 31; } @catch (id e) { [self release]; @throw e; } return self; } |
︙ | ︙ | |||
530 531 532 533 534 535 536 | count: _capacity]; /* * Get a new random value for _rotate, so that it is not less secure * than creating a new hash map. */ if (of_hash_seed != 0) | | | 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 | count: _capacity]; /* * Get a new random value for _rotate, so that it is not less secure * than creating a new hash map. */ if (of_hash_seed != 0) _rotate = of_random16() & 31; } - (bool)containsObject: (void *)object { if (object == NULL || _count == 0) return false; |
︙ | ︙ |
Modified src/OFObject.h from [0775955f65] to [f46ea6f043].
︙ | ︙ | |||
28 29 30 31 32 33 34 35 | #endif #include <stddef.h> #include <stdint.h> #include <stdbool.h> #include <limits.h> #include "macros.h" | > | | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #endif #include <stddef.h> #include <stdint.h> #include <stdbool.h> #include <limits.h> #include "block.h" #include "macros.h" #include "once.h" /* * Some versions of MinGW require <winsock2.h> to be included before * <windows.h>. Do this here to make sure this is always done in the correct * order, even if another header includes just <windows.h>. */ #ifdef __MINGW32__ |
︙ | ︙ | |||
1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 | extern void *_Null_unspecified objc_autoreleasePoolPush(void); extern void objc_autoreleasePoolPop(void *_Null_unspecified pool); #endif extern id of_alloc_object(Class class_, size_t extraSize, size_t extraAlignment, void *_Nullable *_Nullable extra); extern void OF_NO_RETURN_FUNC of_method_not_found(id self, SEL _cmd); extern uint32_t of_hash_seed; #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END #ifdef __OBJC__ # import "OFObject+KeyValueCoding.h" # import "OFObject+Serialization.h" #endif #endif | > > > > | 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 | extern void *_Null_unspecified objc_autoreleasePoolPush(void); extern void objc_autoreleasePoolPop(void *_Null_unspecified pool); #endif extern id of_alloc_object(Class class_, size_t extraSize, size_t extraAlignment, void *_Nullable *_Nullable extra); extern void OF_NO_RETURN_FUNC of_method_not_found(id self, SEL _cmd); extern uint32_t of_hash_seed; /* These do *NOT* provide cryptographically secure randomness! */ extern uint16_t of_random16(void); extern uint32_t of_random32(void); extern uint64_t of_random64(void); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END #ifdef __OBJC__ # import "OFObject+KeyValueCoding.h" # import "OFObject+Serialization.h" #endif #endif |
Modified src/OFObject.m from [d6b3535b02] to [f5834cd36c].
︙ | ︙ | |||
99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #define PRE_MEM(mem) ((struct pre_mem *)(void *)((char *)mem - PRE_MEM_ALIGN)) static struct { Class isa; } allocFailedException; uint32_t of_hash_seed; static const char * typeEncodingForSelector(Class class, SEL selector) { Method method; if ((method = class_getInstanceMethod(class, selector)) == NULL) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | #define PRE_MEM(mem) ((struct pre_mem *)(void *)((char *)mem - PRE_MEM_ALIGN)) static struct { Class isa; } allocFailedException; uint32_t of_hash_seed; #ifndef HAVE_ARC4RANDOM static void initRandom(void) { struct timeval tv; # ifdef HAVE_RANDOM gettimeofday(&tv, NULL); srandom((unsigned)(tv.tv_sec ^ tv.tv_usec)); # else gettimeofday(&tv, NULL); srand((unsigned)(tv.tv_sec ^ tv.tv_usec)); # endif } #endif uint16_t of_random16(void) { #if defined(HAVE_ARC4RANDOM) return arc4random(); #elif defined(HAVE_GETRANDOM) uint16_t buffer; OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else static of_once_t onceControl = OF_ONCE_INIT; of_once(&onceControl, initRandom); # ifdef HAVE_RANDOM return random() & 0xFFFF; # else return rand() & 0xFFFF; # endif #endif } uint32_t of_random32(void) { #if defined(HAVE_ARC4RANDOM) return arc4random(); #elif defined(HAVE_GETRANDOM) uint32_t buffer; OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else return ((uint32_t)of_random16() << 16) | of_random16(); #endif } uint64_t of_random64(void) { #if defined(HAVE_ARC4RANDOM) uint64_t buffer; arc4random_buf(&buffer, sizeof(buffer)); return buffer; #elif defined(HAVE_GETRANDOM) uint64_t buffer; OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else return ((uint64_t)of_random32() << 32) | of_random32(); #endif } static const char * typeEncodingForSelector(Class class, SEL selector) { Method method; if ((method = class_getInstanceMethod(class, selector)) == NULL) |
︙ | ︙ | |||
248 249 250 251 252 253 254 | #else objc_setForwardHandler((IMP)&of_forward, (IMP)&of_forward_stret); #endif objc_setEnumerationMutationHandler(enumerationMutationHandler); do { | | | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | #else objc_setForwardHandler((IMP)&of_forward, (IMP)&of_forward_stret); #endif objc_setEnumerationMutationHandler(enumerationMutationHandler); do { of_hash_seed = of_random32(); } while (of_hash_seed == 0); } + (void)unload { } |
︙ | ︙ |
Modified src/macros.h from [975aa82042] to [41e131467f].
︙ | ︙ | |||
894 895 896 897 898 899 900 | } static OF_INLINE char of_ascii_tolower(char c) { return (c >= 'A' && c <= 'Z' ? 'a' + (c - 'A') : c); } | < < < < < < < < < < < < < < < < < < < < < | 894 895 896 897 898 899 900 901 | } static OF_INLINE char of_ascii_tolower(char c) { return (c >= 'A' && c <= 'Z' ? 'a' + (c - 'A') : c); } #endif |
Modified src/objfw-defs.h.in from [f12fccebb9] to [4530c4317b].
1 2 3 4 5 6 | #undef INFINITY #undef LLONG_MAX #undef LLONG_MIN #undef OF_APPLE_RUNTIME #undef OF_BIG_ENDIAN #undef OF_FLOAT_BIG_ENDIAN | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 | #undef INFINITY #undef LLONG_MAX #undef LLONG_MIN #undef OF_APPLE_RUNTIME #undef OF_BIG_ENDIAN #undef OF_FLOAT_BIG_ENDIAN #undef OF_HAVE_ATOMIC_BUILTINS #undef OF_HAVE_ATOMIC_OPS #undef OF_HAVE_BUILTIN_BSWAP16 #undef OF_HAVE_BUILTIN_BSWAP32 #undef OF_HAVE_BUILTIN_BSWAP64 #undef OF_HAVE_CHMOD #undef OF_HAVE_CHOWN |
︙ | ︙ | |||
27 28 29 30 31 32 33 | #undef OF_HAVE_OSATOMIC_64 #undef OF_HAVE_PIPE #undef OF_HAVE_PLEDGE #undef OF_HAVE_PLUGINS #undef OF_HAVE_PROCESSES #undef OF_HAVE_PTHREADS #undef OF_HAVE_PTHREAD_SPINLOCKS | < | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #undef OF_HAVE_OSATOMIC_64 #undef OF_HAVE_PIPE #undef OF_HAVE_PLEDGE #undef OF_HAVE_PLUGINS #undef OF_HAVE_PROCESSES #undef OF_HAVE_PTHREADS #undef OF_HAVE_PTHREAD_SPINLOCKS #undef OF_HAVE_RECURSIVE_PTHREAD_MUTEXES #undef OF_HAVE_SCHED_YIELD #undef OF_HAVE_SOCKETS #undef OF_HAVE_STDNORETURN #undef OF_HAVE_SYMLINK #undef OF_HAVE_SYNC_BUILTINS #undef OF_HAVE_SYS_SOCKET_H |
︙ | ︙ |