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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list