binman: Fail when _DISCARD grows to overlap _COMMONMEM
authorWill Sowerbutts <will@sowerbutts.com>
Mon, 5 Jan 2015 00:49:44 +0000 (00:49 +0000)
committerWill Sowerbutts <will@sowerbutts.com>
Mon, 5 Jan 2015 00:58:23 +0000 (00:58 +0000)
Kernel/tools/binman.c

index 8aeff89..224ce1f 100644 (file)
@@ -115,6 +115,14 @@ int main(int argc, char *argv[])
                exit(1);
        }
 
+       /* linker will allow us to overlap _DISCARD (which may grow)
+          with with _COMMONMEM. */
+       if(s__DISCARD && s__DISCARD+l__DISCARD > s__COMMONMEM){
+               fprintf(stderr, "Move _DISCARD down by at least %d bytes\n",
+                       s__DISCARD + l__DISCARD - s__COMMONMEM);
+               exit(1);
+       }
+
         printf("Scanning data from 0x%x to 0x%x\n",
                 s__DATA, s__DATA + l__DATA);
        base = s__DATA;