Work-around 64bit build issues.

Log errors and abort as a temporary work-around for 64bit support.

Change-Id: I7f6b483d671189bd12ae0ef79515fcdd871eba17
diff --git a/cpu_ref/linkloader/android/librsloader.cpp b/cpu_ref/linkloader/android/librsloader.cpp
index 200006f..8357470 100644
--- a/cpu_ref/linkloader/android/librsloader.cpp
+++ b/cpu_ref/linkloader/android/librsloader.cpp
@@ -91,7 +91,12 @@
           static_cast<ELFSectionBits<32>*>(object->getSectionByIndex(i));
       if (bits) {
         const unsigned char* addr = bits->getBuffer();
+#ifdef __LP64__
+        ALOGE("Code temporarily disabled for 64bit build");
+        abort();
+#else
         shtab[i].sh_addr = reinterpret_cast<llvm::ELF::Elf32_Addr>(addr);
+#endif
       }
     }
   }
diff --git a/cpu_ref/linkloader/include/impl/ELFObject.hxx b/cpu_ref/linkloader/include/impl/ELFObject.hxx
index ca47820..0a30097 100644
--- a/cpu_ref/linkloader/include/impl/ELFObject.hxx
+++ b/cpu_ref/linkloader/include/impl/ELFObject.hxx
@@ -381,7 +381,12 @@
       if (!S) {
         missingSymbols = true;
       }
+#ifdef __LP64__
+      llvm::errs() << "Code temporarily disabled for 64bit build";
+      abort();
+#else
       sym->setAddress((void *)S);
+#endif
     }
 
     switch (rel->getType()) {
@@ -435,7 +440,12 @@
       if (!S) {
         missingSymbols = true;
       }
+#ifdef __LP64__
+      llvm::errs() << "Code temporarily disabled for 64bit build";
+      abort();
+#else
       sym->setAddress((void *)S);
+#endif
     }
 
     switch (rel->getType()) {
@@ -485,7 +495,12 @@
       if (!S) {
         missingSymbols = true;
       }
+#ifdef __LP64__
+      llvm::errs() << "Code temporarily disabled for 64bit build";
+      abort();
+#else
       sym->setAddress((void *)S);
+#endif
     }
 
     switch (rel->getType()) {
@@ -523,7 +538,13 @@
           A += S;
           *inst |= ((A >> 2) & 0x3FFFFFF);
           if (((P + 4) >> 28) != (A >> 28)) { // far local call
+#ifdef __LP64__
+            llvm::errs() << "Code temporarily disabled for 64bit build";
+            abort();
+            void* stub = NULL;
+#else
             void *stub = text->getStubLayout()->allocateStub((void *)A);
+#endif
             rsl_assert(stub && "cannot allocate stub.");
             sym->setAddress(stub);
             S = (int32_t)(intptr_t)stub;
@@ -534,7 +555,13 @@
       } else { // shared-library call
         A = (A & 0x3FFFFFF) << 2;
         rsl_assert(A == 0 && "R_MIPS_26 addend is not zero.");
+#ifdef __LP64__
+        llvm::errs() << "Code temporarily disabled for 64bit build";
+        abort();
+        void* stub = NULL;
+#else
         void *stub = text->getStubLayout()->allocateStub((void *)S);
+#endif
         rsl_assert(stub && "cannot allocate stub.");
         sym->setAddress(stub);
         S = (int32_t)(intptr_t)stub;
@@ -560,7 +587,12 @@
       }
       if (strcmp (sym->getName(), "_gp_disp") == 0) {
           S = (int)(intptr_t)got_address() + GP_OFFSET - (int)P;
+#ifdef __LP64__
+          llvm::errs() << "Code temporarily disabled for 64bit build";
+          abort();
+#else
           sym->setAddress((void *)S);
+#endif
       }
       *inst |= (((S + A + (int)0x8000) >> 16) & 0xFFFF);
       break;
@@ -601,8 +633,14 @@
         } else { // R_MIPS_CALL16
           rsl_assert(A == 0 && "R_MIPS_CALL16 addend is not 0.");
         }
+#ifdef __LP64__
+        llvm::errs() << "Code temporarily disabled for 64bit build";
+        abort();
+        int got_index = 0;
+#else
         int got_index = search_got((int)rel->getSymTabIndex(), (void *)(S + A),
                                    sym->getBindingAttribute());
+#endif
         int got_offset = (got_index << 2) - GP_OFFSET;
         *inst |= (got_offset & 0xFFFF);
       }
diff --git a/rsContext.cpp b/rsContext.cpp
index 01debb2..3c017d7 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -32,6 +32,7 @@
 #include <sys/syscall.h>
 #include <string.h>
 #include <dlfcn.h>
+#include <inttypes.h>
 #include <unistd.h>
 
 #if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB) && \
@@ -182,7 +183,8 @@
 
 
     if (props.mLogTimes) {
-        ALOGV("RS: Frame (%i),   Script %2.1f%% (%i),  Swap %2.1f%% (%i),  Idle %2.1f%% (%lli),  Internal %2.1f%% (%lli), Avg fps: %u",
+        ALOGV("RS: Frame (%i),   Script %2.1f%% (%i),  Swap %2.1f%% (%i),  Idle %2.1f%% (%" PRIi64 "),  "
+              "Internal %2.1f%% (%" PRIi64 "), Avg fps: %u",
              mTimeMSLastFrame,
              100.0 * mTimers[RS_TIMER_SCRIPT] / total, mTimeMSLastScript,
              100.0 * mTimers[RS_TIMER_CLEAR_SWAP] / total, mTimeMSLastSwap,
diff --git a/rsFileA3D.cpp b/rsFileA3D.cpp
index 3b963fe..a589033 100644
--- a/rsFileA3D.cpp
+++ b/rsFileA3D.cpp
@@ -26,6 +26,8 @@
     #include <androidfw/Asset.h>
 #endif
 
+#include <inttypes.h>
+
 using namespace android;
 using namespace android::renderscript;
 
@@ -192,7 +194,7 @@
         return false;
     }
 
-    ALOGV("file open size = %lli", mDataSize);
+    ALOGV("file open size = %" PRIi64, mDataSize);
 
     // We should know enough to read the file in at this point.
     mAlloc = malloc(mDataSize);
diff --git a/rsFont.cpp b/rsFont.cpp
index d302182..8feef2d 100644
--- a/rsFont.cpp
+++ b/rsFont.cpp
@@ -515,9 +515,9 @@
 
     ObjectBaseRef<Type> inputType = Type::getTypeRef(mRSC, constInput.get(), 1, 0, 0, false, false, 0);
 
-    uint32_t tmp[4];
+    uintptr_t tmp[4];
     tmp[0] = RS_PROGRAM_PARAM_CONSTANT;
-    tmp[1] = (uint32_t)inputType.get();
+    tmp[1] = (uintptr_t)inputType.get();
     tmp[2] = RS_PROGRAM_PARAM_TEXTURE_TYPE;
     tmp[3] = RS_TEXTURE_2D;
 
diff --git a/rsProgram.cpp b/rsProgram.cpp
index 806d1de..d5cb344 100644
--- a/rsProgram.cpp
+++ b/rsProgram.cpp
@@ -17,11 +17,13 @@
 #include "rsContext.h"
 #include "rsProgram.h"
 
+#include <inttypes.h>
+
 using namespace android;
 using namespace android::renderscript;
 
 Program::Program(Context *rsc, const char * shaderText, size_t shaderLength,
-                 const uint32_t * params, size_t paramLength)
+                 const uintptr_t * params, size_t paramLength)
     : ProgramBase(rsc) {
 
     initMemberVars();
@@ -150,14 +152,14 @@
 void Program::bindAllocation(Context *rsc, Allocation *alloc, uint32_t slot) {
     if (alloc != NULL) {
         if (slot >= mHal.state.constantsCount) {
-            ALOGE("Attempt to bind alloc at slot %u, on shader id %u, but const count is %u",
-                 slot, (uint32_t)this, mHal.state.constantsCount);
+            ALOGE("Attempt to bind alloc at slot %u, on shader id %" PRIuPTR ", but const count is %u",
+                 slot, (uintptr_t)this, mHal.state.constantsCount);
             rsc->setError(RS_ERROR_BAD_SHADER, "Cannot bind allocation");
             return;
         }
         if (alloc->getType() != mConstantTypes[slot].get()) {
-            ALOGE("Attempt to bind alloc at slot %u, on shader id %u, but types mismatch",
-                 slot, (uint32_t)this);
+            ALOGE("Attempt to bind alloc at slot %u, on shader id %" PRIuPTR ", but types mismatch",
+                 slot, (uintptr_t)this);
             rsc->setError(RS_ERROR_BAD_SHADER, "Cannot bind allocation");
             return;
         }
diff --git a/rsProgram.h b/rsProgram.h
index be5631f..53f1207 100644
--- a/rsProgram.h
+++ b/rsProgram.h
@@ -59,7 +59,7 @@
     Hal mHal;
 
     Program(Context *, const char * shaderText, size_t shaderLength,
-            const uint32_t * params, size_t paramLength);
+            const uintptr_t * params, size_t paramLength);
     virtual ~Program();
     virtual bool freeChildren();
 
diff --git a/rsProgramFragment.cpp b/rsProgramFragment.cpp
index 877b8bd..360d3ab 100644
--- a/rsProgramFragment.cpp
+++ b/rsProgramFragment.cpp
@@ -17,13 +17,14 @@
 #include "rsContext.h"
 #include "rsProgramFragment.h"
 
+#include <inttypes.h>
+
 using namespace android;
 using namespace android::renderscript;
 
 ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText, size_t shaderLength,
                                  const char** textureNames, size_t textureNamesCount, const size_t *textureNamesLength,
-
-                                 const uint32_t * params, size_t paramLength)
+                                 const uintptr_t * params, size_t paramLength)
     : Program(rsc, shaderText, shaderLength, params, paramLength) {
     mConstantColor[0] = 1.f;
     mConstantColor[1] = 1.f;
@@ -67,7 +68,7 @@
 
     for (uint32_t ct=0; ct < mHal.state.texturesCount; ct++) {
         if (!mHal.state.textures[ct]) {
-            ALOGE("No texture bound for shader id %u, texture unit %u", (uint)this, ct);
+            ALOGE("No texture bound for shader id %" PRIuPTR ", texture unit %u", (uintptr_t)this, ct);
             rsc->setError(RS_ERROR_BAD_SHADER, "No texture bound");
             continue;
         }
@@ -110,9 +111,9 @@
 
     ObjectBaseRef<Type> inputType = Type::getTypeRef(rsc, constInput.get(), 1, 0, 0, false, false, 0);
 
-    uint32_t tmp[2];
+    uintptr_t tmp[2];
     tmp[0] = RS_PROGRAM_PARAM_CONSTANT;
-    tmp[1] = (uint32_t)inputType.get();
+    tmp[1] = (uintptr_t)inputType.get();
 
     Allocation *constAlloc = Allocation::createAllocation(rsc, inputType.get(),
                               RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS);
@@ -137,7 +138,7 @@
                                             const char** textureNames,
                                             size_t textureNamesCount,
                                             const size_t *textureNamesLength,
-                                            const uint32_t * params, size_t paramLength) {
+                                            const uintptr_t * params, size_t paramLength) {
     ProgramFragment *pf = new ProgramFragment(rsc, shaderText, shaderLength,
                                               textureNames, textureNamesCount, textureNamesLength,
                                               params, paramLength);
diff --git a/rsProgramFragment.h b/rsProgramFragment.h
index d580252..e7456b9 100644
--- a/rsProgramFragment.h
+++ b/rsProgramFragment.h
@@ -29,7 +29,7 @@
 public:
     ProgramFragment(Context *rsc, const char * shaderText, size_t shaderLength,
                     const char** textureNames, size_t textureNamesCount, const size_t *textureNamesLength,
-                     const uint32_t * params, size_t paramLength);
+                    const uintptr_t * params, size_t paramLength);
     virtual ~ProgramFragment();
 
     virtual void setup(Context *, ProgramFragmentState *);
diff --git a/rsProgramVertex.cpp b/rsProgramVertex.cpp
index 549dcae..9c0f7fb 100644
--- a/rsProgramVertex.cpp
+++ b/rsProgramVertex.cpp
@@ -25,7 +25,7 @@
 ProgramVertex::ProgramVertex(Context *rsc, const char * shaderText, size_t shaderLength,
                              const char** textureNames, size_t textureNamesCount, const size_t *textureNamesLength,
 
-                             const uint32_t * params, size_t paramLength)
+                             const uintptr_t * params, size_t paramLength)
     : Program(rsc, shaderText, shaderLength, params, paramLength) {
     mRSC->mHal.funcs.vertex.init(mRSC, this, mUserShader, mUserShaderLen,
                                  textureNames, textureNamesCount, textureNamesLength);
@@ -196,11 +196,11 @@
             "  varTex0 = ATTRIB_texture0;\n"
             "}\n";
 
-    uint32_t tmp[4];
+    uintptr_t tmp[4];
     tmp[0] = RS_PROGRAM_PARAM_CONSTANT;
-    tmp[1] = (uint32_t)inputType.get();
+    tmp[1] = (uintptr_t)inputType.get();
     tmp[2] = RS_PROGRAM_PARAM_INPUT;
-    tmp[3] = (uint32_t)attrElem.get();
+    tmp[3] = (uintptr_t)attrElem.get();
 
     ProgramVertex *pv = new ProgramVertex(rsc, shaderString, strlen(shaderString),
                                           NULL, 0, NULL, tmp, 4);
@@ -244,7 +244,7 @@
 RsProgramVertex rsi_ProgramVertexCreate(Context *rsc, const char * shaderText, size_t shaderLength,
                                         const char** textureNames, size_t textureNamesCount,
                                         const size_t *textureNamesLength,
-                                        const uint32_t * params, size_t paramLength) {
+                                        const uintptr_t * params, size_t paramLength) {
     ProgramVertex *pv = new ProgramVertex(rsc, shaderText, shaderLength,
                                           textureNames, textureNamesCount, textureNamesLength,
                                           params, paramLength);
diff --git a/rsProgramVertex.h b/rsProgramVertex.h
index 105d065..9070b9a 100644
--- a/rsProgramVertex.h
+++ b/rsProgramVertex.h
@@ -29,7 +29,7 @@
 public:
     ProgramVertex(Context *,const char * shaderText, size_t shaderLength,
                   const char** textureNames, size_t textureNamesCount, const size_t *textureNamesLength,
-                  const uint32_t * params, size_t paramLength);
+                  const uintptr_t * params, size_t paramLength);
     virtual ~ProgramVertex();
 
     virtual void setup(Context *rsc, ProgramVertexState *state);
diff --git a/rsg.spec b/rsg.spec
index 8ac73e8..a80a31c 100644
--- a/rsg.spec
+++ b/rsg.spec
@@ -42,7 +42,7 @@
     direct
     param const char * shaderText
     param const char ** textureNames
-    param const uint32_t * params
+    param const uintptr_t * params
     ret RsProgramFragment
     }
 
@@ -50,7 +50,7 @@
     direct
     param const char * shaderText
     param const char ** textureNames
-    param const uint32_t * params
+    param const uintptr_t * params
     ret RsProgramVertex
     }