mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-02 19:46:09 +08:00
PR ld/12726
* ldexp.h (lang_phase_type): Add lang_assigning_phase_enum. * ldexp.c (exp_fold_tree_1): Correct assign to dot comment. Don't assign to dot when lang_assigning_phase_enum. * ldlang.h (lang_do_assignments): Update prototype. * ldlang.c (lang_do_assignments): Add phase parameter. Update all callers. * pe-dll.c (pe_dll_fill_sections, pe_exe_fill_sections): Update lang_do_assignments calls.
This commit is contained in:
12
ld/ChangeLog
12
ld/ChangeLog
@ -1,3 +1,15 @@
|
||||
2011-05-04 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/12726
|
||||
* ldexp.h (lang_phase_type): Add lang_assigning_phase_enum.
|
||||
* ldexp.c (exp_fold_tree_1): Correct assign to dot comment. Don't
|
||||
assign to dot when lang_assigning_phase_enum.
|
||||
* ldlang.h (lang_do_assignments): Update prototype.
|
||||
* ldlang.c (lang_do_assignments): Add phase parameter. Update all
|
||||
callers.
|
||||
* pe-dll.c (pe_dll_fill_sections, pe_exe_fill_sections): Update
|
||||
lang_do_assignments calls.
|
||||
|
||||
2011-04-28 Daniel C. Klauer <daniel.c.klauer@web.de>
|
||||
|
||||
PR ld/12614
|
||||
|
@ -783,12 +783,15 @@ exp_fold_tree_1 (etree_type *tree)
|
||||
case etree_provided:
|
||||
if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0)
|
||||
{
|
||||
/* Assignment to dot can only be done during allocation. */
|
||||
if (tree->type.node_class != etree_assign)
|
||||
einfo (_("%F%S can not PROVIDE assignment to location counter\n"));
|
||||
/* After allocation, assignment to dot should not be done inside
|
||||
an output section since allocation adds a padding statement
|
||||
that effectively duplicates the assignment. */
|
||||
if (expld.phase == lang_mark_phase_enum
|
||||
|| expld.phase == lang_allocating_phase_enum
|
||||
|| (expld.phase == lang_final_phase_enum
|
||||
|| ((expld.phase == lang_assigning_phase_enum
|
||||
|| expld.phase == lang_final_phase_enum)
|
||||
&& expld.section == bfd_abs_section_ptr))
|
||||
{
|
||||
/* Notify the folder that this is an assignment to dot. */
|
||||
|
@ -97,6 +97,7 @@ typedef enum {
|
||||
lang_first_phase_enum,
|
||||
lang_mark_phase_enum,
|
||||
lang_allocating_phase_enum,
|
||||
lang_assigning_phase_enum,
|
||||
lang_final_phase_enum
|
||||
} lang_phase_type;
|
||||
|
||||
|
10
ld/ldlang.c
10
ld/ldlang.c
@ -5606,8 +5606,9 @@ lang_do_assignments_1 (lang_statement_union_type *s,
|
||||
}
|
||||
|
||||
void
|
||||
lang_do_assignments (void)
|
||||
lang_do_assignments (lang_phase_type phase)
|
||||
{
|
||||
expld.phase = phase;
|
||||
lang_statement_iteration++;
|
||||
lang_do_assignments_1 (statement_list.head, abs_output_section, NULL, 0);
|
||||
}
|
||||
@ -6403,7 +6404,7 @@ lang_relax_sections (bfd_boolean need_layout)
|
||||
|
||||
/* Do all the assignments with our current guesses as to
|
||||
section sizes. */
|
||||
lang_do_assignments ();
|
||||
lang_do_assignments (lang_assigning_phase_enum);
|
||||
|
||||
/* We must do this after lang_do_assignments, because it uses
|
||||
size. */
|
||||
@ -6424,7 +6425,7 @@ lang_relax_sections (bfd_boolean need_layout)
|
||||
if (need_layout)
|
||||
{
|
||||
/* Final extra sizing to report errors. */
|
||||
lang_do_assignments ();
|
||||
lang_do_assignments (lang_assigning_phase_enum);
|
||||
lang_reset_memory_regions ();
|
||||
lang_size_sections (NULL, TRUE);
|
||||
}
|
||||
@ -6666,8 +6667,7 @@ lang_process (void)
|
||||
|
||||
/* Do all the assignments, now that we know the final resting places
|
||||
of all the symbols. */
|
||||
expld.phase = lang_final_phase_enum;
|
||||
lang_do_assignments ();
|
||||
lang_do_assignments (lang_final_phase_enum);
|
||||
|
||||
ldemul_finish ();
|
||||
|
||||
|
@ -543,7 +543,7 @@ extern void lang_for_each_file
|
||||
extern void lang_reset_memory_regions
|
||||
(void);
|
||||
extern void lang_do_assignments
|
||||
(void);
|
||||
(lang_phase_type);
|
||||
|
||||
#define LANG_FOR_EACH_INPUT_STATEMENT(statement) \
|
||||
lang_input_statement_type *statement; \
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Routines to help build PEI-format DLLs (Win32 etc)
|
||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||
2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
Written by DJ Delorie <dj@cygnus.com>
|
||||
|
||||
This file is part of the GNU Binutils.
|
||||
@ -3232,7 +3232,7 @@ pe_dll_fill_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
ldemul_after_allocation ();
|
||||
|
||||
/* Do the assignments again. */
|
||||
lang_do_assignments ();
|
||||
lang_do_assignments (lang_final_phase_enum);
|
||||
}
|
||||
|
||||
fill_edata (abfd, info);
|
||||
@ -3264,7 +3264,7 @@ pe_exe_fill_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
ldemul_after_allocation ();
|
||||
|
||||
/* Do the assignments again. */
|
||||
lang_do_assignments ();
|
||||
lang_do_assignments (lang_final_phase_enum);
|
||||
}
|
||||
reloc_s->contents = reloc_d;
|
||||
}
|
||||
|
Reference in New Issue
Block a user