diff options
author | Cary Coutant <ccoutant@gmail.com> | 2016-12-19 10:37:23 -0800 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2016-12-19 10:37:34 -0800 |
commit | 89ede9f53b74f84febcd1c2a6db8b03f390b62ec (patch) | |
tree | 3306b0e138f370414528b2d9091e99503e4b5e81 /gold/testsuite/pr20976.c | |
parent | 16e69324ec7fbe4ea12f2a0a069ad207ac8e3f97 (diff) | |
download | binutils-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.c | 34 |
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; +} |