Skip to content

Commit

Permalink
[dsymutil] Remove support for obfuscated bitcode (#85713)
Browse files Browse the repository at this point in the history
Remove support for obfuscated bitcode in dsymutil and the DWARF linker.
We no longer support bitcode submissions and the obfuscation support has
been removed from the rest of the compiler.

rdar://123863918
  • Loading branch information
JDevlieghere committed Mar 19, 2024
1 parent 31eaf86 commit 43a2ec4
Show file tree
Hide file tree
Showing 30 changed files with 28 additions and 555 deletions.
4 changes: 0 additions & 4 deletions llvm/docs/CommandGuide/dsymutil.rst
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,6 @@ OPTIONS
(in bytes) to the linked dSYM. The table is sorted by the output size listing
the object files with the largest contribution first.

.. option:: --symbol-map <bcsymbolmap>

Update the existing dSYMs inplace using symbol map specified.

.. option:: -s, --symtab

Dumps the symbol table found in *executable* or object file(s) and exits.
Expand Down
6 changes: 1 addition & 5 deletions llvm/include/llvm/CodeGen/NonRelocatableStringpool.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ class NonRelocatableStringpool {
/// order.
using MapTy = StringMap<DwarfStringPoolEntry, BumpPtrAllocator>;

NonRelocatableStringpool(
std::function<StringRef(StringRef Input)> Translator = nullptr,
bool PutEmptyString = false)
: Translator(Translator) {
NonRelocatableStringpool(bool PutEmptyString = false) {
if (PutEmptyString)
getEntry("");
}
Expand Down Expand Up @@ -59,7 +56,6 @@ class NonRelocatableStringpool {
MapTy Strings;
uint64_t CurrentEndOffset = 0;
unsigned NumEntries = 0;
std::function<StringRef(StringRef Input)> Translator;
};

/// Helper for making strong types.
Expand Down
8 changes: 2 additions & 6 deletions llvm/include/llvm/DWARFLinker/Classic/DWARFStreamer.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,13 @@ class DwarfStreamer : public DwarfEmitter {
public:
DwarfStreamer(DWARFLinkerBase::OutputFileType OutFileType,
raw_pwrite_stream &OutFile,
DWARFLinkerBase::TranslatorFuncTy Translator,
DWARFLinkerBase::MessageHandlerTy Warning)
: OutFile(OutFile), OutFileType(OutFileType), Translator(Translator),
WarningHandler(Warning) {}
: OutFile(OutFile), OutFileType(OutFileType), WarningHandler(Warning) {}
virtual ~DwarfStreamer() = default;

static Expected<std::unique_ptr<DwarfStreamer>> createStreamer(
const Triple &TheTriple, DWARFLinkerBase::OutputFileType FileType,
raw_pwrite_stream &OutFile, DWARFLinkerBase::TranslatorFuncTy Translator,
DWARFLinkerBase::MessageHandlerTy Warning);
raw_pwrite_stream &OutFile, DWARFLinkerBase::MessageHandlerTy Warning);

Error init(Triple TheTriple, StringRef Swift5ReflectionSegmentName);

Expand Down Expand Up @@ -295,7 +292,6 @@ class DwarfStreamer : public DwarfEmitter {
/// The output file we stream the linked Dwarf to.
raw_pwrite_stream &OutFile;
DWARFLinker::OutputFileType OutFileType = DWARFLinker::OutputFileType::Object;
std::function<StringRef(StringRef Input)> Translator;

uint64_t RangesSectionSize = 0;
uint64_t RngListsSectionSize = 0;
Expand Down
1 change: 0 additions & 1 deletion llvm/include/llvm/DWARFLinker/DWARFLinkerBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ class DWARFLinkerBase {
std::function<void(const DWARFFile &File, llvm::StringRef Output)>;
using ObjectPrefixMapTy = std::map<std::string, std::string>;
using CompileUnitHandlerTy = function_ref<void(const DWARFUnit &Unit)>;
using TranslatorFuncTy = std::function<StringRef(StringRef)>;
using SwiftInterfacesMapTy = std::map<std::string, std::string>;
/// Type of output file.
enum class OutputFileType : uint8_t {
Expand Down
3 changes: 1 addition & 2 deletions llvm/include/llvm/DWARFLinker/Parallel/DWARFLinker.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,7 @@ class DWARFLinker : public DWARFLinkerBase {

/// Creates dwarf linker instance.
static std::unique_ptr<DWARFLinker>
createLinker(MessageHandlerTy ErrorHandler, MessageHandlerTy WarningHandler,
TranslatorFuncTy StringsTranslator = nullptr);
createLinker(MessageHandlerTy ErrorHandler, MessageHandlerTy WarningHandler);

/// Set output DWARF handler. Result of linking DWARF is set of sections
/// containing final debug info. DWARFLinkerBase::link() pass generated
Expand Down
5 changes: 0 additions & 5 deletions llvm/lib/CodeGen/NonRelocatableStringpool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
namespace llvm {

DwarfStringPoolEntryRef NonRelocatableStringpool::getEntry(StringRef S) {
if (Translator)
S = Translator(S);
auto I = Strings.insert({S, DwarfStringPoolEntry()});
auto &Entry = I.first->second;
if (I.second || !Entry.isIndexed()) {
Expand All @@ -28,9 +26,6 @@ DwarfStringPoolEntryRef NonRelocatableStringpool::getEntry(StringRef S) {
StringRef NonRelocatableStringpool::internString(StringRef S) {
DwarfStringPoolEntry Entry{nullptr, 0, DwarfStringPoolEntry::NotIndexed};

if (Translator)
S = Translator(S);

auto InsertResult = Strings.insert({S, Entry});
return InsertResult.first->getKey();
}
Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2701,8 +2701,8 @@ Error DWARFLinker::link() {
// This Dwarf string pool which is used for emission. It must be used
// serially as the order of calling getStringOffset matters for
// reproducibility.
OffsetsStringPool DebugStrPool(StringsTranslator, true);
OffsetsStringPool DebugLineStrPool(StringsTranslator, false);
OffsetsStringPool DebugStrPool(true);
OffsetsStringPool DebugLineStrPool(false);
DebugDieValuePool StringOffsetPool;

// ODR Contexts for the optimize.
Expand Down
12 changes: 5 additions & 7 deletions llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@ using namespace dwarf_linker::classic;

Expected<std::unique_ptr<DwarfStreamer>> DwarfStreamer::createStreamer(
const Triple &TheTriple, DWARFLinkerBase::OutputFileType FileType,
raw_pwrite_stream &OutFile, DWARFLinkerBase::TranslatorFuncTy Translator,
DWARFLinkerBase::MessageHandlerTy Warning) {
raw_pwrite_stream &OutFile, DWARFLinkerBase::MessageHandlerTy Warning) {
std::unique_ptr<DwarfStreamer> Streamer =
std::make_unique<DwarfStreamer>(FileType, OutFile, Translator, Warning);
std::make_unique<DwarfStreamer>(FileType, OutFile, Warning);
if (Error Err = Streamer->init(TheTriple, "__DWARF"))
return std::move(Err);

Expand Down Expand Up @@ -977,11 +976,10 @@ void DwarfStreamer::emitLineTableString(const DWARFDebugLine::Prologue &P,

switch (String.getForm()) {
case dwarf::DW_FORM_string: {
StringRef TranslatedString =
(Translator) ? Translator(*StringVal) : *StringVal;
Asm->OutStreamer->emitBytes(TranslatedString.data());
StringRef Str = *StringVal;
Asm->OutStreamer->emitBytes(Str.data());
Asm->emitInt8(0);
LineSectionSize += TranslatedString.size() + 1;
LineSectionSize += Str.size() + 1;
} break;
case dwarf::DW_FORM_strp:
case dwarf::DW_FORM_line_strp: {
Expand Down
6 changes: 2 additions & 4 deletions llvm/lib/DWARFLinker/Parallel/DWARFLinker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ using namespace dwarf_linker::parallel;

std::unique_ptr<DWARFLinker>
DWARFLinker::createLinker(MessageHandlerTy ErrorHandler,
MessageHandlerTy WarningHandler,
TranslatorFuncTy StringsTranslator) {
return std::make_unique<DWARFLinkerImpl>(ErrorHandler, WarningHandler,
StringsTranslator);
MessageHandlerTy WarningHandler) {
return std::make_unique<DWARFLinkerImpl>(ErrorHandler, WarningHandler);
}
15 changes: 0 additions & 15 deletions llvm/lib/DWARFLinker/Parallel/DWARFLinkerGlobalData.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class DWARFDie;
namespace dwarf_linker {
namespace parallel {

using TranslatorFuncTy = std::function<StringRef(StringRef)>;
using MessageHandlerTy = std::function<void(
const Twine &Warning, StringRef Context, const DWARFDie *DIE)>;

Expand Down Expand Up @@ -95,19 +94,6 @@ class LinkingGlobalData {
/// Returns global string pool.
StringPool &getStringPool() { return Strings; }

/// Set translation function.
void setTranslator(TranslatorFuncTy Translator) {
this->Translator = Translator;
}

/// Translate specified string.
StringRef translateString(StringRef String) {
if (Translator)
return Translator(String);

return String;
}

/// Returns linking options.
const DWARFLinkerOptions &getOptions() const { return Options; }

Expand Down Expand Up @@ -161,7 +147,6 @@ class LinkingGlobalData {
protected:
llvm::parallel::PerThreadBumpPtrAllocator Allocator;
StringPool Strings;
TranslatorFuncTy Translator;
DWARFLinkerOptions Options;
MessageHandlerTy WarningHandler;
MessageHandlerTy ErrorHandler;
Expand Down
4 changes: 1 addition & 3 deletions llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,9 @@ using namespace dwarf_linker;
using namespace dwarf_linker::parallel;

DWARFLinkerImpl::DWARFLinkerImpl(MessageHandlerTy ErrorHandler,
MessageHandlerTy WarningHandler,
TranslatorFuncTy StringsTranslator)
MessageHandlerTy WarningHandler)
: UniqueUnitID(0), DebugStrStrings(GlobalData),
DebugLineStrStrings(GlobalData), CommonSections(GlobalData) {
GlobalData.setTranslator(StringsTranslator);
GlobalData.setErrorHandler(ErrorHandler);
GlobalData.setWarningHandler(WarningHandler);
}
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ namespace parallel {
class DWARFLinkerImpl : public DWARFLinker {
public:
DWARFLinkerImpl(MessageHandlerTy ErrorHandler,
MessageHandlerTy WarningHandler,
TranslatorFuncTy StringsTranslator);
MessageHandlerTy WarningHandler);

/// Add object file to be linked. Pre-load compile unit die. Call
/// \p OnCUDieLoaded for each compile unit die. If specified \p File
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/DWARFLinker/Parallel/OutputSections.h
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ struct SectionDescriptor : SectionDescriptorBase {

/// Emit specified inplace string value into the current section contents.
void emitInplaceString(StringRef String) {
OS << GlobalData.translateString(String);
OS << String;
emitIntVal(0, 1);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class StringEntryToDwarfStringPoolEntryMap {
DwarfStringPoolEntryWithExtString *DataPtr =
GlobalData.getAllocator()
.Allocate<DwarfStringPoolEntryWithExtString>();
DataPtr->String = GlobalData.translateString(String->getKey());
DataPtr->String = String->getKey();
DataPtr->Index = DwarfStringPoolEntry::NotIndexed;
DataPtr->Offset = 0;
DataPtr->Symbol = nullptr;
Expand Down

0 comments on commit 43a2ec4

Please sign in to comment.