Britta Eckhardt (1): Fix Bug 749: Add Support for Solaris SPARC 32bit Harvey Harrison (3): gluegen: use explicit ArrayList constructor to avoid @SuppressWarnings and clone() gluegen: use enhanced for-loops in ArrayHashSet gluegen: remove executable bit from java and c source files Sven Gothel (112): Android Launcher: Fix ClassLoaderUtil's JNI lib-path determination, use ApplicationInfo's nativeLibraryDir (API level 9). Android build scripts: Fix env. name ANDROID_SDK_HOME -> ANDROID_HOME Complete commit 43163af2618a0aaa3cf41de8027ef402d7e89cc3 - jogamp-androidtasks.xml was using ANDROID_SDK_HOME, -> ANDROID_HOME Refine AWTEDTExecutor.invoke(..): Allow control whether a non AWT-EDT may execute the runnable. Fix Bug625: StructAccessor missing setShortsAt() and getShortsAt() methods for short[] Add com.jogamp.common.util.PrimitiveStack (FloatStack and IntegerStack), a simple primitive stack implementation. PrimitiveStack: Add 'void position(int)' to set new position. Add test case w/ initialSizeElem:=0. README: Add new IRC channel, mark Jabber deprecated Android Completion for launching main() class via MainLauncher; Fix ActivityLauncher order of delegation/super activity callbacks. Buffers: Fix typo RecursiveLock.getHoldCount(): Fix API doc formatting test script Modified Java 1.5 Buffers patch 2b7d1b1d25cb2cd73311ec9159b465f0391bf5e0 - May break GCJ/ECJ .. needs to be revised. Add MainLauncher adb launch script. Here we only utilize non-root features, i.e. can be launched on non-hacked device. MainLauncher: Remove Thread.destroy() - n/a on Android .. Fix ActivityLauncher/MainLauncher .. and make adb-launch-main more suitable adb-launch-main: logcat: append to log GlueGen: NativeLibrary Fix, JNILibLoaderBase Enhancement Add OSX Java7 build script Bump Android NDK to 'android-ndk-r8d' - Note: '-fno-use-linker-plugin' is required (?!) Cleanup GlueGen config 'ExtendedInterfaceSymbols*' Fix comments in gluegen-cpptasks-android* config file Android: Cleanup ClassLoaderUtil/LauncherUtil - Using cached parent ClassLoader for SYS-Packages w/ native libs, and non cached child ClassLoader for USR-Packages IOUtil.copyStream2ByteBuffer: read while numRead > -1 ; add variant w/ initialCapcity IOUtil.copyStream2ByteBuffer: Turns out on Android, no -1 (EOS) is returned - relax loop-condition (hope thats ok) Bug 681: Add Basic ELF Header + ARM EABI Section Parsing, allowing to distinguish ARM soft-float/hard-float (part-1) Script: ADB launcher: Use system package, instead of user package (pkg -> sys in URI) Bug 681: Use ELF Header + ARM EABI Section Parsing in PlatformPropsImpl to to distinguish ARM soft-float/hard-float (part-2) TestElfReader01.testGNULinuxSelfExe: Restrict to LINUX Bug 681: Add Elf Parsing for other OS than Linux, if ARM and !ANDROID using /proc/self/exe (Linux) or a found java/jvm native lib. Adding Function and FunctionTask extending RunnableTask functionality Fix FunctionTask's run()/eval(..) return value assignment: Ensure it's done before syncObject.notifyAll() ; Make methods final OSX Java6/Java7: Adapt to used JDK (Apple's Java6 or Oracle's Java7) OSX/Java7 darwin/jawt_md.h Workaround ; Disable OSX/i386 if compiled w/ Java7 [1.7 - 2.0]; Valid Java range [1.6 - 2.0]. Add property 'jvmJava.exe' -> ${java.home}/bin/java, default jvm for unit tests; Add optional property 'jvmJava7.exe' for Java7 unit tests. Only evn. JUNIT_DISABLED==true -> junit.is.disabled:=true Minor edits to JarUtil.Resolver functionality: Exception types, avoiding duplicate processing of strings etc. Promote AWTEDTExecutor to public package com.jogamp.common.util.awt ; Exclude java.part.awt in android gluegen-rt. Unit Tests: OSX/Java7 w/o 32bit tests ; Reliable Test1p*JavaEmitter JNI binding initialization Fix Long*HashMap impl. of IntIntHashMap: Better 64bit hash value, using new HashUtil. Function- RunnableTask: Add PrintStream 'exceptionOut' argument allowing non blocking exceptions to be shown. Function- RunnableTask: Clear runnableException @ start for re-entry; Fix tExecuted (@ exception); Add debug property 'jogamp.debug.TaskBase.TraceSource', to dump ctor stack trace @ exception. Fix RecursiveLockImpl* corner case: Timeout reached but lock released -> Assume Lock Fix intptr_t*, uintptr_t*, ptrdiff_t* and size_t* mapping, map them to PointerBuffer, since referenced memory-size is arch dependent Fix unit test of commit 1610dbb4e4d1a1ecf31eb837a47e0f5be04afdac: Add native address cleanup (32bit) Bug 588: Adding jogamp.version property, i.e. 2.0.2-rc- used for Manifest ; Common jogamp_int_version for Android. Move *_base_version to jogamp.version.base: Unifying base version across all core modules Align integer version property name .. jogamp_int_version -> jogamp.version.int Revert version.timestamp to yyyyMMdd only, i.e. w/o HHmm VersionUtil: add getManifest(.., String[] extensions) variant, allowing detection of multiple ordered extensions ArrayHashSet: Add ctor w/ initialCapacity and (initialCapacity, loadFactor) IntBitfield: Add optimization path w/ int bitCount bitfield range. Replace '* 32' -> '<< 5', same for division. IntBitfield: Add bit-count, O(1) per int-element, using HAKEM. Bug 715: Adding unit test w/ 'intArrayCopy(int *dest, int *src, int num)' to test array offset working correct. Fix Bug 715: Don't modify 'carray' pointer returned from GetPrimitiveArrayCritical(..) VersionNumber: Add API doc, use final int values, remove protected 'nop' ctor; Add VersionNumberString [extends VersionNumber] which additionally holds the orig. string value. make/gluegen-cpptasks-base.xml: Expose evaluated 'isI386' and 'isAMD64' property, allowing to trigger x86_64 -> x86_32 crosscompilation. build.xml: fix intendations Add 'glibc-compat-symbols.h' to force usage of minimal GLIBC symbols currently for memcpy only, used in our x86_32 and default gcc toolchain cmake file. glibc-compat-symbols.h: Add __arm__ -> GLIBC_2.4 ; default is now GLIBC_2.2.5 // Still minimum required is GLIBC_2.4! Modify linux-arm scripts for new toolchain (crosstools-ng) ; gluegen-cpptasks-linux-armv6hf.xml: Enable cc-arg '-mfloat-abi=hard' ; Add script make*all.sh Fix Bug 650: Use toolchain default arch & float options for default arm cc/ld target in make/gluegen-cpptasks-base.xml make/lib/gluegen-cpptasks-linux-armv6[hf].xml: Set property 'useGCCARMTargetArchAndFloatOptions' indicating ARM arch & float gcc options are desired. Revert "make/lib/gluegen-cpptasks-linux-armv6[hf].xml: Set property 'useGCCARMTargetArchAndFloatOptions' indicating ARM arch & float gcc options are desired." Adding scripts to check all JogAmp native ARM libraries ; check-glibc.sh checks all glibc version .. VersionNumber*: Add static final 'zeroVersion' for convenience and identity. Buffers: Expose 'getRemainingBytes(Object buffer)' Buffers: Add 'sizeOfBufferType(Class bufferType)' Buffers: getRemainingBytes(Object) -> remainingBytes(Object); sizeOfBufferElem(Buffer) -> sizeOfBufferElem(Object) to include NativeBuffer RecursiveThreadGroupLockImpl01Unfairish: Fix DEBUG output Enhance VersionNumber*: Use only RegExp and cache default (no wrapped whitespace tokenizer); String match: Store end-of-match and flag defined components. Fix Bug 683 part1: IOUtil, JarUtil, TempJarCache, .. uses URI instead of URL to remove DNS Lookups etc .. Bug 747: AndroidVersion: HashMap -> IntObjectHashMap Fix Bug 683 part1b: Add IOUtil.getRelativeOf(URL, ..), wrapper for URI for convenience (JOGL ShaderCode) and bwd. compatibility Bug 752: Review Code Vulnerabilities (Permission Checks of new exposed code and privileged access) Fix Bug 751 OSX Java-6: Derive host/target-rt jar file from 'java.home'. Android SDK changes: Add /build-tools/17.0.0 to PATH GlueGen (Compile Time): Add 'CStruct' Annotation Processor (APT) to 'gluegen' C Structs on-the-fly (2-pass actually). Fix CStruct APT File Location - Threw FileNotFoundException w/ Java7 Fix DynamicLinker Impl: Add Bionic specialization using Bionic's non POSIX values; Using same pattern for Mac OS X. Complete 5d211c6fa6a0452cc4569712e436184e34504a88: Remove generate.nativelibrary.sources and dynlink* gluegen files due to manual impl. Robostness: Catch Throwables on NativeLibrary.open(..) and be verbose in DEBUG mode ; DynamicLinker: Add 'String getLastError()'. Refine 4feb65517ae4a4e2b9b04cdfc4b85582cb8b9784: Handle verbose error cases post catch block, i.e. exception (if occured) and dlerror value. Fix Bug 757: Regression of URL to URI conversion (Encoded path not compatible w/ file scheme. Fix URLCompositionTest for Bug 757: If file, replace '/' in expected result w/ OS specific File.separatorChar Fix URLCompositionTest for Bug 757 (2): If file, replace '/' in expected result w/ OS specific File.separatorChar Fix URLCompositionTest for Bug 757 (3): If file, replace '/' in expected result w/ OS specific File.separatorChar Bug 758: Fix scripts and ant build files to work w/ Java7 (default now) producing Java6 bytecode ; Apply JAR Manifest tags: Sealed, Permissions and Codebase Security: Tighten DynamicLinker*, NativeLibrary and DynamicLibraryBundle access. Security: Gluegen generated native methods w/ 'pass through function pointer' _must_ be private! DynamicLinker*: Proper Override notation DynamicLookupHelper: Add secure isFunctionAvailable(..); NativeLibrary: Add TODO comments, re protected lookup functions. ProcAddressTable: Make all handles package private, use local PROCADDRESS_VAR_PREFIX instance, add checkAllPermissions() for reset() and initEntry(..) Script: Add adb logcat script Scripts: Windows java run: Use 6u45 Scripts Windows / JOGAMP_JAR_CODEBASE: No double quotes, otherwise they would be added to MANIFEST Fix regression of f69831574d4927d03d40c330d0b047d8c89622a4: Use getDeclaredField() and setAccessible(true) due to package private handle fields. Security: Tighten DynamicLinker*, NativeLibrary and DynamicLibraryBundle access (2) Scripts: Use a local hostname for JOGAMP_JAR_CODEBASE for security testing scripts runtests .. ProcAddressTable: If using a SecurityManager 'checkAllLinkPermission()' instead of 'checkAllPermissions' if accessing the cached function handles. ProcAddressTable: Fix regressions: getField(..) -> getDeclaredField(..), incl. access check; Utilize 'AccessibleObject.setAccessible(Field[], true)' for performance. Fix jogamp-androidtask.xml's keytool and jarsigner options for Java6 / Android compatibility w/ Java7 toolchain. Fix commit eb842815498f5926828b49c48fffce22fc9586a2: Adding missing files Scripts: Build macosx w/ java7 targeting java6 in build-macosx. SingletonInstance: Add stats about time/attempts, subtract real-time delta from remaining amount. Fix commit e46b51f75b550bc0faf70ae18f526d466d8180f3 Fix SingletonInstanceServerSocket.kill(): Needs to mark alive=false in case of JVM shutdown! AbstractBuffer: Generalize 'capacity' calculation, since we may encounter a byte-buffer w/ given elementSize semantics UnixDynamicLinkerImpl: Unify impl. of openLibraryLocal(..), openLibraryGlobal(..) and lookupSymbolGlobal(..) - removing duplicate code. Refine commit 5e01e993aeba4e95fc8aa6e75b3e295011e27bbb, skip Buffers.sizeOfBufferElem(..) call. TAG RC12 / Android 0914013 Wade Walker (2): Make JarUtil work with custom classloaders Add security checks to resolver methods. Xerxes RĂ„nby (2): PlatformPropsImpl: JAVA_RUNTIME_NAME is null using GCJ gij JRE. Buffer.isDirect() operation is undefined w/ Eclipse ecj and GCJ gij JRE.