diff --git a/libtcc.c b/libtcc.c
index 1877bcc1..a856865a 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -388,7 +388,7 @@ ST_FUNC void section_realloc(Section *sec, unsigned long new_size)
 
 /* reserve at least 'size' bytes in section 'sec' from
    sec->data_offset. */
-ST_FUNC void *section_ptr_add(Section *sec, size_t size)
+ST_FUNC void *section_ptr_add(Section *sec, addr_t size)
 {
     size_t offset, offset1;
 
diff --git a/tcc.h b/tcc.h
index bd6828c3..96c0333e 100644
--- a/tcc.h
+++ b/tcc.h
@@ -1088,7 +1088,7 @@ ST_FUNC void cstr_reset(CString *cstr);
 
 ST_FUNC Section *new_section(TCCState *s1, const char *name, int sh_type, int sh_flags);
 ST_FUNC void section_realloc(Section *sec, unsigned long new_size);
-ST_FUNC void *section_ptr_add(Section *sec, unsigned long size);
+ST_FUNC void *section_ptr_add(Section *sec, addr_t size);
 ST_FUNC void section_reserve(Section *sec, unsigned long size);
 ST_FUNC Section *find_section(TCCState *s1, const char *name);