Message ID | 20100924003525.GA1035@bromo.med.uc.edu |
---|---|
State | New |
Headers | show |
On 09/24/10 01:35, Jack Howarth wrote: > Currently on targets like darwin which lack alias support in their object file > format, the ifunc test case gcc.dg/attr-ifunc-1.c erroneously reports as UNRESOLVED. > This is due to the fact that assemble_alias() is called before the error can be > emiited in do_assemble_alias(). Thus an inappropriate error message is given. The > attached patch resolves this by checking for the ifunc attribute and emitting the > correct error message in assemble_alias. Bootstrap and regression tested on > x86_64-apple-darwin10. Okay for gcc trunk? this seems sensible, unfortunately I cannot approve it. nathan
On Sep 26, 2010, at 10:53 AM, Nathan Sidwell wrote: > On 09/24/10 01:35, Jack Howarth wrote: >> Currently on targets like darwin which lack alias support in their object file >> format, the ifunc test case gcc.dg/attr-ifunc-1.c erroneously reports as UNRESOLVED. >> This is due to the fact that assemble_alias() is called before the error can be >> emiited in do_assemble_alias(). Thus an inappropriate error message is given. The >> attached patch resolves this by checking for the ifunc attribute and emitting the >> correct error message in assemble_alias. Bootstrap and regression tested on >> x86_64-apple-darwin10. Okay for gcc trunk? > > this seems sensible, unfortunately I cannot approve it. I likewise, want an ifunc person to review approve it. The darwin aspects of it look fine to me. Hey, I had a random though, can we delay codegen using lto so that we can support more codegen things, like aliases, elf style weaks and ifunc on darwin? That'd be a curious way to gain more compatibility... [ this is just a wild thought, don't laugh at me :-) ]
On 09/24/10 01:35, Jack Howarth wrote: > 2010-09-23 Jack Howarth<howarth@bromo.med.uc.edu> > > * gcc/varasm.c (assemble_alias): Add error message for unsupported ifunc. I have committed this patch, after rth approved it off list. nathan
Index: gcc/varasm.c =================================================================== --- gcc/varasm.c (revision 164573) +++ gcc/varasm.c (working copy) @@ -5535,8 +5535,12 @@ # else if (!DECL_WEAK (decl)) { - error_at (DECL_SOURCE_LOCATION (decl), - "only weak aliases are supported in this configuration"); + if (lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl))) + error_at (DECL_SOURCE_LOCATION (decl), + "ifunc is not supported in this configuration"); + else + error_at (DECL_SOURCE_LOCATION (decl), + "only weak aliases are supported in this configuration"); return; } # endif