]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Introduce a new type, PtrdiffT. Replace lots of uses of OffT (all those
authorNicholas Nethercote <njn@valgrind.org>
Thu, 15 Jan 2009 21:29:24 +0000 (21:29 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Thu, 15 Jan 2009 21:29:24 +0000 (21:29 +0000)
that are memory offsets) with PtrdiffT;  OffT should only be used for file
sizes and offsets.

Change Off64T from a ULong to a Long, as it should be.  Replace some uses
of ULong in the address space manager with Off64T to match.

Also add a comment explaining the meanings of the basic types like Addr,
OffT, SizeT, etc.

Also fix the prototype for VG_(pread) -- the last arg is an OffT, not an
Int.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8959

31 files changed:
callgrind/bb.c
callgrind/global.h
coregrind/m_aspacemgr/aspacemgr-aix5.c
coregrind/m_aspacemgr/aspacemgr-linux.c
coregrind/m_debuginfo/debuginfo.c
coregrind/m_debuginfo/priv_readstabs.h
coregrind/m_debuginfo/priv_storage.h
coregrind/m_debuginfo/priv_tytypes.h
coregrind/m_debuginfo/readdwarf3.c
coregrind/m_debuginfo/readelf.c
coregrind/m_debuginfo/readstabs.c
coregrind/m_debuginfo/tytypes.c
coregrind/m_libcfile.c
coregrind/m_machine.c
coregrind/m_oset.c
coregrind/m_syswrap/priv_syswrap-generic.h
coregrind/m_tooliface.c
coregrind/pub_core_libcfile.h
coregrind/pub_core_tooliface.h
drd/drd_error.h
exp-ptrcheck/h_main.c
exp-ptrcheck/h_main.h
exp-ptrcheck/pc_common.c
include/pub_tool_aspacemgr.h
include/pub_tool_basics.h
include/pub_tool_debuginfo.h
include/pub_tool_machine.h
include/pub_tool_oset.h
include/pub_tool_tooliface.h
memcheck/mc_errors.c
memcheck/mc_main.c

index 7939caed5734305324e57f281336e80c293e6248..8df3539ba633c5792f82775d76d7f9d0bcd53d90 100644 (file)
@@ -57,7 +57,7 @@ bb_hash* CLG_(get_bb_hash)()
  * - BB base as object file offset
  */
 static __inline__
-UInt bb_hash_idx(obj_node* obj, OffT offset, UInt size)
+UInt bb_hash_idx(obj_node* obj, PtrdiffT offset, UInt size)
 {
   return (((Addr)obj) + offset) % size;
 }
@@ -118,7 +118,7 @@ void resize_bb_table(void)
  * Not initialized:
  * - instr_len, cost_count, instr[]
  */
-static BB* new_bb(obj_node* obj, OffT offset,
+static BB* new_bb(obj_node* obj, PtrdiffT offset,
                  UInt instr_count, UInt cjmp_count, Bool cjmp_inverted)
 {
    BB* new;
@@ -176,7 +176,7 @@ static BB* new_bb(obj_node* obj, OffT offset,
 
 /* get the BB structure for a BB start address */
 static __inline__
-BB* lookup_bb(obj_node* obj, OffT offset)
+BB* lookup_bb(obj_node* obj, PtrdiffT offset)
 {
     BB* bb;
     Int idx;
@@ -199,7 +199,7 @@ obj_node* obj_of_address(Addr addr)
 {
   obj_node* obj;
   DebugInfo* di;
-  OffT offset;
+  PtrdiffT offset;
 
   di = VG_(find_seginfo)(addr);
   obj = CLG_(get_obj_node)( di );
@@ -292,7 +292,7 @@ void CLG_(delete_bb)(Addr addr)
     Int idx, size;
 
     obj_node* obj = obj_of_address(addr);
-    OffT offset = addr - obj->offset;
+    PtrdiffT offset = addr - obj->offset;
 
     idx = bb_hash_idx(obj, offset, bbs.size);
     bb = bbs.table[idx];
index b6a03343543cc24ca7e1f3a959119d52c062d5cf..926e85881eec57eeb666fe6e4fb5bed33097cde9 100644 (file)
@@ -304,7 +304,7 @@ struct _CJmpInfo {
  */
 struct _BB {
   obj_node*  obj;         /* ELF object of BB */
-  OffT       offset;      /* offset of BB in ELF object file */
+  PtrdiffT   offset;      /* offset of BB in ELF object file */
   BB*        next;       /* chaining for a hash entry */
 
   VgSectKind sect_kind;  /* section of this BB, e.g. PLT */
@@ -463,7 +463,7 @@ struct _obj_node {
 
    Addr       start;  /* Start address of text segment mapping */
    SizeT      size;   /* Length of mapping */
-   OffT       offset; /* Offset between symbol address and file offset */
+   PtrdiffT   offset; /* Offset between symbol address and file offset */
 
    file_node* files[N_FILE_ENTRIES];
    UInt       number;
index e0b7312c0c768fda0506d60e063f22f43b84f208..d862c85d2e8aa221af17e9c6bd27f1d29b91b055 100644 (file)
@@ -162,7 +162,7 @@ typedef
       Bool   fromP;     // AnonC, AnonV only: originated from PreAlloc?
       UChar* fname;     // MText, FileV only: filename
       UChar* mname;     // MText only: member name if present
-      ULong  offset;    // FileV only: file offset
+      Off64T offset;    // FileV only: file offset
    }
    AixSegment;
 
index 38c11f7ba51d389f62b81d37ce995b8baf2569dd..da388aa97575eee201bd0680f2c71318397f1bc4 100644 (file)
@@ -330,7 +330,7 @@ static Int  find_nsegment_idx ( Addr a );
 
 static void parse_procselfmaps (
       void (*record_mapping)( Addr addr, SizeT len, UInt prot,
-                              ULong dev, ULong ino, ULong offset, 
+                              ULong dev, ULong ino, Off64T offset, 
                               const UChar* filename ),
       void (*record_gap)( Addr addr, SizeT len )
    );
@@ -498,7 +498,7 @@ static void __attribute__ ((unused))
 
    VG_(debugLog)(logLevel, "aspacem",
       "NSegment{%s, start=0x%llx, end=0x%llx, smode=%s, dev=%llu, "
-      "ino=%llu, offset=%llu, fnIdx=%d, hasR=%d, hasW=%d, hasX=%d, "
+      "ino=%llu, offset=%lld, fnIdx=%d, hasR=%d, hasW=%d, hasX=%d, "
       "hasT=%d, mark=%d, name=\"%s\"}\n",
       show_SegKind(seg->kind),
       (ULong)seg->start,
@@ -553,7 +553,7 @@ static void show_nsegment ( Int logLevel, Int segNo, NSegment* seg )
             seg->hasR ? 'r' : '-', seg->hasW ? 'w' : '-', 
             seg->hasX ? 'x' : '-', seg->hasT ? 'T' : '-', 
             seg->isCH ? 'H' : '-',
-            seg->dev, seg->ino, (Long)seg->offset, seg->fnIdx
+            seg->dev, seg->ino, seg->offset, seg->fnIdx
          );
          break;
 
@@ -872,7 +872,7 @@ static Bool preen_nsegments ( void )
 static Bool sync_check_ok = False;
 
 static void sync_check_mapping_callback ( Addr addr, SizeT len, UInt prot,
-                                          ULong dev, ULong ino, ULong offset, 
+                                          ULong dev, ULong ino, Off64T offset, 
                                           const UChar* filename )
 {
    Int  iLo, iHi, i;
@@ -1527,7 +1527,7 @@ static void init_resvn ( /*OUT*/NSegment* seg, Addr start, Addr end )
 /*-----------------------------------------------------------------*/
 
 static void read_maps_callback ( Addr addr, SizeT len, UInt prot,
-                                 ULong dev, ULong ino, ULong offset, 
+                                 ULong dev, ULong ino, Off64T offset, 
                                  const UChar* filename )
 {
    NSegment seg;
@@ -3060,7 +3060,7 @@ static void read_procselfmaps_into_buf ( void )
 */
 static void parse_procselfmaps (
       void (*record_mapping)( Addr addr, SizeT len, UInt prot,
-                              ULong dev, ULong ino, ULong offset, 
+                              ULong dev, ULong ino, Off64T offset, 
                               const UChar* filename ),
       void (*record_gap)( Addr addr, SizeT len )
    )
index f244f0255de2081adbe601acf975d51df1a8bee9..a521a0ee74e686422e2210f70d44d828f63142c7 100644 (file)
@@ -1088,11 +1088,11 @@ static void search_all_loctabs ( Addr ptr, /*OUT*/DebugInfo** pdi,
 static
 Bool get_sym_name ( Bool demangle, Addr a, Char* buf, Int nbuf,
                     Bool match_anywhere_in_sym, Bool show_offset,
-                    Bool findText, /*OUT*/OffT* offsetP )
+                    Bool findText, /*OUT*/PtrdiffT* offsetP )
 {
    DebugInfo* di;
    Word       sno;
-   Int        offset;
+   PtrdiffT   offset;
 
    search_all_symtabs ( a, &di, &sno, match_anywhere_in_sym, findText );
    if (di == NULL) 
@@ -1105,7 +1105,7 @@ Bool get_sym_name ( Bool demangle, Addr a, Char* buf, Int nbuf,
    }
 
    offset = a - di->symtab[sno].addr;
-   if (offsetP) *offsetP = (OffT)offset;
+   if (offsetP) *offsetP = offset;
 
    if (show_offset && offset != 0) {
       Char     buf2[12];
@@ -1113,7 +1113,7 @@ Bool get_sym_name ( Bool demangle, Addr a, Char* buf, Int nbuf,
       Char*    end = buf + nbuf;
       Int      len;
 
-      len = VG_(sprintf)(buf2, "%c%d",
+      len = VG_(sprintf)(buf2, "%c%ld",
                         offset < 0 ? '-' : '+',
                         offset < 0 ? -offset : offset);
       vg_assert(len < (Int)sizeof(buf2));
@@ -1221,7 +1221,7 @@ Bool VG_(get_fnname_Z_demangle_only) ( Addr a, Char* buf, Int nbuf )
    from the symbol start is put into *offset. */
 Bool VG_(get_datasym_and_offset)( Addr data_addr,
                                   /*OUT*/Char* dname, Int n_dname,
-                                  /*OUT*/OffT* offset )
+                                  /*OUT*/PtrdiffT* offset )
 {
    Bool ok;
    vg_assert(n_dname > 1);
@@ -1923,7 +1923,7 @@ Bool VG_(use_CF_info) ( /*MOD*/Addr* ipP,
    offset of data_addr from the start of the variable.  Note that
    regs, which supplies ip,sp,fp values, will be NULL for global
    variables, and non-NULL for local variables. */
-static Bool data_address_is_in_var ( /*OUT*/UWord* offset,
+static Bool data_address_is_in_var ( /*OUT*/PtrdiffT* offset,
                                      XArray* /* TyEnt */ tyents,
                                      DiVariable*   var,
                                      RegSummary*   regs,
@@ -1993,8 +1993,8 @@ static void format_message ( /*OUT*/Char* dname1,
                              Int      n_dname,
                              Addr     data_addr,
                              DiVariable* var,
-                             OffT     var_offset,
-                             OffT     residual_offset,
+                             PtrdiffT var_offset,
+                             PtrdiffT residual_offset,
                              XArray* /*UChar*/ described,
                              Int      frameNo, 
                              ThreadId tid )
@@ -2237,14 +2237,14 @@ Bool consider_vars_in_frame ( /*OUT*/Char* dname1,
                    && VG_(sizeXA)(vars) > 0) );
       for (j = 0; j < VG_(sizeXA)( vars ); j++) {
          DiVariable* var = (DiVariable*)VG_(indexXA)( vars, j );
-         SizeT       offset;
+         PtrdiffT    offset;
          if (debug)
             VG_(printf)("QQQQ:    var:name=%s %#lx-%#lx %#lx\n",
                         var->name,arange->aMin,arange->aMax,ip);
          if (data_address_is_in_var( &offset, di->admin_tyents,
                                      var, &regs,
                                      data_addr, di->data_bias )) {
-            OffT residual_offset = 0;
+            PtrdiffT residual_offset = 0;
             XArray* described = ML_(describe_type)( &residual_offset,
                                                     di->admin_tyents, 
                                                     var->typeR, offset );
@@ -2331,7 +2331,7 @@ Bool VG_(get_data_description)( /*OUT*/Char* dname1,
          of any of them bracket data_addr. */
       vars = global_arange->vars;
       for (i = 0; i < VG_(sizeXA)( vars ); i++) {
-         SizeT offset;
+         PtrdiffT offset;
          DiVariable* var = (DiVariable*)VG_(indexXA)( vars, i );
          vg_assert(var->name);
          /* Note we use a NULL RegSummary* here.  It can't make any
@@ -2343,7 +2343,7 @@ Bool VG_(get_data_description)( /*OUT*/Char* dname1,
          if (data_address_is_in_var( &offset, di->admin_tyents, var, 
                                      NULL/* RegSummary* */, 
                                      data_addr, di->data_bias )) {
-            OffT residual_offset = 0;
+            PtrdiffT residual_offset = 0;
             XArray* described = ML_(describe_type)( &residual_offset,
                                                     di->admin_tyents,
                                                     var->typeR, offset );
@@ -2896,7 +2896,7 @@ const UChar* VG_(seginfo_filename)(const DebugInfo* di)
    return di->filename;
 }
 
-ULong VG_(seginfo_get_text_bias)(const DebugInfo* di)
+PtrdiffT VG_(seginfo_get_text_bias)(const DebugInfo* di)
 {
    return di->text_present ? di->text_bias : 0;
 }
index c2d53876f07fdc9b740d901e09aa52ff39bc3dcf..3028099f5e006bf7785d9d932ea5326e60be57a0 100644 (file)
@@ -41,7 +41,7 @@
    Stabs reader
    -------------------- */
 extern
-void ML_(read_debuginfo_stabs) ( struct _DebugInfo* di, OffT debug_offset,
+void ML_(read_debuginfo_stabs) ( struct _DebugInfo* di, PtrdiffT debug_offset,
                                  UChar* stabC,   Int stab_sz,
                                  UChar* stabstr, Int stabstr_sz );
 
index eb174600855ff438c86e13cb15e555e8b20a4871..5088aff429b2447304cbab7ab983e542f4751a27 100644 (file)
@@ -349,29 +349,29 @@ struct _DebugInfo {
       (4) is ensured by canonicaliseCFI.
    */
    /* .text */
-   Bool   text_present;
-   Addr   text_avma;
-   Addr   text_svma;
-   SizeT  text_size;
-   OffT   text_bias;
+   Bool     text_present;
+   Addr     text_avma;
+   Addr     text_svma;
+   SizeT    text_size;
+   PtrdiffT text_bias;
    /* .data */
-   Bool   data_present;
-   Addr   data_svma;
-   Addr   data_avma;
-   SizeT  data_size;
-   OffT   data_bias;
+   Bool     data_present;
+   Addr     data_svma;
+   Addr     data_avma;
+   SizeT    data_size;
+   PtrdiffT data_bias;
    /* .sdata */
-   Bool   sdata_present;
-   Addr   sdata_svma;
-   Addr   sdata_avma;
-   SizeT  sdata_size;
-   OffT   sdata_bias;
+   Bool     sdata_present;
+   Addr     sdata_svma;
+   Addr     sdata_avma;
+   SizeT    sdata_size;
+   PtrdiffT sdata_bias;
    /* .bss */
-   Bool   bss_present;
-   Addr   bss_svma;
-   Addr   bss_avma;
-   SizeT  bss_size;
-   OffT   bss_bias;
+   Bool     bss_present;
+   Addr     bss_svma;
+   Addr     bss_avma;
+   SizeT    bss_size;
+   PtrdiffT bss_bias;
    /* .plt */
    Bool   plt_present;
    Addr          plt_avma;
index 4b6f3e8616b3930f6dea5f7bac65abc8430f99ed..1906418f4c006aa60b302672956331fc526d0564 100644 (file)
@@ -166,10 +166,10 @@ MaybeULong ML_(sizeOfType)( XArray* /* of TyEnt */ tyents,
 
 /* Describe where in the type 'offset' falls.  Caller must
    deallocate the resulting XArray. */
-XArray* /*UChar*/ ML_(describe_type)( /*OUT*/OffT* residual_offset,
+XArray* /*UChar*/ ML_(describe_type)( /*OUT*/PtrdiffT* residual_offset,
                                       XArray* /* of TyEnt */ tyents,
                                       UWord ty_cuOff, 
-                                      OffT offset );
+                                      PtrdiffT offset );
 
 
 /* A fast-lookup cache for ML_(TyEnts__index_by_cuOff).  Nothing
index 48e8dbe68ed61d785b7133a1f4c1625697b63681..98a9d3378a8026f22770abfa5611aa219db620d0 100644 (file)
@@ -524,9 +524,9 @@ typedef
 typedef
    struct {
       /* FIXED */
-      Addr  rx_map_avma;
-      SizeT rx_map_size;
-      OffT  text_bias;
+      Addr     rx_map_avma;
+      SizeT    rx_map_size;
+      PtrdiffT text_bias;
       /* VARIABLE -- count stats */
       UWord n_straightforward_biasings;
       UWord n_kludgey_biasings;
index b5e6be4a1671b9b9ecad6f3c73f36889a2ea9531..ebb661565e1689dfc6ca094fc8d9555c4085fd7f 100644 (file)
@@ -206,7 +206,7 @@ Bool get_elf_symbol_info (
         Char*      sym_name,   /* name */
         Addr       sym_svma,   /* address as stated in the object file */
         UChar*     opd_img,    /* oimage of .opd sec (ppc64-linux only) */
-        OffT       opd_bias,   /* for biasing AVMAs found in .opd */
+        PtrdiffT   opd_bias,   /* for biasing AVMAs found in .opd */
         /* OUTPUTS */
         Char** sym_name_out,   /* name we should record */
         Addr*  sym_avma_out,   /* addr we should record */
index 20b886930a155f75fb06dd6d5168739de52a1be8..85a779fe35776f584cc39314fce49c8175d7a882 100644 (file)
@@ -80,7 +80,7 @@ typedef enum { N_UNDEF = 0,   /* undefined symbol, new stringtab  */
 /* Read stabs-format debug info.  This is all rather horrible because
    stabs is a underspecified, kludgy hack.
 */
-void ML_(read_debuginfo_stabs) ( DebugInfo* di,  OffT debug_offset,
+void ML_(read_debuginfo_stabs) ( DebugInfo* di,  PtrdiffT debug_offset,
                                  UChar* stabC,   Int stab_sz, 
                                  UChar* stabstr, Int stabstr_sz )
 {
index ad80691f7c08d7d69ddffc0abe624a9f21235b99..cfd850b4c6f5385b5124da7601b29448eab0396e 100644 (file)
@@ -702,10 +702,10 @@ static void copy_UWord_into_XA ( XArray* /* of UChar */ xa,
    VG_(addBytesToXA)( xa, buf, VG_(strlen)(buf));
 }
 
-XArray* /*UChar*/ ML_(describe_type)( /*OUT*/OffT* residual_offset,
+XArray* /*UChar*/ ML_(describe_type)( /*OUT*/PtrdiffT* residual_offset,
                                       XArray* /* of TyEnt */ tyents,
                                       UWord ty_cuOff, 
-                                      OffT offset )
+                                      PtrdiffT offset )
 {
    TyEnt*  ty;
    XArray* xa = VG_(newXA)( ML_(dinfo_zalloc), "di.tytypes.dt.1",
@@ -737,7 +737,7 @@ XArray* /*UChar*/ ML_(describe_type)( /*OUT*/OffT* residual_offset,
             XArray*    fieldRs;
             UWord      fieldR;
             TyEnt*     field = NULL;
-            OffT       offMin = 0, offMax1 = 0;
+            PtrdiffT   offMin = 0, offMax1 = 0;
             if (!ty->Te.TyStOrUn.isStruct) goto done;
             fieldRs = ty->Te.TyStOrUn.fieldRs;
             if ((!fieldRs) || VG_(sizeXA)(fieldRs) == 0) goto done;
@@ -771,7 +771,7 @@ XArray* /*UChar*/ ML_(describe_type)( /*OUT*/OffT* residual_offset,
                if (mul.b != True)
                   goto done; /* size of field is unknown (?!) */
                offMin  = res.word;
-               offMax1 = offMin + (OffT)mul.ul;
+               offMax1 = offMin + (PtrdiffT)mul.ul;
                if (offMin == offMax1)
                   continue;
                vg_assert(offMin < offMax1);
index 79e27001fdbe3cd0fb1789356dd28810f652d5ab..bef8b86410dca308afe99a7fa55f5f5773c7c0dd 100644 (file)
@@ -470,7 +470,7 @@ Int VG_(check_executable)(/*OUT*/Bool* is_setuid,
    return 0;
 }
 
-SysRes VG_(pread) ( Int fd, void* buf, Int count, Int offset )
+SysRes VG_(pread) ( Int fd, void* buf, Int count, OffT offset )
 {
    OffT off = VG_(lseek)( fd, (OffT)offset, VKI_SEEK_SET);
    if (off < 0)
index b4b92f75efb2a927518fd63cc75be122eec70a99..cc1d63bc98f845805e4d60d10016211e06b1f689 100644 (file)
@@ -107,7 +107,7 @@ void VG_(set_syscall_return_shadows) ( ThreadId tid,
 void
 VG_(get_shadow_regs_area) ( ThreadId tid, 
                             /*DST*/UChar* dst,
-                            /*SRC*/Int shadowNo, OffT offset, SizeT size )
+                            /*SRC*/Int shadowNo, PtrdiffT offset, SizeT size )
 {
    void*        src;
    ThreadState* tst;
@@ -130,7 +130,7 @@ VG_(get_shadow_regs_area) ( ThreadId tid,
 
 void
 VG_(set_shadow_regs_area) ( ThreadId tid, 
-                            /*DST*/Int shadowNo, OffT offset, SizeT size,
+                            /*DST*/Int shadowNo, PtrdiffT offset, SizeT size,
                             /*SRC*/const UChar* src )
 {
    void*        dst;
index b213597faf281eb29bdd10222de3bbfef7210b67..2955ef2281323ff5ab6de129d1fe8f450f536364 100644 (file)
@@ -282,7 +282,7 @@ static inline Bool stackPop(AvlTree* t, AvlNode** n, Int* i)
 /*--------------------------------------------------------------------*/
 
 // The underscores avoid GCC complaints about overshadowing global names.
-AvlTree* VG_(OSetGen_Create)(OffT _keyOff, OSetCmp_t _cmp,
+AvlTree* VG_(OSetGen_Create)(PtrdiffT _keyOff, OSetCmp_t _cmp,
                              OSetAlloc_t _alloc, HChar* _cc,
                              OSetFree_t _free)
 {
index 0e71fc19d12adc359a319a8667f81f275fe8123d..a2d327ce180b1552a60845f4173987bd7a1057f2 100644 (file)
@@ -67,7 +67,7 @@ Bool ML_(do_sigkill)(Int pid, Int tgid);
 extern 
 void 
 ML_(notify_aspacem_and_tool_of_mmap) ( Addr a, SizeT len, UInt prot, 
-                                       UInt mm_flags, Int fd, ULong offset );
+                                       UInt mm_flags, Int fd, Off64T offset );
 
 
 DECL_TEMPLATE(generic, sys_ni_syscall);            // * P -- unimplemented
index cc4ac1dc4ad5297f8b2c695ba89796e65a13e90d..6504aa97b24de83bc39d706241c4916d0faa21d6 100644 (file)
@@ -391,10 +391,10 @@ DEF0(track_pre_mem_read_asciiz,   CorePart, ThreadId, Char*, Addr)
 DEF0(track_pre_mem_write,         CorePart, ThreadId, Char*, Addr, SizeT)
 DEF0(track_post_mem_write,        CorePart, ThreadId, Addr, SizeT)
 
-DEF0(track_pre_reg_read,          CorePart, ThreadId, Char*, OffT, SizeT)
-DEF0(track_post_reg_write,        CorePart, ThreadId,        OffT, SizeT)
+DEF0(track_pre_reg_read,          CorePart, ThreadId, Char*, PtrdiffT, SizeT)
+DEF0(track_post_reg_write,        CorePart, ThreadId,        PtrdiffT, SizeT)
 
-DEF0(track_post_reg_write_clientcall_return, ThreadId, OffT, SizeT, Addr)
+DEF0(track_post_reg_write_clientcall_return, ThreadId, PtrdiffT, SizeT, Addr)
 
 DEF0(track_start_client_code,     ThreadId, ULong)
 DEF0(track_stop_client_code,      ThreadId, ULong)
index bbb38bae6070f4db33dd741f9ff0973099e2f934..8da1871b543edaaf6d2320217714cfd2533fcba6 100644 (file)
@@ -74,7 +74,7 @@ extern Int VG_(access) ( HChar* path, Bool irusr, Bool iwusr, Bool ixusr );
 extern Int VG_(check_executable)(/*OUT*/Bool* is_setuid,
                                  HChar* f, Bool allow_setuid);
 
-extern SysRes VG_(pread) ( Int fd, void* buf, Int count, Int offset );
+extern SysRes VG_(pread) ( Int fd, void* buf, Int count, OffT offset );
 
 /* Create and open (-rw------) a tmp file name incorporating said arg.
    Returns -1 on failure, else the fd of the file.  If fullname is
index ca6494b92d36af65df7da1bb095f7ac04a5b12af..1e1535ac67c701bd5c34c82684dc536542f86f5f 100644 (file)
@@ -212,9 +212,10 @@ typedef struct {
    void (*track_pre_mem_write)      (CorePart, ThreadId, Char*, Addr, SizeT);
    void (*track_post_mem_write)     (CorePart, ThreadId, Addr, SizeT);
 
-   void (*track_pre_reg_read)  (CorePart, ThreadId, Char*, OffT, SizeT);
-   void (*track_post_reg_write)(CorePart, ThreadId,        OffT, SizeT);
-   void (*track_post_reg_write_clientcall_return)(ThreadId, OffT, SizeT, Addr);
+   void (*track_pre_reg_read)  (CorePart, ThreadId, Char*, PtrdiffT, SizeT);
+   void (*track_post_reg_write)(CorePart, ThreadId,        PtrdiffT, SizeT);
+   void (*track_post_reg_write_clientcall_return)(ThreadId, PtrdiffT, SizeT,
+                                                  Addr);
 
    void (*track_start_client_code)(ThreadId, ULong);
    void (*track_stop_client_code) (ThreadId, ULong);
index 6b56051c372e93d04648c7a934f6e535ef7c61f8..b72b82ea5c16d3fd238d9d404627c8cc6e8e1a49 100644 (file)
@@ -81,7 +81,7 @@ typedef
 struct {                      // Used by:
    AddrKind    akind;         //   ALL
    SizeT       size;          //   ALL
-   OffT        rwoffset;      //   ALL
+   PtrdiffT    rwoffset;      //   ALL
    ExeContext* lastchange;    //   Mallocd
    DrdThreadId stack_tid;     //   Stack
    DebugInfo*  debuginfo;     //   Segment
index f69a47172733c19a72d48d2ed50849d8bf79dde1..2678b7ae954ffe875ab030a9c4f08bd2e851a87a 100644 (file)
@@ -1915,7 +1915,7 @@ static Bool is_integer_guest_reg ( Int offset, Int szB )
 /* these assume guest and host have the same endianness and
    word size (probably). */
 static UWord get_guest_intreg ( ThreadId tid, Int shadowNo,
-                                OffT offset, SizeT size )
+                                PtrdiffT offset, SizeT size )
 {
    UChar tmp[ 2 + sizeof(UWord) ];
    tl_assert(size == sizeof(UWord));
@@ -1929,7 +1929,7 @@ static UWord get_guest_intreg ( ThreadId tid, Int shadowNo,
    return * ((UWord*) &tmp[1] ); /* MISALIGNED LOAD */
 }
 static void put_guest_intreg ( ThreadId tid, Int shadowNo,
-                               OffT offset, SizeT size, UWord w )
+                               PtrdiffT offset, SizeT size, UWord w )
 {
    tl_assert(size == sizeof(UWord));
    tl_assert(0 == (offset % sizeof(UWord)));
@@ -1950,7 +1950,7 @@ static void init_shadow_registers ( ThreadId tid )
    }
 }
 
-static void post_reg_write_nonptr ( ThreadId tid, OffT offset, SizeT size )
+static void post_reg_write_nonptr ( ThreadId tid, PtrdiffT offset, SizeT size )
 {
    // syscall_return: Default is non-pointer.  If it really is a pointer
    // (eg. for mmap()), SK_(post_syscall) sets it again afterwards.
@@ -1968,7 +1968,7 @@ static void post_reg_write_nonptr ( ThreadId tid, OffT offset, SizeT size )
 }
 
 static void post_reg_write_nonptr_or_unknown ( ThreadId tid,
-                                               OffT offset, SizeT size )
+                                               PtrdiffT offset, SizeT size )
 {
    // deliver_signal: called from two places; one sets the reg to zero, the
    // other sets the stack pointer.
@@ -1985,7 +1985,7 @@ static void post_reg_write_nonptr_or_unknown ( ThreadId tid,
 }
 
 void h_post_reg_write_demux ( CorePart part, ThreadId tid,
-                              OffT guest_state_offset, SizeT size)
+                              PtrdiffT guest_state_offset, SizeT size)
 {
    if (0)
    VG_(printf)("post_reg_write_demux: tid %d part %d off %ld size %ld\n",
@@ -2015,7 +2015,7 @@ void h_post_reg_write_demux ( CorePart part, ThreadId tid,
    }
 }
 
-void h_post_reg_write_clientcall(ThreadId tid, OffT guest_state_offset,
+void h_post_reg_write_clientcall(ThreadId tid, PtrdiffT guest_state_offset,
                                  SizeT size, Addr f )
 {
    UWord p;
index 84efddca8442854f5fe0fefb9f4780939fcb1ec5..83e17b17ae5df126fcf9c1bf11f7de669f7d7824 100644 (file)
@@ -77,8 +77,8 @@ void h_pre_mem_read_asciiz ( CorePart part, ThreadId tid,
                              Char* s, Addr lo );
 
 void h_post_reg_write_demux ( CorePart part, ThreadId tid,
-                              OffT guest_state_offset, SizeT size);
-void h_post_reg_write_clientcall(ThreadId tid, OffT guest_state_offset,
+                              PtrdiffT guest_state_offset, SizeT size);
+void h_post_reg_write_clientcall(ThreadId tid, PtrdiffT guest_state_offset,
                                  SizeT size, Addr f );
 
 void h_pre_syscall ( ThreadId tid, UInt syscallno );
index 26c81270f35679b92b386d628c6807ecdbbae0ea..b72d2fc0f99207c766e024327ca2f4149982bc1e 100644 (file)
@@ -130,13 +130,13 @@ typedef
             HChar  actual[128];
          } SorG;
          struct {
-            Addr   addr;
-            SSizeT sszB;  /* -ve is write, +ve is read */
-            Seg*   vseg;
-            Char   descr1[96];
-            Char   descr2[96];
-            Char   datasym[96];
-            OffT   datasymoff;
+            Addr     addr;
+            SSizeT   sszB;  /* -ve is write, +ve is read */
+            Seg*     vseg;
+            Char     descr1[96];
+            Char     descr2[96];
+            Char     datasym[96];
+            PtrdiffT datasymoff;
          } Heap;
          struct {
             Seg* seg1;
index 6144d270eed989f0f58440b37a1720c2bac6ef94..118655126bcef49b95f8fa55c18b89fb8bf1c68f 100644 (file)
@@ -101,7 +101,7 @@ typedef
       /* Associated file (SkFile{C,V} only) */
       ULong   dev;
       ULong   ino;
-      ULong   offset;
+      Off64T  offset;
       UInt    mode;
       Int     fnIdx;    // file name table index, if name is known
       /* Permissions (SkAnon{C,V}, SkFile{C,V} only) */
index 3292f00b9382ccbc43cf12a0cf66dad4cb61b95c..d91bb81f36fcf674e1bf0f1891f7b8dcd876e7d2 100644 (file)
 
 // By choosing the right types, we can get these right for 32-bit and 64-bit
 // platforms without having to do any conditional compilation or anything.
+// POSIX references:
+// - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html
+// - http://www.opengroup.org/onlinepubs/009695399/basedefs/stddef.h.html
 // 
 // Size in bits on:                          32-bit archs   64-bit archs
 //                                           ------------   ------------
 typedef unsigned long          UWord;     // 32             64
+typedef   signed long           Word;     // 32             64
 
-typedef signed long            Word;      // 32             64
-
+// Addr is for holding an address.  AddrH was intended to be "Addr on the
+// host", for the notional case where host word size != guest word size.
+// But since the assumption that host arch == guest arch has become so
+// deeply wired in, it's a pretty pointless distinction now.
 typedef UWord                  Addr;      // 32             64
 typedef UWord                  AddrH;     // 32             64
 
+// Our equivalents of POSIX 'size_t' and 'ssize_t':
+// - size_t is an "unsigned integer type of the result of the sizeof operator".
+// - ssize_t is "used for a count of bytes or an error indication".
 typedef UWord                  SizeT;     // 32             64
 typedef  Word                 SSizeT;     // 32             64
 
-typedef  Word                   OffT;     // 32             64
-
-typedef ULong                 Off64T;     // 64             64
+// Our equivalent of POSIX 'ptrdiff_t':
+// - ptrdiff_t is a "signed integer type of the result of subtracting two
+//   pointers".
+// We use it for memory offsets, eg. the offset into a memory block.
+typedef  Word                 PtrdiffT;   // 32             64
+
+// Our equivalent of POSIX 'off_t':
+// - off_t is "used for file sizes".
+// At one point we were using it for memory offsets, but PtrdiffT should be
+// used in those cases.
+typedef Word                   OffT;      // 32             64
+typedef Long                 Off64T;      // 64             64
 
 #if !defined(NULL)
 #  define NULL ((void*)0)
index 30725d5425cdc530ef0b924b381530a4a96df735..baf9981475c0e682775f972488675af6fd6b2b7a 100644 (file)
@@ -80,7 +80,7 @@ extern Bool VG_(get_fnname_if_entry) ( Addr a, Char* fnname, Int n_fnname );
    from the symbol start is put into *offset. */
 extern Bool VG_(get_datasym_and_offset)( Addr data_addr,
                                          /*OUT*/Char* dname, Int n_dname,
-                                         /*OUT*/OffT* offset );
+                                         /*OUT*/PtrdiffT* offset );
 
 /* Try to form some description of data_addr by looking at the DWARF3
    debug info we have.  This considers all global variables, and all
@@ -113,11 +113,11 @@ extern Char* VG_(describe_IP)(Addr eip, Char* buf, Int n_buf);
 
 typedef
    struct {
-      OffT  base;     /* offset from sp or fp */
-      SizeT szB;      /* size in bytes */
-      Bool  spRel;    /* True => sp-rel, False => fp-rel */
-      Bool  isVec;    /* does block have an array type, or not? */
-      HChar name[16]; /* first 15 chars of name (asciiz) */
+      PtrdiffT base;       /* offset from sp or fp */
+      SizeT    szB;        /* size in bytes */
+      Bool     spRel;      /* True => sp-rel, False => fp-rel */
+      Bool     isVec;      /* does block have an array type, or not? */
+      HChar    name[16];   /* first 15 chars of name (asciiz) */
    }
    StackBlock;
 
@@ -167,7 +167,7 @@ extern       Addr     VG_(seginfo_get_gotplt_avma)( const DebugInfo *di );
 extern       SizeT    VG_(seginfo_get_gotplt_size)( const DebugInfo *di );
 extern const UChar*   VG_(seginfo_soname)       ( const DebugInfo *di );
 extern const UChar*   VG_(seginfo_filename)     ( const DebugInfo *di );
-extern       ULong    VG_(seginfo_get_text_bias)( const DebugInfo *di );
+extern       PtrdiffT VG_(seginfo_get_text_bias)( const DebugInfo *di );
 
 /* Function for traversing the seginfo list.  When called with NULL it
    returns the first element; otherwise it returns the given element's
index ae9669c05c858c63031fbaa020107752cd5702c9..fc86bf960835185c6012ebbf71d0a1606efe01e1 100644 (file)
@@ -90,10 +90,10 @@ extern void VG_(set_IP) ( ThreadId tid, Addr ip );
 void
 VG_(get_shadow_regs_area) ( ThreadId tid, 
                             /*DST*/UChar* dst,
-                            /*SRC*/Int shadowNo, OffT offset, SizeT size );
+                            /*SRC*/Int shadowNo, PtrdiffT offset, SizeT size );
 void
 VG_(set_shadow_regs_area) ( ThreadId tid, 
-                            /*DST*/Int shadowNo, OffT offset, SizeT size,
+                            /*DST*/Int shadowNo, PtrdiffT offset, SizeT size,
                             /*SRC*/const UChar* src );
 
 // Sets the shadow values for the syscall return value register(s).
index 1573136fa4ac9ed733bdb96e30127d09ab5668e9..c496523fb340d9740b58f569cf0626fb4ae2f931 100644 (file)
@@ -183,7 +183,7 @@ extern Bool  VG_(OSetWord_Next)         ( OSet* os, /*OUT*/UWord* val );
 //   a deallocation function (such as VG_(free)()) directly will likely
 //   lead to assertions in Valgrind's allocator.
 
-extern OSet* VG_(OSetGen_Create)    ( OffT keyOff, OSetCmp_t cmp,
+extern OSet* VG_(OSetGen_Create)    ( PtrdiffT keyOff, OSetCmp_t cmp,
                                       OSetAlloc_t alloc, HChar* ec,
                                       OSetFree_t free );
 extern void  VG_(OSetGen_Destroy)   ( OSet* os );
index 210df361ac3da0f82083104d24dd8b86c59ed5fe..8194706c8b32877604598d65066c07f846f7f37d 100644 (file)
@@ -567,15 +567,15 @@ void VG_(track_post_mem_write)     (void(*f)(CorePart part, ThreadId tid,
 /* Register events.  Use VG_(set_shadow_state_area)() to set the shadow regs
    for these events.  */
 void VG_(track_pre_reg_read)  (void(*f)(CorePart part, ThreadId tid,
-                                        Char* s, OffT guest_state_offset,
+                                        Char* s, PtrdiffT guest_state_offset,
                                         SizeT size));
 void VG_(track_post_reg_write)(void(*f)(CorePart part, ThreadId tid,
-                                        OffT guest_state_offset,
+                                        PtrdiffT guest_state_offset,
                                         SizeT size));
 
 /* This one is called for malloc() et al if they are replaced by a tool. */
 void VG_(track_post_reg_write_clientcall_return)(
-      void(*f)(ThreadId tid, OffT guest_state_offset, SizeT size, Addr f));
+      void(*f)(ThreadId tid, PtrdiffT guest_state_offset, SizeT size, Addr f));
 
 
 /* Scheduler events (not exhaustive) */
index e95ad5ee8e63e5855f3d0e7bcbed6127363b7e5b..33dcc266f3dbb9e2cf986b5f60c87ecd3cd98cb2 100644 (file)
@@ -98,15 +98,15 @@ struct _AddrInfo {
          BlockKind   block_kind;
          Char*       block_desc;    // "block", "mempool" or user-defined
          SizeT       block_szB;
-         OffT        rwoffset;
+         PtrdiffT    rwoffset;
          ExeContext* lastchange;
       } Block;
 
-      // In a global .data symbol.  This holds the first 63 chars of
-      // the variable's (zero terminated), plus an offset.
+      // In a global .data symbol.  This holds the first 127 chars of
+      // the variable's name (zero terminated), plus a (memory) offset.
       struct {
-         Char name[128];
-         OffT offset;
+         Char     name[128];
+         PtrdiffT offset;
       } DataSym;
 
       // Is described by Dwarf debug info.  Arbitrary strings.  Must
@@ -286,10 +286,10 @@ static void mc_pp_AddrInfo ( Addr a, AddrInfo* ai, Bool maybe_gcc )
          break;
 
       case Addr_Block: {
-         SizeT block_szB  = ai->Addr.Block.block_szB;
-         OffT  rwoffset   = ai->Addr.Block.rwoffset;
-         SizeT delta;
-         const Char* relative;
+         SizeT    block_szB = ai->Addr.Block.block_szB;
+         PtrdiffT rwoffset  = ai->Addr.Block.rwoffset;
+         SizeT    delta;
+         const    Char* relative;
 
          if (rwoffset < 0) {
             delta    = (SizeT)(-rwoffset);
index 60eea313796b793c9b527d6db1616d121bd680d5..3c069bfff2fd6cb2f6aee7a57a591ebc581c4e09 100644 (file)
@@ -3722,7 +3722,7 @@ static UInt mb_get_origin_for_guest_offset ( ThreadId tid,
    big as the biggest guest state.
 */
 static void mc_post_reg_write ( CorePart part, ThreadId tid, 
-                                OffT offset, SizeT size)
+                                PtrdiffT offset, SizeT size)
 {
 #  define MAX_REG_WRITE_SIZE 1408
    UChar area[MAX_REG_WRITE_SIZE];
@@ -3734,8 +3734,7 @@ static void mc_post_reg_write ( CorePart part, ThreadId tid,
 
 static 
 void mc_post_reg_write_clientcall ( ThreadId tid, 
-                                    OffT offset, SizeT size,
-                                    Addr f)
+                                    PtrdiffT offset, SizeT size, Addr f)
 {
    mc_post_reg_write(/*dummy*/0, tid, offset, size);
 }
@@ -3745,7 +3744,7 @@ void mc_post_reg_write_clientcall ( ThreadId tid,
    a parameter error.
 */
 static void mc_pre_reg_read ( CorePart part, ThreadId tid, Char* s, 
-                              OffT offset, SizeT size)
+                              PtrdiffT offset, SizeT size)
 {
    Int   i;
    Bool  bad;