Fixes a problem with the linker script parser not always handling the ! character in memort region attributes.
PR ld/17900 * ldlang.c (lang_set_flags): Allow exclamation mark to reverse the sense of the following memory region attribute characters.
This commit is contained in:
parent
07697489f4
commit
f0673d2040
2 changed files with 15 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-02-27 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR ld/17900
|
||||
* ldlang.c (lang_set_flags): Allow exclamation mark to reverse the
|
||||
sense of the following memory region attribute characters.
|
||||
|
||||
2015-02-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am (ALL_EMULATION_SOURCES): Sort new h8300 entries.
|
||||
|
|
10
ld/ldlang.c
10
ld/ldlang.c
|
@ -6125,10 +6125,18 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
|
|||
flagword *ptr_flags;
|
||||
|
||||
ptr_flags = invert ? &ptr->not_flags : &ptr->flags;
|
||||
|
||||
while (*flags)
|
||||
{
|
||||
switch (*flags)
|
||||
{
|
||||
/* PR 17900: An exclamation mark in the attributes reverses
|
||||
the sense of any of the attributes that follow. */
|
||||
case '!':
|
||||
invert = ! invert;
|
||||
ptr_flags = invert ? &ptr->not_flags : &ptr->flags;
|
||||
break;
|
||||
|
||||
case 'A': case 'a':
|
||||
*ptr_flags |= SEC_ALLOC;
|
||||
break;
|
||||
|
@ -6151,7 +6159,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
|
|||
break;
|
||||
|
||||
default:
|
||||
einfo (_("%P%F: invalid syntax in flags\n"));
|
||||
einfo (_("%P%F: invalid character %c (%d) in flags\n"), * flags, * flags);
|
||||
break;
|
||||
}
|
||||
flags++;
|
||||
|
|
Loading…
Reference in a new issue