Index: lld/ELF/Symbols.h
--- lld/ELF/Symbols.h.orig
+++ lld/ELF/Symbols.h
@@ -148,6 +148,9 @@ class Symbol { (public)
   LLVM_PREFERRED_TYPE(bool)
   uint8_t hasVersionSuffix : 1;
 
+  // True if the .gnu.warning.SYMBOL is set for the symbol
+  uint8_t gwarn : 1;
+
   // Symbol visibility. This is the computed minimum visibility of all
   // observed non-DSO symbols.
   uint8_t visibility() const { return stOther & 3; }
@@ -204,6 +207,7 @@ class Symbol { (public)
   uint64_t getGotVA(Ctx &) const;
   uint64_t getGotPltOffset(Ctx &) const;
   uint64_t getGotPltVA(Ctx &) const;
+  uint64_t getPltOffset(Ctx &) const;
   uint64_t getPltVA(Ctx &) const;
   uint64_t getSize() const;
   OutputSection *getOutputSection() const;
@@ -244,7 +248,7 @@ class Symbol { (public)
       : file(file), nameData(name.data()), nameSize(name.size()), type(type),
         binding(binding), stOther(stOther), symbolKind(k), isPreemptible(false),
         isUsedInRegularObj(false), used(false), isExported(false),
-        ltoCanOmit(false), traced(false), hasVersionSuffix(false),
+        ltoCanOmit(false), traced(false), hasVersionSuffix(false), gwarn(false),
         isInIplt(false), gotInIgot(false), folded(false),
         archSpecificBit(false), scriptDefined(false), dsoDefined(false),
         dsoProtected(false), versionScriptAssigned(false), thunkAccessed(false),
@@ -540,6 +544,8 @@ void reportDuplicate(Ctx &, const Symbol &sym, const I
 void maybeWarnUnorderableSymbol(Ctx &, const Symbol *sym);
 bool computeIsPreemptible(Ctx &, const Symbol &sym);
 void parseVersionAndComputeIsPreemptible(Ctx &);
+
+extern llvm::DenseMap<StringRef, StringRef> gnuWarnings;
 
 } // namespace lld::elf
 
