On Fri, Oct 24, 2003 at 11:07:22AM +0100, Nick Clifton wrote: > > > > + bfd_boolean override = FALSE; > > [optional]: This variable could be moved inside the if statement > starting at line 672, localizing it, if the statement was changed to: > > if (old_sec == NULL) > { > bfd_boolean override = FALSE; > > if (attr & ~ ssect->attr) > { > ... > } > > if (!override) > attr |= ssect->attr; > } > > I feel that the code looks neater this way. > > > > && (attr &~ ssect->attr &~ SHF_MERGE &~ SHF_STRINGS) == 0) > > I would appreciate it if you could add a space between the '&' and the > '~'. These are separate operators and should not be juxtaposed like > that. I know that this is not part of your original patch, but since > we are modifying this area of code, I think that it would be a good > idea to clean this up. > > > > + as_warn (_("setting incorrect section attributes for %s"), > > + name); > > + override = TRUE; > > Since the new attributes are going to be ignored, we should change the > warning message appropriately. Something like: > > as_warn (_("ignoring setting of incorrect section attributes for %s"), The attributes got ignored are the default ones. We are setting user- specified, "incorrect" attributes according to special_sections in bfd/elf.c. I will check in the patch enclosed here. H.J. ---- 2003-10-24 H.J. Lu <hongjiu.lu@intel.com> * config/obj-elf.c (obj_elf_change_section): Allow SHF_ALLOC for .interp, .strtab and .symtab. Use specified section attributes. --- gas/config/obj-elf.c.attr 2003-09-23 08:16:44.000000000 -0700 +++ gas/config/obj-elf.c 2003-10-24 08:08:29.000000000 -0700 @@ -641,6 +641,8 @@ obj_elf_change_section (name, type, attr if (ssect != NULL) { + bfd_boolean override = FALSE; + if (type == SHT_NULL) type = ssect->type; else if (type != ssect->type) @@ -669,7 +671,7 @@ obj_elf_change_section (name, type, attr } } - if (old_sec == NULL && (attr &~ ssect->attr) != 0) + if (old_sec == NULL && (attr & ~ssect->attr) != 0) { /* As a GNU extension, we permit a .note section to be allocatable. If the linker sees an allocatable .note @@ -682,13 +684,25 @@ obj_elf_change_section (name, type, attr something like .rodata.str. */ else if (ssect->suffix_length == -2 && name[ssect->prefix_length] == '.' - && (attr &~ ssect->attr &~ SHF_MERGE &~ SHF_STRINGS) == 0) + && (attr + & ~ssect->attr + & ~SHF_MERGE + & ~SHF_STRINGS) == 0) ; + /* .interp, .strtab and .symtab can have SHF_ALLOC. */ + else if (attr == SHF_ALLOC + && (strcmp (name, ".interp") == 0 + || strcmp (name, ".strtab") == 0 + || strcmp (name, ".symtab") == 0)) + override = TRUE; else - as_warn (_("setting incorrect section attributes for %s"), - name); + { + as_warn (_("setting incorrect section attributes for %s"), + name); + override = TRUE; + } } - if (old_sec == NULL) + if (!override && old_sec == NULL) attr |= ssect->attr; } - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Fri Oct 24 11:18:32 2003
This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:19 EST