* config/tc-h8300.c (h8300_elf_section): New function - issue a
warning message if a new section is created without setting any attributes for it. (md_pseudo_table): Intercept section creation pseudos. (md_pcrel_from): Replace abort with an error message. * config/obj-elf.c (obj_elf_section_name): Export this function. * config/obj-elf.h (obj_elf_section_name): Prototype. * gas/elf/section0.d: Skip this test for the h8300. * gas/elf/section1.d: Likewise. * gas/elf/section6.d: Likewise. * gas/elf/elf.exp: Skip section2 and section5 tests when the target is the h8300. * ld-scrips/sort.exp: Skip these tests when the target is the h8300.
This commit is contained in:
parent
11db68fd8d
commit
52b010e442
|
@ -1,3 +1,13 @@
|
||||||
|
2010-01-13 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* config/tc-h8300.c (h8300_elf_section): New function - issue a
|
||||||
|
warning message if a new section is created without setting any
|
||||||
|
attributes for it.
|
||||||
|
(md_pseudo_table): Intercept section creation pseudos.
|
||||||
|
(md_pcrel_from): Replace abort with an error message.
|
||||||
|
* config/obj-elf.c (obj_elf_section_name): Export this function.
|
||||||
|
* config/obj-elf.h (obj_elf_section_name): Prototype.
|
||||||
|
|
||||||
2010-01-12 Alan Modra <amodra@gmail.com>
|
2010-01-12 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 11122
|
PR 11122
|
||||||
|
|
|
@ -855,7 +855,7 @@ obj_elf_section_word (char *str, size_t len, int *type)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get name of section. */
|
/* Get name of section. */
|
||||||
static char *
|
char *
|
||||||
obj_elf_section_name (void)
|
obj_elf_section_name (void)
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
|
|
|
@ -164,6 +164,7 @@ extern void elf_file_symbol (const char *, int);
|
||||||
extern void obj_elf_section_change_hook (void);
|
extern void obj_elf_section_change_hook (void);
|
||||||
|
|
||||||
extern void obj_elf_section (int);
|
extern void obj_elf_section (int);
|
||||||
|
extern char * obj_elf_section_name (void);
|
||||||
extern void obj_elf_previous (int);
|
extern void obj_elf_previous (int);
|
||||||
extern void obj_elf_version (int);
|
extern void obj_elf_version (int);
|
||||||
extern void obj_elf_common (int);
|
extern void obj_elf_common (int);
|
||||||
|
|
|
@ -139,6 +139,48 @@ pint (int arg ATTRIBUTE_UNUSED)
|
||||||
cons (Hmode ? 4 : 2);
|
cons (Hmode ? 4 : 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Like obj_elf_section, but issues a warning for new
|
||||||
|
sections which do not have an attribute specification. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
h8300_elf_section (int push)
|
||||||
|
{
|
||||||
|
static const char * known_data_sections [] = { ".rodata", ".tdata", ".tbss" };
|
||||||
|
static const char * known_data_prefixes [] = { ".debug", ".gnu.warning" };
|
||||||
|
char * saved_ilp = input_line_pointer;
|
||||||
|
char * name;
|
||||||
|
|
||||||
|
name = obj_elf_section_name ();
|
||||||
|
if (name == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (* input_line_pointer != ','
|
||||||
|
&& bfd_get_section_by_name (stdoutput, name) == NULL)
|
||||||
|
{
|
||||||
|
signed int i;
|
||||||
|
|
||||||
|
/* Ignore this warning for well known data sections. */
|
||||||
|
for (i = ARRAY_SIZE (known_data_sections); i--;)
|
||||||
|
if (strcmp (name, known_data_sections[i]) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (i < 0)
|
||||||
|
for (i = ARRAY_SIZE (known_data_prefixes); i--;)
|
||||||
|
if (strncmp (name, known_data_prefixes[i],
|
||||||
|
strlen (known_data_prefixes[i])) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (i < 0)
|
||||||
|
as_warn (_("new section '%s' defined without attributes - this might cause problems"), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: We ought to free the memory allocated by obj_elf_section_name()
|
||||||
|
for 'name', but we do not know if it was taken from the obstack, via
|
||||||
|
demand_copy_C_string(), or xmalloc()ed. */
|
||||||
|
input_line_pointer = saved_ilp;
|
||||||
|
obj_elf_section (push);
|
||||||
|
}
|
||||||
|
|
||||||
/* This table describes all the machine specific pseudo-ops the assembler
|
/* This table describes all the machine specific pseudo-ops the assembler
|
||||||
has to support. The fields are:
|
has to support. The fields are:
|
||||||
pseudo-op name without dot
|
pseudo-op name without dot
|
||||||
|
@ -165,6 +207,14 @@ const pseudo_typeS md_pseudo_table[] =
|
||||||
{"import", s_ignore, 0},
|
{"import", s_ignore, 0},
|
||||||
{"page", listing_eject, 0},
|
{"page", listing_eject, 0},
|
||||||
{"program", s_ignore, 0},
|
{"program", s_ignore, 0},
|
||||||
|
|
||||||
|
#ifdef OBJ_ELF
|
||||||
|
{"section", h8300_elf_section, 0},
|
||||||
|
{"section.s", h8300_elf_section, 0},
|
||||||
|
{"sect", h8300_elf_section, 0},
|
||||||
|
{"sect.s", h8300_elf_section, 0},
|
||||||
|
#endif
|
||||||
|
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2139,9 +2189,11 @@ md_number_to_chars (char *ptr, valueT use, int nbytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
long
|
long
|
||||||
md_pcrel_from (fixS *fixP ATTRIBUTE_UNUSED)
|
md_pcrel_from (fixS *fixp)
|
||||||
{
|
{
|
||||||
abort ();
|
as_bad_where (fixp->fx_file, fixp->fx_line,
|
||||||
|
_("Unexpected reference to a symbol in a non-code section"));
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
arelent *
|
arelent *
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2010-01-13 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* gas/elf/section0.d: Skip this test for the h8300.
|
||||||
|
* gas/elf/section1.d: Likewise.
|
||||||
|
* gas/elf/section6.d: Likewise.
|
||||||
|
* gas/elf/elf.exp: Skip section2 and section5 tests when the
|
||||||
|
target is the h8300.
|
||||||
|
|
||||||
2010-01-06 Quentin Neill <quentin.neill@amd.com>
|
2010-01-06 Quentin Neill <quentin.neill@amd.com>
|
||||||
|
|
||||||
* gas/i386/i386.exp: Add new amdfam15 test cases.
|
* gas/i386/i386.exp: Add new amdfam15 test cases.
|
||||||
|
|
|
@ -126,10 +126,18 @@ if { ([istarget "*-*-*elf*"]
|
||||||
}
|
}
|
||||||
run_dump_test "section0"
|
run_dump_test "section0"
|
||||||
run_dump_test "section1"
|
run_dump_test "section1"
|
||||||
run_elf_list_test "section2" "$target_machine" "-al" "-s" ""
|
if {! [istarget "h8300-*-*"]} then {
|
||||||
|
# The h8300 port issues a warning message for
|
||||||
|
# new sections created without atrributes.
|
||||||
|
run_elf_list_test "section2" "$target_machine" "-al" "-s" ""
|
||||||
|
}
|
||||||
run_dump_test "section3"
|
run_dump_test "section3"
|
||||||
run_dump_test "section4"
|
run_dump_test "section4"
|
||||||
run_elf_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\""
|
if {! [istarget "h8300-*-*"]} then {
|
||||||
|
# The h8300 port issues a warning message for
|
||||||
|
# new sections created without atrributes.
|
||||||
|
run_elf_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\""
|
||||||
|
}
|
||||||
run_dump_test "struct"
|
run_dump_test "struct"
|
||||||
run_dump_test "symtab"
|
run_dump_test "symtab"
|
||||||
run_dump_test "symver"
|
run_dump_test "symver"
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#objdump: -s
|
#objdump: -s
|
||||||
#name: elf section0
|
#name: elf section0
|
||||||
|
# The h8300 port issues a warning message for
|
||||||
|
# new sections created without atrributes.
|
||||||
|
#skip: h8300-*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#objdump: -s
|
#objdump: -s
|
||||||
#name: elf section1
|
#name: elf section1
|
||||||
|
# The h8300 port issues a warning message for
|
||||||
|
# new sections created without atrributes.
|
||||||
|
#skip: h8300-*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#objdump: -s
|
#objdump: -s
|
||||||
#name: elf section6
|
#name: elf section6
|
||||||
|
# The h8300 port issues a warning message for
|
||||||
|
# new sections created without atrributes.
|
||||||
|
#skip: h8300-*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2010-01-13 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* ld-scrips/sort.exp: Skip these tests when the target is the
|
||||||
|
h8300.
|
||||||
|
|
||||||
2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/11146
|
PR ld/11146
|
||||||
|
|
|
@ -25,6 +25,12 @@ if ![is_elf_format] {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# The h8300 port issues a warning message for
|
||||||
|
# new sections created without atrributes.
|
||||||
|
if [istarget "h8300-*-*"] {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
load_lib ld-lib.exp
|
load_lib ld-lib.exp
|
||||||
|
|
||||||
set sort_test_list [lsort [glob -nocomplain $srcdir/$subdir/sort*.d]]
|
set sort_test_list [lsort [glob -nocomplain $srcdir/$subdir/sort*.d]]
|
||||||
|
|
Loading…
Reference in New Issue