aboutsummaryrefslogtreecommitdiff
path: root/tccelf.c
diff options
context:
space:
mode:
authorseyko <seyko2@gmail.com>2015-03-29 11:28:02 +0300
committerseyko <seyko2@gmail.com>2015-03-29 11:28:02 +0300
commitd80593bc4d4381331453d96d03c11d70247e2d70 (patch)
treebf3a0ae04653b6d87726e1d2a99b1aa44190b279 /tccelf.c
parentf2cfc07554c698dcd2f12dab223aece4d40198c2 (diff)
downloadtinycc-d80593bc4d4381331453d96d03c11d70247e2d70.tar.gz
tinycc-d80593bc4d4381331453d96d03c11d70247e2d70.tar.bz2
fix for the bcheck.o (bug #14958)
- care about __attribute__ redefinition in the system headers - an invalid pointer must be returned when (addr >= e->size), and not (addr > e->size) A test program: #include <stdio.h> #include <stdlib.h> int main () { int v[10]; fprintf(stderr, "&v[0] = %p\n", &v[0]); fprintf(stderr, "&v[10] = %p\n", &v[10]); exit(1); return 0; } // tcc -b test.c The output before a patch: &v[0] = 0xbf929d8c &v[10] = 0xbf929db4 The output after a patch: &v[0] = 0xbff6e33c &v[10] = 0xfffffffe
Diffstat (limited to 'tccelf.c')
-rw-r--r--tccelf.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tccelf.c b/tccelf.c
index 0ac151a..494bc0a 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -1577,7 +1577,7 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1)
return;
/* XXX: add an object file to do that */
- ptr = section_ptr_add(bounds_section, sizeof(unsigned long));
+ ptr = section_ptr_add(bounds_section, sizeof(*ptr));
*ptr = 0;
add_elf_sym(symtab_section, 0, 0,
ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,