[cfe-dev] Re-using 'dllexport' for non-Windows targets

Robinson, Paul via cfe-dev cfe-dev at lists.llvm.org
Tue May 31 10:39:32 PDT 2016


| I know Sony does this, so it can't require too much patching.

Heh.  It's one of the bigger lumps of our local changes.

Yes we support dllexport/dllimport for PS4 target (ELF).  I remember there are both Clang and LLVM parts to the implementation, although I don't have the details off the top of my head, and Warren has volunteered to move it all upstream.  Somehow it keeps being interrupted by an imminent release, but I know he wants to get to it soon.
--paulr

From: cfe-dev [mailto:cfe-dev-bounces at lists.llvm.org] On Behalf Of Reid Kleckner via cfe-dev
Sent: Tuesday, May 31, 2016 9:29 AM
To: Martin J. O'Riordan
Cc: Clang Dev
Subject: Re: [cfe-dev] Re-using 'dllexport' for non-Windows targets

It should just work if you remove the Windows-only restriction in Attr.td:

def DLLExport : InheritableAttr, TargetSpecificAttr<TargetWindows> {
  let Spellings = [Declspec<"dllexport">, GCC<"dllexport">];
  let Subjects = SubjectList<[Function, Var, CXXRecord]>;
  let Documentation = [Undocumented];
}

def DLLImport : InheritableAttr, TargetSpecificAttr<TargetWindows> {
  let Spellings = [Declspec<"dllimport">, GCC<"dllimport">];
  let Subjects = SubjectList<[Function, Var, CXXRecord]>;
  let Documentation = [Undocumented];
}

I know Sony does this, so it can't require too much patching.

On Mon, May 30, 2016 at 6:38 AM, Martin J. O'Riordan via cfe-dev <cfe-dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>> wrote:
For our SHAVE target I have re-used ‘__attribute__((dllexport))’ to allow me to create indirect address tables for symbols with this annotation.

However, with almost every release of LLVM and CLang my implementation is broken and I have to rework my implementation.  For the most part, the existing ‘dllexport’ attribute does everything I require and makes more sense for me to pass it through CLang/LLVM until it reaches our back-end where it emits the IAT support rather than adding my own new attribute.

This got broken again with v3.8 and this time the controls are more strict on Windows supporting targets.  I thought that before I go in an make another set of changes to re-enable this with our target, that I would ask first if there anybody has any advice or recommendation for how to “borrow” this attribute for non-Windows targets?  The problem is principally CLang rather than LLVM, so I would like to find a good and future-proof way of adapting CLang to enable this attribute on my target.

Thanks in advance,

            MartinO

Martin J. O’Riordan                Email:  Martin.ORiordan at movidius.com<mailto:Martin.ORiordan at movidius.com>
Compiler Development               Web:    www.movidius.com<http://www.movidius.com/>
Movidius Ltd.                      Skype:  moviMartinO
1st Floor,  O’Connell Bridge House,  d’Olier Street,  Dublin 2, Ireland


_______________________________________________
cfe-dev mailing list
cfe-dev at lists.llvm.org<mailto:cfe-dev at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160531/972693b5/attachment.html>


More information about the cfe-dev mailing list