summaryrefslogtreecommitdiff
path: root/gold/testsuite/pr20976.c
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2016-12-19 10:37:23 -0800
committerCary Coutant <ccoutant@gmail.com>2016-12-19 10:37:34 -0800
commit89ede9f53b74f84febcd1c2a6db8b03f390b62ec (patch)
tree3306b0e138f370414528b2d9091e99503e4b5e81 /gold/testsuite/pr20976.c
parent16e69324ec7fbe4ea12f2a0a069ad207ac8e3f97 (diff)
downloadbinutils-gdb-89ede9f53b74f84febcd1c2a6db8b03f390b62ec.tar.gz
Fix forced allocation of common (-d) during -r links.
If the .bss section has other data in it besides common allocations, gold was subtracting the wrong section start address from the symbol value. gold/ PR gold/20976 * symtab.cc (Symbol_table::sized_write_globals): Use address of output section, not input section. * testsuite/Makefile.am (pr20976): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/pr20976.c: New source file.
Diffstat (limited to 'gold/testsuite/pr20976.c')
-rw-r--r--gold/testsuite/pr20976.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gold/testsuite/pr20976.c b/gold/testsuite/pr20976.c
new file mode 100644
index 00000000000..353e749205a
--- /dev/null
+++ b/gold/testsuite/pr20976.c
@@ -0,0 +1,34 @@
+/* pr20976.c -- test forced common allocation
+
+ Copyright (C) 2016 Free Software Foundation, Inc.
+ Written by Cary Coutant <ccoutant@gmail.com>
+
+ This file is part of gold.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA.
+
+ This test checks that forced common allocation (-d) with -r
+ produces the correct result when the .bss section contains
+ other allocated data besides common symbols. */
+
+int a = 0;
+int b;
+
+int main(void)
+{
+ a = 1;
+ return b;
+}