mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-23 13:21:43 +08:00
An assignment to dot in an output section that allocates space of course keeps the output section. Here, I'm changing the behaviour for assignments that don't allocate space. The idea is not so much to allow people to force output of an empty section with ". = .", but to fix cases where an otherwise empty section has padding added by an alignment expression that changes with relaxation or .eh_frame editing. Such a section might have zero size before relaxation and so be stripped incorrectly. ld/ * ld.texinfo (Output Section Discarding): Mention assigning to dot as a way of keeping otherwise empty sections. * ldexp.c (is_dot, is_value, is_sym_value, is_dot_ne_0, is_dot_plus_0, is_align_conditional): New predicates. (exp_fold_tree_1): Set SEC_KEEP when assigning to dot inside an output section, except for some special cases. * scripttempl/elfmicroblaze.sc: Use canonical form to align at end of .heap and .stack. ld/testsuite/ * ld-shared/elf-offset.ld: Align end of .bss with canonical form of ALIGN that allows an empty .bss to be removed. * ld-arm/arm-dyn.ld: Likewise. * ld-arm/arm-lib.ld: Likewise. * ld-elfvsb/elf-offset.ld: Likewise. * ld-mips-elf/mips-dyn.ld: Likewise. * ld-mips-elf/mips-lib.ld: Likewise. * ld-arm/arm-no-rel-plt.ld: Remove duplicate ALIGN. * ld-powerpc/vle-multiseg-1.ld: Remove ALIGN at start of section. ALIGN address of section instead. * ld-powerpc/vle-multiseg-2.ld: Likewise. * ld-powerpc/vle-multiseg-3.ld: Likewise. * ld-powerpc/vle-multiseg-4.ld: Likewise. * ld-powerpc/vle-multiseg-6.ld: Likewise. * ld-scripts/empty-aligned.d: Check section headers not program headers. Remove xfail and notarget. * ld-scripts/empty-aligned.t: Use canonical ALIGN for end of .text2.
145 lines
4.8 KiB
Plaintext
145 lines
4.8 KiB
Plaintext
2014-01-22 Alan Modra <amodra@gmail.com>
|
||
|
||
* ld.texinfo (Output Section Discarding): Mention assigning to dot
|
||
as a way of keeping otherwise empty sections.
|
||
* ldexp.c (is_dot, is_value, is_sym_value, is_dot_ne_0,
|
||
is_dot_plus_0, is_align_conditional): New predicates.
|
||
(exp_fold_tree_1): Set SEC_KEEP when assigning to dot inside an
|
||
output section, except for some special cases.
|
||
* scripttempl/elfmicroblaze.sc: Use canonical form to align at
|
||
end of .heap and .stack.
|
||
|
||
2014-01-20 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||
|
||
* emulparams/aarch64linuxb.sh (ELF_INTERPRETER_NAME): Define.
|
||
|
||
2014-01-20 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||
|
||
* emulparams/aarch64linux.sh (ELF_INTERPRETER_NAME): Define.
|
||
|
||
2014-01-20 Alan Modra <amodra@gmail.com>
|
||
|
||
* ldlang.h (struct lang_definedness_hash_entry): Add by_object and
|
||
by_script. Make iteration a single bit field.
|
||
(lang_track_definedness, lang_symbol_definition_iteration): Delete.
|
||
(lang_symbol_defined): Declare.
|
||
* ldlang.c (lang_statement_iteration): Expand comment a little.
|
||
(lang_init <lang_definedness_table>): Make it bigger.
|
||
(lang_track_definedness, lang_symbol_definition): Delete.
|
||
(lang_definedness_newfunc): Update.
|
||
(lang_symbol_defined): New function.
|
||
(lang_update_definedness): Create entries here. Do track whether
|
||
script definition of symbol is valid, even when also defined in
|
||
an object file.
|
||
* ldexp.c (fold_name <DEFINED>): Update.
|
||
(fold_name <NAME>): Allow self-assignment for absolute symbols
|
||
defined in a linker script.
|
||
|
||
2014-01-20 Guy Martin <gmsoft@tuxicoman.be>
|
||
Alan Modra <amodra@gmail.com>
|
||
|
||
* ldlang.h (lang_output_section_get): Define.
|
||
* ldlang.c (lang_output_section_get): Likewise.
|
||
(init_os): Set the output_section userdata to the output
|
||
section statement.
|
||
* emultempl/hppaelf.em: Use lang_output_section_get instead of
|
||
lang_output_section_find where applicable.
|
||
* emultempl/aarch64elf.em: Likewise.
|
||
* emultempl/aix.em: Likewise.
|
||
* emultempl/armelf.em: Likewise.
|
||
* emultempl/m68hc1xelf.em: Likewise.
|
||
* emultempl/metagelf.em: Likewise.
|
||
* emultempl/mipself.em: Likewise.
|
||
* emultempl/ppc64elf.em: Likewise.
|
||
* emultempl/spuelf.em: Likewise.
|
||
|
||
2014-01-17 Alan Modra <amodra@gmail.com>
|
||
|
||
* genscripts.sh (COMPILE_IN): Don't set if already set.
|
||
* emulparams/nds32elf.sh: Don't clear EMULATION_LIBPATH, set
|
||
COMPILE_IN=no.
|
||
* emulparams/nds32elf16m.sh: Likewise.
|
||
* emulparams/nds32elf_linux.sh: Likewise.
|
||
* emultempl/aix.em: Test COMPILE_IN value is "yes".
|
||
* emultempl/armcoff.em: Likewise.
|
||
* emultempl/elf32.em: Likewise.
|
||
* emultempl/generic.em: Likewise.
|
||
* emultempl/gld960.em: Likewise.
|
||
* emultempl/gld960c.em: Likewise.
|
||
* emultempl/linux.em: Likewise.
|
||
* emultempl/lnk960.em: Likewise.
|
||
* emultempl/m68kcoff.em: Likewise.
|
||
* emultempl/sunos.em: Likewise.
|
||
* emultempl/ticoff.em: Likewise.
|
||
|
||
2014-01-16 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/16456
|
||
* genscripts.sh: Don't search directory with LIBPATH_SUFFIX_SKIP
|
||
suffix.
|
||
* emulparams/elf32_x86_64.sh (LIBPATH_SUFFIX_SKIP): Set to 64
|
||
for elf32_x86_64 emulation.
|
||
* emulparams/elf_i386.sh (LIBPATH_SUFFIX_SKIP): Set to 64
|
||
for elf_i386 emulation.
|
||
|
||
2014-01-16 Alan Modra <amodra@gmail.com>
|
||
|
||
* ld.h (fat_section_userdata_type, get_userdata): Move to..
|
||
* ldlang.h (input_section_userdata_type, get_userdata): ..here.
|
||
* ldlang.c (init_map_userdata): Delete. Fold into..
|
||
(sort_def_symbol): ..here. Don't attach input section userdata
|
||
to output sections or global bfd sections.
|
||
(lang_map): Don't pre-allocate input section userdata.
|
||
(init_os): Don't allocate userdata for output sections.
|
||
(print_all_symbols): Update.
|
||
|
||
2014-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
|
||
Silence uninitialized warning on ehdr_start_save with older
|
||
GCC.
|
||
|
||
2014-01-15 Alan Modra <amodra@gmail.com>
|
||
|
||
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Define
|
||
__ehdr_start before size_dynamic_sections and restore afterwards.
|
||
|
||
2014-01-10 Alan Modra <amodra@gmail.com>
|
||
|
||
PR ld/14207
|
||
PR ld/16322
|
||
PR binutils/16323
|
||
* ldlang.c (lang_size_sections): Remove unneeded RELRO base
|
||
adjust. Tidy comments.
|
||
* ld.texinfo (DATA_SEGMENT_RELRO_END): Correct description.
|
||
|
||
2014-01-10 Hans-Peter Nilsson <hp@axis.com>
|
||
|
||
* emulparams/crislinux.sh (COMMONPAGESIZE): Define.
|
||
|
||
2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/14207
|
||
PR ld/16322
|
||
PR binutils/16323
|
||
* ldlang.c (lang_size_sections): Properly align RELRO base.
|
||
|
||
2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* ldver.c (ldversion): Update copyright year to 2014.
|
||
|
||
For older changes see ChangeLog-2013
|
||
|
||
Copyright (C) 2014 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|