[llvm] r360618 - [JITLink][MachO] Honor the no-dead-strip flag on nlist entries.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Mon May 13 13:52:31 PDT 2019


Author: lhames
Date: Mon May 13 13:52:30 2019
New Revision: 360618

URL: http://llvm.org/viewvc/llvm-project?rev=360618&view=rev
Log:
[JITLink][MachO] Honor the no-dead-strip flag on nlist entries.

Modified:
    llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
    llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s

Modified: llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp?rev=360618&r1=360617&r2=360618&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp Mon May 13 13:52:30 2019
@@ -252,15 +252,22 @@ Error MachOAtomGraphBuilder::addNonCusto
 
     DA.setCallable(*SymType & object::SymbolRef::ST_Function);
 
-    // Check alt-entry.
+    // Check NDesc flags.
     {
       uint16_t NDesc = 0;
       if (Obj.is64Bit())
         NDesc = Obj.getSymbolTableEntry(SymI->getRawDataRefImpl()).n_desc;
       else
         NDesc = Obj.getSymbolTableEntry(SymI->getRawDataRefImpl()).n_desc;
+
+      // Record atom for alt-entry post-processing (where the layout-next
+      // constraints will be added).
       if (NDesc & MachO::N_ALT_ENTRY)
         AltEntryAtoms.push_back(&DA);
+
+      // If this atom has a no-dead-strip attr attached then mark it live.
+      if (NDesc & MachO::N_NO_DEAD_STRIP)
+        DA.setLive(true);
     }
 
     LLVM_DEBUG({

Modified: llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s?rev=360618&r1=360617&r2=360618&view=diff
==============================================================================
--- llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s (original)
+++ llvm/trunk/test/ExecutionEngine/JITLink/X86/MachO_x86-64_relocations.s Mon May 13 13:52:30 2019
@@ -272,6 +272,15 @@ subtractor_with_alt_entry_subtrahend_qua
         .section        __DATA,__nds_test_sect,regular,no_dead_strip
         .quad 0
 
+# Check that unreferenced local symbols that have been marked no-dead-strip are
+# not dead-striped.
+#
+# jitlink-check: *{8}section_addr(macho_reloc.o, __nds_test_nlst) = 0
+        .section       __DATA,__nds_test_nlst,regular
+        .no_dead_strip no_dead_strip_test_symbol
+no_dead_strip_test_symbol:
+        .quad 0
+
 # Check that explicit zero-fill symbols are supported
 # jitlink-check: *{8}zero_fill_test = 0
         .globl zero_fill_test




More information about the llvm-commits mailing list