Changeset: e9f095b568e7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e9f095b568e7
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_posix.h
        gdk/gdk_private.h
        monetdb5/mal/mal_private.h
        sql/storage/bat/bat_table.c
        sql/storage/restrict/restrict_table.c
        sql/storage/sql_storage.h
Branch: Jan2014
Log Message:

Add function attributes to help compiler and analysis.

The attributes we added are __alloc_size__ to specify that the return
value is new memory whose size is given by the indicated parameter;
__visibility__("hidden") to specify that the function is not called
from outside the share object; __sentinel__ to indicate that a list of
arguments to a varargs function must end with a sentinel (NULL pointer).


diffs (truncated from 450 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -277,14 +277,14 @@ MT_Lock *volatile GDKlocklist;
 ATOMIC_FLAG volatile GDKlocklistlock;
 ATOMIC_TYPE volatile GDKlocksleepcnt;
 void GDKlockstatistics(int);
-void *GDKmalloc(size_t size);
+void *GDKmalloc(size_t size) __attribute__((__alloc_size__(1)));
 size_t GDKmem_cursize(void);
-void *GDKmmap(const char *path, int mode, size_t len);
+void *GDKmmap(const char *path, int mode, size_t len) 
__attribute__((__alloc_size__(3)));
 int GDKms(void);
 int GDKnr_threads;
 void GDKqsort(void *h, void *t, const void *base, size_t n, int hs, int ts, 
int tpe);
 void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int 
ts, int tpe);
-void *GDKrealloc(void *pold, size_t size);
+void *GDKrealloc(void *pold, size_t size) __attribute__((__alloc_size__(2)));
 void GDKsetenv(str name, str value);
 ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t 
len);
 str GDKstrdup(const char *s);
@@ -295,7 +295,7 @@ lng GDKusec(void);
 BAT *GDKval;
 const char *GDKversion(void);
 size_t GDKvm_cursize(void);
-void *GDKzalloc(size_t size);
+void *GDKzalloc(size_t size) __attribute__((__alloc_size__(1)));
 void HASHdestroy(BAT *b);
 BUN HASHlist(Hash *h, BUN i);
 BUN HASHprobe(Hash *h, const void *v);
@@ -327,7 +327,7 @@ void MT_locktrace_end(void);
 char *MT_locktrace_nme[65536];
 void MT_locktrace_start(void);
 struct Mallinfo MT_mallinfo(void);
-void *MT_mmap(const char *path, int mode, size_t len);
+void *MT_mmap(const char *path, int mode, size_t len) 
__attribute__((__alloc_size__(3)));
 int MT_munmap(void *p, size_t len);
 int MT_path_absolute(const char *path);
 void MT_sleep_ms(unsigned int ms);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2262,7 +2262,8 @@ gdk_export BAT *BATimprints(BAT *b);
 #define GDK_HISTO_MAX_BIT      ((int) (sizeof(size_t)<<3))
 
 /* we prefer to use vm_alloc routines on size > GDKmmap */
-gdk_export void *GDKmmap(const char *path, int mode, size_t len);
+gdk_export void *GDKmmap(const char *path, int mode, size_t len)
+       __attribute__((__alloc_size__(3)));
 
 gdk_export size_t GDK_mem_maxsize;     /* max allowed size of committed memory 
*/
 gdk_export size_t GDK_vm_maxsize;      /* max allowed size of reserved vm */
@@ -2271,9 +2272,12 @@ gdk_export int   GDK_vm_trim;            /* allow tr
 gdk_export size_t GDKmem_cursize(void);        /* RAM/swapmem that MonetDB has 
claimed from OS */
 gdk_export size_t GDKvm_cursize(void); /* current MonetDB VM address space 
usage */
 
-gdk_export void *GDKmalloc(size_t size);
-gdk_export void *GDKzalloc(size_t size);
-gdk_export void *GDKrealloc(void *pold, size_t size);
+gdk_export void *GDKmalloc(size_t size)
+       __attribute__((__alloc_size__(1)));
+gdk_export void *GDKzalloc(size_t size)
+       __attribute__((__alloc_size__(1)));
+gdk_export void *GDKrealloc(void *pold, size_t size)
+       __attribute__((__alloc_size__(2)));
 gdk_export void GDKfree(void *blk);
 gdk_export str GDKstrdup(const char *s);
 
diff --git a/gdk/gdk_posix.h b/gdk/gdk_posix.h
--- a/gdk/gdk_posix.h
+++ b/gdk/gdk_posix.h
@@ -189,7 +189,8 @@ gdk_export void MT_sleep_ms(unsigned int
 
 gdk_export size_t MT_getrss(void);
 
-gdk_export void *MT_mmap(const char *path, int mode, size_t len);
+gdk_export void *MT_mmap(const char *path, int mode, size_t len)
+       __attribute__((__alloc_size__(3)));
 gdk_export int MT_munmap(void *p, size_t len);
 
 gdk_export int MT_path_absolute(const char *path);
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -23,81 +23,152 @@
 #error this file should not be included outside its source directory
 #endif
 
-int ALIGNcommit(BAT *b);
-int ALIGNundo(BAT *b);
-int ATOMheap(int id, Heap *hp, size_t cap);
-int ATOMisdescendant(int id, int parentid);
-int ATOMunknown_add(const char *nme);
-int ATOMunknown_del(int a);
-int ATOMunknown_find(const char *nme);
-str ATOMunknown_name(int a);
-int BATcheckmodes(BAT *b, int persistent);
-BAT *BATclone(BAT *b, BUN capacity);
-BATstore *BATcreatedesc(int ht, int tt, int heapnames);
-void BATdestroy(BATstore *bs);
-int BATfree(BAT *b);
-gdk_return BATgroup_internal(BAT **groups, BAT **extents, BAT **histo, BAT *b, 
BAT *g, BAT *e, BAT *h, int subsorted);
-BUN BATguess(BAT *b);
-void BATinit_idents(BAT *bn);
-BAT *BATload_intern(bat bid, int lock);
-BAT *BATmaterializet(BAT *b);
-void BATpropagate(BAT *dst, BAT *src, int idx);
-str BATrename(BAT *b, const char *nme);
-void BATsetdims(BAT *b);
-size_t BATvmsize(BAT *b, int dirty);
-void BBPcacheit(BATstore *bs, int lock);
+int ALIGNcommit(BAT *b)
+       __attribute__((__visibility__("hidden")));
+int ALIGNundo(BAT *b)
+       __attribute__((__visibility__("hidden")));
+int ATOMheap(int id, Heap *hp, size_t cap)
+       __attribute__((__visibility__("hidden")));
+int ATOMisdescendant(int id, int parentid)
+       __attribute__((__visibility__("hidden")));
+int ATOMunknown_add(const char *nme)
+       __attribute__((__visibility__("hidden")));
+int ATOMunknown_del(int a)
+       __attribute__((__visibility__("hidden")));
+int ATOMunknown_find(const char *nme)
+       __attribute__((__visibility__("hidden")));
+str ATOMunknown_name(int a)
+       __attribute__((__visibility__("hidden")));
+int BATcheckmodes(BAT *b, int persistent)
+       __attribute__((__visibility__("hidden")));
+BAT *BATclone(BAT *b, BUN capacity)
+       __attribute__((__visibility__("hidden")));
+BATstore *BATcreatedesc(int ht, int tt, int heapnames)
+       __attribute__((__visibility__("hidden")));
+void BATdestroy(BATstore *bs)
+       __attribute__((__visibility__("hidden")));
+int BATfree(BAT *b)
+       __attribute__((__visibility__("hidden")));
+gdk_return BATgroup_internal(BAT **groups, BAT **extents, BAT **histo, BAT *b, 
BAT *g, BAT *e, BAT *h, int subsorted)
+       __attribute__((__visibility__("hidden")));
+BUN BATguess(BAT *b)
+       __attribute__((__visibility__("hidden")));
+void BATinit_idents(BAT *bn)
+       __attribute__((__visibility__("hidden")));
+BAT *BATload_intern(bat bid, int lock)
+       __attribute__((__visibility__("hidden")));
+BAT *BATmaterializet(BAT *b)
+       __attribute__((__visibility__("hidden")));
+void BATpropagate(BAT *dst, BAT *src, int idx)
+       __attribute__((__visibility__("hidden")));
+str BATrename(BAT *b, const char *nme)
+       __attribute__((__visibility__("hidden")));
+void BATsetdims(BAT *b)
+       __attribute__((__visibility__("hidden")));
+size_t BATvmsize(BAT *b, int dirty)
+       __attribute__((__visibility__("hidden")));
+void BBPcacheit(BATstore *bs, int lock)
+       __attribute__((__visibility__("hidden")));
 void BBPdump(void);            /* never called: for debugging only */
-void BBPexit(void);
-void BBPinit(void);
-bat BBPinsert(BATstore *bs);
-void BBPtrim(size_t delta);
-void BBPunshare(bat b);
-void GDKclrerr(void);
-int GDKextend(const char *fn, size_t size);
-int GDKextendf(int fd, size_t size);
-int GDKfdlocate(const char *nme, const char *mode, const char *ext);
-FILE *GDKfilelocate(const char *nme, const char *mode, const char *ext);
-char *GDKload(const char *nme, const char *ext, size_t size, size_t *maxsize, 
storage_t mode);
+void BBPexit(void)
+       __attribute__((__visibility__("hidden")));
+void BBPinit(void)
+       __attribute__((__visibility__("hidden")));
+bat BBPinsert(BATstore *bs)
+       __attribute__((__visibility__("hidden")));
+void BBPtrim(size_t delta)
+       __attribute__((__visibility__("hidden")));
+void BBPunshare(bat b)
+       __attribute__((__visibility__("hidden")));
+void GDKclrerr(void)
+       __attribute__((__visibility__("hidden")));
+int GDKextend(const char *fn, size_t size)
+       __attribute__((__visibility__("hidden")));
+int GDKextendf(int fd, size_t size)
+       __attribute__((__visibility__("hidden")));
+int GDKfdlocate(const char *nme, const char *mode, const char *ext)
+       __attribute__((__visibility__("hidden")));
+FILE *GDKfilelocate(const char *nme, const char *mode, const char *ext)
+       __attribute__((__visibility__("hidden")));
+char *GDKload(const char *nme, const char *ext, size_t size, size_t *maxsize, 
storage_t mode)
+       __attribute__((__visibility__("hidden")));
 void GDKlog(_In_z_ _Printf_format_string_ const char *format, ...)
-       __attribute__((__format__(__printf__, 1, 2)));
-void *GDKmallocmax(size_t size, size_t *maxsize, int emergency);
-int GDKmove(const char *dir1, const char *nme1, const char *ext1, const char 
*dir2, const char *nme2, const char *ext2);
-int GDKmunmap(void *addr, size_t len);
-void *GDKreallocmax(void *pold, size_t size, size_t *maxsize, int emergency);
-int GDKremovedir(const char *nme);
-int GDKsave(const char *nme, const char *ext, void *buf, size_t size, 
storage_t mode);
-int GDKssort_rev(void *h, void *t, const void *base, size_t n, int hs, int ts, 
int tpe);
-int GDKssort(void *h, void *t, const void *base, size_t n, int hs, int ts, int 
tpe);
-int GDKunlink(const char *dir, const char *nme, const char *extension);
-int HASHgonebad(BAT *b, const void *v);
-BUN HASHmask(BUN cnt);
-Hash *HASHnew(Heap *hp, int tpe, BUN size, BUN mask);
-void HASHremove(BAT *b);
-int HEAPalloc(Heap *h, size_t nitems, size_t itemsize);
-int HEAPdelete(Heap *h, const char *o, const char *ext);
-int HEAPload(Heap *h, const char *nme, const char *ext, int trunc);
-int HEAPsave(Heap *h, const char *nme, const char *ext);
-int HEAPshrink(Heap *h, size_t size);
-int HEAPwarm(Heap *h);
-oid MAXoid(BAT *i);
+       __attribute__((__format__(__printf__, 1, 2)))
+       __attribute__((__visibility__("hidden")));
+void *GDKmallocmax(size_t size, size_t *maxsize, int emergency)
+       __attribute__((__visibility__("hidden")));
+int GDKmove(const char *dir1, const char *nme1, const char *ext1, const char 
*dir2, const char *nme2, const char *ext2)
+       __attribute__((__visibility__("hidden")));
+int GDKmunmap(void *addr, size_t len)
+       __attribute__((__visibility__("hidden")));
+void *GDKreallocmax(void *pold, size_t size, size_t *maxsize, int emergency)
+       __attribute__((__visibility__("hidden")));
+int GDKremovedir(const char *nme)
+       __attribute__((__visibility__("hidden")));
+int GDKsave(const char *nme, const char *ext, void *buf, size_t size, 
storage_t mode)
+       __attribute__((__visibility__("hidden")));
+int GDKssort_rev(void *h, void *t, const void *base, size_t n, int hs, int ts, 
int tpe)
+       __attribute__((__visibility__("hidden")));
+int GDKssort(void *h, void *t, const void *base, size_t n, int hs, int ts, int 
tpe)
+       __attribute__((__visibility__("hidden")));
+int GDKunlink(const char *dir, const char *nme, const char *extension)
+       __attribute__((__visibility__("hidden")));
+int HASHgonebad(BAT *b, const void *v)
+       __attribute__((__visibility__("hidden")));
+BUN HASHmask(BUN cnt)
+       __attribute__((__visibility__("hidden")));
+Hash *HASHnew(Heap *hp, int tpe, BUN size, BUN mask)
+       __attribute__((__visibility__("hidden")));
+void HASHremove(BAT *b)
+       __attribute__((__visibility__("hidden")));
+int HEAPalloc(Heap *h, size_t nitems, size_t itemsize)
+       __attribute__((__visibility__("hidden")));
+int HEAPdelete(Heap *h, const char *o, const char *ext)
+       __attribute__((__visibility__("hidden")));
+int HEAPload(Heap *h, const char *nme, const char *ext, int trunc)
+       __attribute__((__visibility__("hidden")));
+int HEAPsave(Heap *h, const char *nme, const char *ext)
+       __attribute__((__visibility__("hidden")));
+int HEAPshrink(Heap *h, size_t size)
+       __attribute__((__visibility__("hidden")));
+int HEAPwarm(Heap *h)
+       __attribute__((__visibility__("hidden")));
+oid MAXoid(BAT *i)
+       __attribute__((__visibility__("hidden")));
 void MT_global_exit(int status)
-       __attribute__((__noreturn__));
-void MT_init_posix(void);
-void *MT_mremap(const char *path, int mode, void *old_address, size_t 
old_size, size_t *new_size);
-int MT_msync(void *p, size_t len, int mode);
-int OIDdirty(void);
-int OIDinit(void);
-oid OIDread(str buf);
-int OIDwrite(stream *fp);
-void strCleanHash(Heap *hp, int rebuild);
-int strCmpNoNil(const unsigned char *l, const unsigned char *r);
-int strElimDoubles(Heap *h);
-var_t strLocate(Heap *h, const char *v);
-void VIEWdestroy(BAT *b);
-BAT *VIEWreset(BAT *b);
-int IMPSgetbin(int tpe, bte bits, char *bins, const void *v);
+       __attribute__((__noreturn__))
+       __attribute__((__visibility__("hidden")));
+void MT_init_posix(void)
+       __attribute__((__visibility__("hidden")));
+void *MT_mremap(const char *path, int mode, void *old_address, size_t 
old_size, size_t *new_size)
+       __attribute__((__visibility__("hidden")));
+int MT_msync(void *p, size_t len, int mode)
+       __attribute__((__visibility__("hidden")));
+int OIDdirty(void)
+       __attribute__((__visibility__("hidden")));
+int OIDinit(void)
+       __attribute__((__visibility__("hidden")));
+oid OIDread(str buf)
+       __attribute__((__visibility__("hidden")));
+int OIDwrite(stream *fp)
+       __attribute__((__visibility__("hidden")));
+void strCleanHash(Heap *hp, int rebuild)
+       __attribute__((__visibility__("hidden")));
+int strCmpNoNil(const unsigned char *l, const unsigned char *r)
+       __attribute__((__visibility__("hidden")));
+int strElimDoubles(Heap *h)
+       __attribute__((__visibility__("hidden")));
+var_t strLocate(Heap *h, const char *v)
+       __attribute__((__visibility__("hidden")));
+void VIEWdestroy(BAT *b)
+       __attribute__((__visibility__("hidden")));
+BAT *VIEWreset(BAT *b)
+       __attribute__((__visibility__("hidden")));
+int IMPSgetbin(int tpe, bte bits, char *bins, const void *v)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to