diff options
52 files changed, 1473 insertions, 1098 deletions
diff --git a/cmds/dumpstate/utils.c b/cmds/dumpstate/utils.c index fe716acfe2..670e09cc84 100644 --- a/cmds/dumpstate/utils.c +++ b/cmds/dumpstate/utils.c @@ -469,7 +469,7 @@ const char *dump_traces() {          if (!mkdir(anr_traces_dir, 0775)) {              chown(anr_traces_dir, AID_SYSTEM, AID_SYSTEM);              chmod(anr_traces_dir, 0775); -            if (selinux_android_restorecon(anr_traces_dir) == -1) { +            if (selinux_android_restorecon(anr_traces_dir, 0) == -1) {                  fprintf(stderr, "restorecon failed for %s: %s\n", anr_traces_dir, strerror(errno));              }          } else if (errno != EEXIST) { diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c index e9d6b159fc..ef063e7bff 100644 --- a/cmds/installd/commands.c +++ b/cmds/installd/commands.c @@ -91,7 +91,7 @@ int install(const char *pkgname, uid_t uid, gid_t gid, const char *seinfo)          return -1;      } -    if (selinux_android_setfilecon2(pkgdir, pkgname, seinfo, uid) < 0) { +    if (selinux_android_setfilecon(pkgdir, pkgname, seinfo, uid) < 0) {          ALOGE("cannot setfilecon dir '%s': %s\n", pkgdir, strerror(errno));          unlink(libsymlink);          unlink(pkgdir); @@ -245,7 +245,7 @@ int make_user_data(const char *pkgname, uid_t uid, userid_t userid, const char*          return -1;      } -    if (selinux_android_setfilecon2(pkgdir, pkgname, seinfo, uid) < 0) { +    if (selinux_android_setfilecon(pkgdir, pkgname, seinfo, uid) < 0) {          ALOGE("cannot setfilecon dir '%s': %s\n", pkgdir, strerror(errno));          unlink(libsymlink);          unlink(pkgdir); @@ -618,14 +618,11 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name,      ALOGE("execl(%s) failed: %s\n", DEX2OAT_BIN, strerror(errno));  } -static int wait_dexopt(pid_t pid, const char* apk_path) +static int wait_child(pid_t pid)  {      int status;      pid_t got_pid; -    /* -     * Wait for the optimization process to finish. -     */      while (1) {          got_pid = waitpid(pid, &status, 0);          if (got_pid == -1 && errno == EINTR) { @@ -641,11 +638,8 @@ static int wait_dexopt(pid_t pid, const char* apk_path)      }      if (WIFEXITED(status) && WEXITSTATUS(status) == 0) { -        ALOGV("DexInv: --- END '%s' (success) ---\n", apk_path);          return 0;      } else { -        ALOGW("DexInv: --- END '%s' --- status=0x%04x, process failed\n", -            apk_path, status);          return status;      /* always nonzero */      }  } @@ -669,7 +663,7 @@ int dexopt(const char *apk_path, uid_t uid, int is_public)      ALOGV("dalvik.vm.dexopt_flags=%s\n", dexopt_flags);      /* The command to run depend ones the value of persist.sys.dalvik.vm.lib */ -    property_get("persist.sys.dalvik.vm.lib", persist_sys_dalvik_vm_lib, "libdvm.so"); +    property_get("persist.sys.dalvik.vm.lib.1", persist_sys_dalvik_vm_lib, "libdvm.so");      /* Before anything else: is there a .odex file?  If so, we have       * precompiled the apk and there is nothing to do here. @@ -747,9 +741,11 @@ int dexopt(const char *apk_path, uid_t uid, int is_public)          }          exit(68);   /* only get here on exec failure */      } else { -        res = wait_dexopt(pid, apk_path); -        if (res != 0) { -            ALOGE("dexopt in='%s' out='%s' res=%d\n", apk_path, out_path, res); +        res = wait_child(pid); +        if (res == 0) { +            ALOGV("DexInv: --- END '%s' (success) ---\n", apk_path); +        } else { +            ALOGE("DexInv: --- END '%s' --- status=0x%04x, process failed\n", apk_path, res);              goto fail;          }      } @@ -1103,3 +1099,115 @@ out:      return rc;  } + +static void run_idmap(const char *target_apk, const char *overlay_apk, int idmap_fd) +{ +    static const char *IDMAP_BIN = "/system/bin/idmap"; +    static const size_t MAX_INT_LEN = 32; +    char idmap_str[MAX_INT_LEN]; + +    snprintf(idmap_str, sizeof(idmap_str), "%d", idmap_fd); + +    execl(IDMAP_BIN, IDMAP_BIN, "--fd", target_apk, overlay_apk, idmap_str, (char*)NULL); +    ALOGE("execl(%s) failed: %s\n", IDMAP_BIN, strerror(errno)); +} + +// Transform string /a/b/c.apk to (prefix)/a@b@c.apk@(suffix) +// eg /a/b/c.apk to /data/resource-cache/a@b@c.apk@idmap +static int flatten_path(const char *prefix, const char *suffix, +        const char *overlay_path, char *idmap_path, size_t N) +{ +    if (overlay_path == NULL || idmap_path == NULL) { +        return -1; +    } +    const size_t len_overlay_path = strlen(overlay_path); +    // will access overlay_path + 1 further below; requires absolute path +    if (len_overlay_path < 2 || *overlay_path != '/') { +        return -1; +    } +    const size_t len_idmap_root = strlen(prefix); +    const size_t len_suffix = strlen(suffix); +    if (SIZE_MAX - len_idmap_root < len_overlay_path || +            SIZE_MAX - (len_idmap_root + len_overlay_path) < len_suffix) { +        // additions below would cause overflow +        return -1; +    } +    if (N < len_idmap_root + len_overlay_path + len_suffix) { +        return -1; +    } +    memset(idmap_path, 0, N); +    snprintf(idmap_path, N, "%s%s%s", prefix, overlay_path + 1, suffix); +    char *ch = idmap_path + len_idmap_root; +    while (*ch != '\0') { +        if (*ch == '/') { +            *ch = '@'; +        } +        ++ch; +    } +    return 0; +} + +int idmap(const char *target_apk, const char *overlay_apk, uid_t uid) +{ +    ALOGV("idmap target_apk=%s overlay_apk=%s uid=%d\n", target_apk, overlay_apk, uid); + +    int idmap_fd = -1; +    char idmap_path[PATH_MAX]; + +    if (flatten_path(IDMAP_PREFIX, IDMAP_SUFFIX, overlay_apk, +                idmap_path, sizeof(idmap_path)) == -1) { +        ALOGE("idmap cannot generate idmap path for overlay %s\n", overlay_apk); +        goto fail; +    } + +    unlink(idmap_path); +    idmap_fd = open(idmap_path, O_RDWR | O_CREAT | O_EXCL, 0644); +    if (idmap_fd < 0) { +        ALOGE("idmap cannot open '%s' for output: %s\n", idmap_path, strerror(errno)); +        goto fail; +    } +    if (fchown(idmap_fd, AID_SYSTEM, uid) < 0) { +        ALOGE("idmap cannot chown '%s'\n", idmap_path); +        goto fail; +    } +    if (fchmod(idmap_fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) < 0) { +        ALOGE("idmap cannot chmod '%s'\n", idmap_path); +        goto fail; +    } + +    pid_t pid; +    pid = fork(); +    if (pid == 0) { +        /* child -- drop privileges before continuing */ +        if (setgid(uid) != 0) { +            ALOGE("setgid(%d) failed during idmap\n", uid); +            exit(1); +        } +        if (setuid(uid) != 0) { +            ALOGE("setuid(%d) failed during idmap\n", uid); +            exit(1); +        } +        if (flock(idmap_fd, LOCK_EX | LOCK_NB) != 0) { +            ALOGE("flock(%s) failed during idmap: %s\n", idmap_path, strerror(errno)); +            exit(1); +        } + +        run_idmap(target_apk, overlay_apk, idmap_fd); +        exit(1); /* only if exec call to idmap failed */ +    } else { +        int status = wait_child(pid); +        if (status != 0) { +            ALOGE("idmap failed, status=0x%04x\n", status); +            goto fail; +        } +    } + +    close(idmap_fd); +    return 0; +fail: +    if (idmap_fd >= 0) { +        close(idmap_fd); +        unlink(idmap_path); +    } +    return -1; +} diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c index 0c80dac3b8..549aaabbba 100644 --- a/cmds/installd/installd.c +++ b/cmds/installd/installd.c @@ -124,6 +124,11 @@ static int do_linklib(char **arg, char reply[REPLY_MAX])      return linklib(arg[0], arg[1], atoi(arg[2]));  } +static int do_idmap(char **arg, char reply[REPLY_MAX]) +{ +    return idmap(arg[0], arg[1], atoi(arg[2])); +} +  struct cmdinfo {      const char *name;      unsigned numargs; @@ -147,6 +152,7 @@ struct cmdinfo cmds[] = {      { "linklib",              3, do_linklib },      { "mkuserdata",           4, do_mk_user_data },      { "rmuser",               1, do_rm_user }, +    { "idmap",                3, do_idmap },  };  static int readx(int s, void *_buf, int count) @@ -392,7 +398,7 @@ int initialize_directories() {              goto fail;          } -        if (selinux_android_restorecon(android_media_dir.path)) { +        if (selinux_android_restorecon(android_media_dir.path, 0)) {              goto fail;          } @@ -515,6 +521,7 @@ static void drop_privileges() {      capdata[CAP_TO_INDEX(CAP_CHOWN)].permitted        |= CAP_TO_MASK(CAP_CHOWN);      capdata[CAP_TO_INDEX(CAP_SETUID)].permitted       |= CAP_TO_MASK(CAP_SETUID);      capdata[CAP_TO_INDEX(CAP_SETGID)].permitted       |= CAP_TO_MASK(CAP_SETGID); +    capdata[CAP_TO_INDEX(CAP_FOWNER)].permitted       |= CAP_TO_MASK(CAP_FOWNER);      capdata[0].effective = capdata[0].permitted;      capdata[1].effective = capdata[1].permitted; diff --git a/cmds/installd/installd.h b/cmds/installd/installd.h index 9ca2f86ff5..cab5cb7eea 100644 --- a/cmds/installd/installd.h +++ b/cmds/installd/installd.h @@ -75,6 +75,9 @@  #define UPDATE_COMMANDS_DIR_PREFIX  "/system/etc/updatecmds/" +#define IDMAP_PREFIX           "/data/resource-cache/" +#define IDMAP_SUFFIX           "@idmap" +  #define PKG_NAME_MAX  128   /* largest allowed package name */  #define PKG_PATH_MAX  256   /* max size of any path we use */ @@ -207,3 +210,4 @@ int free_cache(int64_t free_size);  int dexopt(const char *apk_path, uid_t uid, int is_public);  int movefiles();  int linklib(const char* target, const char* source, int userId); +int idmap(const char *target_path, const char *overlay_path, uid_t uid); diff --git a/cmds/installd/tests/Android.mk b/cmds/installd/tests/Android.mk index c0192f453f..4faf3c069a 100644 --- a/cmds/installd/tests/Android.mk +++ b/cmds/installd/tests/Android.mk @@ -18,7 +18,7 @@ static_libraries := \      libgtest_main  c_includes := \ -    frameworks/base/cmds/installd +    frameworks/native/cmds/installd  $(foreach file,$(test_src_files), \      $(eval include $(CLEAR_VARS)) \ diff --git a/cmds/servicemanager/Android.mk b/cmds/servicemanager/Android.mk index 8840867a9d..4ab8df68fb 100644 --- a/cmds/servicemanager/Android.mk +++ b/cmds/servicemanager/Android.mk @@ -1,12 +1,25 @@  LOCAL_PATH:= $(call my-dir) -#include $(CLEAR_VARS) -#LOCAL_SRC_FILES := bctest.c binder.c -#LOCAL_MODULE := bctest -#include $(BUILD_EXECUTABLE) +svc_c_flags =	\ +	-Wall -Wextra \ + +ifneq ($(TARGET_USES_64_BIT_BINDER),true) +ifneq ($(TARGET_IS_64_BIT),true) +svc_c_flags += -DBINDER_IPC_32BIT=1 +endif +endif + +include $(CLEAR_VARS) +LOCAL_SHARED_LIBRARIES := liblog +LOCAL_SRC_FILES := bctest.c binder.c +LOCAL_CFLAGS += $(svc_c_flags) +LOCAL_MODULE := bctest +LOCAL_MODULE_TAGS := optional +include $(BUILD_EXECUTABLE)  include $(CLEAR_VARS)  LOCAL_SHARED_LIBRARIES := liblog  LOCAL_SRC_FILES := service_manager.c binder.c +LOCAL_CFLAGS += $(svc_c_flags)  LOCAL_MODULE := servicemanager  include $(BUILD_EXECUTABLE) diff --git a/cmds/servicemanager/bctest.c b/cmds/servicemanager/bctest.c index ff5acedfa0..e02b45d103 100644 --- a/cmds/servicemanager/bctest.c +++ b/cmds/servicemanager/bctest.c @@ -7,9 +7,9 @@  #include "binder.h" -void *svcmgr_lookup(struct binder_state *bs, void *target, const char *name) +uint32_t svcmgr_lookup(struct binder_state *bs, uint32_t target, const char *name)  { -    void *ptr; +    uint32_t handle;      unsigned iodata[512/4];      struct binder_io msg, reply; @@ -21,19 +21,19 @@ void *svcmgr_lookup(struct binder_state *bs, void *target, const char *name)      if (binder_call(bs, &msg, &reply, target, SVC_MGR_CHECK_SERVICE))          return 0; -    ptr = bio_get_ref(&reply); +    handle = bio_get_ref(&reply); -    if (ptr) -        binder_acquire(bs, ptr); +    if (handle) +        binder_acquire(bs, handle);      binder_done(bs, &msg, &reply); -    return ptr; +    return handle;  } -int svcmgr_publish(struct binder_state *bs, void *target, const char *name, void *ptr) +int svcmgr_publish(struct binder_state *bs, uint32_t target, const char *name, void *ptr)  { -    unsigned status; +    int status;      unsigned iodata[512/4];      struct binder_io msg, reply; @@ -59,29 +59,33 @@ int main(int argc, char **argv)  {      int fd;      struct binder_state *bs; -    void *svcmgr = BINDER_SERVICE_MANAGER; +    uint32_t svcmgr = BINDER_SERVICE_MANAGER; +    uint32_t handle;      bs = binder_open(128*1024); +    if (!bs) { +        fprintf(stderr, "failed to open binder driver\n"); +        return -1; +    }      argc--;      argv++;      while (argc > 0) {          if (!strcmp(argv[0],"alt")) { -            void *ptr = svcmgr_lookup(bs, svcmgr, "alt_svc_mgr"); -            if (!ptr) { +            handle = svcmgr_lookup(bs, svcmgr, "alt_svc_mgr"); +            if (!handle) {                  fprintf(stderr,"cannot find alt_svc_mgr\n");                  return -1;              } -            svcmgr = ptr; -            fprintf(stderr,"svcmgr is via %p\n", ptr); +            svcmgr = handle; +            fprintf(stderr,"svcmgr is via %x\n", handle);          } else if (!strcmp(argv[0],"lookup")) { -            void *ptr;              if (argc < 2) {                  fprintf(stderr,"argument required\n");                  return -1;              } -            ptr = svcmgr_lookup(bs, svcmgr, argv[1]); -            fprintf(stderr,"lookup(%s) = %p\n", argv[1], ptr); +            handle = svcmgr_lookup(bs, svcmgr, argv[1]); +            fprintf(stderr,"lookup(%s) = %x\n", argv[1], handle);              argc--;              argv++;          } else if (!strcmp(argv[0],"publish")) { diff --git a/cmds/servicemanager/binder.c b/cmds/servicemanager/binder.c index 1985756a66..db7632d36a 100644 --- a/cmds/servicemanager/binder.c +++ b/cmds/servicemanager/binder.c @@ -1,6 +1,7 @@  /* Copyright 2008 The Android Open Source Project   */ +#include <inttypes.h>  #include <stdio.h>  #include <stdlib.h>  #include <errno.h> @@ -17,17 +18,17 @@  #define LOG_TAG "Binder"  #include <cutils/log.h> -void bio_init_from_txn(struct binder_io *io, struct binder_txn *txn); +void bio_init_from_txn(struct binder_io *io, struct binder_transaction_data *txn);  #if TRACE -void hexdump(void *_data, unsigned len) +void hexdump(void *_data, size_t len)  {      unsigned char *data = _data; -    unsigned count; +    size_t count;      for (count = 0; count < len; count++) {          if ((count & 15) == 0) -            fprintf(stderr,"%04x:", count); +            fprintf(stderr,"%04zu:", count);          fprintf(stderr," %02x %c", *data,                  (*data < 32) || (*data > 126) ? '.' : *data);          data++; @@ -38,21 +39,21 @@ void hexdump(void *_data, unsigned len)          fprintf(stderr,"\n");  } -void binder_dump_txn(struct binder_txn *txn) +void binder_dump_txn(struct binder_transaction_data *txn)  { -    struct binder_object *obj; -    unsigned *offs = txn->offs; -    unsigned count = txn->offs_size / 4; - -    fprintf(stderr,"  target %p  cookie %p  code %08x  flags %08x\n", -            txn->target, txn->cookie, txn->code, txn->flags); -    fprintf(stderr,"  pid %8d  uid %8d  data %8d  offs %8d\n", -            txn->sender_pid, txn->sender_euid, txn->data_size, txn->offs_size); -    hexdump(txn->data, txn->data_size); +    struct flat_binder_object *obj; +    binder_size_t *offs = (binder_size_t *)(uintptr_t)txn->data.ptr.offsets; +    size_t count = txn->offsets_size / sizeof(binder_size_t); + +    fprintf(stderr,"  target %016"PRIx64"  cookie %016"PRIx64"  code %08x  flags %08x\n", +            (uint64_t)txn->target.ptr, (uint64_t)txn->cookie, txn->code, txn->flags); +    fprintf(stderr,"  pid %8d  uid %8d  data %"PRIu64"  offs %"PRIu64"\n", +            txn->sender_pid, txn->sender_euid, (uint64_t)txn->data_size, (uint64_t)txn->offsets_size); +    hexdump((void *)(uintptr_t)txn->data.ptr.buffer, txn->data_size);      while (count--) { -        obj = (void*) (((char*) txn->data) + *offs++); -        fprintf(stderr,"  - type %08x  flags %08x  ptr %p  cookie %p\n", -                obj->type, obj->flags, obj->pointer, obj->cookie); +        obj = (struct flat_binder_object *) (((char*)(uintptr_t)txn->data.ptr.buffer) + *offs++); +        fprintf(stderr,"  - type %08x  flags %08x  ptr %016"PRIx64"  cookie %016"PRIx64"\n", +                obj->type, obj->flags, (uint64_t)obj->binder, (uint64_t)obj->cookie);      }  } @@ -88,17 +89,18 @@ struct binder_state  {      int fd;      void *mapped; -    unsigned mapsize; +    size_t mapsize;  }; -struct binder_state *binder_open(unsigned mapsize) +struct binder_state *binder_open(size_t mapsize)  {      struct binder_state *bs; +    struct binder_version vers;      bs = malloc(sizeof(*bs));      if (!bs) {          errno = ENOMEM; -        return 0; +        return NULL;      }      bs->fd = open("/dev/binder", O_RDWR); @@ -108,6 +110,12 @@ struct binder_state *binder_open(unsigned mapsize)          goto fail_open;      } +    if ((ioctl(bs->fd, BINDER_VERSION, &vers) == -1) || +        (vers.protocol_version != BINDER_CURRENT_PROTOCOL_VERSION)) { +        fprintf(stderr, "binder: driver version differs from user space\n"); +        goto fail_open; +    } +      bs->mapsize = mapsize;      bs->mapped = mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, bs->fd, 0);      if (bs->mapped == MAP_FAILED) { @@ -116,15 +124,13 @@ struct binder_state *binder_open(unsigned mapsize)          goto fail_map;      } -        /* TODO: check version */ -      return bs;  fail_map:      close(bs->fd);  fail_open:      free(bs); -    return 0; +    return NULL;  }  void binder_close(struct binder_state *bs) @@ -139,13 +145,14 @@ int binder_become_context_manager(struct binder_state *bs)      return ioctl(bs->fd, BINDER_SET_CONTEXT_MGR, 0);  } -int binder_write(struct binder_state *bs, void *data, unsigned len) +int binder_write(struct binder_state *bs, void *data, size_t len)  {      struct binder_write_read bwr;      int res; +      bwr.write_size = len;      bwr.write_consumed = 0; -    bwr.write_buffer = (unsigned) data; +    bwr.write_buffer = (uintptr_t) data;      bwr.read_size = 0;      bwr.read_consumed = 0;      bwr.read_buffer = 0; @@ -159,46 +166,47 @@ int binder_write(struct binder_state *bs, void *data, unsigned len)  void binder_send_reply(struct binder_state *bs,                         struct binder_io *reply, -                       void *buffer_to_free, +                       binder_uintptr_t buffer_to_free,                         int status)  {      struct {          uint32_t cmd_free; -        void *buffer; +        binder_uintptr_t buffer;          uint32_t cmd_reply; -        struct binder_txn txn; +        struct binder_transaction_data txn;      } __attribute__((packed)) data;      data.cmd_free = BC_FREE_BUFFER;      data.buffer = buffer_to_free;      data.cmd_reply = BC_REPLY; -    data.txn.target = 0; +    data.txn.target.ptr = 0;      data.txn.cookie = 0;      data.txn.code = 0;      if (status) {          data.txn.flags = TF_STATUS_CODE;          data.txn.data_size = sizeof(int); -        data.txn.offs_size = 0; -        data.txn.data = &status; -        data.txn.offs = 0; +        data.txn.offsets_size = 0; +        data.txn.data.ptr.buffer = (uintptr_t)&status; +        data.txn.data.ptr.offsets = 0;      } else {          data.txn.flags = 0;          data.txn.data_size = reply->data - reply->data0; -        data.txn.offs_size = ((char*) reply->offs) - ((char*) reply->offs0); -        data.txn.data = reply->data0; -        data.txn.offs = reply->offs0; +        data.txn.offsets_size = ((char*) reply->offs) - ((char*) reply->offs0); +        data.txn.data.ptr.buffer = (uintptr_t)reply->data0; +        data.txn.data.ptr.offsets = (uintptr_t)reply->offs0;      }      binder_write(bs, &data, sizeof(data));  }  int binder_parse(struct binder_state *bs, struct binder_io *bio, -                 uint32_t *ptr, uint32_t size, binder_handler func) +                 uintptr_t ptr, size_t size, binder_handler func)  {      int r = 1; -    uint32_t *end = ptr + (size / 4); +    uintptr_t end = ptr + (uintptr_t) size;      while (ptr < end) { -        uint32_t cmd = *ptr++; +        uint32_t cmd = *(uint32_t *) ptr; +        ptr += sizeof(uint32_t);  #if TRACE          fprintf(stderr,"%s:\n", cmd_name(cmd));  #endif @@ -212,13 +220,13 @@ int binder_parse(struct binder_state *bs, struct binder_io *bio,          case BR_RELEASE:          case BR_DECREFS:  #if TRACE -            fprintf(stderr,"  %08x %08x\n", ptr[0], ptr[1]); +            fprintf(stderr,"  %p, %p\n", (void *)ptr, (void *)(ptr + sizeof(void *)));  #endif -            ptr += 2; +            ptr += sizeof(struct binder_ptr_cookie);              break;          case BR_TRANSACTION: { -            struct binder_txn *txn = (void *) ptr; -            if ((end - ptr) * sizeof(uint32_t) < sizeof(struct binder_txn)) { +            struct binder_transaction_data *txn = (struct binder_transaction_data *) ptr; +            if ((end - ptr) < sizeof(*txn)) {                  ALOGE("parse: txn too small!\n");                  return -1;              } @@ -232,14 +240,14 @@ int binder_parse(struct binder_state *bs, struct binder_io *bio,                  bio_init(&reply, rdata, sizeof(rdata), 4);                  bio_init_from_txn(&msg, txn);                  res = func(bs, txn, &msg, &reply); -                binder_send_reply(bs, &reply, txn->data, res); +                binder_send_reply(bs, &reply, txn->data.ptr.buffer, res);              } -            ptr += sizeof(*txn) / sizeof(uint32_t); +            ptr += sizeof(*txn);              break;          }          case BR_REPLY: { -            struct binder_txn *txn = (void*) ptr; -            if ((end - ptr) * sizeof(uint32_t) < sizeof(struct binder_txn)) { +            struct binder_transaction_data *txn = (struct binder_transaction_data *) ptr; +            if ((end - ptr) < sizeof(*txn)) {                  ALOGE("parse: reply too small!\n");                  return -1;              } @@ -248,14 +256,15 @@ int binder_parse(struct binder_state *bs, struct binder_io *bio,                  bio_init_from_txn(bio, txn);                  bio = 0;              } else { -                    /* todo FREE BUFFER */ +                /* todo FREE BUFFER */              } -            ptr += (sizeof(*txn) / sizeof(uint32_t)); +            ptr += sizeof(*txn);              r = 0;              break;          }          case BR_DEAD_BINDER: { -            struct binder_death *death = (void*) *ptr++; +            struct binder_death *death = (struct binder_death *)(uintptr_t) *(binder_uintptr_t *)ptr; +            ptr += sizeof(binder_uintptr_t);              death->func(bs, death->ptr);              break;          } @@ -274,42 +283,45 @@ int binder_parse(struct binder_state *bs, struct binder_io *bio,      return r;  } -void binder_acquire(struct binder_state *bs, void *ptr) +void binder_acquire(struct binder_state *bs, uint32_t target)  {      uint32_t cmd[2];      cmd[0] = BC_ACQUIRE; -    cmd[1] = (uint32_t) ptr; +    cmd[1] = target;      binder_write(bs, cmd, sizeof(cmd));  } -void binder_release(struct binder_state *bs, void *ptr) +void binder_release(struct binder_state *bs, uint32_t target)  {      uint32_t cmd[2];      cmd[0] = BC_RELEASE; -    cmd[1] = (uint32_t) ptr; +    cmd[1] = target;      binder_write(bs, cmd, sizeof(cmd));  } -void binder_link_to_death(struct binder_state *bs, void *ptr, struct binder_death *death) +void binder_link_to_death(struct binder_state *bs, uint32_t target, struct binder_death *death)  { -    uint32_t cmd[3]; -    cmd[0] = BC_REQUEST_DEATH_NOTIFICATION; -    cmd[1] = (uint32_t) ptr; -    cmd[2] = (uint32_t) death; -    binder_write(bs, cmd, sizeof(cmd)); -} +    struct { +        uint32_t cmd; +        struct binder_handle_cookie payload; +    } __attribute__((packed)) data; +    data.cmd = BC_REQUEST_DEATH_NOTIFICATION; +    data.payload.handle = target; +    data.payload.cookie = (uintptr_t) death; +    binder_write(bs, &data, sizeof(data)); +}  int binder_call(struct binder_state *bs,                  struct binder_io *msg, struct binder_io *reply, -                void *target, uint32_t code) +                uint32_t target, uint32_t code)  {      int res;      struct binder_write_read bwr;      struct {          uint32_t cmd; -        struct binder_txn txn; -    } writebuf; +        struct binder_transaction_data txn; +    } __attribute__((packed)) writebuf;      unsigned readbuf[32];      if (msg->flags & BIO_F_OVERFLOW) { @@ -318,23 +330,23 @@ int binder_call(struct binder_state *bs,      }      writebuf.cmd = BC_TRANSACTION; -    writebuf.txn.target = target; +    writebuf.txn.target.handle = target;      writebuf.txn.code = code;      writebuf.txn.flags = 0;      writebuf.txn.data_size = msg->data - msg->data0; -    writebuf.txn.offs_size = ((char*) msg->offs) - ((char*) msg->offs0); -    writebuf.txn.data = msg->data0; -    writebuf.txn.offs = msg->offs0; +    writebuf.txn.offsets_size = ((char*) msg->offs) - ((char*) msg->offs0); +    writebuf.txn.data.ptr.buffer = (uintptr_t)msg->data0; +    writebuf.txn.data.ptr.offsets = (uintptr_t)msg->offs0;      bwr.write_size = sizeof(writebuf);      bwr.write_consumed = 0; -    bwr.write_buffer = (unsigned) &writebuf; -     +    bwr.write_buffer = (uintptr_t) &writebuf; +      hexdump(msg->data0, msg->data - msg->data0);      for (;;) {          bwr.read_size = sizeof(readbuf);          bwr.read_consumed = 0; -        bwr.read_buffer = (unsigned) readbuf; +        bwr.read_buffer = (uintptr_t) readbuf;          res = ioctl(bs->fd, BINDER_WRITE_READ, &bwr); @@ -343,7 +355,7 @@ int binder_call(struct binder_state *bs,              goto fail;          } -        res = binder_parse(bs, reply, readbuf, bwr.read_consumed, 0); +        res = binder_parse(bs, reply, (uintptr_t) readbuf, bwr.read_consumed, 0);          if (res == 0) return 0;          if (res < 0) goto fail;      } @@ -358,19 +370,19 @@ void binder_loop(struct binder_state *bs, binder_handler func)  {      int res;      struct binder_write_read bwr; -    unsigned readbuf[32]; +    uint32_t readbuf[32];      bwr.write_size = 0;      bwr.write_consumed = 0;      bwr.write_buffer = 0; -     +      readbuf[0] = BC_ENTER_LOOPER; -    binder_write(bs, readbuf, sizeof(unsigned)); +    binder_write(bs, readbuf, sizeof(uint32_t));      for (;;) {          bwr.read_size = sizeof(readbuf);          bwr.read_consumed = 0; -        bwr.read_buffer = (unsigned) readbuf; +        bwr.read_buffer = (uintptr_t) readbuf;          res = ioctl(bs->fd, BINDER_WRITE_READ, &bwr); @@ -379,7 +391,7 @@ void binder_loop(struct binder_state *bs, binder_handler func)              break;          } -        res = binder_parse(bs, 0, readbuf, bwr.read_consumed, func); +        res = binder_parse(bs, 0, (uintptr_t) readbuf, bwr.read_consumed, func);          if (res == 0) {              ALOGE("binder_loop: unexpected reply?!\n");              break; @@ -391,19 +403,19 @@ void binder_loop(struct binder_state *bs, binder_handler func)      }  } -void bio_init_from_txn(struct binder_io *bio, struct binder_txn *txn) +void bio_init_from_txn(struct binder_io *bio, struct binder_transaction_data *txn)  { -    bio->data = bio->data0 = txn->data; -    bio->offs = bio->offs0 = txn->offs; +    bio->data = bio->data0 = (char *)(intptr_t)txn->data.ptr.buffer; +    bio->offs = bio->offs0 = (binder_size_t *)(intptr_t)txn->data.ptr.offsets;      bio->data_avail = txn->data_size; -    bio->offs_avail = txn->offs_size / 4; +    bio->offs_avail = txn->offsets_size / sizeof(size_t);      bio->flags = BIO_F_SHARED;  }  void bio_init(struct binder_io *bio, void *data, -              uint32_t maxdata, uint32_t maxoffs) +              size_t maxdata, size_t maxoffs)  { -    uint32_t n = maxoffs * sizeof(uint32_t); +    size_t n = maxoffs * sizeof(size_t);      if (n > maxdata) {          bio->flags = BIO_F_OVERFLOW; @@ -419,12 +431,12 @@ void bio_init(struct binder_io *bio, void *data,      bio->flags = 0;  } -static void *bio_alloc(struct binder_io *bio, uint32_t size) +static void *bio_alloc(struct binder_io *bio, size_t size)  {      size = (size + 3) & (~3);      if (size > bio->data_avail) {          bio->flags |= BIO_F_OVERFLOW; -        return 0; +        return NULL;      } else {          void *ptr = bio->data;          bio->data += size; @@ -437,21 +449,25 @@ void binder_done(struct binder_state *bs,                   struct binder_io *msg,                   struct binder_io *reply)  { +    struct { +        uint32_t cmd; +        uintptr_t buffer; +    } __attribute__((packed)) data; +      if (reply->flags & BIO_F_SHARED) { -        uint32_t cmd[2]; -        cmd[0] = BC_FREE_BUFFER; -        cmd[1] = (uint32_t) reply->data0; -        binder_write(bs, cmd, sizeof(cmd)); +        data.cmd = BC_FREE_BUFFER; +        data.buffer = (uintptr_t) reply->data0; +        binder_write(bs, &data, sizeof(data));          reply->flags = 0;      }  } -static struct binder_object *bio_alloc_obj(struct binder_io *bio) +static struct flat_binder_object *bio_alloc_obj(struct binder_io *bio)  { -    struct binder_object *obj; +    struct flat_binder_object *obj;      obj = bio_alloc(bio, sizeof(*obj)); -     +      if (obj && bio->offs_avail) {          bio->offs_avail--;          *bio->offs++ = ((char*) obj) - ((char*) bio->data0); @@ -459,7 +475,7 @@ static struct binder_object *bio_alloc_obj(struct binder_io *bio)      }      bio->flags |= BIO_F_OVERFLOW; -    return 0; +    return NULL;  }  void bio_put_uint32(struct binder_io *bio, uint32_t n) @@ -471,7 +487,7 @@ void bio_put_uint32(struct binder_io *bio, uint32_t n)  void bio_put_obj(struct binder_io *bio, void *ptr)  { -    struct binder_object *obj; +    struct flat_binder_object *obj;      obj = bio_alloc_obj(bio);      if (!obj) @@ -479,15 +495,15 @@ void bio_put_obj(struct binder_io *bio, void *ptr)      obj->flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS;      obj->type = BINDER_TYPE_BINDER; -    obj->pointer = ptr; +    obj->binder = (uintptr_t)ptr;      obj->cookie = 0;  } -void bio_put_ref(struct binder_io *bio, void *ptr) +void bio_put_ref(struct binder_io *bio, uint32_t handle)  { -    struct binder_object *obj; +    struct flat_binder_object *obj; -    if (ptr) +    if (handle)          obj = bio_alloc_obj(bio);      else          obj = bio_alloc(bio, sizeof(*obj)); @@ -497,13 +513,13 @@ void bio_put_ref(struct binder_io *bio, void *ptr)      obj->flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS;      obj->type = BINDER_TYPE_HANDLE; -    obj->pointer = ptr; +    obj->handle = handle;      obj->cookie = 0;  }  void bio_put_string16(struct binder_io *bio, const uint16_t *str)  { -    uint32_t len; +    size_t len;      uint16_t *ptr;      if (!str) { @@ -519,7 +535,8 @@ void bio_put_string16(struct binder_io *bio, const uint16_t *str)          return;      } -    bio_put_uint32(bio, len); +    /* Note: The payload will carry 32bit size instead of size_t */ +    bio_put_uint32(bio, (uint32_t) len);      len = (len + 1) * sizeof(uint16_t);      ptr = bio_alloc(bio, len);      if (ptr) @@ -529,7 +546,7 @@ void bio_put_string16(struct binder_io *bio, const uint16_t *str)  void bio_put_string16_x(struct binder_io *bio, const char *_str)  {      unsigned char *str = (unsigned char*) _str; -    uint32_t len; +    size_t len;      uint16_t *ptr;      if (!str) { @@ -544,6 +561,7 @@ void bio_put_string16_x(struct binder_io *bio, const char *_str)          return;      } +    /* Note: The payload will carry 32bit size instead of size_t */      bio_put_uint32(bio, len);      ptr = bio_alloc(bio, (len + 1) * sizeof(uint16_t));      if (!ptr) @@ -554,14 +572,14 @@ void bio_put_string16_x(struct binder_io *bio, const char *_str)      *ptr++ = 0;  } -static void *bio_get(struct binder_io *bio, uint32_t size) +static void *bio_get(struct binder_io *bio, size_t size)  {      size = (size + 3) & (~3);      if (bio->data_avail < size){          bio->data_avail = 0;          bio->flags |= BIO_F_OVERFLOW; -        return 0; +        return NULL;      }  else {          void *ptr = bio->data;          bio->data += size; @@ -576,41 +594,43 @@ uint32_t bio_get_uint32(struct binder_io *bio)      return ptr ? *ptr : 0;  } -uint16_t *bio_get_string16(struct binder_io *bio, unsigned *sz) +uint16_t *bio_get_string16(struct binder_io *bio, size_t *sz)  { -    unsigned len; -    len = bio_get_uint32(bio); +    size_t len; + +    /* Note: The payload will carry 32bit size instead of size_t */ +    len = (size_t) bio_get_uint32(bio);      if (sz)          *sz = len;      return bio_get(bio, (len + 1) * sizeof(uint16_t));  } -static struct binder_object *_bio_get_obj(struct binder_io *bio) +static struct flat_binder_object *_bio_get_obj(struct binder_io *bio)  { -    unsigned n; -    unsigned off = bio->data - bio->data0; +    size_t n; +    size_t off = bio->data - bio->data0; -        /* TODO: be smarter about this? */ +    /* TODO: be smarter about this? */      for (n = 0; n < bio->offs_avail; n++) {          if (bio->offs[n] == off) -            return bio_get(bio, sizeof(struct binder_object)); +            return bio_get(bio, sizeof(struct flat_binder_object));      }      bio->data_avail = 0;      bio->flags |= BIO_F_OVERFLOW; -    return 0; +    return NULL;  } -void *bio_get_ref(struct binder_io *bio) +uint32_t bio_get_ref(struct binder_io *bio)  { -    struct binder_object *obj; +    struct flat_binder_object *obj;      obj = _bio_get_obj(bio);      if (!obj)          return 0;      if (obj->type == BINDER_TYPE_HANDLE) -        return obj->pointer; +        return obj->handle;      return 0;  } diff --git a/cmds/servicemanager/binder.h b/cmds/servicemanager/binder.h index d8c51ef6b9..7915fc2685 100644 --- a/cmds/servicemanager/binder.h +++ b/cmds/servicemanager/binder.h @@ -9,39 +9,15 @@  struct binder_state; -struct binder_object -{ -    uint32_t type; -    uint32_t flags; -    void *pointer; -    void *cookie; -}; - -struct binder_txn -{ -    void *target; -    void *cookie; -    uint32_t code; -    uint32_t flags; - -    uint32_t sender_pid; -    uint32_t sender_euid; - -    uint32_t data_size; -    uint32_t offs_size; -    void *data; -    void *offs; -}; -  struct binder_io  {      char *data;            /* pointer to read/write from */ -    uint32_t *offs;        /* array of offsets */ -    uint32_t data_avail;   /* bytes available in data buffer */ -    uint32_t offs_avail;   /* entries available in offsets array */ +    binder_size_t *offs;   /* array of offsets */ +    size_t data_avail;     /* bytes available in data buffer */ +    size_t offs_avail;     /* entries available in offsets array */      char *data0;           /* start of data buffer */ -    uint32_t *offs0;       /* start of offsets buffer */ +    binder_size_t *offs0;  /* start of offsets buffer */      uint32_t flags;      uint32_t unused;  }; @@ -49,14 +25,16 @@ struct binder_io  struct binder_death {      void (*func)(struct binder_state *bs, void *ptr);      void *ptr; -};     +}; -/* the one magic object */ -#define BINDER_SERVICE_MANAGER ((void*) 0) +/* the one magic handle */ +#define BINDER_SERVICE_MANAGER  0U  #define SVC_MGR_NAME "android.os.IServiceManager"  enum { +    /* Must match definitions in IBinder.h and IServiceManager.h */ +    PING_TRANSACTION  = B_PACK_CHARS('_','P','N','G'),      SVC_MGR_GET_SERVICE = 1,      SVC_MGR_CHECK_SERVICE,      SVC_MGR_ADD_SERVICE, @@ -64,11 +42,11 @@ enum {  };  typedef int (*binder_handler)(struct binder_state *bs, -                              struct binder_txn *txn, +                              struct binder_transaction_data *txn,                                struct binder_io *msg,                                struct binder_io *reply); -struct binder_state *binder_open(unsigned mapsize); +struct binder_state *binder_open(size_t mapsize);  void binder_close(struct binder_state *bs);  /* initiate a blocking binder call @@ -76,7 +54,7 @@ void binder_close(struct binder_state *bs);   */  int binder_call(struct binder_state *bs,                  struct binder_io *msg, struct binder_io *reply, -                void *target, uint32_t code); +                uint32_t target, uint32_t code);  /* release any state associate with the binder_io   * - call once any necessary data has been extracted from the @@ -87,10 +65,10 @@ void binder_done(struct binder_state *bs,                   struct binder_io *msg, struct binder_io *reply);  /* manipulate strong references */ -void binder_acquire(struct binder_state *bs, void *ptr); -void binder_release(struct binder_state *bs, void *ptr); +void binder_acquire(struct binder_state *bs, uint32_t target); +void binder_release(struct binder_state *bs, uint32_t target); -void binder_link_to_death(struct binder_state *bs, void *ptr, struct binder_death *death); +void binder_link_to_death(struct binder_state *bs, uint32_t target, struct binder_death *death);  void binder_loop(struct binder_state *bs, binder_handler func); @@ -101,19 +79,16 @@ int binder_become_context_manager(struct binder_state *bs);   * offset entries to reserve from the buffer   */  void bio_init(struct binder_io *bio, void *data, -           uint32_t maxdata, uint32_t maxobjects); - -void bio_destroy(struct binder_io *bio); +           size_t maxdata, size_t maxobjects);  void bio_put_obj(struct binder_io *bio, void *ptr); -void bio_put_ref(struct binder_io *bio, void *ptr); +void bio_put_ref(struct binder_io *bio, uint32_t handle);  void bio_put_uint32(struct binder_io *bio, uint32_t n);  void bio_put_string16(struct binder_io *bio, const uint16_t *str);  void bio_put_string16_x(struct binder_io *bio, const char *_str);  uint32_t bio_get_uint32(struct binder_io *bio); -uint16_t *bio_get_string16(struct binder_io *bio, uint32_t *sz); -void *bio_get_obj(struct binder_io *bio); -void *bio_get_ref(struct binder_io *bio); +uint16_t *bio_get_string16(struct binder_io *bio, size_t *sz); +uint32_t bio_get_ref(struct binder_io *bio);  #endif diff --git a/cmds/servicemanager/service_manager.c b/cmds/servicemanager/service_manager.c index 3eaf1ebb1c..79ce6eda5b 100644 --- a/cmds/servicemanager/service_manager.c +++ b/cmds/servicemanager/service_manager.c @@ -24,7 +24,7 @@   * uid can register media.*, etc)   */  static struct { -    unsigned uid; +    uid_t uid;      const char *name;  } allowed[] = {      { AID_MEDIA, "media.audio_flinger" }, @@ -50,9 +50,9 @@ static struct {      { AID_KEYSTORE, "android.security.keystore" },  }; -void *svcmgr_handle; +uint32_t svcmgr_handle; -const char *str8(uint16_t *x) +const char *str8(const uint16_t *x)  {      static char buf[128];      unsigned max = 127; @@ -67,7 +67,7 @@ const char *str8(uint16_t *x)      return buf;  } -int str16eq(uint16_t *a, const char *b) +int str16eq(const uint16_t *a, const char *b)  {      while (*a && *b)          if (*a++ != *b++) return 0; @@ -76,10 +76,10 @@ int str16eq(uint16_t *a, const char *b)      return 1;  } -int svc_can_register(unsigned uid, uint16_t *name) +int svc_can_register(uid_t uid, const uint16_t *name)  { -    unsigned n; -     +    size_t n; +      if ((uid == 0) || (uid == AID_SYSTEM))          return 1; @@ -90,19 +90,19 @@ int svc_can_register(unsigned uid, uint16_t *name)      return 0;  } -struct svcinfo  +struct svcinfo  {      struct svcinfo *next; -    void *ptr; +    uint32_t handle;      struct binder_death death;      int allow_isolated; -    unsigned len; +    size_t len;      uint16_t name[0];  }; -struct svcinfo *svclist = 0; +struct svcinfo *svclist = NULL; -struct svcinfo *find_svc(uint16_t *s16, unsigned len) +struct svcinfo *find_svc(const uint16_t *s16, size_t len)  {      struct svcinfo *si; @@ -112,112 +112,117 @@ struct svcinfo *find_svc(uint16_t *s16, unsigned len)              return si;          }      } -    return 0; +    return NULL;  }  void svcinfo_death(struct binder_state *bs, void *ptr)  { -    struct svcinfo *si = ptr; +    struct svcinfo *si = (struct svcinfo* ) ptr; +      ALOGI("service '%s' died\n", str8(si->name)); -    if (si->ptr) { -        binder_release(bs, si->ptr); -        si->ptr = 0; -    }    +    if (si->handle) { +        binder_release(bs, si->handle); +        si->handle = 0; +    }  } -uint16_t svcmgr_id[] = {  +uint16_t svcmgr_id[] = {      'a','n','d','r','o','i','d','.','o','s','.', -    'I','S','e','r','v','i','c','e','M','a','n','a','g','e','r'  +    'I','S','e','r','v','i','c','e','M','a','n','a','g','e','r'  }; -   -void *do_find_service(struct binder_state *bs, uint16_t *s, unsigned len, unsigned uid) + +uint32_t do_find_service(struct binder_state *bs, const uint16_t *s, size_t len, uid_t uid)  {      struct svcinfo *si; -    si = find_svc(s, len); -//    ALOGI("check_service('%s') ptr = %p\n", str8(s), si ? si->ptr : 0); -    if (si && si->ptr) { +    si = find_svc(s, len); +    //ALOGI("check_service('%s') handle = %x\n", str8(s), si ? si->handle : 0); +    if (si && si->handle) {          if (!si->allow_isolated) {              // If this service doesn't allow access from isolated processes,              // then check the uid to see if it is isolated. -            unsigned appid = uid % AID_USER; +            uid_t appid = uid % AID_USER;              if (appid >= AID_ISOLATED_START && appid <= AID_ISOLATED_END) {                  return 0;              }          } -        return si->ptr; +        return si->handle;      } else {          return 0;      }  }  int do_add_service(struct binder_state *bs, -                   uint16_t *s, unsigned len, -                   void *ptr, unsigned uid, int allow_isolated) +                   const uint16_t *s, size_t len, +                   uint32_t handle, uid_t uid, int allow_isolated)  {      struct svcinfo *si; -    //ALOGI("add_service('%s',%p,%s) uid=%d\n", str8(s), ptr, + +    //ALOGI("add_service('%s',%x,%s) uid=%d\n", str8(s), handle,      //        allow_isolated ? "allow_isolated" : "!allow_isolated", uid); -    if (!ptr || (len == 0) || (len > 127)) +    if (!handle || (len == 0) || (len > 127))          return -1;      if (!svc_can_register(uid, s)) { -        ALOGE("add_service('%s',%p) uid=%d - PERMISSION DENIED\n", -             str8(s), ptr, uid); +        ALOGE("add_service('%s',%x) uid=%d - PERMISSION DENIED\n", +             str8(s), handle, uid);          return -1;      }      si = find_svc(s, len);      if (si) { -        if (si->ptr) { -            ALOGE("add_service('%s',%p) uid=%d - ALREADY REGISTERED, OVERRIDE\n", -                 str8(s), ptr, uid); +        if (si->handle) { +            ALOGE("add_service('%s',%x) uid=%d - ALREADY REGISTERED, OVERRIDE\n", +                 str8(s), handle, uid);              svcinfo_death(bs, si);          } -        si->ptr = ptr; +        si->handle = handle;      } else {          si = malloc(sizeof(*si) + (len + 1) * sizeof(uint16_t));          if (!si) { -            ALOGE("add_service('%s',%p) uid=%d - OUT OF MEMORY\n", -                 str8(s), ptr, uid); +            ALOGE("add_service('%s',%x) uid=%d - OUT OF MEMORY\n", +                 str8(s), handle, uid);              return -1;          } -        si->ptr = ptr; +        si->handle = handle;          si->len = len;          memcpy(si->name, s, (len + 1) * sizeof(uint16_t));          si->name[len] = '\0'; -        si->death.func = svcinfo_death; +        si->death.func = (void*) svcinfo_death;          si->death.ptr = si;          si->allow_isolated = allow_isolated;          si->next = svclist;          svclist = si;      } -    binder_acquire(bs, ptr); -    binder_link_to_death(bs, ptr, &si->death); +    binder_acquire(bs, handle); +    binder_link_to_death(bs, handle, &si->death);      return 0;  }  int svcmgr_handler(struct binder_state *bs, -                   struct binder_txn *txn, +                   struct binder_transaction_data *txn,                     struct binder_io *msg,                     struct binder_io *reply)  {      struct svcinfo *si;      uint16_t *s; -    unsigned len; -    void *ptr; +    size_t len; +    uint32_t handle;      uint32_t strict_policy;      int allow_isolated; -//    ALOGI("target=%p code=%d pid=%d uid=%d\n", -//         txn->target, txn->code, txn->sender_pid, txn->sender_euid); +    //ALOGI("target=%x code=%d pid=%d uid=%d\n", +    //  txn->target.handle, txn->code, txn->sender_pid, txn->sender_euid); -    if (txn->target != svcmgr_handle) +    if (txn->target.handle != svcmgr_handle)          return -1; +    if (txn->code == PING_TRANSACTION) +        return 0; +      // Equivalent to Parcel::enforceInterface(), reading the RPC      // header with the strict mode policy mask and the interface name.      // Note that we ignore the strict_policy and don't propagate it @@ -234,22 +239,22 @@ int svcmgr_handler(struct binder_state *bs,      case SVC_MGR_GET_SERVICE:      case SVC_MGR_CHECK_SERVICE:          s = bio_get_string16(msg, &len); -        ptr = do_find_service(bs, s, len, txn->sender_euid); -        if (!ptr) +        handle = do_find_service(bs, s, len, txn->sender_euid); +        if (!handle)              break; -        bio_put_ref(reply, ptr); +        bio_put_ref(reply, handle);          return 0;      case SVC_MGR_ADD_SERVICE:          s = bio_get_string16(msg, &len); -        ptr = bio_get_ref(msg); +        handle = bio_get_ref(msg);          allow_isolated = bio_get_uint32(msg) ? 1 : 0; -        if (do_add_service(bs, s, len, ptr, txn->sender_euid, allow_isolated)) +        if (do_add_service(bs, s, len, handle, txn->sender_euid, allow_isolated))              return -1;          break;      case SVC_MGR_LIST_SERVICES: { -        unsigned n = bio_get_uint32(msg); +        uint32_t n = bio_get_uint32(msg);          si = svclist;          while ((n-- > 0) && si) @@ -272,16 +277,20 @@ int svcmgr_handler(struct binder_state *bs,  int main(int argc, char **argv)  {      struct binder_state *bs; -    void *svcmgr = BINDER_SERVICE_MANAGER;      bs = binder_open(128*1024); +    if (!bs) { +        ALOGE("failed to open binder driver\n"); +        return -1; +    }      if (binder_become_context_manager(bs)) {          ALOGE("cannot become context manager (%s)\n", strerror(errno));          return -1;      } -    svcmgr_handle = svcmgr; +    svcmgr_handle = BINDER_SERVICE_MANAGER;      binder_loop(bs, svcmgr_handler); +      return 0;  } diff --git a/include/android/input.h b/include/android/input.h index fead76947f..a660761728 100644 --- a/include/android/input.h +++ b/include/android/input.h @@ -583,7 +583,7 @@ int64_t AMotionEvent_getEventTime(const AInputEvent* motion_event);   * and views. */  float AMotionEvent_getXOffset(const AInputEvent* motion_event); -/* Get the precision of the Y coordinates being reported. +/* Get the Y coordinate offset.   * For touch events on the screen, this is the delta that was added to the raw   * screen coordinates to adjust for the absolute position of the containing windows   * and views. */ diff --git a/include/binder/IPCThreadState.h b/include/binder/IPCThreadState.h index 5bc123e3c7..6e0c01beac 100644 --- a/include/binder/IPCThreadState.h +++ b/include/binder/IPCThreadState.h @@ -107,7 +107,7 @@ private:      static  void                threadDestructor(void *st);      static  void                freeBuffer(Parcel* parcel,                                             const uint8_t* data, size_t dataSize, -                                           const size_t* objects, size_t objectsSize, +                                           const binder_size_t* objects, size_t objectsSize,                                             void* cookie);      const   sp<ProcessState>    mProcess; diff --git a/include/binder/Parcel.h b/include/binder/Parcel.h index c95f297b4f..ed2e7df2c3 100644 --- a/include/binder/Parcel.h +++ b/include/binder/Parcel.h @@ -23,6 +23,7 @@  #include <utils/String16.h>  #include <utils/Vector.h>  #include <utils/Flattenable.h> +#include <linux/binder.h>  // ---------------------------------------------------------------------------  namespace android { @@ -35,9 +36,8 @@ class ProcessState;  class String8;  class TextOutput; -struct flat_binder_object;  // defined in support_p/binder_module.h -  class Parcel { +    friend class IPCThreadState;  public:      class ReadableBlob;      class WritableBlob; @@ -81,7 +81,10 @@ public:      void                freeData(); -    const size_t*       objects() const; +private: +    const binder_size_t* objects() const; + +public:      size_t              objectsCount() const;      status_t            errorCheck() const; @@ -193,19 +196,21 @@ public:      // Explicitly close all file descriptors in the parcel.      void                closeFileDescriptors(); +private:      typedef void        (*release_func)(Parcel* parcel,                                          const uint8_t* data, size_t dataSize, -                                        const size_t* objects, size_t objectsSize, +                                        const binder_size_t* objects, size_t objectsSize,                                          void* cookie); -    const uint8_t*      ipcData() const; +    uintptr_t           ipcData() const;      size_t              ipcDataSize() const; -    const size_t*       ipcObjects() const; +    uintptr_t           ipcObjects() const;      size_t              ipcObjectsCount() const;      void                ipcSetDataReference(const uint8_t* data, size_t dataSize, -                                            const size_t* objects, size_t objectsCount, +                                            const binder_size_t* objects, size_t objectsCount,                                              release_func relFunc, void* relCookie); +public:      void                print(TextOutput& to, uint32_t flags = 0) const;  private: @@ -218,6 +223,9 @@ private:      status_t            growData(size_t len);      status_t            restartWrite(size_t desired);      status_t            continueWrite(size_t desired); +    status_t            writePointer(uintptr_t val); +    status_t            readPointer(uintptr_t *pArg) const; +    uintptr_t           readPointer() const;      void                freeDataNoInit();      void                initState();      void                scanForFds() const; @@ -235,7 +243,7 @@ private:      size_t              mDataSize;      size_t              mDataCapacity;      mutable size_t      mDataPos; -    size_t*             mObjects; +    binder_size_t*      mObjects;      size_t              mObjectsSize;      size_t              mObjectsCapacity;      mutable size_t      mNextObjectHint; diff --git a/libs/binder/Android.mk b/libs/binder/Android.mk index f3f8dafc2a..673fc8238f 100644 --- a/libs/binder/Android.mk +++ b/libs/binder/Android.mk @@ -42,6 +42,11 @@ LOCAL_LDLIBS += -lpthread  LOCAL_MODULE := libbinder  LOCAL_SHARED_LIBRARIES := liblog libcutils libutils  LOCAL_SRC_FILES := $(sources) +ifneq ($(TARGET_USES_64_BIT_BINDER),true) +ifneq ($(TARGET_IS_64_BIT),true) +LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 +endif +endif  include $(BUILD_SHARED_LIBRARY)  include $(CLEAR_VARS) @@ -49,4 +54,9 @@ LOCAL_LDLIBS += -lpthread  LOCAL_MODULE := libbinder  LOCAL_STATIC_LIBRARIES += libutils  LOCAL_SRC_FILES := $(sources) +ifneq ($(TARGET_USES_64_BIT_BINDER),true) +ifneq ($(TARGET_IS_64_BIT),true) +LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 +endif +endif  include $(BUILD_STATIC_LIBRARY) diff --git a/libs/binder/Binder.cpp b/libs/binder/Binder.cpp index 1f21f9c321..71e62ab2b4 100644 --- a/libs/binder/Binder.cpp +++ b/libs/binder/Binder.cpp @@ -39,7 +39,7 @@ IBinder::~IBinder()  // --------------------------------------------------------------------------- -sp<IInterface>  IBinder::queryLocalInterface(const String16& descriptor) +sp<IInterface>  IBinder::queryLocalInterface(const String16& /*descriptor*/)  {      return NULL;  } @@ -117,19 +117,20 @@ status_t BBinder::transact(  }  status_t BBinder::linkToDeath( -    const sp<DeathRecipient>& recipient, void* cookie, uint32_t flags) +    const sp<DeathRecipient>& /*recipient*/, void* /*cookie*/, +    uint32_t /*flags*/)  {      return INVALID_OPERATION;  }  status_t BBinder::unlinkToDeath( -    const wp<DeathRecipient>& recipient, void* cookie, uint32_t flags, -    wp<DeathRecipient>* outRecipient) +    const wp<DeathRecipient>& /*recipient*/, void* /*cookie*/, +    uint32_t /*flags*/, wp<DeathRecipient>* /*outRecipient*/)  {      return INVALID_OPERATION;  } -status_t BBinder::dump(int fd, const Vector<String16>& args) +    status_t BBinder::dump(int /*fd*/, const Vector<String16>& /*args*/)  {      return NO_ERROR;  } @@ -142,8 +143,13 @@ void BBinder::attachObject(      if (!e) {          e = new Extras; +#ifdef __LP64__ +        if (android_atomic_release_cas64(0, reinterpret_cast<int64_t>(e), +                reinterpret_cast<volatile int64_t*>(&mExtras)) != 0) { +#else          if (android_atomic_cmpxchg(0, reinterpret_cast<int32_t>(e),                  reinterpret_cast<volatile int32_t*>(&mExtras)) != 0) { +#endif              delete e;              e = mExtras;          } @@ -184,7 +190,7 @@ BBinder::~BBinder()  status_t BBinder::onTransact( -    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) +    uint32_t code, const Parcel& data, Parcel* reply, uint32_t /*flags*/)  {      switch (code) {          case INTERFACE_TRANSACTION: @@ -246,14 +252,14 @@ void BpRefBase::onFirstRef()      android_atomic_or(kRemoteAcquired, &mState);  } -void BpRefBase::onLastStrongRef(const void* id) +void BpRefBase::onLastStrongRef(const void* /*id*/)  {      if (mRemote) {          mRemote->decStrong(this);      }  } -bool BpRefBase::onIncStrongAttempted(uint32_t flags, const void* id) +bool BpRefBase::onIncStrongAttempted(uint32_t /*flags*/, const void* /*id*/)  {      return mRemote ? mRefs->attemptIncStrong(this) : false;  } diff --git a/libs/binder/BpBinder.cpp b/libs/binder/BpBinder.cpp index 47a62db41d..1bad67af23 100644 --- a/libs/binder/BpBinder.cpp +++ b/libs/binder/BpBinder.cpp @@ -343,7 +343,7 @@ void BpBinder::onFirstRef()      if (ipc) ipc->incStrongHandle(mHandle);  } -void BpBinder::onLastStrongRef(const void* id) +void BpBinder::onLastStrongRef(const void* /*id*/)  {      ALOGV("onLastStrongRef BpBinder %p handle %d\n", this, mHandle);      IF_ALOGV() { @@ -353,7 +353,7 @@ void BpBinder::onLastStrongRef(const void* id)      if (ipc) ipc->decStrongHandle(mHandle);  } -bool BpBinder::onIncStrongAttempted(uint32_t flags, const void* id) +bool BpBinder::onIncStrongAttempted(uint32_t /*flags*/, const void* /*id*/)  {      ALOGV("onIncStrongAttempted BpBinder %p handle %d\n", this, mHandle);      IPCThreadState* ipc = IPCThreadState::self(); diff --git a/libs/binder/Debug.cpp b/libs/binder/Debug.cpp index a8b6e837b4..0ffafbbeb4 100644 --- a/libs/binder/Debug.cpp +++ b/libs/binder/Debug.cpp @@ -38,7 +38,7 @@ const char* stringForIndent(int32_t indentLevel)  // --------------------------------------------------------------------- -static void defaultPrintFunc(void* cookie, const char* txt) +static void defaultPrintFunc(void* /*cookie*/, const char* txt)  {      printf("%s", txt);  } diff --git a/libs/binder/IMemory.cpp b/libs/binder/IMemory.cpp index 07cb41a758..d8ed995a75 100644 --- a/libs/binder/IMemory.cpp +++ b/libs/binder/IMemory.cpp @@ -244,7 +244,7 @@ BpMemoryHeap::~BpMemoryHeap() {                  sp<IBinder> binder = const_cast<BpMemoryHeap*>(this)->asBinder();                  if (VERBOSE) { -                    ALOGD("UNMAPPING binder=%p, heap=%p, size=%d, fd=%d", +                    ALOGD("UNMAPPING binder=%p, heap=%p, size=%zu, fd=%d",                              binder.get(), this, mSize, mHeapId);                      CallStack stack(LOG_TAG);                  } @@ -296,11 +296,11 @@ void BpMemoryHeap::assertReallyMapped() const          uint32_t flags = reply.readInt32();          uint32_t offset = reply.readInt32(); -        ALOGE_IF(err, "binder=%p transaction failed fd=%d, size=%ld, err=%d (%s)", +        ALOGE_IF(err, "binder=%p transaction failed fd=%d, size=%zd, err=%d (%s)",                  asBinder().get(), parcel_fd, size, err, strerror(-err));          int fd = dup( parcel_fd ); -        ALOGE_IF(fd==-1, "cannot dup fd=%d, size=%ld, err=%d (%s)", +        ALOGE_IF(fd==-1, "cannot dup fd=%d, size=%zd, err=%d (%s)",                  parcel_fd, size, err, strerror(errno));          int access = PROT_READ; @@ -313,7 +313,7 @@ void BpMemoryHeap::assertReallyMapped() const              mRealHeap = true;              mBase = mmap(0, size, access, MAP_SHARED, fd, offset);              if (mBase == MAP_FAILED) { -                ALOGE("cannot map BpMemoryHeap (binder=%p), size=%ld, fd=%d (%s)", +                ALOGE("cannot map BpMemoryHeap (binder=%p), size=%zd, fd=%d (%s)",                          asBinder().get(), size, fd, strerror(errno));                  close(fd);              } else { @@ -402,7 +402,7 @@ sp<IMemoryHeap> HeapCache::find_heap(const sp<IBinder>& binder)      if (i>=0) {          heap_info_t& info = mHeapCache.editValueAt(i);          ALOGD_IF(VERBOSE, -                "found binder=%p, heap=%p, size=%d, fd=%d, count=%d", +                "found binder=%p, heap=%p, size=%zu, fd=%d, count=%d",                  binder.get(), info.heap.get(),                  static_cast<BpMemoryHeap*>(info.heap.get())->mSize,                  static_cast<BpMemoryHeap*>(info.heap.get())->mHeapId, @@ -435,7 +435,7 @@ void HeapCache::free_heap(const wp<IBinder>& binder)              int32_t c = android_atomic_dec(&info.count);              if (c == 1) {                  ALOGD_IF(VERBOSE, -                        "removing binder=%p, heap=%p, size=%d, fd=%d, count=%d", +                        "removing binder=%p, heap=%p, size=%zu, fd=%d, count=%d",                          binder.unsafe_get(), info.heap.get(),                          static_cast<BpMemoryHeap*>(info.heap.get())->mSize,                          static_cast<BpMemoryHeap*>(info.heap.get())->mHeapId, @@ -466,7 +466,7 @@ void HeapCache::dump_heaps()      for (int i=0 ; i<c ; i++) {          const heap_info_t& info = mHeapCache.valueAt(i);          BpMemoryHeap const* h(static_cast<BpMemoryHeap const *>(info.heap.get())); -        ALOGD("hey=%p, heap=%p, count=%d, (fd=%d, base=%p, size=%d)", +        ALOGD("hey=%p, heap=%p, count=%d, (fd=%d, base=%p, size=%zu)",                  mHeapCache.keyAt(i).unsafe_get(),                  info.heap.get(), info.count,                  h->mHeapId, h->mBase, h->mSize); diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp index 5951a3ff47..35dba12217 100644 --- a/libs/binder/IPCThreadState.cpp +++ b/libs/binder/IPCThreadState.cpp @@ -533,7 +533,7 @@ status_t IPCThreadState::handlePolledCommands()      return result;  } -void IPCThreadState::stopProcess(bool immediate) +void IPCThreadState::stopProcess(bool /*immediate*/)  {      //ALOGI("**** STOPPING PROCESS");      flushCommands(); @@ -635,6 +635,7 @@ void IPCThreadState::decWeakHandle(int32_t handle)  status_t IPCThreadState::attemptIncStrongHandle(int32_t handle)  { +#if HAS_BC_ATTEMPT_ACQUIRE      LOG_REMOTEREFS("IPCThreadState::attemptIncStrongHandle(%d)\n", handle);      mOut.writeInt32(BC_ATTEMPT_ACQUIRE);      mOut.writeInt32(0); // xxx was thread priority @@ -649,6 +650,11 @@ status_t IPCThreadState::attemptIncStrongHandle(int32_t handle)  #endif      return result; +#else +    (void)handle; +    ALOGE("%s(%d): Not supported\n", __func__, handle); +    return INVALID_OPERATION; +#endif  }  void IPCThreadState::expungeHandle(int32_t handle, IBinder* binder) @@ -663,7 +669,7 @@ status_t IPCThreadState::requestDeathNotification(int32_t handle, BpBinder* prox  {      mOut.writeInt32(BC_REQUEST_DEATH_NOTIFICATION);      mOut.writeInt32((int32_t)handle); -    mOut.writeInt32((int32_t)proxy); +    mOut.writePointer((uintptr_t)proxy);      return NO_ERROR;  } @@ -671,7 +677,7 @@ status_t IPCThreadState::clearDeathNotification(int32_t handle, BpBinder* proxy)  {      mOut.writeInt32(BC_CLEAR_DEATH_NOTIFICATION);      mOut.writeInt32((int32_t)handle); -    mOut.writeInt32((int32_t)proxy); +    mOut.writePointer((uintptr_t)proxy);      return NO_ERROR;  } @@ -753,23 +759,23 @@ status_t IPCThreadState::waitForResponse(Parcel *reply, status_t *acquireResult)                          reply->ipcSetDataReference(                              reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer),                              tr.data_size, -                            reinterpret_cast<const size_t*>(tr.data.ptr.offsets), -                            tr.offsets_size/sizeof(size_t), +                            reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), +                            tr.offsets_size/sizeof(binder_size_t),                              freeBuffer, this);                      } else { -                        err = *static_cast<const status_t*>(tr.data.ptr.buffer); +                        err = *reinterpret_cast<const status_t*>(tr.data.ptr.buffer);                          freeBuffer(NULL,                              reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer),                              tr.data_size, -                            reinterpret_cast<const size_t*>(tr.data.ptr.offsets), -                            tr.offsets_size/sizeof(size_t), this); +                            reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), +                            tr.offsets_size/sizeof(binder_size_t), this);                      }                  } else {                      freeBuffer(NULL,                          reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer),                          tr.data_size, -                        reinterpret_cast<const size_t*>(tr.data.ptr.offsets), -                        tr.offsets_size/sizeof(size_t), this); +                        reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), +                        tr.offsets_size/sizeof(binder_size_t), this);                      continue;                  }              } @@ -809,12 +815,12 @@ status_t IPCThreadState::talkWithDriver(bool doReceive)      const size_t outAvail = (!doReceive || needRead) ? mOut.dataSize() : 0;      bwr.write_size = outAvail; -    bwr.write_buffer = (long unsigned int)mOut.data(); +    bwr.write_buffer = (uintptr_t)mOut.data();      // This is what we'll read.      if (doReceive && needRead) {          bwr.read_size = mIn.dataCapacity(); -        bwr.read_buffer = (long unsigned int)mIn.data(); +        bwr.read_buffer = (uintptr_t)mIn.data();      } else {          bwr.read_size = 0;          bwr.read_buffer = 0; @@ -861,14 +867,14 @@ status_t IPCThreadState::talkWithDriver(bool doReceive)      } while (err == -EINTR);      IF_LOG_COMMANDS() { -        alog << "Our err: " << (void*)err << ", write consumed: " +        alog << "Our err: " << (void*)(intptr_t)err << ", write consumed: "              << bwr.write_consumed << " (of " << mOut.dataSize()                          << "), read consumed: " << bwr.read_consumed << endl;      }      if (err >= NO_ERROR) {          if (bwr.write_consumed > 0) { -            if (bwr.write_consumed < (ssize_t)mOut.dataSize()) +            if (bwr.write_consumed < mOut.dataSize())                  mOut.remove(0, bwr.write_consumed);              else                  mOut.setDataSize(0); @@ -898,6 +904,7 @@ status_t IPCThreadState::writeTransactionData(int32_t cmd, uint32_t binderFlags,  {      binder_transaction_data tr; +    tr.target.ptr = 0; /* Don't pass uninitialized stack data to a remote process */      tr.target.handle = handle;      tr.code = code;      tr.flags = binderFlags; @@ -909,15 +916,15 @@ status_t IPCThreadState::writeTransactionData(int32_t cmd, uint32_t binderFlags,      if (err == NO_ERROR) {          tr.data_size = data.ipcDataSize();          tr.data.ptr.buffer = data.ipcData(); -        tr.offsets_size = data.ipcObjectsCount()*sizeof(size_t); +        tr.offsets_size = data.ipcObjectsCount()*sizeof(binder_size_t);          tr.data.ptr.offsets = data.ipcObjects();      } else if (statusBuffer) {          tr.flags |= TF_STATUS_CODE;          *statusBuffer = err;          tr.data_size = sizeof(status_t); -        tr.data.ptr.buffer = statusBuffer; +        tr.data.ptr.buffer = reinterpret_cast<uintptr_t>(statusBuffer);          tr.offsets_size = 0; -        tr.data.ptr.offsets = NULL; +        tr.data.ptr.offsets = 0;      } else {          return (mLastError = err);      } @@ -950,8 +957,8 @@ status_t IPCThreadState::executeCommand(int32_t cmd)          break;      case BR_ACQUIRE: -        refs = (RefBase::weakref_type*)mIn.readInt32(); -        obj = (BBinder*)mIn.readInt32(); +        refs = (RefBase::weakref_type*)mIn.readPointer(); +        obj = (BBinder*)mIn.readPointer();          ALOG_ASSERT(refs->refBase() == obj,                     "BR_ACQUIRE: object %p does not match cookie %p (expected %p)",                     refs, obj, refs->refBase()); @@ -961,13 +968,13 @@ status_t IPCThreadState::executeCommand(int32_t cmd)              obj->printRefs();          }          mOut.writeInt32(BC_ACQUIRE_DONE); -        mOut.writeInt32((int32_t)refs); -        mOut.writeInt32((int32_t)obj); +        mOut.writePointer((uintptr_t)refs); +        mOut.writePointer((uintptr_t)obj);          break;      case BR_RELEASE: -        refs = (RefBase::weakref_type*)mIn.readInt32(); -        obj = (BBinder*)mIn.readInt32(); +        refs = (RefBase::weakref_type*)mIn.readPointer(); +        obj = (BBinder*)mIn.readPointer();          ALOG_ASSERT(refs->refBase() == obj,                     "BR_RELEASE: object %p does not match cookie %p (expected %p)",                     refs, obj, refs->refBase()); @@ -979,17 +986,17 @@ status_t IPCThreadState::executeCommand(int32_t cmd)          break;      case BR_INCREFS: -        refs = (RefBase::weakref_type*)mIn.readInt32(); -        obj = (BBinder*)mIn.readInt32(); +        refs = (RefBase::weakref_type*)mIn.readPointer(); +        obj = (BBinder*)mIn.readPointer();          refs->incWeak(mProcess.get());          mOut.writeInt32(BC_INCREFS_DONE); -        mOut.writeInt32((int32_t)refs); -        mOut.writeInt32((int32_t)obj); +        mOut.writePointer((uintptr_t)refs); +        mOut.writePointer((uintptr_t)obj);          break;      case BR_DECREFS: -        refs = (RefBase::weakref_type*)mIn.readInt32(); -        obj = (BBinder*)mIn.readInt32(); +        refs = (RefBase::weakref_type*)mIn.readPointer(); +        obj = (BBinder*)mIn.readPointer();          // NOTE: This assertion is not valid, because the object may no          // longer exist (thus the (BBinder*)cast above resulting in a different          // memory address). @@ -1000,8 +1007,8 @@ status_t IPCThreadState::executeCommand(int32_t cmd)          break;      case BR_ATTEMPT_ACQUIRE: -        refs = (RefBase::weakref_type*)mIn.readInt32(); -        obj = (BBinder*)mIn.readInt32(); +        refs = (RefBase::weakref_type*)mIn.readPointer(); +        obj = (BBinder*)mIn.readPointer();          {              const bool success = refs->attemptIncStrong(mProcess.get()); @@ -1026,8 +1033,8 @@ status_t IPCThreadState::executeCommand(int32_t cmd)              buffer.ipcSetDataReference(                  reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer),                  tr.data_size, -                reinterpret_cast<const size_t*>(tr.data.ptr.offsets), -                tr.offsets_size/sizeof(size_t), freeBuffer, this); +                reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), +                tr.offsets_size/sizeof(binder_size_t), freeBuffer, this);              const pid_t origPid = mCallingPid;              const uid_t origUid = mCallingUid; @@ -1103,15 +1110,15 @@ status_t IPCThreadState::executeCommand(int32_t cmd)      case BR_DEAD_BINDER:          { -            BpBinder *proxy = (BpBinder*)mIn.readInt32(); +            BpBinder *proxy = (BpBinder*)mIn.readPointer();              proxy->sendObituary();              mOut.writeInt32(BC_DEAD_BINDER_DONE); -            mOut.writeInt32((int32_t)proxy); +            mOut.writePointer((uintptr_t)proxy);          } break;      case BR_CLEAR_DEATH_NOTIFICATION_DONE:          { -            BpBinder *proxy = (BpBinder*)mIn.readInt32(); +            BpBinder *proxy = (BpBinder*)mIn.readPointer();              proxy->getWeakRefs()->decWeak(proxy);          } break; @@ -1154,9 +1161,10 @@ void IPCThreadState::threadDestructor(void *st)  } -void IPCThreadState::freeBuffer(Parcel* parcel, const uint8_t* data, size_t dataSize, -                                const size_t* objects, size_t objectsSize, -                                void* cookie) +void IPCThreadState::freeBuffer(Parcel* parcel, const uint8_t* data, +                                size_t /*dataSize*/, +                                const binder_size_t* /*objects*/, +                                size_t /*objectsSize*/, void* /*cookie*/)  {      //ALOGI("Freeing parcel %p", &parcel);      IF_LOG_COMMANDS() { @@ -1166,7 +1174,7 @@ void IPCThreadState::freeBuffer(Parcel* parcel, const uint8_t* data, size_t data      if (parcel != NULL) parcel->closeFileDescriptors();      IPCThreadState* state = self();      state->mOut.writeInt32(BC_FREE_BUFFER); -    state->mOut.writeInt32((int32_t)data); +    state->mOut.writePointer((uintptr_t)data);  }  }; // namespace android diff --git a/libs/binder/MemoryDealer.cpp b/libs/binder/MemoryDealer.cpp index 8d0e0a7413..a14c100055 100644 --- a/libs/binder/MemoryDealer.cpp +++ b/libs/binder/MemoryDealer.cpp @@ -210,7 +210,7 @@ Allocation::~Allocation()  #ifdef MADV_REMOVE              if (size) {                  int err = madvise(start_ptr, size, MADV_REMOVE); -                ALOGW_IF(err, "madvise(%p, %u, MADV_REMOVE) returned %s", +                ALOGW_IF(err, "madvise(%p, %zu, MADV_REMOVE) returned %s",                          start_ptr, size, err<0 ? strerror(errno) : "Ok");              }  #endif @@ -445,8 +445,8 @@ void SimpleBestFitAllocator::dump_l(String8& result,          int np = ((cur->next) && cur->next->prev != cur) ? 1 : 0;          int pn = ((cur->prev) && cur->prev->next != cur) ? 2 : 0; -        snprintf(buffer, SIZE, "  %3u: %08x | 0x%08X | 0x%08X | %s %s\n", -            i, int(cur), int(cur->start*kMemoryAlign), +        snprintf(buffer, SIZE, "  %3u: %p | 0x%08X | 0x%08X | %s %s\n", +            i, cur, int(cur->start*kMemoryAlign),              int(cur->size*kMemoryAlign),                      int(cur->free) ? "F" : "A",                      errs[np|pn]); diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 0210606579..159003d169 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -78,12 +78,12 @@ void acquire_object(const sp<ProcessState>& proc,          case BINDER_TYPE_BINDER:              if (obj.binder) {                  LOG_REFS("Parcel %p acquiring reference on local %p", who, obj.cookie); -                static_cast<IBinder*>(obj.cookie)->incStrong(who); +                reinterpret_cast<IBinder*>(obj.cookie)->incStrong(who);              }              return;          case BINDER_TYPE_WEAK_BINDER:              if (obj.binder) -                static_cast<RefBase::weakref_type*>(obj.binder)->incWeak(who); +                reinterpret_cast<RefBase::weakref_type*>(obj.binder)->incWeak(who);              return;          case BINDER_TYPE_HANDLE: {              const sp<IBinder> b = proc->getStrongProxyForHandle(obj.handle); @@ -105,7 +105,7 @@ void acquire_object(const sp<ProcessState>& proc,          }      } -    ALOGD("Invalid object type 0x%08lx", obj.type); +    ALOGD("Invalid object type 0x%08x", obj.type);  }  void release_object(const sp<ProcessState>& proc, @@ -115,12 +115,12 @@ void release_object(const sp<ProcessState>& proc,          case BINDER_TYPE_BINDER:              if (obj.binder) {                  LOG_REFS("Parcel %p releasing reference on local %p", who, obj.cookie); -                static_cast<IBinder*>(obj.cookie)->decStrong(who); +                reinterpret_cast<IBinder*>(obj.cookie)->decStrong(who);              }              return;          case BINDER_TYPE_WEAK_BINDER:              if (obj.binder) -                static_cast<RefBase::weakref_type*>(obj.binder)->decWeak(who); +                reinterpret_cast<RefBase::weakref_type*>(obj.binder)->decWeak(who);              return;          case BINDER_TYPE_HANDLE: {              const sp<IBinder> b = proc->getStrongProxyForHandle(obj.handle); @@ -136,21 +136,21 @@ void release_object(const sp<ProcessState>& proc,              return;          }          case BINDER_TYPE_FD: { -            if (obj.cookie != (void*)0) close(obj.handle); +            if (obj.cookie != 0) close(obj.handle);              return;          }      } -    ALOGE("Invalid object type 0x%08lx", obj.type); +    ALOGE("Invalid object type 0x%08x", obj.type);  }  inline static status_t finish_flatten_binder( -    const sp<IBinder>& binder, const flat_binder_object& flat, Parcel* out) +    const sp<IBinder>& /*binder*/, const flat_binder_object& flat, Parcel* out)  {      return out->writeObject(flat, false);  } -status_t flatten_binder(const sp<ProcessState>& proc, +status_t flatten_binder(const sp<ProcessState>& /*proc*/,      const sp<IBinder>& binder, Parcel* out)  {      flat_binder_object obj; @@ -165,23 +165,24 @@ status_t flatten_binder(const sp<ProcessState>& proc,              }              const int32_t handle = proxy ? proxy->handle() : 0;              obj.type = BINDER_TYPE_HANDLE; +            obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */              obj.handle = handle; -            obj.cookie = NULL; +            obj.cookie = 0;          } else {              obj.type = BINDER_TYPE_BINDER; -            obj.binder = local->getWeakRefs(); -            obj.cookie = local; +            obj.binder = reinterpret_cast<uintptr_t>(local->getWeakRefs()); +            obj.cookie = reinterpret_cast<uintptr_t>(local);          }      } else {          obj.type = BINDER_TYPE_BINDER; -        obj.binder = NULL; -        obj.cookie = NULL; +        obj.binder = 0; +        obj.cookie = 0;      }      return finish_flatten_binder(binder, obj, out);  } -status_t flatten_binder(const sp<ProcessState>& proc, +status_t flatten_binder(const sp<ProcessState>& /*proc*/,      const wp<IBinder>& binder, Parcel* out)  {      flat_binder_object obj; @@ -198,12 +199,13 @@ status_t flatten_binder(const sp<ProcessState>& proc,                  }                  const int32_t handle = proxy ? proxy->handle() : 0;                  obj.type = BINDER_TYPE_WEAK_HANDLE; +                obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */                  obj.handle = handle; -                obj.cookie = NULL; +                obj.cookie = 0;              } else {                  obj.type = BINDER_TYPE_WEAK_BINDER; -                obj.binder = binder.get_refs(); -                obj.cookie = binder.unsafe_get(); +                obj.binder = reinterpret_cast<uintptr_t>(binder.get_refs()); +                obj.cookie = reinterpret_cast<uintptr_t>(binder.unsafe_get());              }              return finish_flatten_binder(real, obj, out);          } @@ -217,20 +219,21 @@ status_t flatten_binder(const sp<ProcessState>& proc,          // implementation we are using.          ALOGE("Unable to unflatten Binder weak reference!");          obj.type = BINDER_TYPE_BINDER; -        obj.binder = NULL; -        obj.cookie = NULL; +        obj.binder = 0; +        obj.cookie = 0;          return finish_flatten_binder(NULL, obj, out);      } else {          obj.type = BINDER_TYPE_BINDER; -        obj.binder = NULL; -        obj.cookie = NULL; +        obj.binder = 0; +        obj.cookie = 0;          return finish_flatten_binder(NULL, obj, out);      }  }  inline static status_t finish_unflatten_binder( -    BpBinder* proxy, const flat_binder_object& flat, const Parcel& in) +    BpBinder* /*proxy*/, const flat_binder_object& /*flat*/, +    const Parcel& /*in*/)  {      return NO_ERROR;  } @@ -243,7 +246,7 @@ status_t unflatten_binder(const sp<ProcessState>& proc,      if (flat) {          switch (flat->type) {              case BINDER_TYPE_BINDER: -                *out = static_cast<IBinder*>(flat->cookie); +                *out = reinterpret_cast<IBinder*>(flat->cookie);                  return finish_unflatten_binder(NULL, *flat, in);              case BINDER_TYPE_HANDLE:                  *out = proc->getStrongProxyForHandle(flat->handle); @@ -262,13 +265,13 @@ status_t unflatten_binder(const sp<ProcessState>& proc,      if (flat) {          switch (flat->type) {              case BINDER_TYPE_BINDER: -                *out = static_cast<IBinder*>(flat->cookie); +                *out = reinterpret_cast<IBinder*>(flat->cookie);                  return finish_unflatten_binder(NULL, *flat, in);              case BINDER_TYPE_WEAK_BINDER: -                if (flat->binder != NULL) { +                if (flat->binder != 0) {                      out->set_object_and_refs( -                        static_cast<IBinder*>(flat->cookie), -                        static_cast<RefBase::weakref_type*>(flat->binder)); +                        reinterpret_cast<IBinder*>(flat->cookie), +                        reinterpret_cast<RefBase::weakref_type*>(flat->binder));                  } else {                      *out = NULL;                  } @@ -365,7 +368,7 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len)      const sp<ProcessState> proc(ProcessState::self());      status_t err;      const uint8_t *data = parcel->mData; -    const size_t *objects = parcel->mObjects; +    const binder_size_t *objects = parcel->mObjects;      size_t size = parcel->mObjectsSize;      int startPos = mDataPos;      int firstIndex = -1, lastIndex = -2; @@ -412,9 +415,9 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len)          // grow objects          if (mObjectsCapacity < mObjectsSize + numObjects) {              int newSize = ((mObjectsSize + numObjects)*3)/2; -            size_t *objects = -                (size_t*)realloc(mObjects, newSize*sizeof(size_t)); -            if (objects == (size_t*)0) { +            binder_size_t *objects = +                (binder_size_t*)realloc(mObjects, newSize*sizeof(binder_size_t)); +            if (objects == (binder_size_t*)0) {                  return NO_MEMORY;              }              mObjects = objects; @@ -437,7 +440,7 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len)                  // new Parcel now owns its own fd, and can declare that we                  // officially know we have fds.                  flat->handle = dup(flat->handle); -                flat->cookie = (void*)1; +                flat->cookie = 1;                  mHasFds = mFdsKnown = true;                  if (!mAllowFds) {                      err = FDS_NOT_ALLOWED; @@ -512,7 +515,7 @@ bool Parcel::enforceInterface(const String16& interface,      }  } -const size_t* Parcel::objects() const +const binder_size_t* Parcel::objects() const  {      return mObjects;  } @@ -634,6 +637,11 @@ status_t Parcel::writeInt64(int64_t val)      return writeAligned(val);  } +status_t Parcel::writePointer(uintptr_t val) +{ +    return writeAligned<binder_uintptr_t>(val); +} +  status_t Parcel::writeFloat(float val)  {      return writeAligned(val); @@ -743,8 +751,9 @@ status_t Parcel::writeFileDescriptor(int fd, bool takeOwnership)      flat_binder_object obj;      obj.type = BINDER_TYPE_FD;      obj.flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; +    obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */      obj.handle = fd; -    obj.cookie = (void*) (takeOwnership ? 1 : 0); +    obj.cookie = takeOwnership ? 1 : 0;      return writeObject(obj, true);  } @@ -854,7 +863,7 @@ restart_write:          *reinterpret_cast<flat_binder_object*>(mData+mDataPos) = val;          // Need to write meta-data? -        if (nullMetaData || val.binder != NULL) { +        if (nullMetaData || val.binder != 0) {              mObjects[mObjectsSize] = mDataPos;              acquire_object(ProcessState::self(), val, this);              mObjectsSize++; @@ -877,7 +886,7 @@ restart_write:      }      if (!enoughObjects) {          size_t newSize = ((mObjectsSize+2)*3)/2; -        size_t* objects = (size_t*)realloc(mObjects, newSize*sizeof(size_t)); +        binder_size_t* objects = (binder_size_t*)realloc(mObjects, newSize*sizeof(binder_size_t));          if (objects == NULL) return NO_MEMORY;          mObjects = objects;          mObjectsCapacity = newSize; @@ -891,7 +900,7 @@ status_t Parcel::writeNoException()      return writeInt32(0);  } -void Parcel::remove(size_t start, size_t amt) +void Parcel::remove(size_t /*start*/, size_t /*amt*/)  {      LOG_ALWAYS_FATAL("Parcel::remove() not yet implemented!");  } @@ -979,6 +988,22 @@ int64_t Parcel::readInt64() const      return readAligned<int64_t>();  } +status_t Parcel::readPointer(uintptr_t *pArg) const +{ +    status_t ret; +    binder_uintptr_t ptr; +    ret = readAligned(&ptr); +    if (!ret) +        *pArg = ptr; +    return ret; +} + +uintptr_t Parcel::readPointer() const +{ +    return readAligned<binder_uintptr_t>(); +} + +  status_t Parcel::readFloat(float *pArg) const  {      return readAligned(pArg); @@ -1224,7 +1249,7 @@ const flat_binder_object* Parcel::readObject(bool nullMetaData) const          const flat_binder_object* obj                  = reinterpret_cast<const flat_binder_object*>(mData+DPOS);          mDataPos = DPOS + sizeof(flat_binder_object); -        if (!nullMetaData && (obj->cookie == NULL && obj->binder == NULL)) { +        if (!nullMetaData && (obj->cookie == 0 && obj->binder == 0)) {              // When transferring a NULL object, we don't write it into              // the object list, so we don't want to check for it when              // reading. @@ -1233,7 +1258,7 @@ const flat_binder_object* Parcel::readObject(bool nullMetaData) const          }          // Ensure that this object is valid... -        size_t* const OBJS = mObjects; +        binder_size_t* const OBJS = mObjects;          const size_t N = mObjectsSize;          size_t opos = mNextObjectHint; @@ -1272,7 +1297,7 @@ const flat_binder_object* Parcel::readObject(bool nullMetaData) const                  return obj;              }          } -        ALOGW("Attempt to read object from Parcel %p at offset %d that is not in the object list", +        ALOGW("Attempt to read object from Parcel %p at offset %zu that is not in the object list",               this, DPOS);      }      return NULL; @@ -1295,9 +1320,9 @@ void Parcel::closeFileDescriptors()      }  } -const uint8_t* Parcel::ipcData() const +uintptr_t Parcel::ipcData() const  { -    return mData; +    return reinterpret_cast<uintptr_t>(mData);  }  size_t Parcel::ipcDataSize() const @@ -1305,9 +1330,9 @@ size_t Parcel::ipcDataSize() const      return (mDataSize > mDataPos ? mDataSize : mDataPos);  } -const size_t* Parcel::ipcObjects() const +uintptr_t Parcel::ipcObjects() const  { -    return mObjects; +    return reinterpret_cast<uintptr_t>(mObjects);  }  size_t Parcel::ipcObjectsCount() const @@ -1316,9 +1341,9 @@ size_t Parcel::ipcObjectsCount() const  }  void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, -    const size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie) +    const binder_size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie)  { -    size_t minOffset = 0; +    binder_size_t minOffset = 0;      freeDataNoInit();      mError = NO_ERROR;      mData = const_cast<uint8_t*>(data); @@ -1326,16 +1351,16 @@ void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize,      //ALOGI("setDataReference Setting data size of %p to %lu (pid=%d)\n", this, mDataSize, getpid());      mDataPos = 0;      ALOGV("setDataReference Setting data pos of %p to %d\n", this, mDataPos); -    mObjects = const_cast<size_t*>(objects); +    mObjects = const_cast<binder_size_t*>(objects);      mObjectsSize = mObjectsCapacity = objectsCount;      mNextObjectHint = 0;      mOwner = relFunc;      mOwnerCookie = relCookie;      for (size_t i = 0; i < mObjectsSize; i++) { -        size_t offset = mObjects[i]; +        binder_size_t offset = mObjects[i];          if (offset < minOffset) { -            ALOGE("%s: bad object offset %zu < %zu\n", -                  __func__, offset, minOffset); +            ALOGE("%s: bad object offset %"PRIu64" < %"PRIu64"\n", +                  __func__, (uint64_t)offset, (uint64_t)minOffset);              mObjectsSize = 0;              break;          } @@ -1344,17 +1369,17 @@ void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize,      scanForFds();  } -void Parcel::print(TextOutput& to, uint32_t flags) const +void Parcel::print(TextOutput& to, uint32_t /*flags*/) const  {      to << "Parcel(";      if (errorCheck() != NO_ERROR) {          const status_t err = errorCheck(); -        to << "Error: " << (void*)err << " \"" << strerror(-err) << "\""; +        to << "Error: " << (void*)(intptr_t)err << " \"" << strerror(-err) << "\"";      } else if (dataSize() > 0) {          const uint8_t* DATA = data();          to << indent << HexDump(DATA, dataSize()) << dedent; -        const size_t* OBJS = objects(); +        const binder_size_t* OBJS = objects();          const size_t N = objectsCount();          for (size_t i=0; i<N; i++) {              const flat_binder_object* flat @@ -1375,7 +1400,7 @@ void Parcel::releaseObjects()      const sp<ProcessState> proc(ProcessState::self());      size_t i = mObjectsSize;      uint8_t* const data = mData; -    size_t* const objects = mObjects; +    binder_size_t* const objects = mObjects;      while (i > 0) {          i--;          const flat_binder_object* flat @@ -1389,7 +1414,7 @@ void Parcel::acquireObjects()      const sp<ProcessState> proc(ProcessState::self());      size_t i = mObjectsSize;      uint8_t* const data = mData; -    size_t* const objects = mObjects; +    binder_size_t* const objects = mObjects;      while (i > 0) {          i--;          const flat_binder_object* flat @@ -1490,10 +1515,10 @@ status_t Parcel::continueWrite(size_t desired)              mError = NO_MEMORY;              return NO_MEMORY;          } -        size_t* objects = NULL; +        binder_size_t* objects = NULL;          if (objectsSize) { -            objects = (size_t*)malloc(objectsSize*sizeof(size_t)); +            objects = (binder_size_t*)malloc(objectsSize*sizeof(binder_size_t));              if (!objects) {                  free(data); @@ -1513,7 +1538,7 @@ status_t Parcel::continueWrite(size_t desired)              memcpy(data, mData, mDataSize < desired ? mDataSize : desired);          }          if (objects && mObjects) { -            memcpy(objects, mObjects, objectsSize*sizeof(size_t)); +            memcpy(objects, mObjects, objectsSize*sizeof(binder_size_t));          }          //ALOGI("Freeing data ref of %p (pid=%d)\n", this, getpid());          mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); @@ -1540,8 +1565,8 @@ status_t Parcel::continueWrite(size_t desired)                  }                  release_object(proc, *flat, this);              } -            size_t* objects = -                (size_t*)realloc(mObjects, objectsSize*sizeof(size_t)); +            binder_size_t* objects = +                (binder_size_t*)realloc(mObjects, objectsSize*sizeof(binder_size_t));              if (objects) {                  mObjects = objects;              } @@ -1580,7 +1605,7 @@ status_t Parcel::continueWrite(size_t desired)          if(!(mDataCapacity == 0 && mObjects == NULL               && mObjectsCapacity == 0)) { -            ALOGE("continueWrite: %d/%p/%d/%d", mDataCapacity, mObjects, mObjectsCapacity, desired); +            ALOGE("continueWrite: %zu/%p/%zu/%zu", mDataCapacity, mObjects, mObjectsCapacity, desired);          }          mData = data; diff --git a/libs/binder/ProcessState.cpp b/libs/binder/ProcessState.cpp index c1e49bc8f6..01639061ee 100644 --- a/libs/binder/ProcessState.cpp +++ b/libs/binder/ProcessState.cpp @@ -86,7 +86,7 @@ void ProcessState::setContextObject(const sp<IBinder>& object)      setContextObject(object, String16("default"));  } -sp<IBinder> ProcessState::getContextObject(const sp<IBinder>& caller) +sp<IBinder> ProcessState::getContextObject(const sp<IBinder>& /*caller*/)  {      return getStrongProxyForHandle(0);  } diff --git a/libs/gui/tests/CpuConsumer_test.cpp b/libs/gui/tests/CpuConsumer_test.cpp index afbc026969..b370a2d96c 100644 --- a/libs/gui/tests/CpuConsumer_test.cpp +++ b/libs/gui/tests/CpuConsumer_test.cpp @@ -656,7 +656,7 @@ TEST_P(CpuConsumerTest, FromCpuLockMax) {      ALOGV("Locking frame %d (too many)", params.maxLockedBuffers);      CpuConsumer::LockedBuffer bTooMuch;      err = mCC->lockNextBuffer(&bTooMuch); -    ASSERT_TRUE(err == INVALID_OPERATION) << "Allowing too many locks"; +    ASSERT_TRUE(err == NOT_ENOUGH_DATA) << "Allowing too many locks";      ALOGV("Unlocking frame 0");      err = mCC->unlockBuffer(b[0]); diff --git a/libs/ui/tests/Android.mk b/libs/ui/tests/Android.mk index 6f62a553a5..b0c57db984 100644 --- a/libs/ui/tests/Android.mk +++ b/libs/ui/tests/Android.mk @@ -26,8 +26,6 @@ $(foreach file,$(test_src_files), \  )  # Build the unit tests. -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS)  # Build the manual test programs.  include $(call all-makefiles-under, $(LOCAL_PATH)) diff --git a/opengl/libagl/Android.mk b/opengl/libagl/Android.mk index 95a8ef23b1..32bc5d97a7 100644 --- a/opengl/libagl/Android.mk +++ b/opengl/libagl/Android.mk @@ -29,17 +29,13 @@ LOCAL_CFLAGS += -fvisibility=hidden  LOCAL_SHARED_LIBRARIES := libcutils libhardware libutils liblog libpixelflinger libETC1 libui  LOCAL_LDLIBS := -lpthread -ldl -ifeq ($(TARGET_ARCH),arm) -	LOCAL_SRC_FILES += fixed_asm.S iterators.S -	LOCAL_CFLAGS += -fstrict-aliasing -endif - -ifeq ($(TARGET_ARCH),mips) -    LOCAL_SRC_FILES += arch-$(TARGET_ARCH)/fixed_asm.S -    LOCAL_CFLAGS += -fstrict-aliasing -    # The graphics code can generate division by zero -    LOCAL_CFLAGS += -mno-check-zero-division -endif +LOCAL_SRC_FILES_arm += fixed_asm.S iterators.S +LOCAL_CFLAGS_arm += -fstrict-aliasing + +LOCAL_SRC_FILES_mips += arch-mips/fixed_asm.S +LOCAL_CFLAGS_mips += -fstrict-aliasing +# The graphics code can generate division by zero +LOCAL_CFLAGS_mips += -mno-check-zero-division  # we need to access the private Bionic header <bionic_tls.h>  LOCAL_C_INCLUDES += bionic/libc/private diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index 02914a06ea..e528831703 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -187,8 +187,13 @@ void* Loader::open(egl_connection_t* cnx)      LOG_ALWAYS_FATAL_IF(!hnd, "couldn't find an OpenGL ES implementation"); +#if defined(__LP64__) +    cnx->libGles2 = load_wrapper("/system/lib64/libGLESv2.so"); +    cnx->libGles1 = load_wrapper("/system/lib64/libGLESv1_CM.so"); +#else      cnx->libGles2 = load_wrapper("/system/lib/libGLESv2.so");      cnx->libGles1 = load_wrapper("/system/lib/libGLESv1_CM.so"); +#endif      LOG_ALWAYS_FATAL_IF(!cnx->libGles2 || !cnx->libGles1,              "couldn't load system OpenGL ES wrapper libraries"); @@ -268,8 +273,13 @@ void *Loader::load_driver(const char* kind,              String8 pattern;              pattern.appendFormat("lib%s", kind);              const char* const searchPaths[] = { +#if defined(__LP64__) +                    "/vendor/lib64/egl", +                    "/system/lib64/egl" +#else                      "/vendor/lib/egl",                      "/system/lib/egl" +#endif              };              // first, we search for the exact name of the GLES userspace @@ -310,7 +320,11 @@ void *Loader::load_driver(const char* kind,              if (checkGlesEmulationStatus() == 0) {                  ALOGD("Emulator without GPU support detected. "                        "Fallback to software renderer."); +#if defined(__LP64__) +                result.setTo("/system/lib64/egl/libGLES_android.so"); +#else                  result.setTo("/system/lib/egl/libGLES_android.so"); +#endif                  return true;              } diff --git a/opengl/libs/GLES_trace/src/gltrace_api.cpp b/opengl/libs/GLES_trace/src/gltrace_api.cpp index 2b1a702eb1..e2cd0d86d8 100644 --- a/opengl/libs/GLES_trace/src/gltrace_api.cpp +++ b/opengl/libs/GLES_trace/src/gltrace_api.cpp @@ -113,8 +113,8 @@ void GLTrace_glBindAttribLocation(GLuint program, GLuint index, const GLchar* na      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -478,8 +478,8 @@ void GLTrace_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GL      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // copy argument usage      GLMessage_DataType *arg_usage = glmsg.add_args(); @@ -531,8 +531,8 @@ void GLTrace_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, co      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -842,8 +842,8 @@ void GLTrace_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalf      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -919,8 +919,8 @@ void GLTrace_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1188,8 +1188,8 @@ void GLTrace_glDeleteBuffers(GLsizei n, const GLuint* buffers) {      // copy argument buffers      GLMessage_DataType *arg_buffers = glmsg.add_args();      arg_buffers->set_isarray(false); -    arg_buffers->set_type(GLMessage::DataType::INT); -    arg_buffers->add_intvalue((int)buffers); +    arg_buffers->set_type(GLMessage::DataType::INT64); +    arg_buffers->add_int64value((uintptr_t)buffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1223,8 +1223,8 @@ void GLTrace_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {      // copy argument framebuffers      GLMessage_DataType *arg_framebuffers = glmsg.add_args();      arg_framebuffers->set_isarray(false); -    arg_framebuffers->set_type(GLMessage::DataType::INT); -    arg_framebuffers->add_intvalue((int)framebuffers); +    arg_framebuffers->set_type(GLMessage::DataType::INT64); +    arg_framebuffers->add_int64value((uintptr_t)framebuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1286,8 +1286,8 @@ void GLTrace_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {      // copy argument renderbuffers      GLMessage_DataType *arg_renderbuffers = glmsg.add_args();      arg_renderbuffers->set_isarray(false); -    arg_renderbuffers->set_type(GLMessage::DataType::INT); -    arg_renderbuffers->add_intvalue((int)renderbuffers); +    arg_renderbuffers->set_type(GLMessage::DataType::INT64); +    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1349,8 +1349,8 @@ void GLTrace_glDeleteTextures(GLsizei n, const GLuint* textures) {      // copy argument textures      GLMessage_DataType *arg_textures = glmsg.add_args();      arg_textures->set_isarray(false); -    arg_textures->set_type(GLMessage::DataType::INT); -    arg_textures->add_intvalue((int)textures); +    arg_textures->set_type(GLMessage::DataType::INT64); +    arg_textures->add_int64value((uintptr_t)textures);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1616,8 +1616,8 @@ void GLTrace_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoi      // copy argument indices      GLMessage_DataType *arg_indices = glmsg.add_args();      arg_indices->set_isarray(false); -    arg_indices->set_type(GLMessage::DataType::INT); -    arg_indices->add_intvalue((int)indices); +    arg_indices->set_type(GLMessage::DataType::INT64); +    arg_indices->add_int64value((uintptr_t)indices);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1877,8 +1877,8 @@ void GLTrace_glGenBuffers(GLsizei n, GLuint* buffers) {      // copy argument buffers      GLMessage_DataType *arg_buffers = glmsg.add_args();      arg_buffers->set_isarray(false); -    arg_buffers->set_type(GLMessage::DataType::INT); -    arg_buffers->add_intvalue((int)buffers); +    arg_buffers->set_type(GLMessage::DataType::INT64); +    arg_buffers->add_int64value((uintptr_t)buffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1940,8 +1940,8 @@ void GLTrace_glGenFramebuffers(GLsizei n, GLuint* framebuffers) {      // copy argument framebuffers      GLMessage_DataType *arg_framebuffers = glmsg.add_args();      arg_framebuffers->set_isarray(false); -    arg_framebuffers->set_type(GLMessage::DataType::INT); -    arg_framebuffers->add_intvalue((int)framebuffers); +    arg_framebuffers->set_type(GLMessage::DataType::INT64); +    arg_framebuffers->add_int64value((uintptr_t)framebuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -1975,8 +1975,8 @@ void GLTrace_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {      // copy argument renderbuffers      GLMessage_DataType *arg_renderbuffers = glmsg.add_args();      arg_renderbuffers->set_isarray(false); -    arg_renderbuffers->set_type(GLMessage::DataType::INT); -    arg_renderbuffers->add_intvalue((int)renderbuffers); +    arg_renderbuffers->set_type(GLMessage::DataType::INT64); +    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2010,8 +2010,8 @@ void GLTrace_glGenTextures(GLsizei n, GLuint* textures) {      // copy argument textures      GLMessage_DataType *arg_textures = glmsg.add_args();      arg_textures->set_isarray(false); -    arg_textures->set_type(GLMessage::DataType::INT); -    arg_textures->add_intvalue((int)textures); +    arg_textures->set_type(GLMessage::DataType::INT64); +    arg_textures->add_int64value((uintptr_t)textures);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2057,26 +2057,26 @@ void GLTrace_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GL      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument size      GLMessage_DataType *arg_size = glmsg.add_args();      arg_size->set_isarray(false); -    arg_size->set_type(GLMessage::DataType::INT); -    arg_size->add_intvalue((int)size); +    arg_size->set_type(GLMessage::DataType::INT64); +    arg_size->add_int64value((uintptr_t)size);      // copy argument type      GLMessage_DataType *arg_type = glmsg.add_args();      arg_type->set_isarray(false); -    arg_type->set_type(GLMessage::DataType::INT); -    arg_type->add_intvalue((int)type); +    arg_type->set_type(GLMessage::DataType::INT64); +    arg_type->add_int64value((uintptr_t)type);      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2125,26 +2125,26 @@ void GLTrace_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, G      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument size      GLMessage_DataType *arg_size = glmsg.add_args();      arg_size->set_isarray(false); -    arg_size->set_type(GLMessage::DataType::INT); -    arg_size->add_intvalue((int)size); +    arg_size->set_type(GLMessage::DataType::INT64); +    arg_size->add_int64value((uintptr_t)size);      // copy argument type      GLMessage_DataType *arg_type = glmsg.add_args();      arg_type->set_isarray(false); -    arg_type->set_type(GLMessage::DataType::INT); -    arg_type->add_intvalue((int)type); +    arg_type->set_type(GLMessage::DataType::INT64); +    arg_type->add_int64value((uintptr_t)type);      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2187,14 +2187,14 @@ void GLTrace_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* cou      // copy argument count      GLMessage_DataType *arg_count = glmsg.add_args();      arg_count->set_isarray(false); -    arg_count->set_type(GLMessage::DataType::INT); -    arg_count->add_intvalue((int)count); +    arg_count->set_type(GLMessage::DataType::INT64); +    arg_count->add_int64value((uintptr_t)count);      // copy argument shaders      GLMessage_DataType *arg_shaders = glmsg.add_args();      arg_shaders->set_isarray(false); -    arg_shaders->set_type(GLMessage::DataType::INT); -    arg_shaders->add_intvalue((int)shaders); +    arg_shaders->set_type(GLMessage::DataType::INT64); +    arg_shaders->add_int64value((uintptr_t)shaders);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2229,8 +2229,8 @@ GLint GLTrace_glGetAttribLocation(GLuint program, const GLchar* name) {      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2272,8 +2272,8 @@ void GLTrace_glGetBooleanv(GLenum pname, GLboolean* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2313,8 +2313,8 @@ void GLTrace_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2378,8 +2378,8 @@ void GLTrace_glGetFloatv(GLenum pname, GLfloat* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2425,8 +2425,8 @@ void GLTrace_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachm      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2460,8 +2460,8 @@ void GLTrace_glGetIntegerv(GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2501,8 +2501,8 @@ void GLTrace_glGetProgramiv(GLuint program, GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2542,14 +2542,14 @@ void GLTrace_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* lengt      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument infolog      GLMessage_DataType *arg_infolog = glmsg.add_args();      arg_infolog->set_isarray(false); -    arg_infolog->set_type(GLMessage::DataType::INT); -    arg_infolog->add_intvalue((int)infolog); +    arg_infolog->set_type(GLMessage::DataType::INT64); +    arg_infolog->add_int64value((uintptr_t)infolog);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2590,8 +2590,8 @@ void GLTrace_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* pa      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2631,8 +2631,8 @@ void GLTrace_glGetShaderiv(GLuint shader, GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2672,14 +2672,14 @@ void GLTrace_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length,      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument infolog      GLMessage_DataType *arg_infolog = glmsg.add_args();      arg_infolog->set_isarray(false); -    arg_infolog->set_type(GLMessage::DataType::INT); -    arg_infolog->add_intvalue((int)infolog); +    arg_infolog->set_type(GLMessage::DataType::INT64); +    arg_infolog->add_int64value((uintptr_t)infolog);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2720,14 +2720,14 @@ void GLTrace_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype,      // copy argument range      GLMessage_DataType *arg_range = glmsg.add_args();      arg_range->set_isarray(false); -    arg_range->set_type(GLMessage::DataType::INT); -    arg_range->add_intvalue((int)range); +    arg_range->set_type(GLMessage::DataType::INT64); +    arg_range->add_int64value((uintptr_t)range);      // copy argument precision      GLMessage_DataType *arg_precision = glmsg.add_args();      arg_precision->set_isarray(false); -    arg_precision->set_type(GLMessage::DataType::INT); -    arg_precision->add_intvalue((int)precision); +    arg_precision->set_type(GLMessage::DataType::INT64); +    arg_precision->add_int64value((uintptr_t)precision);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2768,14 +2768,14 @@ void GLTrace_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length,      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument source      GLMessage_DataType *arg_source = glmsg.add_args();      arg_source->set_isarray(false); -    arg_source->set_type(GLMessage::DataType::INT); -    arg_source->add_intvalue((int)source); +    arg_source->set_type(GLMessage::DataType::INT64); +    arg_source->add_int64value((uintptr_t)source);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2817,8 +2817,8 @@ const GLubyte* GLTrace_glGetString(GLenum name) {      // set return value      GLMessage_DataType *rt = glmsg.mutable_returnvalue();      rt->set_isarray(false); -    rt->set_type(GLMessage::DataType::INT); -    rt->add_intvalue((int)retValue); +    rt->set_type(GLMessage::DataType::INT64); +    rt->add_int64value((uintptr_t)retValue);      void *pointerArgs[] = {          (void *) retValue, @@ -2853,8 +2853,8 @@ void GLTrace_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2894,8 +2894,8 @@ void GLTrace_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2935,8 +2935,8 @@ void GLTrace_glGetUniformfv(GLuint program, GLint location, GLfloat* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -2976,8 +2976,8 @@ void GLTrace_glGetUniformiv(GLuint program, GLint location, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3011,8 +3011,8 @@ GLint GLTrace_glGetUniformLocation(GLuint program, const GLchar* name) {      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3060,8 +3060,8 @@ void GLTrace_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3101,8 +3101,8 @@ void GLTrace_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3142,8 +3142,8 @@ void GLTrace_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** poin      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3617,8 +3617,8 @@ void GLTrace_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenu      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3800,8 +3800,8 @@ void GLTrace_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryforma      // copy argument shaders      GLMessage_DataType *arg_shaders = glmsg.add_args();      arg_shaders->set_isarray(false); -    arg_shaders->set_type(GLMessage::DataType::INT); -    arg_shaders->add_intvalue((int)shaders); +    arg_shaders->set_type(GLMessage::DataType::INT64); +    arg_shaders->add_int64value((uintptr_t)shaders);      // copy argument binaryformat      GLMessage_DataType *arg_binaryformat = glmsg.add_args(); @@ -3812,8 +3812,8 @@ void GLTrace_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryforma      // copy argument binary      GLMessage_DataType *arg_binary = glmsg.add_args();      arg_binary->set_isarray(false); -    arg_binary->set_type(GLMessage::DataType::INT); -    arg_binary->add_intvalue((int)binary); +    arg_binary->set_type(GLMessage::DataType::INT64); +    arg_binary->add_int64value((uintptr_t)binary);      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args(); @@ -3860,14 +3860,14 @@ void GLTrace_glShaderSource(GLuint shader, GLsizei count, const GLchar* const* s      // copy argument string      GLMessage_DataType *arg_string = glmsg.add_args();      arg_string->set_isarray(false); -    arg_string->set_type(GLMessage::DataType::INT); -    arg_string->add_intvalue((int)string); +    arg_string->set_type(GLMessage::DataType::INT64); +    arg_string->add_int64value((uintptr_t)string);      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4178,8 +4178,8 @@ void GLTrace_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsi      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4259,8 +4259,8 @@ void GLTrace_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4340,8 +4340,8 @@ void GLTrace_glTexParameteriv(GLenum target, GLenum pname, const GLint* params)      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4417,8 +4417,8 @@ void GLTrace_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yo      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4492,8 +4492,8 @@ void GLTrace_glUniform1fv(GLint location, GLsizei count, const GLfloat* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4567,8 +4567,8 @@ void GLTrace_glUniform1iv(GLint location, GLsizei count, const GLint* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4648,8 +4648,8 @@ void GLTrace_glUniform2fv(GLint location, GLsizei count, const GLfloat* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4729,8 +4729,8 @@ void GLTrace_glUniform2iv(GLint location, GLsizei count, const GLint* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4816,8 +4816,8 @@ void GLTrace_glUniform3fv(GLint location, GLsizei count, const GLfloat* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4903,8 +4903,8 @@ void GLTrace_glUniform3iv(GLint location, GLsizei count, const GLint* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -4996,8 +4996,8 @@ void GLTrace_glUniform4fv(GLint location, GLsizei count, const GLfloat* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5089,8 +5089,8 @@ void GLTrace_glUniform4iv(GLint location, GLsizei count, const GLint* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5136,8 +5136,8 @@ void GLTrace_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpo      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5183,8 +5183,8 @@ void GLTrace_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpo      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5230,8 +5230,8 @@ void GLTrace_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpo      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5355,8 +5355,8 @@ void GLTrace_glVertexAttrib1fv(GLuint indx, const GLfloat* values) {      // copy argument values      GLMessage_DataType *arg_values = glmsg.add_args();      arg_values->set_isarray(false); -    arg_values->set_type(GLMessage::DataType::INT); -    arg_values->add_intvalue((int)values); +    arg_values->set_type(GLMessage::DataType::INT64); +    arg_values->add_int64value((uintptr_t)values);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5430,8 +5430,8 @@ void GLTrace_glVertexAttrib2fv(GLuint indx, const GLfloat* values) {      // copy argument values      GLMessage_DataType *arg_values = glmsg.add_args();      arg_values->set_isarray(false); -    arg_values->set_type(GLMessage::DataType::INT); -    arg_values->add_intvalue((int)values); +    arg_values->set_type(GLMessage::DataType::INT64); +    arg_values->add_int64value((uintptr_t)values);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5511,8 +5511,8 @@ void GLTrace_glVertexAttrib3fv(GLuint indx, const GLfloat* values) {      // copy argument values      GLMessage_DataType *arg_values = glmsg.add_args();      arg_values->set_isarray(false); -    arg_values->set_type(GLMessage::DataType::INT); -    arg_values->add_intvalue((int)values); +    arg_values->set_type(GLMessage::DataType::INT64); +    arg_values->add_int64value((uintptr_t)values);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5598,8 +5598,8 @@ void GLTrace_glVertexAttrib4fv(GLuint indx, const GLfloat* values) {      // copy argument values      GLMessage_DataType *arg_values = glmsg.add_args();      arg_values->set_isarray(false); -    arg_values->set_type(GLMessage::DataType::INT); -    arg_values->add_intvalue((int)values); +    arg_values->set_type(GLMessage::DataType::INT64); +    arg_values->add_int64value((uintptr_t)values);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5657,8 +5657,8 @@ void GLTrace_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboole      // copy argument ptr      GLMessage_DataType *arg_ptr = glmsg.add_args();      arg_ptr->set_isarray(false); -    arg_ptr->set_type(GLMessage::DataType::INT); -    arg_ptr->add_intvalue((int)ptr); +    arg_ptr->set_type(GLMessage::DataType::INT64); +    arg_ptr->add_int64value((uintptr_t)ptr);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5790,8 +5790,8 @@ void GLTrace_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei      // copy argument indices      GLMessage_DataType *arg_indices = glmsg.add_args();      arg_indices->set_isarray(false); -    arg_indices->set_type(GLMessage::DataType::INT); -    arg_indices->add_intvalue((int)indices); +    arg_indices->set_type(GLMessage::DataType::INT64); +    arg_indices->add_int64value((uintptr_t)indices);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5873,8 +5873,8 @@ void GLTrace_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsi      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -5962,8 +5962,8 @@ void GLTrace_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yo      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6115,8 +6115,8 @@ void GLTrace_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalf      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6204,8 +6204,8 @@ void GLTrace_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6239,8 +6239,8 @@ void GLTrace_glGenQueries(GLsizei n, GLuint* ids) {      // copy argument ids      GLMessage_DataType *arg_ids = glmsg.add_args();      arg_ids->set_isarray(false); -    arg_ids->set_type(GLMessage::DataType::INT); -    arg_ids->add_intvalue((int)ids); +    arg_ids->set_type(GLMessage::DataType::INT64); +    arg_ids->add_int64value((uintptr_t)ids);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6274,8 +6274,8 @@ void GLTrace_glDeleteQueries(GLsizei n, const GLuint* ids) {      // copy argument ids      GLMessage_DataType *arg_ids = glmsg.add_args();      arg_ids->set_isarray(false); -    arg_ids->set_type(GLMessage::DataType::INT); -    arg_ids->add_intvalue((int)ids); +    arg_ids->set_type(GLMessage::DataType::INT64); +    arg_ids->add_int64value((uintptr_t)ids);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6413,8 +6413,8 @@ void GLTrace_glGetQueryiv(GLenum target, GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6454,8 +6454,8 @@ void GLTrace_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6531,8 +6531,8 @@ void GLTrace_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid** params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6566,8 +6566,8 @@ void GLTrace_glDrawBuffers(GLsizei n, const GLenum* bufs) {      // copy argument bufs      GLMessage_DataType *arg_bufs = glmsg.add_args();      arg_bufs->set_isarray(false); -    arg_bufs->set_type(GLMessage::DataType::INT); -    arg_bufs->add_intvalue((int)bufs); +    arg_bufs->set_type(GLMessage::DataType::INT64); +    arg_bufs->add_int64value((uintptr_t)bufs);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6613,8 +6613,8 @@ void GLTrace_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean trans      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6660,8 +6660,8 @@ void GLTrace_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean trans      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6707,8 +6707,8 @@ void GLTrace_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean trans      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6754,8 +6754,8 @@ void GLTrace_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean trans      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6801,8 +6801,8 @@ void GLTrace_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean trans      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -6848,8 +6848,8 @@ void GLTrace_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean trans      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7094,8 +7094,8 @@ GLvoid* GLTrace_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr leng      // set return value      GLMessage_DataType *rt = glmsg.mutable_returnvalue();      rt->set_isarray(false); -    rt->set_type(GLMessage::DataType::INT); -    rt->add_intvalue((int)retValue); +    rt->set_type(GLMessage::DataType::INT64); +    rt->add_int64value((uintptr_t)retValue);      void *pointerArgs[] = {          (void *) retValue, @@ -7192,8 +7192,8 @@ void GLTrace_glDeleteVertexArrays(GLsizei n, const GLuint* arrays) {      // copy argument arrays      GLMessage_DataType *arg_arrays = glmsg.add_args();      arg_arrays->set_isarray(false); -    arg_arrays->set_type(GLMessage::DataType::INT); -    arg_arrays->add_intvalue((int)arrays); +    arg_arrays->set_type(GLMessage::DataType::INT64); +    arg_arrays->add_int64value((uintptr_t)arrays);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7227,8 +7227,8 @@ void GLTrace_glGenVertexArrays(GLsizei n, GLuint* arrays) {      // copy argument arrays      GLMessage_DataType *arg_arrays = glmsg.add_args();      arg_arrays->set_isarray(false); -    arg_arrays->set_type(GLMessage::DataType::INT); -    arg_arrays->add_intvalue((int)arrays); +    arg_arrays->set_type(GLMessage::DataType::INT64); +    arg_arrays->add_int64value((uintptr_t)arrays);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7304,8 +7304,8 @@ void GLTrace_glGetIntegeri_v(GLenum target, GLuint index, GLint* data) {      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7487,8 +7487,8 @@ void GLTrace_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GL      // copy argument varyings      GLMessage_DataType *arg_varyings = glmsg.add_args();      arg_varyings->set_isarray(false); -    arg_varyings->set_type(GLMessage::DataType::INT); -    arg_varyings->add_intvalue((int)varyings); +    arg_varyings->set_type(GLMessage::DataType::INT64); +    arg_varyings->add_int64value((uintptr_t)varyings);      // copy argument bufferMode      GLMessage_DataType *arg_bufferMode = glmsg.add_args(); @@ -7540,26 +7540,26 @@ void GLTrace_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument size      GLMessage_DataType *arg_size = glmsg.add_args();      arg_size->set_isarray(false); -    arg_size->set_type(GLMessage::DataType::INT); -    arg_size->add_intvalue((int)size); +    arg_size->set_type(GLMessage::DataType::INT64); +    arg_size->add_int64value((uintptr_t)size);      // copy argument type      GLMessage_DataType *arg_type = glmsg.add_args();      arg_type->set_isarray(false); -    arg_type->set_type(GLMessage::DataType::INT); -    arg_type->add_intvalue((int)type); +    arg_type->set_type(GLMessage::DataType::INT64); +    arg_type->add_int64value((uintptr_t)type);      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7614,8 +7614,8 @@ void GLTrace_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsiz      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7655,8 +7655,8 @@ void GLTrace_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7696,8 +7696,8 @@ void GLTrace_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7835,8 +7835,8 @@ void GLTrace_glVertexAttribI4iv(GLuint index, const GLint* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7870,8 +7870,8 @@ void GLTrace_glVertexAttribI4uiv(GLuint index, const GLuint* v) {      // copy argument v      GLMessage_DataType *arg_v = glmsg.add_args();      arg_v->set_isarray(false); -    arg_v->set_type(GLMessage::DataType::INT); -    arg_v->add_intvalue((int)v); +    arg_v->set_type(GLMessage::DataType::INT64); +    arg_v->add_int64value((uintptr_t)v);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7911,8 +7911,8 @@ void GLTrace_glGetUniformuiv(GLuint program, GLint location, GLuint* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -7946,8 +7946,8 @@ GLint GLTrace_glGetFragDataLocation(GLuint program, const GLchar *name) {      // copy argument name      GLMessage_DataType *arg_name = glmsg.add_args();      arg_name->set_isarray(false); -    arg_name->set_type(GLMessage::DataType::INT); -    arg_name->add_intvalue((int)name); +    arg_name->set_type(GLMessage::DataType::INT64); +    arg_name->add_int64value((uintptr_t)name);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8167,8 +8167,8 @@ void GLTrace_glUniform1uiv(GLint location, GLsizei count, const GLuint* value) {      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8208,8 +8208,8 @@ void GLTrace_glUniform2uiv(GLint location, GLsizei count, const GLuint* value) {      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8249,8 +8249,8 @@ void GLTrace_glUniform3uiv(GLint location, GLsizei count, const GLuint* value) {      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8290,8 +8290,8 @@ void GLTrace_glUniform4uiv(GLint location, GLsizei count, const GLuint* value) {      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8331,8 +8331,8 @@ void GLTrace_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8372,8 +8372,8 @@ void GLTrace_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* val      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8413,8 +8413,8 @@ void GLTrace_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* val      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8507,8 +8507,8 @@ const GLubyte* GLTrace_glGetStringi(GLenum name, GLuint index) {      // set return value      GLMessage_DataType *rt = glmsg.mutable_returnvalue();      rt->set_isarray(false); -    rt->set_type(GLMessage::DataType::INT); -    rt->add_intvalue((int)retValue); +    rt->set_type(GLMessage::DataType::INT64); +    rt->add_int64value((uintptr_t)retValue);      void *pointerArgs[] = {          (void *) retValue, @@ -8595,14 +8595,14 @@ void GLTrace_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLc      // copy argument uniformNames      GLMessage_DataType *arg_uniformNames = glmsg.add_args();      arg_uniformNames->set_isarray(false); -    arg_uniformNames->set_type(GLMessage::DataType::INT); -    arg_uniformNames->add_intvalue((int)uniformNames); +    arg_uniformNames->set_type(GLMessage::DataType::INT64); +    arg_uniformNames->add_int64value((uintptr_t)uniformNames);      // copy argument uniformIndices      GLMessage_DataType *arg_uniformIndices = glmsg.add_args();      arg_uniformIndices->set_isarray(false); -    arg_uniformIndices->set_type(GLMessage::DataType::INT); -    arg_uniformIndices->add_intvalue((int)uniformIndices); +    arg_uniformIndices->set_type(GLMessage::DataType::INT64); +    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8643,8 +8643,8 @@ void GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const G      // copy argument uniformIndices      GLMessage_DataType *arg_uniformIndices = glmsg.add_args();      arg_uniformIndices->set_isarray(false); -    arg_uniformIndices->set_type(GLMessage::DataType::INT); -    arg_uniformIndices->add_intvalue((int)uniformIndices); +    arg_uniformIndices->set_type(GLMessage::DataType::INT64); +    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);      // copy argument pname      GLMessage_DataType *arg_pname = glmsg.add_args(); @@ -8655,8 +8655,8 @@ void GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const G      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8691,8 +8691,8 @@ GLuint GLTrace_glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlock      // copy argument uniformBlockName      GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();      arg_uniformBlockName->set_isarray(false); -    arg_uniformBlockName->set_type(GLMessage::DataType::INT); -    arg_uniformBlockName->add_intvalue((int)uniformBlockName); +    arg_uniformBlockName->set_type(GLMessage::DataType::INT64); +    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8746,8 +8746,8 @@ void GLTrace_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex,      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8793,14 +8793,14 @@ void GLTrace_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockInde      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument uniformBlockName      GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();      arg_uniformBlockName->set_isarray(false); -    arg_uniformBlockName->set_type(GLMessage::DataType::INT); -    arg_uniformBlockName->add_intvalue((int)uniformBlockName); +    arg_uniformBlockName->set_type(GLMessage::DataType::INT64); +    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -8933,8 +8933,8 @@ void GLTrace_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, co      // copy argument indices      GLMessage_DataType *arg_indices = glmsg.add_args();      arg_indices->set_isarray(false); -    arg_indices->set_type(GLMessage::DataType::INT); -    arg_indices->add_intvalue((int)indices); +    arg_indices->set_type(GLMessage::DataType::INT64); +    arg_indices->add_int64value((uintptr_t)indices);      // copy argument instanceCount      GLMessage_DataType *arg_instanceCount = glmsg.add_args(); @@ -8987,8 +8987,8 @@ GLsync GLTrace_glFenceSync(GLenum condition, GLbitfield flags) {      // set return value      GLMessage_DataType *rt = glmsg.mutable_returnvalue();      rt->set_isarray(false); -    rt->set_type(GLMessage::DataType::INT); -    rt->add_intvalue((int)retValue); +    rt->set_type(GLMessage::DataType::INT64); +    rt->add_int64value((uintptr_t)retValue);      void *pointerArgs[] = {          (void *) retValue, @@ -9011,8 +9011,8 @@ GLboolean GLTrace_glIsSync(GLsync sync) {      // copy argument sync      GLMessage_DataType *arg_sync = glmsg.add_args();      arg_sync->set_isarray(false); -    arg_sync->set_type(GLMessage::DataType::INT); -    arg_sync->add_intvalue((int)sync); +    arg_sync->set_type(GLMessage::DataType::INT64); +    arg_sync->add_int64value((uintptr_t)sync);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9048,8 +9048,8 @@ void GLTrace_glDeleteSync(GLsync sync) {      // copy argument sync      GLMessage_DataType *arg_sync = glmsg.add_args();      arg_sync->set_isarray(false); -    arg_sync->set_type(GLMessage::DataType::INT); -    arg_sync->add_intvalue((int)sync); +    arg_sync->set_type(GLMessage::DataType::INT64); +    arg_sync->add_int64value((uintptr_t)sync);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9077,8 +9077,8 @@ GLenum GLTrace_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)      // copy argument sync      GLMessage_DataType *arg_sync = glmsg.add_args();      arg_sync->set_isarray(false); -    arg_sync->set_type(GLMessage::DataType::INT); -    arg_sync->add_intvalue((int)sync); +    arg_sync->set_type(GLMessage::DataType::INT64); +    arg_sync->add_int64value((uintptr_t)sync);      // copy argument flags      GLMessage_DataType *arg_flags = glmsg.add_args(); @@ -9126,8 +9126,8 @@ void GLTrace_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {      // copy argument sync      GLMessage_DataType *arg_sync = glmsg.add_args();      arg_sync->set_isarray(false); -    arg_sync->set_type(GLMessage::DataType::INT); -    arg_sync->add_intvalue((int)sync); +    arg_sync->set_type(GLMessage::DataType::INT64); +    arg_sync->add_int64value((uintptr_t)sync);      // copy argument flags      GLMessage_DataType *arg_flags = glmsg.add_args(); @@ -9173,8 +9173,8 @@ void GLTrace_glGetInteger64v(GLenum pname, GLint64* params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9202,8 +9202,8 @@ void GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* le      // copy argument sync      GLMessage_DataType *arg_sync = glmsg.add_args();      arg_sync->set_isarray(false); -    arg_sync->set_type(GLMessage::DataType::INT); -    arg_sync->add_intvalue((int)sync); +    arg_sync->set_type(GLMessage::DataType::INT64); +    arg_sync->add_int64value((uintptr_t)sync);      // copy argument pname      GLMessage_DataType *arg_pname = glmsg.add_args(); @@ -9220,14 +9220,14 @@ void GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* le      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument values      GLMessage_DataType *arg_values = glmsg.add_args();      arg_values->set_isarray(false); -    arg_values->set_type(GLMessage::DataType::INT); -    arg_values->add_intvalue((int)values); +    arg_values->set_type(GLMessage::DataType::INT64); +    arg_values->add_int64value((uintptr_t)values);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9269,8 +9269,8 @@ void GLTrace_glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) {      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9310,8 +9310,8 @@ void GLTrace_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* para      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9345,8 +9345,8 @@ void GLTrace_glGenSamplers(GLsizei count, GLuint* samplers) {      // copy argument samplers      GLMessage_DataType *arg_samplers = glmsg.add_args();      arg_samplers->set_isarray(false); -    arg_samplers->set_type(GLMessage::DataType::INT); -    arg_samplers->add_intvalue((int)samplers); +    arg_samplers->set_type(GLMessage::DataType::INT64); +    arg_samplers->add_int64value((uintptr_t)samplers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9380,8 +9380,8 @@ void GLTrace_glDeleteSamplers(GLsizei count, const GLuint* samplers) {      // copy argument samplers      GLMessage_DataType *arg_samplers = glmsg.add_args();      arg_samplers->set_isarray(false); -    arg_samplers->set_type(GLMessage::DataType::INT); -    arg_samplers->add_intvalue((int)samplers); +    arg_samplers->set_type(GLMessage::DataType::INT64); +    arg_samplers->add_int64value((uintptr_t)samplers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9531,8 +9531,8 @@ void GLTrace_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* par      // copy argument param      GLMessage_DataType *arg_param = glmsg.add_args();      arg_param->set_isarray(false); -    arg_param->set_type(GLMessage::DataType::INT); -    arg_param->add_intvalue((int)param); +    arg_param->set_type(GLMessage::DataType::INT64); +    arg_param->add_int64value((uintptr_t)param);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9612,8 +9612,8 @@ void GLTrace_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* p      // copy argument param      GLMessage_DataType *arg_param = glmsg.add_args();      arg_param->set_isarray(false); -    arg_param->set_type(GLMessage::DataType::INT); -    arg_param->add_intvalue((int)param); +    arg_param->set_type(GLMessage::DataType::INT64); +    arg_param->add_int64value((uintptr_t)param);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9653,8 +9653,8 @@ void GLTrace_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9694,8 +9694,8 @@ void GLTrace_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* para      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9797,8 +9797,8 @@ void GLTrace_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids) {      // copy argument ids      GLMessage_DataType *arg_ids = glmsg.add_args();      arg_ids->set_isarray(false); -    arg_ids->set_type(GLMessage::DataType::INT); -    arg_ids->add_intvalue((int)ids); +    arg_ids->set_type(GLMessage::DataType::INT64); +    arg_ids->add_int64value((uintptr_t)ids);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9832,8 +9832,8 @@ void GLTrace_glGenTransformFeedbacks(GLsizei n, GLuint* ids) {      // copy argument ids      GLMessage_DataType *arg_ids = glmsg.add_args();      arg_ids->set_isarray(false); -    arg_ids->set_type(GLMessage::DataType::INT); -    arg_ids->add_intvalue((int)ids); +    arg_ids->set_type(GLMessage::DataType::INT64); +    arg_ids->add_int64value((uintptr_t)ids);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -9953,20 +9953,20 @@ void GLTrace_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument binaryFormat      GLMessage_DataType *arg_binaryFormat = glmsg.add_args();      arg_binaryFormat->set_isarray(false); -    arg_binaryFormat->set_type(GLMessage::DataType::INT); -    arg_binaryFormat->add_intvalue((int)binaryFormat); +    arg_binaryFormat->set_type(GLMessage::DataType::INT64); +    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);      // copy argument binary      GLMessage_DataType *arg_binary = glmsg.add_args();      arg_binary->set_isarray(false); -    arg_binary->set_type(GLMessage::DataType::INT); -    arg_binary->add_intvalue((int)binary); +    arg_binary->set_type(GLMessage::DataType::INT64); +    arg_binary->add_int64value((uintptr_t)binary);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10008,8 +10008,8 @@ void GLTrace_glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid*      // copy argument binary      GLMessage_DataType *arg_binary = glmsg.add_args();      arg_binary->set_isarray(false); -    arg_binary->set_type(GLMessage::DataType::INT); -    arg_binary->add_intvalue((int)binary); +    arg_binary->set_type(GLMessage::DataType::INT64); +    arg_binary->add_int64value((uintptr_t)binary);      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args(); @@ -10095,8 +10095,8 @@ void GLTrace_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, cons      // copy argument attachments      GLMessage_DataType *arg_attachments = glmsg.add_args();      arg_attachments->set_isarray(false); -    arg_attachments->set_type(GLMessage::DataType::INT); -    arg_attachments->add_intvalue((int)attachments); +    arg_attachments->set_type(GLMessage::DataType::INT64); +    arg_attachments->add_int64value((uintptr_t)attachments);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10136,8 +10136,8 @@ void GLTrace_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, c      // copy argument attachments      GLMessage_DataType *arg_attachments = glmsg.add_args();      arg_attachments->set_isarray(false); -    arg_attachments->set_type(GLMessage::DataType::INT); -    arg_attachments->add_intvalue((int)attachments); +    arg_attachments->set_type(GLMessage::DataType::INT64); +    arg_attachments->add_int64value((uintptr_t)attachments);      // copy argument x      GLMessage_DataType *arg_x = glmsg.add_args(); @@ -10323,8 +10323,8 @@ void GLTrace_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10361,8 +10361,8 @@ void GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {      // copy argument image      GLMessage_DataType *arg_image = glmsg.add_args();      arg_image->set_isarray(false); -    arg_image->set_type(GLMessage::DataType::INT); -    arg_image->add_intvalue((int)image); +    arg_image->set_type(GLMessage::DataType::INT64); +    arg_image->add_int64value((uintptr_t)image);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10396,8 +10396,8 @@ void GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES      // copy argument image      GLMessage_DataType *arg_image = glmsg.add_args();      arg_image->set_isarray(false); -    arg_image->set_type(GLMessage::DataType::INT); -    arg_image->add_intvalue((int)image); +    arg_image->set_type(GLMessage::DataType::INT64); +    arg_image->add_int64value((uintptr_t)image);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10437,20 +10437,20 @@ void GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *len      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument binaryFormat      GLMessage_DataType *arg_binaryFormat = glmsg.add_args();      arg_binaryFormat->set_isarray(false); -    arg_binaryFormat->set_type(GLMessage::DataType::INT); -    arg_binaryFormat->add_intvalue((int)binaryFormat); +    arg_binaryFormat->set_type(GLMessage::DataType::INT64); +    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);      // copy argument binary      GLMessage_DataType *arg_binary = glmsg.add_args();      arg_binary->set_isarray(false); -    arg_binary->set_type(GLMessage::DataType::INT); -    arg_binary->add_intvalue((int)binary); +    arg_binary->set_type(GLMessage::DataType::INT64); +    arg_binary->add_int64value((uintptr_t)binary);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10492,8 +10492,8 @@ void GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoi      // copy argument binary      GLMessage_DataType *arg_binary = glmsg.add_args();      arg_binary->set_isarray(false); -    arg_binary->set_type(GLMessage::DataType::INT); -    arg_binary->add_intvalue((int)binary); +    arg_binary->set_type(GLMessage::DataType::INT64); +    arg_binary->add_int64value((uintptr_t)binary);      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args(); @@ -10546,8 +10546,8 @@ void* GLTrace_glMapBufferOES(GLenum target, GLenum access) {      // set return value      GLMessage_DataType *rt = glmsg.mutable_returnvalue();      rt->set_isarray(false); -    rt->set_type(GLMessage::DataType::INT); -    rt->add_intvalue((int)retValue); +    rt->set_type(GLMessage::DataType::INT64); +    rt->add_int64value((uintptr_t)retValue);      void *pointerArgs[] = {          (void *) retValue, @@ -10618,8 +10618,8 @@ void GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10701,8 +10701,8 @@ void GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat,      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10790,8 +10790,8 @@ void GLTrace_glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint      // copy argument pixels      GLMessage_DataType *arg_pixels = glmsg.add_args();      arg_pixels->set_isarray(false); -    arg_pixels->set_type(GLMessage::DataType::INT); -    arg_pixels->add_intvalue((int)pixels); +    arg_pixels->set_type(GLMessage::DataType::INT64); +    arg_pixels->add_int64value((uintptr_t)pixels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -10943,8 +10943,8 @@ void GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum intern      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11032,8 +11032,8 @@ void GLTrace_glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoff      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11153,8 +11153,8 @@ void GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays) {      // copy argument arrays      GLMessage_DataType *arg_arrays = glmsg.add_args();      arg_arrays->set_isarray(false); -    arg_arrays->set_type(GLMessage::DataType::INT); -    arg_arrays->add_intvalue((int)arrays); +    arg_arrays->set_type(GLMessage::DataType::INT64); +    arg_arrays->add_int64value((uintptr_t)arrays);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11188,8 +11188,8 @@ void GLTrace_glGenVertexArraysOES(GLsizei n, GLuint *arrays) {      // copy argument arrays      GLMessage_DataType *arg_arrays = glmsg.add_args();      arg_arrays->set_isarray(false); -    arg_arrays->set_type(GLMessage::DataType::INT); -    arg_arrays->add_intvalue((int)arrays); +    arg_arrays->set_type(GLMessage::DataType::INT64); +    arg_arrays->add_int64value((uintptr_t)arrays);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11253,8 +11253,8 @@ void GLTrace_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLu      // copy argument numGroups      GLMessage_DataType *arg_numGroups = glmsg.add_args();      arg_numGroups->set_isarray(false); -    arg_numGroups->set_type(GLMessage::DataType::INT); -    arg_numGroups->add_intvalue((int)numGroups); +    arg_numGroups->set_type(GLMessage::DataType::INT64); +    arg_numGroups->add_int64value((uintptr_t)numGroups);      // copy argument groupsSize      GLMessage_DataType *arg_groupsSize = glmsg.add_args(); @@ -11265,8 +11265,8 @@ void GLTrace_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLu      // copy argument groups      GLMessage_DataType *arg_groups = glmsg.add_args();      arg_groups->set_isarray(false); -    arg_groups->set_type(GLMessage::DataType::INT); -    arg_groups->add_intvalue((int)groups); +    arg_groups->set_type(GLMessage::DataType::INT64); +    arg_groups->add_int64value((uintptr_t)groups);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11301,14 +11301,14 @@ void GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint      // copy argument numCounters      GLMessage_DataType *arg_numCounters = glmsg.add_args();      arg_numCounters->set_isarray(false); -    arg_numCounters->set_type(GLMessage::DataType::INT); -    arg_numCounters->add_intvalue((int)numCounters); +    arg_numCounters->set_type(GLMessage::DataType::INT64); +    arg_numCounters->add_int64value((uintptr_t)numCounters);      // copy argument maxActiveCounters      GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();      arg_maxActiveCounters->set_isarray(false); -    arg_maxActiveCounters->set_type(GLMessage::DataType::INT); -    arg_maxActiveCounters->add_intvalue((int)maxActiveCounters); +    arg_maxActiveCounters->set_type(GLMessage::DataType::INT64); +    arg_maxActiveCounters->add_int64value((uintptr_t)maxActiveCounters);      // copy argument counterSize      GLMessage_DataType *arg_counterSize = glmsg.add_args(); @@ -11319,8 +11319,8 @@ void GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint      // copy argument counters      GLMessage_DataType *arg_counters = glmsg.add_args();      arg_counters->set_isarray(false); -    arg_counters->set_type(GLMessage::DataType::INT); -    arg_counters->add_intvalue((int)counters); +    arg_counters->set_type(GLMessage::DataType::INT64); +    arg_counters->add_int64value((uintptr_t)counters);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11362,14 +11362,14 @@ void GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsiz      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument groupString      GLMessage_DataType *arg_groupString = glmsg.add_args();      arg_groupString->set_isarray(false); -    arg_groupString->set_type(GLMessage::DataType::INT); -    arg_groupString->add_intvalue((int)groupString); +    arg_groupString->set_type(GLMessage::DataType::INT64); +    arg_groupString->add_int64value((uintptr_t)groupString);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11416,14 +11416,14 @@ void GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsi      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument counterString      GLMessage_DataType *arg_counterString = glmsg.add_args();      arg_counterString->set_isarray(false); -    arg_counterString->set_type(GLMessage::DataType::INT); -    arg_counterString->add_intvalue((int)counterString); +    arg_counterString->set_type(GLMessage::DataType::INT64); +    arg_counterString->add_int64value((uintptr_t)counterString);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11470,8 +11470,8 @@ void GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11505,8 +11505,8 @@ void GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) {      // copy argument monitors      GLMessage_DataType *arg_monitors = glmsg.add_args();      arg_monitors->set_isarray(false); -    arg_monitors->set_type(GLMessage::DataType::INT); -    arg_monitors->add_intvalue((int)monitors); +    arg_monitors->set_type(GLMessage::DataType::INT64); +    arg_monitors->add_int64value((uintptr_t)monitors);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11540,8 +11540,8 @@ void GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) {      // copy argument monitors      GLMessage_DataType *arg_monitors = glmsg.add_args();      arg_monitors->set_isarray(false); -    arg_monitors->set_type(GLMessage::DataType::INT); -    arg_monitors->add_intvalue((int)monitors); +    arg_monitors->set_type(GLMessage::DataType::INT64); +    arg_monitors->add_int64value((uintptr_t)monitors);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11593,8 +11593,8 @@ void GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GL      // copy argument countersList      GLMessage_DataType *arg_countersList = glmsg.add_args();      arg_countersList->set_isarray(false); -    arg_countersList->set_type(GLMessage::DataType::INT); -    arg_countersList->add_intvalue((int)countersList); +    arg_countersList->set_type(GLMessage::DataType::INT64); +    arg_countersList->add_int64value((uintptr_t)countersList);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11696,14 +11696,14 @@ void GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsize      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // copy argument bytesWritten      GLMessage_DataType *arg_bytesWritten = glmsg.add_args();      arg_bytesWritten->set_isarray(false); -    arg_bytesWritten->set_type(GLMessage::DataType::INT); -    arg_bytesWritten->add_intvalue((int)bytesWritten); +    arg_bytesWritten->set_type(GLMessage::DataType::INT64); +    arg_bytesWritten->add_int64value((uintptr_t)bytesWritten);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -11958,8 +11958,8 @@ void GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const      // copy argument label      GLMessage_DataType *arg_label = glmsg.add_args();      arg_label->set_isarray(false); -    arg_label->set_type(GLMessage::DataType::INT); -    arg_label->add_intvalue((int)label); +    arg_label->set_type(GLMessage::DataType::INT64); +    arg_label->add_int64value((uintptr_t)label);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12005,14 +12005,14 @@ void GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GL      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument label      GLMessage_DataType *arg_label = glmsg.add_args();      arg_label->set_isarray(false); -    arg_label->set_type(GLMessage::DataType::INT); -    arg_label->add_intvalue((int)label); +    arg_label->set_type(GLMessage::DataType::INT64); +    arg_label->add_int64value((uintptr_t)label);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12047,8 +12047,8 @@ void GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) {      // copy argument marker      GLMessage_DataType *arg_marker = glmsg.add_args();      arg_marker->set_isarray(false); -    arg_marker->set_type(GLMessage::DataType::INT); -    arg_marker->add_intvalue((int)marker); +    arg_marker->set_type(GLMessage::DataType::INT64); +    arg_marker->add_int64value((uintptr_t)marker);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12082,8 +12082,8 @@ void GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) {      // copy argument marker      GLMessage_DataType *arg_marker = glmsg.add_args();      arg_marker->set_isarray(false); -    arg_marker->set_type(GLMessage::DataType::INT); -    arg_marker->add_intvalue((int)marker); +    arg_marker->set_type(GLMessage::DataType::INT64); +    arg_marker->add_int64value((uintptr_t)marker);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12145,8 +12145,8 @@ void GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, cons      // copy argument attachments      GLMessage_DataType *arg_attachments = glmsg.add_args();      arg_attachments->set_isarray(false); -    arg_attachments->set_type(GLMessage::DataType::INT); -    arg_attachments->add_intvalue((int)attachments); +    arg_attachments->set_type(GLMessage::DataType::INT64); +    arg_attachments->add_int64value((uintptr_t)attachments);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12290,14 +12290,14 @@ void GLTrace_glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLs      // copy argument first      GLMessage_DataType *arg_first = glmsg.add_args();      arg_first->set_isarray(false); -    arg_first->set_type(GLMessage::DataType::INT); -    arg_first->add_intvalue((int)first); +    arg_first->set_type(GLMessage::DataType::INT64); +    arg_first->add_int64value((uintptr_t)first);      // copy argument count      GLMessage_DataType *arg_count = glmsg.add_args();      arg_count->set_isarray(false); -    arg_count->set_type(GLMessage::DataType::INT); -    arg_count->add_intvalue((int)count); +    arg_count->set_type(GLMessage::DataType::INT64); +    arg_count->add_int64value((uintptr_t)count);      // copy argument primcount      GLMessage_DataType *arg_primcount = glmsg.add_args(); @@ -12338,8 +12338,8 @@ void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum ty      // copy argument count      GLMessage_DataType *arg_count = glmsg.add_args();      arg_count->set_isarray(false); -    arg_count->set_type(GLMessage::DataType::INT); -    arg_count->add_intvalue((int)count); +    arg_count->set_type(GLMessage::DataType::INT64); +    arg_count->add_int64value((uintptr_t)count);      // copy argument type      GLMessage_DataType *arg_type = glmsg.add_args(); @@ -12350,8 +12350,8 @@ void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum ty      // copy argument indices      GLMessage_DataType *arg_indices = glmsg.add_args();      arg_indices->set_isarray(false); -    arg_indices->set_type(GLMessage::DataType::INT); -    arg_indices->add_intvalue((int)indices); +    arg_indices->set_type(GLMessage::DataType::INT64); +    arg_indices->add_int64value((uintptr_t)indices);      // copy argument primcount      GLMessage_DataType *arg_primcount = glmsg.add_args(); @@ -12392,8 +12392,8 @@ void GLTrace_glGenQueriesEXT(GLsizei n, GLuint *ids) {      // copy argument ids      GLMessage_DataType *arg_ids = glmsg.add_args();      arg_ids->set_isarray(false); -    arg_ids->set_type(GLMessage::DataType::INT); -    arg_ids->add_intvalue((int)ids); +    arg_ids->set_type(GLMessage::DataType::INT64); +    arg_ids->add_int64value((uintptr_t)ids);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12427,8 +12427,8 @@ void GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint *ids) {      // copy argument ids      GLMessage_DataType *arg_ids = glmsg.add_args();      arg_ids->set_isarray(false); -    arg_ids->set_type(GLMessage::DataType::INT); -    arg_ids->add_intvalue((int)ids); +    arg_ids->set_type(GLMessage::DataType::INT64); +    arg_ids->add_int64value((uintptr_t)ids);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12566,8 +12566,8 @@ void GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12607,8 +12607,8 @@ void GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12708,8 +12708,8 @@ void GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, G      // copy argument data      GLMessage_DataType *arg_data = glmsg.add_args();      arg_data->set_isarray(false); -    arg_data->set_type(GLMessage::DataType::INT); -    arg_data->add_intvalue((int)data); +    arg_data->set_type(GLMessage::DataType::INT64); +    arg_data->add_int64value((uintptr_t)data);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12755,8 +12755,8 @@ void GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize,      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12802,8 +12802,8 @@ void GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize,      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12917,8 +12917,8 @@ GLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLcha      // copy argument strings      GLMessage_DataType *arg_strings = glmsg.add_args();      arg_strings->set_isarray(false); -    arg_strings->set_type(GLMessage::DataType::INT); -    arg_strings->add_intvalue((int)strings); +    arg_strings->set_type(GLMessage::DataType::INT64); +    arg_strings->add_int64value((uintptr_t)strings);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -12988,8 +12988,8 @@ void GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines) {      // copy argument pipelines      GLMessage_DataType *arg_pipelines = glmsg.add_args();      arg_pipelines->set_isarray(false); -    arg_pipelines->set_type(GLMessage::DataType::INT); -    arg_pipelines->add_intvalue((int)pipelines); +    arg_pipelines->set_type(GLMessage::DataType::INT64); +    arg_pipelines->add_int64value((uintptr_t)pipelines);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13023,8 +13023,8 @@ void GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines) {      // copy argument pipelines      GLMessage_DataType *arg_pipelines = glmsg.add_args();      arg_pipelines->set_isarray(false); -    arg_pipelines->set_type(GLMessage::DataType::INT); -    arg_pipelines->add_intvalue((int)pipelines); +    arg_pipelines->set_type(GLMessage::DataType::INT64); +    arg_pipelines->add_int64value((uintptr_t)pipelines);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13140,8 +13140,8 @@ void GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *par      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13579,8 +13579,8 @@ void GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13626,8 +13626,8 @@ void GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13673,8 +13673,8 @@ void GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13720,8 +13720,8 @@ void GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13767,8 +13767,8 @@ void GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13814,8 +13814,8 @@ void GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13861,8 +13861,8 @@ void GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13908,8 +13908,8 @@ void GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei coun      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -13961,8 +13961,8 @@ void GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsize      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14014,8 +14014,8 @@ void GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsize      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14067,8 +14067,8 @@ void GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsize      // copy argument value      GLMessage_DataType *arg_value = glmsg.add_args();      arg_value->set_isarray(false); -    arg_value->set_type(GLMessage::DataType::INT); -    arg_value->add_intvalue((int)value); +    arg_value->set_type(GLMessage::DataType::INT64); +    arg_value->add_int64value((uintptr_t)value);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14136,14 +14136,14 @@ void GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GL      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument infoLog      GLMessage_DataType *arg_infoLog = glmsg.add_args();      arg_infoLog->set_isarray(false); -    arg_infoLog->set_type(GLMessage::DataType::INT); -    arg_infoLog->add_intvalue((int)infoLog); +    arg_infoLog->set_type(GLMessage::DataType::INT64); +    arg_infoLog->add_int64value((uintptr_t)infoLog);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14674,8 +14674,8 @@ void GLTrace_glDrawBuffersNV(GLsizei n, const GLenum *bufs) {      // copy argument bufs      GLMessage_DataType *arg_bufs = glmsg.add_args();      arg_bufs->set_isarray(false); -    arg_bufs->set_type(GLMessage::DataType::INT); -    arg_bufs->add_intvalue((int)bufs); +    arg_bufs->set_type(GLMessage::DataType::INT64); +    arg_bufs->add_int64value((uintptr_t)bufs);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14709,8 +14709,8 @@ void GLTrace_glDeleteFencesNV(GLsizei n, const GLuint *fences) {      // copy argument fences      GLMessage_DataType *arg_fences = glmsg.add_args();      arg_fences->set_isarray(false); -    arg_fences->set_type(GLMessage::DataType::INT); -    arg_fences->add_intvalue((int)fences); +    arg_fences->set_type(GLMessage::DataType::INT64); +    arg_fences->add_int64value((uintptr_t)fences);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14744,8 +14744,8 @@ void GLTrace_glGenFencesNV(GLsizei n, GLuint *fences) {      // copy argument fences      GLMessage_DataType *arg_fences = glmsg.add_args();      arg_fences->set_isarray(false); -    arg_fences->set_type(GLMessage::DataType::INT); -    arg_fences->add_intvalue((int)fences); +    arg_fences->set_type(GLMessage::DataType::INT64); +    arg_fences->add_int64value((uintptr_t)fences);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -14857,8 +14857,8 @@ void GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15010,8 +15010,8 @@ void GLTrace_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverCon      // copy argument num      GLMessage_DataType *arg_num = glmsg.add_args();      arg_num->set_isarray(false); -    arg_num->set_type(GLMessage::DataType::INT); -    arg_num->add_intvalue((int)num); +    arg_num->set_type(GLMessage::DataType::INT64); +    arg_num->add_int64value((uintptr_t)num);      // copy argument size      GLMessage_DataType *arg_size = glmsg.add_args(); @@ -15022,8 +15022,8 @@ void GLTrace_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverCon      // copy argument driverControls      GLMessage_DataType *arg_driverControls = glmsg.add_args();      arg_driverControls->set_isarray(false); -    arg_driverControls->set_type(GLMessage::DataType::INT); -    arg_driverControls->add_intvalue((int)driverControls); +    arg_driverControls->set_type(GLMessage::DataType::INT64); +    arg_driverControls->add_int64value((uintptr_t)driverControls);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15064,14 +15064,14 @@ void GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize,      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // copy argument driverControlString      GLMessage_DataType *arg_driverControlString = glmsg.add_args();      arg_driverControlString->set_isarray(false); -    arg_driverControlString->set_type(GLMessage::DataType::INT); -    arg_driverControlString->add_intvalue((int)driverControlString); +    arg_driverControlString->set_type(GLMessage::DataType::INT64); +    arg_driverControlString->add_int64value((uintptr_t)driverControlString);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15156,8 +15156,8 @@ void GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *nu      // copy argument textures      GLMessage_DataType *arg_textures = glmsg.add_args();      arg_textures->set_isarray(false); -    arg_textures->set_type(GLMessage::DataType::INT); -    arg_textures->add_intvalue((int)textures); +    arg_textures->set_type(GLMessage::DataType::INT64); +    arg_textures->add_int64value((uintptr_t)textures);      // copy argument maxTextures      GLMessage_DataType *arg_maxTextures = glmsg.add_args(); @@ -15168,8 +15168,8 @@ void GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *nu      // copy argument numTextures      GLMessage_DataType *arg_numTextures = glmsg.add_args();      arg_numTextures->set_isarray(false); -    arg_numTextures->set_type(GLMessage::DataType::INT); -    arg_numTextures->add_intvalue((int)numTextures); +    arg_numTextures->set_type(GLMessage::DataType::INT64); +    arg_numTextures->add_int64value((uintptr_t)numTextures);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15198,8 +15198,8 @@ void GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBu      // copy argument buffers      GLMessage_DataType *arg_buffers = glmsg.add_args();      arg_buffers->set_isarray(false); -    arg_buffers->set_type(GLMessage::DataType::INT); -    arg_buffers->add_intvalue((int)buffers); +    arg_buffers->set_type(GLMessage::DataType::INT64); +    arg_buffers->add_int64value((uintptr_t)buffers);      // copy argument maxBuffers      GLMessage_DataType *arg_maxBuffers = glmsg.add_args(); @@ -15210,8 +15210,8 @@ void GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBu      // copy argument numBuffers      GLMessage_DataType *arg_numBuffers = glmsg.add_args();      arg_numBuffers->set_isarray(false); -    arg_numBuffers->set_type(GLMessage::DataType::INT); -    arg_numBuffers->add_intvalue((int)numBuffers); +    arg_numBuffers->set_type(GLMessage::DataType::INT64); +    arg_numBuffers->add_int64value((uintptr_t)numBuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15240,8 +15240,8 @@ void GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuf      // copy argument renderbuffers      GLMessage_DataType *arg_renderbuffers = glmsg.add_args();      arg_renderbuffers->set_isarray(false); -    arg_renderbuffers->set_type(GLMessage::DataType::INT); -    arg_renderbuffers->add_intvalue((int)renderbuffers); +    arg_renderbuffers->set_type(GLMessage::DataType::INT64); +    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);      // copy argument maxRenderbuffers      GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args(); @@ -15252,8 +15252,8 @@ void GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuf      // copy argument numRenderbuffers      GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();      arg_numRenderbuffers->set_isarray(false); -    arg_numRenderbuffers->set_type(GLMessage::DataType::INT); -    arg_numRenderbuffers->add_intvalue((int)numRenderbuffers); +    arg_numRenderbuffers->set_type(GLMessage::DataType::INT64); +    arg_numRenderbuffers->add_int64value((uintptr_t)numRenderbuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15282,8 +15282,8 @@ void GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffer      // copy argument framebuffers      GLMessage_DataType *arg_framebuffers = glmsg.add_args();      arg_framebuffers->set_isarray(false); -    arg_framebuffers->set_type(GLMessage::DataType::INT); -    arg_framebuffers->add_intvalue((int)framebuffers); +    arg_framebuffers->set_type(GLMessage::DataType::INT64); +    arg_framebuffers->add_int64value((uintptr_t)framebuffers);      // copy argument maxFramebuffers      GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args(); @@ -15294,8 +15294,8 @@ void GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffer      // copy argument numFramebuffers      GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();      arg_numFramebuffers->set_isarray(false); -    arg_numFramebuffers->set_type(GLMessage::DataType::INT); -    arg_numFramebuffers->add_intvalue((int)numFramebuffers); +    arg_numFramebuffers->set_type(GLMessage::DataType::INT64); +    arg_numFramebuffers->add_int64value((uintptr_t)numFramebuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15348,8 +15348,8 @@ void GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15477,8 +15477,8 @@ void GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset,      // copy argument texels      GLMessage_DataType *arg_texels = glmsg.add_args();      arg_texels->set_isarray(false); -    arg_texels->set_type(GLMessage::DataType::INT); -    arg_texels->add_intvalue((int)texels); +    arg_texels->set_type(GLMessage::DataType::INT64); +    arg_texels->add_int64value((uintptr_t)texels);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15512,8 +15512,8 @@ void GLTrace_glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15541,8 +15541,8 @@ void GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numSh      // copy argument shaders      GLMessage_DataType *arg_shaders = glmsg.add_args();      arg_shaders->set_isarray(false); -    arg_shaders->set_type(GLMessage::DataType::INT); -    arg_shaders->add_intvalue((int)shaders); +    arg_shaders->set_type(GLMessage::DataType::INT64); +    arg_shaders->add_int64value((uintptr_t)shaders);      // copy argument maxShaders      GLMessage_DataType *arg_maxShaders = glmsg.add_args(); @@ -15553,8 +15553,8 @@ void GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numSh      // copy argument numShaders      GLMessage_DataType *arg_numShaders = glmsg.add_args();      arg_numShaders->set_isarray(false); -    arg_numShaders->set_type(GLMessage::DataType::INT); -    arg_numShaders->add_intvalue((int)numShaders); +    arg_numShaders->set_type(GLMessage::DataType::INT64); +    arg_numShaders->add_int64value((uintptr_t)numShaders);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15583,8 +15583,8 @@ void GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *nu      // copy argument programs      GLMessage_DataType *arg_programs = glmsg.add_args();      arg_programs->set_isarray(false); -    arg_programs->set_type(GLMessage::DataType::INT); -    arg_programs->add_intvalue((int)programs); +    arg_programs->set_type(GLMessage::DataType::INT64); +    arg_programs->add_int64value((uintptr_t)programs);      // copy argument maxPrograms      GLMessage_DataType *arg_maxPrograms = glmsg.add_args(); @@ -15595,8 +15595,8 @@ void GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *nu      // copy argument numPrograms      GLMessage_DataType *arg_numPrograms = glmsg.add_args();      arg_numPrograms->set_isarray(false); -    arg_numPrograms->set_type(GLMessage::DataType::INT); -    arg_numPrograms->add_intvalue((int)numPrograms); +    arg_numPrograms->set_type(GLMessage::DataType::INT64); +    arg_numPrograms->add_int64value((uintptr_t)numPrograms);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15673,14 +15673,14 @@ void GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype,      // copy argument source      GLMessage_DataType *arg_source = glmsg.add_args();      arg_source->set_isarray(false); -    arg_source->set_type(GLMessage::DataType::INT); -    arg_source->add_intvalue((int)source); +    arg_source->set_type(GLMessage::DataType::INT64); +    arg_source->add_int64value((uintptr_t)source);      // copy argument length      GLMessage_DataType *arg_length = glmsg.add_args();      arg_length->set_isarray(false); -    arg_length->set_type(GLMessage::DataType::INT); -    arg_length->add_intvalue((int)length); +    arg_length->set_type(GLMessage::DataType::INT64); +    arg_length->add_int64value((uintptr_t)length);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15832,8 +15832,8 @@ void GLTrace_glClipPlanef(GLenum plane, const GLfloat *equation) {      // copy argument equation      GLMessage_DataType *arg_equation = glmsg.add_args();      arg_equation->set_isarray(false); -    arg_equation->set_type(GLMessage::DataType::INT); -    arg_equation->add_intvalue((int)equation); +    arg_equation->set_type(GLMessage::DataType::INT64); +    arg_equation->add_int64value((uintptr_t)equation);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -15947,8 +15947,8 @@ void GLTrace_glFogfv(GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16040,8 +16040,8 @@ void GLTrace_glGetClipPlanef(GLenum pname, GLfloat eqn[4]) {      // copy argument eqn      GLMessage_DataType *arg_eqn = glmsg.add_args();      arg_eqn->set_isarray(false); -    arg_eqn->set_type(GLMessage::DataType::INT); -    arg_eqn->add_intvalue((int)eqn); +    arg_eqn->set_type(GLMessage::DataType::INT64); +    arg_eqn->add_int64value((uintptr_t)eqn);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16081,8 +16081,8 @@ void GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16122,8 +16122,8 @@ void GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16163,8 +16163,8 @@ void GLTrace_glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16232,8 +16232,8 @@ void GLTrace_glLightModelfv(GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16313,8 +16313,8 @@ void GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16342,8 +16342,8 @@ void GLTrace_glLoadMatrixf(const GLfloat *m) {      // copy argument m      GLMessage_DataType *arg_m = glmsg.add_args();      arg_m->set_isarray(false); -    arg_m->set_type(GLMessage::DataType::INT); -    arg_m->add_intvalue((int)m); +    arg_m->set_type(GLMessage::DataType::INT64); +    arg_m->add_int64value((uintptr_t)m);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16423,8 +16423,8 @@ void GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16452,8 +16452,8 @@ void GLTrace_glMultMatrixf(const GLfloat *m) {      // copy argument m      GLMessage_DataType *arg_m = glmsg.add_args();      arg_m->set_isarray(false); -    arg_m->set_type(GLMessage::DataType::INT); -    arg_m->add_intvalue((int)m); +    arg_m->set_type(GLMessage::DataType::INT64); +    arg_m->add_int64value((uintptr_t)m);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16671,8 +16671,8 @@ void GLTrace_glPointParameterfv(GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -16866,8 +16866,8 @@ void GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17077,8 +17077,8 @@ void GLTrace_glClipPlanex(GLenum plane, const GLfixed *equation) {      // copy argument equation      GLMessage_DataType *arg_equation = glmsg.add_args();      arg_equation->set_isarray(false); -    arg_equation->set_type(GLMessage::DataType::INT); -    arg_equation->add_intvalue((int)equation); +    arg_equation->set_type(GLMessage::DataType::INT64); +    arg_equation->add_int64value((uintptr_t)equation);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17216,8 +17216,8 @@ void GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoi      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17375,8 +17375,8 @@ void GLTrace_glFogxv(GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17468,8 +17468,8 @@ void GLTrace_glGetClipPlanex(GLenum pname, GLfixed eqn[4]) {      // copy argument eqn      GLMessage_DataType *arg_eqn = glmsg.add_args();      arg_eqn->set_isarray(false); -    arg_eqn->set_type(GLMessage::DataType::INT); -    arg_eqn->add_intvalue((int)eqn); +    arg_eqn->set_type(GLMessage::DataType::INT64); +    arg_eqn->add_int64value((uintptr_t)eqn);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17503,8 +17503,8 @@ void GLTrace_glGetFixedv(GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17544,8 +17544,8 @@ void GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17585,8 +17585,8 @@ void GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17620,8 +17620,8 @@ void GLTrace_glGetPointerv(GLenum pname, GLvoid **params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17661,8 +17661,8 @@ void GLTrace_glGetTexEnviv(GLenum env, GLenum pname, GLint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17702,8 +17702,8 @@ void GLTrace_glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17743,8 +17743,8 @@ void GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17812,8 +17812,8 @@ void GLTrace_glLightModelxv(GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17893,8 +17893,8 @@ void GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -17972,8 +17972,8 @@ void GLTrace_glLoadMatrixx(const GLfixed *m) {      // copy argument m      GLMessage_DataType *arg_m = glmsg.add_args();      arg_m->set_isarray(false); -    arg_m->set_type(GLMessage::DataType::INT); -    arg_m->add_intvalue((int)m); +    arg_m->set_type(GLMessage::DataType::INT64); +    arg_m->add_int64value((uintptr_t)m);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18081,8 +18081,8 @@ void GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18138,8 +18138,8 @@ void GLTrace_glMultMatrixx(const GLfixed *m) {      // copy argument m      GLMessage_DataType *arg_m = glmsg.add_args();      arg_m->set_isarray(false); -    arg_m->set_type(GLMessage::DataType::INT); -    arg_m->add_intvalue((int)m); +    arg_m->set_type(GLMessage::DataType::INT64); +    arg_m->add_int64value((uintptr_t)m);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18271,8 +18271,8 @@ void GLTrace_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer)      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18398,8 +18398,8 @@ void GLTrace_glPointParameterxv(GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18699,8 +18699,8 @@ void GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GL      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18820,8 +18820,8 @@ void GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18861,8 +18861,8 @@ void GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -18942,8 +18942,8 @@ void GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19029,8 +19029,8 @@ void GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvo      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19070,8 +19070,8 @@ void GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *po      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19366,8 +19366,8 @@ void GLTrace_glDrawTexsvOES(const GLshort *coords) {      // copy argument coords      GLMessage_DataType *arg_coords = glmsg.add_args();      arg_coords->set_isarray(false); -    arg_coords->set_type(GLMessage::DataType::INT); -    arg_coords->add_intvalue((int)coords); +    arg_coords->set_type(GLMessage::DataType::INT64); +    arg_coords->add_int64value((uintptr_t)coords);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19395,8 +19395,8 @@ void GLTrace_glDrawTexivOES(const GLint *coords) {      // copy argument coords      GLMessage_DataType *arg_coords = glmsg.add_args();      arg_coords->set_isarray(false); -    arg_coords->set_type(GLMessage::DataType::INT); -    arg_coords->add_intvalue((int)coords); +    arg_coords->set_type(GLMessage::DataType::INT64); +    arg_coords->add_int64value((uintptr_t)coords);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19424,8 +19424,8 @@ void GLTrace_glDrawTexxvOES(const GLfixed *coords) {      // copy argument coords      GLMessage_DataType *arg_coords = glmsg.add_args();      arg_coords->set_isarray(false); -    arg_coords->set_type(GLMessage::DataType::INT); -    arg_coords->add_intvalue((int)coords); +    arg_coords->set_type(GLMessage::DataType::INT64); +    arg_coords->add_int64value((uintptr_t)coords);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19505,8 +19505,8 @@ void GLTrace_glDrawTexfvOES(const GLfloat *coords) {      // copy argument coords      GLMessage_DataType *arg_coords = glmsg.add_args();      arg_coords->set_isarray(false); -    arg_coords->set_type(GLMessage::DataType::INT); -    arg_coords->add_intvalue((int)coords); +    arg_coords->set_type(GLMessage::DataType::INT64); +    arg_coords->add_int64value((uintptr_t)coords);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19648,8 +19648,8 @@ void GLTrace_glClipPlanexOES(GLenum plane, const GLfixed *equation) {      // copy argument equation      GLMessage_DataType *arg_equation = glmsg.add_args();      arg_equation->set_isarray(false); -    arg_equation->set_type(GLMessage::DataType::INT); -    arg_equation->add_intvalue((int)equation); +    arg_equation->set_type(GLMessage::DataType::INT64); +    arg_equation->add_int64value((uintptr_t)equation);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19797,8 +19797,8 @@ void GLTrace_glFogxvOES(GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19890,8 +19890,8 @@ void GLTrace_glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]) {      // copy argument eqn      GLMessage_DataType *arg_eqn = glmsg.add_args();      arg_eqn->set_isarray(false); -    arg_eqn->set_type(GLMessage::DataType::INT); -    arg_eqn->add_intvalue((int)eqn); +    arg_eqn->set_type(GLMessage::DataType::INT64); +    arg_eqn->add_int64value((uintptr_t)eqn);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19925,8 +19925,8 @@ void GLTrace_glGetFixedvOES(GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -19966,8 +19966,8 @@ void GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20007,8 +20007,8 @@ void GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20048,8 +20048,8 @@ void GLTrace_glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20089,8 +20089,8 @@ void GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20158,8 +20158,8 @@ void GLTrace_glLightModelxvOES(GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20239,8 +20239,8 @@ void GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20296,8 +20296,8 @@ void GLTrace_glLoadMatrixxOES(const GLfixed *m) {      // copy argument m      GLMessage_DataType *arg_m = glmsg.add_args();      arg_m->set_isarray(false); -    arg_m->set_type(GLMessage::DataType::INT); -    arg_m->add_intvalue((int)m); +    arg_m->set_type(GLMessage::DataType::INT64); +    arg_m->add_int64value((uintptr_t)m);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20377,8 +20377,8 @@ void GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20406,8 +20406,8 @@ void GLTrace_glMultMatrixxOES(const GLfixed *m) {      // copy argument m      GLMessage_DataType *arg_m = glmsg.add_args();      arg_m->set_isarray(false); -    arg_m->set_type(GLMessage::DataType::INT); -    arg_m->add_intvalue((int)m); +    arg_m->set_type(GLMessage::DataType::INT64); +    arg_m->add_int64value((uintptr_t)m);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20625,8 +20625,8 @@ void GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20888,8 +20888,8 @@ void GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -20969,8 +20969,8 @@ void GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *par      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21114,8 +21114,8 @@ void GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers) {      // copy argument renderbuffers      GLMessage_DataType *arg_renderbuffers = glmsg.add_args();      arg_renderbuffers->set_isarray(false); -    arg_renderbuffers->set_type(GLMessage::DataType::INT); -    arg_renderbuffers->add_intvalue((int)renderbuffers); +    arg_renderbuffers->set_type(GLMessage::DataType::INT64); +    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21149,8 +21149,8 @@ void GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers) {      // copy argument renderbuffers      GLMessage_DataType *arg_renderbuffers = glmsg.add_args();      arg_renderbuffers->set_isarray(false); -    arg_renderbuffers->set_type(GLMessage::DataType::INT); -    arg_renderbuffers->add_intvalue((int)renderbuffers); +    arg_renderbuffers->set_type(GLMessage::DataType::INT64); +    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21236,8 +21236,8 @@ void GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint*      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21341,8 +21341,8 @@ void GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers) {      // copy argument framebuffers      GLMessage_DataType *arg_framebuffers = glmsg.add_args();      arg_framebuffers->set_isarray(false); -    arg_framebuffers->set_type(GLMessage::DataType::INT); -    arg_framebuffers->add_intvalue((int)framebuffers); +    arg_framebuffers->set_type(GLMessage::DataType::INT64); +    arg_framebuffers->add_int64value((uintptr_t)framebuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21376,8 +21376,8 @@ void GLTrace_glGenFramebuffersOES(GLsizei n, GLuint* framebuffers) {      // copy argument framebuffers      GLMessage_DataType *arg_framebuffers = glmsg.add_args();      arg_framebuffers->set_isarray(false); -    arg_framebuffers->set_type(GLMessage::DataType::INT); -    arg_framebuffers->add_intvalue((int)framebuffers); +    arg_framebuffers->set_type(GLMessage::DataType::INT64); +    arg_framebuffers->add_int64value((uintptr_t)framebuffers);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21557,8 +21557,8 @@ void GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum atta      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21682,8 +21682,8 @@ void GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, co      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21729,8 +21729,8 @@ void GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const G      // copy argument pointer      GLMessage_DataType *arg_pointer = glmsg.add_args();      arg_pointer->set_isarray(false); -    arg_pointer->set_type(GLMessage::DataType::INT); -    arg_pointer->add_intvalue((int)pointer); +    arg_pointer->set_type(GLMessage::DataType::INT64); +    arg_pointer->add_int64value((uintptr_t)pointer);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21758,14 +21758,14 @@ GLbitfield GLTrace_glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) {      // copy argument mantissa      GLMessage_DataType *arg_mantissa = glmsg.add_args();      arg_mantissa->set_isarray(false); -    arg_mantissa->set_type(GLMessage::DataType::INT); -    arg_mantissa->add_intvalue((int)mantissa); +    arg_mantissa->set_type(GLMessage::DataType::INT64); +    arg_mantissa->add_int64value((uintptr_t)mantissa);      // copy argument exponent      GLMessage_DataType *arg_exponent = glmsg.add_args();      arg_exponent->set_isarray(false); -    arg_exponent->set_type(GLMessage::DataType::INT); -    arg_exponent->add_intvalue((int)exponent); +    arg_exponent->set_type(GLMessage::DataType::INT64); +    arg_exponent->add_int64value((uintptr_t)exponent);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21958,8 +21958,8 @@ void GLTrace_glClipPlanefOES(GLenum plane, const GLfloat *equation) {      // copy argument equation      GLMessage_DataType *arg_equation = glmsg.add_args();      arg_equation->set_isarray(false); -    arg_equation->set_type(GLMessage::DataType::INT); -    arg_equation->add_intvalue((int)equation); +    arg_equation->set_type(GLMessage::DataType::INT64); +    arg_equation->add_int64value((uintptr_t)equation);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -21993,8 +21993,8 @@ void GLTrace_glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]) {      // copy argument eqn      GLMessage_DataType *arg_eqn = glmsg.add_args();      arg_eqn->set_isarray(false); -    arg_eqn->set_type(GLMessage::DataType::INT); -    arg_eqn->add_intvalue((int)eqn); +    arg_eqn->set_type(GLMessage::DataType::INT64); +    arg_eqn->add_int64value((uintptr_t)eqn);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22102,8 +22102,8 @@ void GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22183,8 +22183,8 @@ void GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22264,8 +22264,8 @@ void GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22305,8 +22305,8 @@ void GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22346,8 +22346,8 @@ void GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22387,8 +22387,8 @@ void GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) {      // copy argument params      GLMessage_DataType *arg_params = glmsg.add_args();      arg_params->set_isarray(false); -    arg_params->set_type(GLMessage::DataType::INT); -    arg_params->add_intvalue((int)params); +    arg_params->set_type(GLMessage::DataType::INT64); +    arg_params->add_int64value((uintptr_t)params);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22422,8 +22422,8 @@ void GLTrace_glClipPlanefIMG(GLenum p, const GLfloat *eqn) {      // copy argument eqn      GLMessage_DataType *arg_eqn = glmsg.add_args();      arg_eqn->set_isarray(false); -    arg_eqn->set_type(GLMessage::DataType::INT); -    arg_eqn->add_intvalue((int)eqn); +    arg_eqn->set_type(GLMessage::DataType::INT64); +    arg_eqn->add_int64value((uintptr_t)eqn);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -22457,8 +22457,8 @@ void GLTrace_glClipPlanexIMG(GLenum p, const GLfixed *eqn) {      // copy argument eqn      GLMessage_DataType *arg_eqn = glmsg.add_args();      arg_eqn->set_isarray(false); -    arg_eqn->set_type(GLMessage::DataType::INT); -    arg_eqn->add_intvalue((int)eqn); +    arg_eqn->set_type(GLMessage::DataType::INT64); +    arg_eqn->add_int64value((uintptr_t)eqn);      // call function      nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); diff --git a/opengl/libs/GLES_trace/tools/genapi.py b/opengl/libs/GLES_trace/tools/genapi.py index 60686eb7c8..76f7c7808e 100755 --- a/opengl/libs/GLES_trace/tools/genapi.py +++ b/opengl/libs/GLES_trace/tools/genapi.py @@ -25,9 +25,9 @@  #   To generate C++ files, this script uses the 'pyratemp' template  #   module. The only reason to use pyratemp is that it is extremly  #   simple to install: -#   $ wget http://www.simple-is-better.org/template/pyratemp-current/pyratemp.py -#   Put the file in the GLES_trace/tools folder, or update PYTHONPATH -#   to point to wherever it was downloaded. +#   $ wget http://www.simple-is-better.org/template/pyratemp-0.3.2.tgz +#   Extract and put the pyratemp.py file in the GLES_trace/tools folder, +#   or update PYTHONPATH to point to wherever it was downloaded.  #  # USAGE  #   $ cd GLES_trace       - run the program from GLES2_trace folder @@ -44,16 +44,18 @@ class DataType:          self.name = name      def __str__(self): -        if self.name == "pointer":  # pointers map to the INT DataType -            return "INT" +        if self.name == "pointer":  # pointers map to the INT64 DataType +            return "INT64"          return self.name.upper()      def getProtobufCall(self):          if self.name == "void":              raise ValueError("Attempt to set void value")          elif self.name == "char" or self.name == "byte" \ -                or self.name == "pointer" or self.name == "enum": +                or self.name == "enum":              return "add_intvalue((int)" +        elif self.name == "pointer": +            return "add_int64value((uintptr_t)"          elif self.name == "int":              return "add_intvalue("          elif self.name == "float": diff --git a/opengl/tests/hwc/hwcStress.cpp b/opengl/tests/hwc/hwcStress.cpp index 3e8ea8dba6..dfaa6c1202 100644 --- a/opengl/tests/hwc/hwcStress.cpp +++ b/opengl/tests/hwc/hwcStress.cpp @@ -574,8 +574,8 @@ void initFrames(unsigned int seed)          // mod the wMod/hMod value must be equal to 0.          size_t w = (width * maxSizeRatio) * testRandFract();          size_t h = (height * maxSizeRatio) * testRandFract(); -        w = max(1u, w); -        h = max(1u, h); +        w = max(size_t(1u), w); +        h = max(size_t(1u), h);          if ((w % formatPtr->wMod) != 0) {              w += formatPtr->wMod - (w % formatPtr->wMod);          } diff --git a/opengl/tools/glgen/src/JType.java b/opengl/tools/glgen/src/JType.java index b10e7e255d..c6e227e5f3 100644 --- a/opengl/tools/glgen/src/JType.java +++ b/opengl/tools/glgen/src/JType.java @@ -57,8 +57,8 @@ public class JType {      typeMapping.put(new CType("EGLenum"), new JType("int"));      typeMapping.put(new CType("EGLNativePixmapType"), new JType("int"));      typeMapping.put(new CType("EGLNativeWindowType"), new JType("int")); -    typeMapping.put(new CType("EGLNativeDisplayType"), new JType("int")); -    typeMapping.put(new CType("EGLClientBuffer"), new JType("int")); +    typeMapping.put(new CType("EGLNativeDisplayType"), new JType("long")); +    typeMapping.put(new CType("EGLClientBuffer"), new JType("long"));      typeMapping.put(new CType("EGLnsecsANDROID"), new JType("long"));      // EGL nonprimitive types diff --git a/opengl/tools/glgen/src/JniCodeEmitter.java b/opengl/tools/glgen/src/JniCodeEmitter.java index b1bd1fdcf9..e51b7a2841 100644 --- a/opengl/tools/glgen/src/JniCodeEmitter.java +++ b/opengl/tools/glgen/src/JniCodeEmitter.java @@ -1283,7 +1283,7 @@ public class JniCodeEmitter {              for (int i = 0; i < numArgs; i++) {                  String typecast;                  if (i == numArgs - 1 && isPointerOffsetFunc) { -                    typecast = "(GLvoid *)"; +                    typecast = "reinterpret_cast<GLvoid *>";                  } else {                      typecast = "(" + cfunc.getArgType(i).getDeclaration() + ")";                  } @@ -1297,6 +1297,8 @@ public class JniCodeEmitter {                  if (cfunc.getArgType(i).isEGLHandle() &&                      !cfunc.getArgType(i).isPointer()){                      out.print(cfunc.getArgName(i)+"_native"); +                } else if (i == numArgs - 1 && isPointerOffsetFunc){ +                    out.print("("+cfunc.getArgName(i)+")");                  } else {                      out.print(cfunc.getArgName(i));                  } diff --git a/opengl/tools/glgen/static/egl/EGLConfig.java b/opengl/tools/glgen/static/egl/EGLConfig.java index a7a6bbb8c3..9881070dc8 100644 --- a/opengl/tools/glgen/static/egl/EGLConfig.java +++ b/opengl/tools/glgen/static/egl/EGLConfig.java @@ -22,7 +22,7 @@ package android.opengl;   *   */  public class EGLConfig extends EGLObjectHandle { -    private EGLConfig(int handle) { +    private EGLConfig(long handle) {          super(handle);      } @@ -32,6 +32,6 @@ public class EGLConfig extends EGLObjectHandle {          if (!(o instanceof EGLConfig)) return false;          EGLConfig that = (EGLConfig) o; -        return getHandle() == that.getHandle(); +        return getNativeHandle() == that.getNativeHandle();      }  } diff --git a/opengl/tools/glgen/static/egl/EGLContext.java b/opengl/tools/glgen/static/egl/EGLContext.java index c93bd6ea77..f791e7e109 100644 --- a/opengl/tools/glgen/static/egl/EGLContext.java +++ b/opengl/tools/glgen/static/egl/EGLContext.java @@ -22,7 +22,7 @@ package android.opengl;   *   */  public class EGLContext extends EGLObjectHandle { -    private EGLContext(int handle) { +    private EGLContext(long handle) {          super(handle);      } @@ -32,6 +32,6 @@ public class EGLContext extends EGLObjectHandle {          if (!(o instanceof EGLContext)) return false;          EGLContext that = (EGLContext) o; -        return getHandle() == that.getHandle(); +        return getNativeHandle() == that.getNativeHandle();      }  } diff --git a/opengl/tools/glgen/static/egl/EGLDisplay.java b/opengl/tools/glgen/static/egl/EGLDisplay.java index 5b8043a304..e8727617f2 100644 --- a/opengl/tools/glgen/static/egl/EGLDisplay.java +++ b/opengl/tools/glgen/static/egl/EGLDisplay.java @@ -22,7 +22,7 @@ package android.opengl;   *   */  public class EGLDisplay extends EGLObjectHandle { -    private EGLDisplay(int handle) { +    private EGLDisplay(long handle) {          super(handle);      } @@ -32,6 +32,6 @@ public class EGLDisplay extends EGLObjectHandle {          if (!(o instanceof EGLDisplay)) return false;          EGLDisplay that = (EGLDisplay) o; -        return getHandle() == that.getHandle(); +        return getNativeHandle() == that.getNativeHandle();      }  } diff --git a/opengl/tools/glgen/static/egl/EGLObjectHandle.java b/opengl/tools/glgen/static/egl/EGLObjectHandle.java index d2710de473..e6e397602d 100644 --- a/opengl/tools/glgen/static/egl/EGLObjectHandle.java +++ b/opengl/tools/glgen/static/egl/EGLObjectHandle.java @@ -22,12 +22,20 @@ package android.opengl;   *   */  public abstract class EGLObjectHandle { -    private final int mHandle; +    private final long mHandle; +    // TODO Deprecate EGLObjectHandle(int) method      protected EGLObjectHandle(int handle) {          mHandle = handle;      } - +    // TODO Unhide the EGLObjectHandle(long) method +    /** +     * {@hide} +     */ +    protected EGLObjectHandle(long handle) { +        mHandle = handle; +    } +    // TODO Deprecate getHandle() method in favor of getNativeHandle()      /**       * Returns the native handle of the wrapped EGL object. This handle can be       * cast to the corresponding native type on the native side. @@ -37,11 +45,27 @@ public abstract class EGLObjectHandle {       * @return the native handle of the wrapped EGL object.       */      public int getHandle() { -        return mHandle; +        if ((mHandle & 0xffffffffL) != mHandle) { +            throw new UnsupportedOperationException(); +        } +        return (int)mHandle;      } +    // TODO Unhide getNativeHandle() method +    /** +     * {@hide} +     */ +    public long getNativeHandle() { +        return mHandle; +    }      @Override      public int hashCode() { -        return getHandle(); +        /* +         * Based on the algorithm suggested in +         * http://developer.android.com/reference/java/lang/Object.html +         */ +        int result = 17; +        result = 31 * result + (int) (mHandle ^ (mHandle >>> 32)); +        return result;      }  } diff --git a/opengl/tools/glgen/static/egl/EGLSurface.java b/opengl/tools/glgen/static/egl/EGLSurface.java index c379dc9864..c200f7290d 100644 --- a/opengl/tools/glgen/static/egl/EGLSurface.java +++ b/opengl/tools/glgen/static/egl/EGLSurface.java @@ -22,7 +22,7 @@ package android.opengl;   *   */  public class EGLSurface extends EGLObjectHandle { -    private EGLSurface(int handle) { +    private EGLSurface(long handle) {          super(handle);      } @@ -32,6 +32,6 @@ public class EGLSurface extends EGLObjectHandle {          if (!(o instanceof EGLSurface)) return false;          EGLSurface that = (EGLSurface) o; -        return getHandle() == that.getHandle(); +        return getNativeHandle() == that.getNativeHandle();      }  } diff --git a/opengl/tools/glgen/stubs/egl/EGL14cHeader.cpp b/opengl/tools/glgen/stubs/egl/EGL14cHeader.cpp index 54de1e7b7f..a372362f61 100644 --- a/opengl/tools/glgen/stubs/egl/EGL14cHeader.cpp +++ b/opengl/tools/glgen/stubs/egl/EGL14cHeader.cpp @@ -69,22 +69,22 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass)      jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");      eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal); -    egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getHandle", "()I"); -    eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getHandle", "()I"); -    eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getHandle", "()I"); -    eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getHandle", "()I"); +    egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getNativeHandle", "()J"); +    eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getNativeHandle", "()J"); +    eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getNativeHandle", "()J"); +    eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getNativeHandle", "()J"); -    egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(I)V"); -    eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(I)V"); -    eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(I)V"); -    eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(I)V"); +    egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V"); +    eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(J)V"); +    eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V"); +    eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(J)V"); -    jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, (jint)EGL_NO_CONTEXT); +    jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT));      eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject); -    jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, (jint)EGL_NO_DISPLAY); +    jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY));      eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject); -    jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, (jint)EGL_NO_SURFACE); +    jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE));      eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject); @@ -106,7 +106,8 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {                            "Object is set to null.");      } -    return (void*) (_env->CallIntMethod(obj, mid)); +    jlong handle = _env->CallLongMethod(obj, mid); +    return reinterpret_cast<void*>(handle);  }  static jobject @@ -126,7 +127,7 @@ toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void * handle) {             return eglNoSurfaceObject;      } -    return _env->NewObject(cls, con, (jint)handle); +    return _env->NewObject(cls, con, reinterpret_cast<jlong>(handle));  }  // -------------------------------------------------------------------------- diff --git a/opengl/tools/glgen/stubs/egl/EGLExtcHeader.cpp b/opengl/tools/glgen/stubs/egl/EGLExtcHeader.cpp index 5e1ffa101c..b5c19df782 100644 --- a/opengl/tools/glgen/stubs/egl/EGLExtcHeader.cpp +++ b/opengl/tools/glgen/stubs/egl/EGLExtcHeader.cpp @@ -70,22 +70,22 @@ nativeClassInit(JNIEnv *_env, jclass glImplClass)      jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");      eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal); -    egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getHandle", "()I"); -    eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getHandle", "()I"); -    eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getHandle", "()I"); -    eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getHandle", "()I"); +    egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getNativeHandle", "()J"); +    eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getNativeHandle", "()J"); +    eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getNativeHandle", "()J"); +    eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getNativeHandle", "()J"); -    egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(I)V"); -    eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(I)V"); -    eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(I)V"); -    eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(I)V"); +    egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V"); +    eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(J)V"); +    eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V"); +    eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(J)V"); -    jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, (jint)EGL_NO_CONTEXT); +    jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT));      eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject); -    jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, (jint)EGL_NO_DISPLAY); +    jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY));      eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject); -    jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, (jint)EGL_NO_SURFACE); +    jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE));      eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject); @@ -107,7 +107,7 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {                            "Object is set to null.");      } -    return (void*) (_env->CallIntMethod(obj, mid)); +    return reinterpret_cast<void*>(_env->CallLongMethod(obj, mid));  }  static jobject @@ -127,7 +127,7 @@ toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void * handle) {             return eglNoSurfaceObject;      } -    return _env->NewObject(cls, con, (jint)handle); +    return _env->NewObject(cls, con, reinterpret_cast<jlong>(handle));  }  // -------------------------------------------------------------------------- diff --git a/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.cpp b/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.cpp new file mode 100755 index 0000000000..f09c17161c --- /dev/null +++ b/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.cpp @@ -0,0 +1,74 @@ +/* EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) */ +static jobject +android_eglCreatePbufferFromClientBuffer +  (JNIEnv *_env, jobject _this, jobject dpy, jint buftype, jlong buffer, jobject config, jintArray attrib_list_ref, jint offset) { +    jint _exception = 0; +    const char * _exceptionType = NULL; +    const char * _exceptionMessage = NULL; +    EGLSurface _returnValue = (EGLSurface) 0; +    EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy); +    EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config); +    bool attrib_list_sentinel = false; +    EGLint *attrib_list_base = (EGLint *) 0; +    jint _remaining; +    EGLint *attrib_list = (EGLint *) 0; + +    if (!attrib_list_ref) { +        _exception = 1; +        _exceptionType = "java/lang/IllegalArgumentException"; +        _exceptionMessage = "attrib_list == null"; +        goto exit; +    } +    if (offset < 0) { +        _exception = 1; +        _exceptionType = "java/lang/IllegalArgumentException"; +        _exceptionMessage = "offset < 0"; +        goto exit; +    } +    _remaining = _env->GetArrayLength(attrib_list_ref) - offset; +    attrib_list_base = (EGLint *) +        _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0); +    attrib_list = attrib_list_base + offset; +    attrib_list_sentinel = false; +    for (int i = _remaining - 1; i >= 0; i--)  { +        if (attrib_list[i] == EGL_NONE){ +            attrib_list_sentinel = true; +            break; +        } +    } +    if (attrib_list_sentinel == false) { +        _exception = 1; +        _exceptionType = "java/lang/IllegalArgumentException"; +        _exceptionMessage = "attrib_list must contain EGL_NONE!"; +        goto exit; +    } + +    _returnValue = eglCreatePbufferFromClientBuffer( +        (EGLDisplay)dpy_native, +        (EGLenum)buftype, +        reinterpret_cast<EGLClientBuffer>(buffer), +        (EGLConfig)config_native, +        (EGLint *)attrib_list +    ); + +exit: +    if (attrib_list_base) { +        _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base, +            JNI_ABORT); +    } +    if (_exception) { +        jniThrowException(_env, _exceptionType, _exceptionMessage); +    } +    return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue); +} + +static jobject +android_eglCreatePbufferFromClientBufferInt +  (JNIEnv *_env, jobject _this, jobject dpy, jint buftype, jint buffer, jobject config, jintArray attrib_list_ref, jint offset) { +    if(sizeof(void*) != sizeof(uint32_t)) { +        jniThrowException(_env, "java/lang/UnsupportedOperationException", "eglCreatePbufferFromClientBuffer"); +        return 0; +    } +    return android_eglCreatePbufferFromClientBuffer(_env, _this, dpy, buftype, buffer, config, attrib_list_ref, offset); +} + diff --git a/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.java b/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.java new file mode 100755 index 0000000000..c2ed1d7c23 --- /dev/null +++ b/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.java @@ -0,0 +1,23 @@ +    // C function EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) +    // TODO Deprecate the below method +    public static native EGLSurface eglCreatePbufferFromClientBuffer( +        EGLDisplay dpy, +        int buftype, +        int buffer, +        EGLConfig config, +        int[] attrib_list, +        int offset +    ); +    // TODO Unhide the below method +    /** +     * {@hide} +     */ +    public static native EGLSurface eglCreatePbufferFromClientBuffer( +        EGLDisplay dpy, +        int buftype, +        long buffer, +        EGLConfig config, +        int[] attrib_list, +        int offset +    ); + diff --git a/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.nativeReg b/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.nativeReg new file mode 100755 index 0000000000..477e625558 --- /dev/null +++ b/opengl/tools/glgen/stubs/egl/eglCreatePbufferFromClientBuffer.nativeReg @@ -0,0 +1,2 @@ +{"eglCreatePbufferFromClientBuffer", "(Landroid/opengl/EGLDisplay;IILandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferFromClientBufferInt },
 +{"eglCreatePbufferFromClientBuffer", "(Landroid/opengl/EGLDisplay;IJLandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferFromClientBuffer },
\ No newline at end of file diff --git a/opengl/tools/glgen/stubs/egl/eglCreateWindowSurface.cpp b/opengl/tools/glgen/stubs/egl/eglCreateWindowSurface.cpp index 0cfd8863d3..0b6bf581e1 100644 --- a/opengl/tools/glgen/stubs/egl/eglCreateWindowSurface.cpp +++ b/opengl/tools/glgen/stubs/egl/eglCreateWindowSurface.cpp @@ -116,7 +116,7 @@ not_valid_surface:      if (producer == NULL)          goto not_valid_surface; -    window = new android::Surface(producer); +    window = new android::Surface(producer, true);      if (window == NULL)          goto not_valid_surface; diff --git a/opengl/tools/glgen/stubs/egl/eglGetDisplay.cpp b/opengl/tools/glgen/stubs/egl/eglGetDisplay.cpp new file mode 100755 index 0000000000..003efd3e16 --- /dev/null +++ b/opengl/tools/glgen/stubs/egl/eglGetDisplay.cpp @@ -0,0 +1,23 @@ +/* EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */ +static jobject +android_eglGetDisplay +  (JNIEnv *_env, jobject _this, jlong display_id) { +    EGLDisplay _returnValue = (EGLDisplay) 0; +    _returnValue = eglGetDisplay( +        reinterpret_cast<EGLNativeDisplayType>(display_id) +    ); +    return toEGLHandle(_env, egldisplayClass, egldisplayConstructor, _returnValue); +} + +/* EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */ +static jobject +android_eglGetDisplayInt +  (JNIEnv *_env, jobject _this, jint display_id) { + +    if ((EGLNativeDisplayType)display_id != EGL_DEFAULT_DISPLAY) { +        jniThrowException(_env, "java/lang/UnsupportedOperationException", "eglGetDisplay"); +        return 0; +    } +    return android_eglGetDisplay(_env, _this, display_id); +} + diff --git a/opengl/tools/glgen/stubs/egl/eglGetDisplay.java b/opengl/tools/glgen/stubs/egl/eglGetDisplay.java new file mode 100755 index 0000000000..7532abf3a1 --- /dev/null +++ b/opengl/tools/glgen/stubs/egl/eglGetDisplay.java @@ -0,0 +1,13 @@ +    // C function EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) + +    public static native EGLDisplay eglGetDisplay( +        int display_id +    ); + +    /** +     * {@hide} +     */ +    public static native EGLDisplay eglGetDisplay( +        long display_id +    ); + diff --git a/opengl/tools/glgen/stubs/egl/eglGetDisplay.nativeReg b/opengl/tools/glgen/stubs/egl/eglGetDisplay.nativeReg new file mode 100755 index 0000000000..acfbb1af73 --- /dev/null +++ b/opengl/tools/glgen/stubs/egl/eglGetDisplay.nativeReg @@ -0,0 +1,2 @@ +{"eglGetDisplay", "(I)Landroid/opengl/EGLDisplay;", (void *) android_eglGetDisplayInt }, +{"eglGetDisplay", "(J)Landroid/opengl/EGLDisplay;", (void *) android_eglGetDisplay },
\ No newline at end of file diff --git a/opengl/tools/glgen/stubs/gles11/common.cpp b/opengl/tools/glgen/stubs/gles11/common.cpp index 75b75cb7d1..c5a7a244b2 100644 --- a/opengl/tools/glgen/stubs/gles11/common.cpp +++ b/opengl/tools/glgen/stubs/gles11/common.cpp @@ -89,7 +89,7 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *o              getBasePointerID, buffer);      if (pointer != 0L) {          *array = NULL; -        return (void *) (jint) pointer; +        return reinterpret_cast<void*>(pointer);      }      *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, diff --git a/opengl/tools/glgen/stubs/gles11/glGetActiveAttrib.cpp b/opengl/tools/glgen/stubs/gles11/glGetActiveAttrib.cpp index 27b91fc566..7d414d8f35 100644 --- a/opengl/tools/glgen/stubs/gles11/glGetActiveAttrib.cpp +++ b/opengl/tools/glgen/stubs/gles11/glGetActiveAttrib.cpp @@ -157,7 +157,7 @@ android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_ni          (GLsizei *)length,          (GLint *)size,          (GLenum *)type, -        (char *)name +        reinterpret_cast<char *>(name)      );      if (_typeArray) {          releasePointer(_env, _typeArray, type, JNI_TRUE); diff --git a/opengl/tools/glgen/stubs/gles11/glGetActiveUniform.cpp b/opengl/tools/glgen/stubs/gles11/glGetActiveUniform.cpp index 58f704c170..a7376ba90c 100644 --- a/opengl/tools/glgen/stubs/gles11/glGetActiveUniform.cpp +++ b/opengl/tools/glgen/stubs/gles11/glGetActiveUniform.cpp @@ -157,7 +157,7 @@ android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_n          (GLsizei *)length,          (GLint *)size,          (GLenum *)type, -        (char *)name +        reinterpret_cast<char *>(name)      );      if (_typeArray) {          releasePointer(_env, _typeArray, type, JNI_TRUE); diff --git a/opengl/tools/glgen/stubs/gles11/glGetShaderSource.cpp b/opengl/tools/glgen/stubs/gles11/glGetShaderSource.cpp index a7e1cd25eb..c995d9cef3 100644 --- a/opengl/tools/glgen/stubs/gles11/glGetShaderSource.cpp +++ b/opengl/tools/glgen/stubs/gles11/glGetShaderSource.cpp @@ -85,7 +85,7 @@ android_glGetShaderSource__IILjava_nio_IntBuffer_2B          (GLuint)shader,          (GLsizei)bufsize,          (GLsizei *)length, -        (char *)source +        reinterpret_cast<char *>(source)      );      if (_array) {          releasePointer(_env, _array, length, JNI_TRUE); diff --git a/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp b/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp index cc10336049..df11c53423 100644 --- a/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp +++ b/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp @@ -128,7 +128,7 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *o              getBasePointerID, buffer);      if (pointer != 0L) {          *array = NULL; -        return (void *) (jint) pointer; +        return reinterpret_cast<void *>(pointer);      }      *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, @@ -182,7 +182,7 @@ getDirectBufferPointer(JNIEnv *_env, jobject buffer) {              if (array) {                  releasePointer(_env, array, buf, 0);              } -            buf = buf + offset; +            buf = (char*)buf + offset;          } else {              jniThrowException(_env, "java/lang/IllegalArgumentException",                                "Must use a native order direct Buffer"); diff --git a/services/surfaceflinger/Android.mk b/services/surfaceflinger/Android.mk index b2bc550c9e..49a017f0fc 100644 --- a/services/surfaceflinger/Android.mk +++ b/services/surfaceflinger/Android.mk @@ -120,6 +120,10 @@ LOCAL_SHARED_LIBRARIES := \  LOCAL_MODULE:= surfaceflinger +ifdef TARGET_32_BIT_SURFACEFLINGER +LOCAL_32_BIT_ONLY := true +endif +  include $(BUILD_EXECUTABLE)  ############################################################### diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp index 0d0f98d899..1319debf0a 100644 --- a/services/surfaceflinger/DisplayDevice.cpp +++ b/services/surfaceflinger/DisplayDevice.cpp @@ -77,16 +77,6 @@ DisplayDevice::DisplayDevice(      mNativeWindow = new Surface(producer, false);      ANativeWindow* const window = mNativeWindow.get(); -    // Make sure that composition can never be stalled by a virtual display -    // consumer that isn't processing buffers fast enough. We have to do this -    // in two places: -    // * Here, in case the display is composed entirely by HWC. -    // * In makeCurrent(), using eglSwapInterval. Some EGL drivers set the -    //   window's swap interval in eglMakeCurrent, so they'll override the -    //   interval we set here. -    if (mType >= DisplayDevice::DISPLAY_VIRTUAL) -        window->setSwapInterval(window, 0); -      /*       * Create our display's surface       */ @@ -101,6 +91,16 @@ DisplayDevice::DisplayDevice(      eglQuerySurface(display, surface, EGL_WIDTH,  &mDisplayWidth);      eglQuerySurface(display, surface, EGL_HEIGHT, &mDisplayHeight); +    // Make sure that composition can never be stalled by a virtual display +    // consumer that isn't processing buffers fast enough. We have to do this +    // in two places: +    // * Here, in case the display is composed entirely by HWC. +    // * In makeCurrent(), using eglSwapInterval. Some EGL drivers set the +    //   window's swap interval in eglMakeCurrent, so they'll override the +    //   interval we set here. +    if (mType >= DisplayDevice::DISPLAY_VIRTUAL) +        window->setSwapInterval(window, 0); +      mDisplay = display;      mSurface = surface;      mFormat  = format;  |