* ldemul.h (ldemul_place_orphan): Update prototype.

(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
	* ldemul.c (ldemul_place_orphan): Return pointer to output
	section statement.
	* emultempl/beos.em (gld${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Likewise.
	* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
	* emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
This commit is contained in:
Alan Modra 2008-10-20 12:14:29 +00:00
parent 7d9616d756
commit c2edb4b89e
8 changed files with 37 additions and 27 deletions

View File

@ -1,3 +1,15 @@
2008-10-20 Alan Modra <amodra@bigpond.net.au>
* ldemul.h (ldemul_place_orphan): Update prototype.
(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
* ldemul.c (ldemul_place_orphan): Return pointer to output
section statement.
* emultempl/beos.em (gld${EMULATION_NAME}_place_orphan): Likewise.
* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Likewise.
* emultempl/mmo.em (mmo_place_orphan): Likewise.
* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
* emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
2008-10-08 Nick Clifton <nickc@redhat.com> 2008-10-08 Nick Clifton <nickc@redhat.com>
* configure.in (ALL_LINGUAS): Add "id". * configure.in (ALL_LINGUAS): Add "id".

View File

@ -664,7 +664,7 @@ gld_${EMULATION_NAME}_before_allocation (void)
but I'm leaving this here in case we want to enable it for sections but I'm leaving this here in case we want to enable it for sections
which are not mentioned in the linker script. */ which are not mentioned in the linker script. */
static bfd_boolean static lang_output_section_statement_type *
gld${EMULATION_NAME}_place_orphan (asection *s, gld${EMULATION_NAME}_place_orphan (asection *s,
const char *secname, const char *secname,
int constraint) int constraint)
@ -674,21 +674,21 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
lang_statement_union_type *l; lang_statement_union_type *l;
if ((s->flags & SEC_ALLOC) == 0) if ((s->flags & SEC_ALLOC) == 0)
return FALSE; return NULL;
/* Don't process grouped sections unless doing a final link. /* Don't process grouped sections unless doing a final link.
If they're marked as COMDAT sections, we don't want .text\$foo to If they're marked as COMDAT sections, we don't want .text\$foo to
end up in .text and then have .text disappear because it's marked end up in .text and then have .text disappear because it's marked
link-once-discard. */ link-once-discard. */
if (link_info.relocatable) if (link_info.relocatable)
return FALSE; return NULL;
/* Everything from the '\$' on gets deleted so don't allow '\$' as the /* Everything from the '\$' on gets deleted so don't allow '\$' as the
first character. */ first character. */
if (*secname == '\$') if (*secname == '\$')
einfo ("%P%F: section %s has '\$' as first character\n", secname); einfo ("%P%F: section %s has '\$' as first character\n", secname);
if (strchr (secname + 1, '\$') == NULL) if (strchr (secname + 1, '\$') == NULL)
return FALSE; return NULL;
/* Look up the output section. The Microsoft specs say sections names in /* Look up the output section. The Microsoft specs say sections names in
image files never contain a '\$'. Fortunately, lang_..._lookup creates image files never contain a '\$'. Fortunately, lang_..._lookup creates
@ -726,7 +726,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
sort_sections. */ sort_sections. */
lang_add_section (&l->wild_statement.children, s, os); lang_add_section (&l->wild_statement.children, s, os);
return TRUE; return os;
} }
static char * static char *

View File

@ -62,7 +62,7 @@ fragment <<EOF
static void gld${EMULATION_NAME}_before_parse (void); static void gld${EMULATION_NAME}_before_parse (void);
static void gld${EMULATION_NAME}_after_open (void); static void gld${EMULATION_NAME}_after_open (void);
static void gld${EMULATION_NAME}_before_allocation (void); static void gld${EMULATION_NAME}_before_allocation (void);
static bfd_boolean gld${EMULATION_NAME}_place_orphan static lang_output_section_statement_type *gld${EMULATION_NAME}_place_orphan
(asection *, const char *, int); (asection *, const char *, int);
static void gld${EMULATION_NAME}_finish (void); static void gld${EMULATION_NAME}_finish (void);
@ -1635,7 +1635,7 @@ output_rel_find (asection *sec, int isdyn)
/* Place an orphan section. We use this to put random SHF_ALLOC /* Place an orphan section. We use this to put random SHF_ALLOC
sections in the right segment. */ sections in the right segment. */
static bfd_boolean static lang_output_section_statement_type *
gld${EMULATION_NAME}_place_orphan (asection *s, gld${EMULATION_NAME}_place_orphan (asection *s,
const char *secname, const char *secname,
int constraint) int constraint)
@ -1723,7 +1723,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
set, then it has been created by the linker, probably as a set, then it has been created by the linker, probably as a
result of a --section-start command line switch. */ result of a --section-start command line switch. */
lang_add_section (&os->children, s, os); lang_add_section (&os->children, s, os);
return TRUE; return os;
} }
if (!orphan_init_done) if (!orphan_init_done)
@ -1746,9 +1746,9 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
&& CONST_STRNEQ (s->name, ".gnu.warning.") && CONST_STRNEQ (s->name, ".gnu.warning.")
&& hold[orphan_text].os != NULL) && hold[orphan_text].os != NULL)
{ {
lang_add_section (&hold[orphan_text].os->children, s, os = hold[orphan_text].os;
hold[orphan_text].os); lang_add_section (&os->children, s, os);
return TRUE; return os;
} }
/* Decide which segment the section should go in based on the /* Decide which segment the section should go in based on the
@ -1798,9 +1798,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
after = &lang_output_section_statement.head->output_section_statement; after = &lang_output_section_statement.head->output_section_statement;
} }
lang_insert_orphan (s, secname, constraint, after, place, NULL, NULL); return lang_insert_orphan (s, secname, constraint, after, place, NULL, NULL);
return TRUE;
} }
EOF EOF
fi fi

View File

@ -46,7 +46,7 @@ fragment <<EOF
SEC_READONLY sections right after MMO_TEXT_SECTION_NAME. Much borrowed SEC_READONLY sections right after MMO_TEXT_SECTION_NAME. Much borrowed
from elf32.em. */ from elf32.em. */
static bfd_boolean static lang_output_section_statement_type *
mmo_place_orphan (asection *s, mmo_place_orphan (asection *s,
const char *secname, const char *secname,
int constraint ATTRIBUTE_UNUSED) int constraint ATTRIBUTE_UNUSED)
@ -64,7 +64,7 @@ mmo_place_orphan (asection *s,
/* We have nothing to say for anything other than a final link. */ /* We have nothing to say for anything other than a final link. */
if (link_info.relocatable if (link_info.relocatable
|| (s->flags & (SEC_EXCLUDE | SEC_LOAD)) != SEC_LOAD) || (s->flags & (SEC_EXCLUDE | SEC_LOAD)) != SEC_LOAD)
return FALSE; return NULL;
/* Only care for sections we're going to load. */ /* Only care for sections we're going to load. */
os = lang_output_section_find (secname); os = lang_output_section_find (secname);
@ -74,13 +74,13 @@ mmo_place_orphan (asection *s,
if (os != NULL) if (os != NULL)
{ {
lang_add_section (&os->children, s, os); lang_add_section (&os->children, s, os);
return TRUE; return os;
} }
/* If this section does not have .text-type section flags or there's no /* If this section does not have .text-type section flags or there's no
MMO_TEXT_SECTION_NAME, we don't have anything to say. */ MMO_TEXT_SECTION_NAME, we don't have anything to say. */
if ((s->flags & (SEC_CODE | SEC_READONLY)) == 0) if ((s->flags & (SEC_CODE | SEC_READONLY)) == 0)
return FALSE; return NULL;
if (hold_text.os == NULL) if (hold_text.os == NULL)
hold_text.os = lang_output_section_find (hold_text.name); hold_text.os = lang_output_section_find (hold_text.name);
@ -102,7 +102,7 @@ mmo_place_orphan (asection *s,
if (hold_text.os == NULL) if (hold_text.os == NULL)
hold_text.os = os; hold_text.os = os;
return TRUE; return os;
} }
/* Remove the spurious settings of SEC_RELOC that make it to the output at /* Remove the spurious settings of SEC_RELOC that make it to the output at

View File

@ -1612,7 +1612,7 @@ gld_${EMULATION_NAME}_finish (void)
default linker script using wildcards, and are sorted by default linker script using wildcards, and are sorted by
sort_sections. */ sort_sections. */
static bfd_boolean static lang_output_section_statement_type *
gld_${EMULATION_NAME}_place_orphan (asection *s, gld_${EMULATION_NAME}_place_orphan (asection *s,
const char *secname, const char *secname,
int constraint) int constraint)
@ -1768,7 +1768,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
} }
} }
return TRUE; return os;
} }
static bfd_boolean static bfd_boolean

View File

@ -1371,7 +1371,7 @@ gld_${EMULATION_NAME}_finish (void)
default linker script using wildcards, and are sorted by default linker script using wildcards, and are sorted by
sort_sections. */ sort_sections. */
static bfd_boolean static lang_output_section_statement_type *
gld_${EMULATION_NAME}_place_orphan (asection *s, gld_${EMULATION_NAME}_place_orphan (asection *s,
const char *secname, const char *secname,
int constraint) int constraint)
@ -1527,7 +1527,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
} }
} }
return TRUE; return os;
} }
static bfd_boolean static bfd_boolean

View File

@ -119,12 +119,12 @@ ldemul_open_dynamic_archive (const char *arch, search_dirs_type *search,
return FALSE; return FALSE;
} }
bfd_boolean lang_output_section_statement_type *
ldemul_place_orphan (asection *s, const char *name, int constraint) ldemul_place_orphan (asection *s, const char *name, int constraint)
{ {
if (ld_emulation->place_orphan) if (ld_emulation->place_orphan)
return (*ld_emulation->place_orphan) (s, name, constraint); return (*ld_emulation->place_orphan) (s, name, constraint);
return FALSE; return NULL;
} }
void void

View File

@ -58,7 +58,7 @@ extern void ldemul_set_symbols
(void); (void);
extern void ldemul_create_output_section_statements extern void ldemul_create_output_section_statements
(void); (void);
extern bfd_boolean ldemul_place_orphan extern lang_output_section_statement_type *ldemul_place_orphan
(asection *, const char *, int); (asection *, const char *, int);
extern bfd_boolean ldemul_parse_args extern bfd_boolean ldemul_parse_args
(int, char **); (int, char **);
@ -151,7 +151,7 @@ typedef struct ld_emulation_xfer_struct {
/* Place an orphan section. Return TRUE if it was placed, FALSE if /* Place an orphan section. Return TRUE if it was placed, FALSE if
the default action should be taken. This field may be NULL, in the default action should be taken. This field may be NULL, in
which case the default action will always be taken. */ which case the default action will always be taken. */
bfd_boolean (*place_orphan) lang_output_section_statement_type *(*place_orphan)
(asection *, const char *, int); (asection *, const char *, int);
/* Run after assigning parsing with the args, but before /* Run after assigning parsing with the args, but before