diff --git a/src/cmd/as/as.c b/src/cmd/as/as.c index 13792f2..69696bf 100644 --- a/src/cmd/as/as.c +++ b/src/cmd/as/as.c @@ -2425,6 +2425,9 @@ void makeheader (rtsize, rdsize) { struct exec hdr; + /* Align BSS size. */ + count[SBSS] = (count[SBSS] + WORDSZ-1) & ~(WORDSZ-1); + hdr.a_midmag = RMAGIC; hdr.a_text = count [STEXT]; hdr.a_data = count [SDATA] + count [SSTRNG]; diff --git a/src/cmd/ld/ld.c b/src/cmd/ld/ld.c index 00a24da..d42c73c 100644 --- a/src/cmd/ld/ld.c +++ b/src/cmd/ld/ld.c @@ -866,8 +866,7 @@ void readhdr (loc) error (2, "bad length of text"); if (filhdr.a_data % W) error (2, "bad length of data"); - if (filhdr.a_bss % W) - error (2, "bad length of bss"); + /* BSS segment is allowed to be unaligned. */ } /*