"make bigdata" biggest offender dealt with: xmalloc 16Kb buffer instead of keeping it in bss
No binary (build failed)
—
(log yok)
| @@ -735,7 +735,7 @@ xbsd_write_bootstrap(void) | |
| memset(d, 0, sizeof(struct xbsd_disklabel)); | |
| snprintf(path, sizeof(path), "%s/boot%s", bootdir, dkbasename); | |
| - | if (!xbsd_get_bootstrap (path, &disklabelbuffer[xbsd_dlabel.d_secsize], |
| + | if (!xbsd_get_bootstrap(path, &disklabelbuffer[xbsd_dlabel.d_secsize], |
| (int) xbsd_dlabel.d_bbsize - xbsd_dlabel.d_secsize)) | |
| return; | |
| @@ -969,7 +969,7 @@ xbsd_writelabel (struct partition *p, struct xbsd_disklabel *d) | |
| d, sizeof(struct xbsd_disklabel)); | |
| #if defined (__alpha__) && BSD_LABELSECTOR == 0 | |
| - | alpha_bootblock_checksum (disklabelbuffer); |
| + | alpha_bootblock_checksum(disklabelbuffer); |
| if (lseek(fd, 0, SEEK_SET) == -1) | |
| fdisk_fatal(unable_to_seek); | |
| if (BSD_BBSIZE != write(fd, disklabelbuffer, BSD_BBSIZE)) | |
| @@ -613,7 +613,8 @@ static void alarm_intr(int alnum) | |
| static void check_blocks(void) | |
| { | |
| int try, got; | |
| - | static char buffer[BLOCK_SIZE * TEST_BUFFER_BLOCKS]; |
| + | /* buffer[] was the biggest static in entire bbox */ |
| + | char *buffer = xmalloc(BLOCK_SIZE * TEST_BUFFER_BLOCKS); |
| currently_testing = 0; | |
| signal(SIGALRM, alarm_intr); | |
| @@ -635,6 +636,7 @@ static void check_blocks(void) | |
| badblocks++; | |
| currently_testing++; | |
| } | |
| + | free(buffer); |
| printf("%d bad block(s)\n", badblocks); | |
| } | |