From dbd2d744876c85b49a9f79eb41eb8948936ff7b3 Mon Sep 17 00:00:00 2001 From: vak Date: Tue, 15 Sep 2015 00:37:35 -0700 Subject: [PATCH] Fix bss size alignment in the assembler. Relax the requirement in the linker as well. --- src/cmd/as/as.c | 3 +++ src/cmd/ld/ld.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) 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. */ } /*