This fixes ! to work as documented in a memory region attribute list.

From Thomas Zenker <thz@lennartz-electronic.de>:
	* ldgram.y (attributes_opt): Use attributes_list instead of NAME.
	(attributes_list, attributes_string): New nonterminals.
	* ldlang.c (lang_set_flags): Add invert parameter.  Don't handle
	'!'.
	* ldlang.c (lang_set_flags): Update declaration.
This commit is contained in:
Ian Lance Taylor
1999-06-12 21:24:56 +00:00
parent 57e21befb9
commit aa8804e46e
4 changed files with 35 additions and 18 deletions

View File

@ -3255,21 +3255,18 @@ lang_place_orphans ()
void
lang_set_flags (ptr, flags)
lang_set_flags (ptr, flags, invert)
lang_memory_region_type *ptr;
CONST char *flags;
int invert;
{
flagword *ptr_flags = &ptr->flags;
flagword *ptr_flags;
ptr->flags = ptr->not_flags = 0;
ptr_flags = invert ? &ptr->not_flags : &ptr->flags;
while (*flags)
{
switch (*flags)
{
case '!':
ptr_flags = (ptr_flags == &ptr->flags) ? &ptr->not_flags : &ptr->flags;
break;
case 'A': case 'a':
*ptr_flags |= SEC_ALLOC;
break;