fix for the bcheck.o (bug #14958)
commitd80593bc4d4381331453d96d03c11d70247e2d70
authorseyko <seyko2@gmail.com>
Sun, 29 Mar 2015 08:28:02 +0000 (29 11:28 +0300)
committerseyko <seyko2@gmail.com>
Sun, 29 Mar 2015 08:28:02 +0000 (29 11:28 +0300)
treebf3a0ae04653b6d87726e1d2a99b1aa44190b279
parentf2cfc07554c698dcd2f12dab223aece4d40198c2
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
lib/bcheck.c
tccelf.c