Reapply 85006 with a minor fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85052 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PIC16/PIC16TargetObjectFile.h b/lib/Target/PIC16/PIC16TargetObjectFile.h
index ca07bed..0b0ad43 100644
--- a/lib/Target/PIC16/PIC16TargetObjectFile.h
+++ b/lib/Target/PIC16/PIC16TargetObjectFile.h
@@ -56,6 +56,7 @@
     mutable std::vector<PIC16Section *> UDATASections_;
     mutable std::vector<PIC16Section *> IDATASections_;
     mutable PIC16Section * ROMDATASection_;
+    mutable PIC16Section * SHAREDUDATASection_;
 
     /// Standard Auto Sections.
     mutable std::vector<PIC16Section *> AUTOSections_;
@@ -110,6 +111,10 @@
     /// Allocate DATA at user specified address.
     const MCSection *allocateAtGivenAddress(const GlobalVariable *GV,
                                             const std::string &Addr) const;
+
+    /// Allocate a shared variable to SHARED section.
+    const MCSection *allocateSHARED(const GlobalVariable *GV,
+                                    Mangler *Mang) const;
    
     public:
     PIC16TargetObjectFile();
@@ -147,6 +152,9 @@
     const PIC16Section *ROMDATASection() const {
       return ROMDATASection_;
     }
+    const PIC16Section *SHAREDUDATASection() const {
+      return SHAREDUDATASection_;
+    }
     const std::vector<PIC16Section *> &AUTOSections() const {
       return AUTOSections_;
     }