~ubuntu-branches/ubuntu/vivid/mozjs24/vivid

« back to all changes in this revision

Viewing changes to js/src/ctypes/libffi/testsuite/libffi.call/cls_sshort.c

  • Committer: Package Import Robot
  • Author(s): Tim Lunn
  • Date: 2014-02-11 21:55:34 UTC
  • Revision ID: package-import@ubuntu.com-20140211215534-m1zyq5aj59md3y07
Tags: upstream-24.2.0
ImportĀ upstreamĀ versionĀ 24.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Area:        closure_call
 
2
   Purpose:     Check return value sshort.
 
3
   Limitations: none.
 
4
   PR:          none.
 
5
   Originator:  <andreast@gcc.gnu.org> 20031108  */
 
6
 
 
7
/* { dg-do run } */
 
8
#include "ffitest.h"
 
9
 
 
10
static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
 
11
                              void* userdata __UNUSED__)
 
12
{
 
13
  *(ffi_arg*)resp = *(signed short *)args[0];
 
14
  printf("%d: %d\n",*(signed short *)args[0],
 
15
         (int)*(ffi_arg *)(resp));
 
16
}
 
17
typedef signed short (*cls_ret_sshort)(signed short);
 
18
 
 
19
int main (void)
 
20
{
 
21
  ffi_cif cif;
 
22
  void *code;
 
23
  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
 
24
  ffi_type * cl_arg_types[2];
 
25
  signed short res;
 
26
 
 
27
  cl_arg_types[0] = &ffi_type_sshort;
 
28
  cl_arg_types[1] = NULL;
 
29
 
 
30
  /* Initialize the cif */
 
31
  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
 
32
                     &ffi_type_sshort, cl_arg_types) == FFI_OK);
 
33
 
 
34
  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_sshort_fn, NULL, code)  == FFI_OK);
 
35
 
 
36
  res = (*((cls_ret_sshort)code))(255);
 
37
  /* { dg-output "255: 255" } */
 
38
  printf("res: %d\n",res);
 
39
  /* { dg-output "\nres: 255" } */
 
40
 
 
41
  exit(0);
 
42
}