forked from Imagelibrary/binutils-gdb
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:
@@ -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>
|
2015-02-27 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* Makefile.am (ALL_EMULATION_SOURCES): Sort new h8300 entries.
|
* 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;
|
flagword *ptr_flags;
|
||||||
|
|
||||||
ptr_flags = invert ? &ptr->not_flags : &ptr->flags;
|
ptr_flags = invert ? &ptr->not_flags : &ptr->flags;
|
||||||
|
|
||||||
while (*flags)
|
while (*flags)
|
||||||
{
|
{
|
||||||
switch (*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':
|
case 'A': case 'a':
|
||||||
*ptr_flags |= SEC_ALLOC;
|
*ptr_flags |= SEC_ALLOC;
|
||||||
break;
|
break;
|
||||||
@@ -6151,7 +6159,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
einfo (_("%P%F: invalid syntax in flags\n"));
|
einfo (_("%P%F: invalid character %c (%d) in flags\n"), * flags, * flags);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
flags++;
|
flags++;
|
||||||
|
|||||||
Reference in New Issue
Block a user