diff --git a/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp b/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp --- a/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp +++ b/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp @@ -1370,7 +1370,11 @@ DataSections.push_back({}); auto &SD = DataSections.back(); memset(&SD.Sec, 0, sizeof(SD.Sec)); - strcpy(SD.Sec.sectname, "__objc_imageinfo"); + // The terminating nul byte doesn't fit into the sectname array so use + // memcpy instead of strcpy. (Using strncpy causes a compiler warning). + const char SectName[] = "__objc_imageinfo"; + static_assert(sizeof(SD.Sec.sectname) == sizeof(SectName) - 1); + memcpy(SD.Sec.sectname, SectName, sizeof(SD.Sec.sectname)); strcpy(SD.Sec.segname, "__DATA"); SD.Sec.size = 8; SD.AddFixups = [&](size_t RecordOffset) {