[llvm-commits] [llvm] r107886 - in /llvm/trunk: include/llvm/MC/MCAsmInfo.h include/llvm/MC/MCDirectives.h lib/MC/MCAsmInfo.cpp lib/MC/MCAsmInfoDarwin.cpp lib/MC/MCAsmStreamer.cpp lib/MC/MCMachOStreamer.cpp lib/MC/MCParser/AsmParser.cpp
Chris Lattner
clattner at apple.com
Thu Jul 8 13:04:44 PDT 2010
On Jul 8, 2010, at 10:22 AM, Kevin Enderby wrote:
> Author: enderby
> Date: Thu Jul 8 12:22:42 2010
> New Revision: 107886
>
> URL: http://llvm.org/viewvc/llvm-project?rev=107886&view=rev
> Log:
> Added the darwin .weak_def_can_be_hidden directive.
Thanks Kevin,
I think that the MCAsmInfo.h/.cpp chunks aren't needed for this until the compiler starts generating these. When that happens it will be more convenient for it to be a bool than a const char*. For now it's probably best to revert those two hunks. Thanks!
-Chris
>
> Modified:
> llvm/trunk/include/llvm/MC/MCAsmInfo.h
> llvm/trunk/include/llvm/MC/MCDirectives.h
> llvm/trunk/lib/MC/MCAsmInfo.cpp
> llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp
> llvm/trunk/lib/MC/MCAsmStreamer.cpp
> llvm/trunk/lib/MC/MCMachOStreamer.cpp
> llvm/trunk/lib/MC/MCParser/AsmParser.cpp
>
> Modified: llvm/trunk/include/llvm/MC/MCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAsmInfo.h?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCAsmInfo.h (original)
> +++ llvm/trunk/include/llvm/MC/MCAsmInfo.h Thu Jul 8 12:22:42 2010
> @@ -217,6 +217,11 @@
> /// global as being a weak defined symbol.
> const char *WeakDefDirective; // Defaults to NULL.
>
> + /// WeakDefAutoPrivateDirective - This directive, if non-null, is used to
> + /// declare a global as being a weak defined symbol that is automatically
> + /// made private by the static linker.
> + const char *WeakDefAutoPrivateDirective; // Defaults to NULL.
> +
> /// LinkOnceDirective - This directive, if non-null is used to declare a
> /// global as being a weak defined symbol. This is used on cygwin/mingw.
> const char *LinkOnceDirective; // Defaults to NULL.
> @@ -387,6 +392,9 @@
> bool hasNoDeadStrip() const { return HasNoDeadStrip; }
> const char *getWeakRefDirective() const { return WeakRefDirective; }
> const char *getWeakDefDirective() const { return WeakDefDirective; }
> + const char *getWeakDefAutoPrivateDirective() const {
> + return WeakDefAutoPrivateDirective;
> + }
> const char *getLinkOnceDirective() const { return LinkOnceDirective; }
>
> MCSymbolAttr getHiddenVisibilityAttr() const { return HiddenVisibilityAttr;}
>
> Modified: llvm/trunk/include/llvm/MC/MCDirectives.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCDirectives.h?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCDirectives.h (original)
> +++ llvm/trunk/include/llvm/MC/MCDirectives.h Thu Jul 8 12:22:42 2010
> @@ -38,7 +38,8 @@
> MCSA_Reference, ///< .reference (MachO)
> MCSA_Weak, ///< .weak
> MCSA_WeakDefinition, ///< .weak_definition (MachO)
> - MCSA_WeakReference ///< .weak_reference (MachO)
> + MCSA_WeakReference, ///< .weak_reference (MachO)
> + MCSA_WeakDefAutoPrivate ///< .weak_def_can_be_hidden (MachO)
> };
>
> enum MCAssemblerFlag {
>
> Modified: llvm/trunk/lib/MC/MCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfo.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmInfo.cpp Thu Jul 8 12:22:42 2010
> @@ -59,6 +59,7 @@
> HasNoDeadStrip = false;
> WeakRefDirective = 0;
> WeakDefDirective = 0;
> + WeakDefAutoPrivateDirective = 0;
> LinkOnceDirective = 0;
> HiddenVisibilityAttr = MCSA_Hidden;
> ProtectedVisibilityAttr = MCSA_Protected;
>
> Modified: llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp Thu Jul 8 12:22:42 2010
> @@ -33,6 +33,7 @@
> // Directives:
> WeakDefDirective = "\t.weak_definition ";
> WeakRefDirective = "\t.weak_reference ";
> + WeakDefAutoPrivateDirective = "\t.weak_def_can_be_hidden ";
> ZeroDirective = "\t.space\t"; // ".space N" emits N zeros.
> HasMachoZeroFillDirective = true; // Uses .zerofill
> HasMachoTBSSDirective = true; // Uses .tbss
>
> Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Thu Jul 8 12:22:42 2010
> @@ -288,6 +288,7 @@
> case MCSA_WeakDefinition: OS << "\t.weak_definition\t"; break;
> // .weak_reference
> case MCSA_WeakReference: OS << MAI.getWeakRefDirective(); break;
> + case MCSA_WeakDefAutoPrivate: OS << "\t.weak_def_can_be_hidden\t"; break;
> }
>
> OS << *Symbol;
>
> Modified: llvm/trunk/lib/MC/MCMachOStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCMachOStreamer.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCMachOStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCMachOStreamer.cpp Thu Jul 8 12:22:42 2010
> @@ -273,6 +273,10 @@
> // it has to be in a coalesced section, but this isn't enforced.
> SD.setFlags(SD.getFlags() | SF_WeakDefinition);
> break;
> +
> + case MCSA_WeakDefAutoPrivate:
> + SD.setFlags(SD.getFlags() | SF_WeakDefinition | SF_WeakReference);
> + break;
> }
> }
>
>
> Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Thu Jul 8 12:22:42 2010
> @@ -755,6 +755,8 @@
> return ParseDirectiveSymbolAttribute(MCSA_WeakDefinition);
> if (IDVal == ".weak_reference")
> return ParseDirectiveSymbolAttribute(MCSA_WeakReference);
> + if (IDVal == ".weak_def_can_be_hidden")
> + return ParseDirectiveSymbolAttribute(MCSA_WeakDefAutoPrivate);
>
> if (IDVal == ".comm")
> return ParseDirectiveComm(/*IsLocal=*/false);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list