From bba515afe5496ee59fc10c3307577a87c94fb87f Mon Sep 17 00:00:00 2001
From: grischka <grischka>
Date: Wed, 17 Jun 2009 02:08:54 +0200
Subject: [PATCH] tccelf: accept BSS symbol with same name from other module

... such as 'int baz;' in two files at the same time
---
 tccelf.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tccelf.c b/tccelf.c
index 4020e249..1b0ed133 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -233,7 +233,8 @@ static int add_elf_sym(Section *s, unsigned long value, unsigned long size,
                 /* weak is ignored if already global */
             } else if (sym_vis == STV_HIDDEN || sym_vis == STV_INTERNAL) {
                 /* ignore hidden symbols after */
-            } else if (esym->st_shndx == SHN_COMMON && sh_num < SHN_LORESERVE) {
+            } else if (esym->st_shndx == SHN_COMMON
+                    && (sh_num < SHN_LORESERVE || sh_num == SHN_COMMON)) {
                 /* gr: Happens with 'tcc ... -static tcctest.c' on e.g. Ubuntu 6.01
                    No idea if this is the correct solution ... */
                 goto do_patch;