binutils-gdb/gold/testsuite/script_test_2.t
Cary Coutant 286adcf4f8 PR gold/13023
* expression.cc (Expression::eval_with_dot): Add
	is_section_dot_assignment parameter.
	(Expression::eval_maybe_dot): Likewise.  Adjust value when rhs is
	absolute and assigning to dot within a section.
	* script-sections.cc
	(Output_section_element_assignment::set_section_addresses): Pass
	dot_section to set_if_absolute.
	(Output_section_element_dot_assignment::finalize_symbols): Pass TRUE
	as is_section_dot_assignment flag to eval_with_dot.
	(Output_section_element_dot_assignment::set_section_addresses):
	Likewise.
	* script.cc (Symbol_assignment::set_if_absolute): Add dot_section
	parameter.  Also set value if relative to dot_section; set the
	symbol's output_section.
	* script.h (Expression::eval_with_dot): Add is_section_dot_assignment
	parameter.  Adjust all callers.
	(Expression::eval_maybe_dot): Likewise.
	(Symbol_assignment::set_if_absolute): Add dot_section parameter.
	Adjust all callers.
	* testsuite/script_test_2.t: Test assignment of an absolute value
	to dot within an output section element.
2011-10-31 22:51:03 +00:00

69 lines
1.8 KiB
Perl

/* script_test_2.t -- linker script test 2 for gold
Copyright 2008 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.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. */
test_addr_alias = test_addr;
SECTIONS
{
/* With luck this will work everywhere. */
. = 0x10000000;
/* With luck this will be enough to get the program working. */
.text : { *(.text) }
. += 0x100000;
. = ALIGN(0x100);
.data : { *(.data) }
.bss : { *(.bss) }
/* Now the real test. */
. = 0x20000001;
start_test_area = .;
.gold_test ALIGN(16) : SUBALIGN(32) {
start_test_area_1 = .;
/* No sections should wind up here, because of the EXCLUDE_FILE. */
*( EXCLUDE_FILE(script_test*) .gold_test)
/* This should match only script_test_2b.o. */
script_test_2b.o(.gold_test)
/* This should match the remaining sections. */
*(.gold_test)
. = 60;
start_data = .;
BYTE(1)
SHORT(2)
LONG(4)
QUAD(8)
end_data = .;
start_fill = .;
FILL(0x12345678);
. = . + 7;
BYTE(0)
end_fill = .;
}
end_test_area = .;
test_addr = ADDR(.gold_test);
}