Patchwork [Revisedx2] eliminate UNRESOLVED errors on attr-ifunc-[1,5].c/attr-ifunc-[1,4].C

login
register
mail settings
Submitter Jack Howarth
Date Sept. 24, 2010, 12:35 a.m.
Message ID <20100924003525.GA1035@bromo.med.uc.edu>
Download mbox | patch
Permalink /patch/65609/
State New
Headers show

Comments

Jack Howarth - Sept. 24, 2010, 12:35 a.m.
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?
                          Jack


2010-09-23  Jack Howarth <howarth@bromo.med.uc.edu>

	* gcc/varasm.c (assemble_alias): Add error message for unsupported ifunc.
Nathan Sidwell - Sept. 26, 2010, 5:53 p.m.
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
Mike Stump - Sept. 26, 2010, 6:52 p.m.
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 :-) ]
Nathan Sidwell - Sept. 29, 2010, 5:39 p.m.
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

Patch

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