This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH][gold] gold/PR16711 Linker script causes gold to include .bss in output file.


Hi,

If a linker script is used, all output sections of a segment are stored
in the first item of output_lists_. On the other hand, when calculating
the file size of segments, gold adds sections from all chunks of
output_lists_ up to index ORDER_SMALL_BSS. As a result, if a linker
script with SECTIONS clause is used, all the sections contribute to the
file size of the segment, even though some of them might be BSS.

This patch addresses the issue by analyzing section types, excluding
BSS sections at the end of the sequence from contributing to the file
offset, regardless of their index in output_lists_.

Best regards,
Igor Kudrin

---
gold/ChangeLog

	* output.cc (Output_segment::set_section_addresses):
	Handle file and memory offsets separatelly.
	(Output_segment::set_section_list_addresses): Ignore BSS
	segments at the end of the list for file offsets.
	* output.h (Output_segment::set_section_list_addresses):
	New argument poff_file; rename argument poff to poff_mem.
	* testsuite/Makefile.am (pr16711): New test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/pr16711.s: New test source file.
	* testsuite/pr16711.sh: New test script.
	* testsuite/pr16711.t: New test linker script.

Attachment: gold-pr16711-segment-with-bss.patch.txt
Description: gold-pr16711-segment-with-bss.patch.txt


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]