%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/snapshot/embedded/platform-embedded-file-writer-mac.h" #include "src/objects/code.h" namespace v8 { namespace internal { namespace { const char* DirectiveAsString(DataDirective directive) { switch (directive) { case kByte: return ".byte"; case kLong: return ".long"; case kQuad: return ".quad"; case kOcta: return ".octa"; } UNREACHABLE(); } } // namespace void PlatformEmbeddedFileWriterMac::SectionText() { fprintf(fp_, ".text\n"); } void PlatformEmbeddedFileWriterMac::SectionData() { fprintf(fp_, ".data\n"); } void PlatformEmbeddedFileWriterMac::SectionRoData() { fprintf(fp_, ".const_data\n"); } void PlatformEmbeddedFileWriterMac::DeclareUint32(const char* name, uint32_t value) { DeclareSymbolGlobal(name); DeclareLabel(name); IndentedDataDirective(kLong); fprintf(fp_, "%d", value); Newline(); } void PlatformEmbeddedFileWriterMac::DeclarePointerToSymbol(const char* name, const char* target) { DeclareSymbolGlobal(name); DeclareLabel(name); fprintf(fp_, " %s _%s\n", DirectiveAsString(PointerSizeDirective()), target); } void PlatformEmbeddedFileWriterMac::DeclareSymbolGlobal(const char* name) { // TODO(jgruber): Investigate switching to .globl. Using .private_extern // prevents something along the compilation chain from messing with the // embedded blob. Using .global here causes embedded blob hash verification // failures at runtime. STATIC_ASSERT(32 >= kCodeAlignment); fprintf(fp_, ".private_extern _%s\n", name); } void PlatformEmbeddedFileWriterMac::AlignToCodeAlignment() { fprintf(fp_, ".balign 32\n"); } void PlatformEmbeddedFileWriterMac::AlignToDataAlignment() { STATIC_ASSERT(8 >= Code::kMetadataAlignment); fprintf(fp_, ".balign 8\n"); } void PlatformEmbeddedFileWriterMac::Comment(const char* string) { fprintf(fp_, "// %s\n", string); } void PlatformEmbeddedFileWriterMac::DeclareLabel(const char* name) { fprintf(fp_, "_%s:\n", name); } void PlatformEmbeddedFileWriterMac::SourceInfo(int fileid, const char* filename, int line) { fprintf(fp_, ".loc %d %d\n", fileid, line); } // TODO(mmarchini): investigate emitting size annotations for OS X void PlatformEmbeddedFileWriterMac::DeclareFunctionBegin(const char* name, uint32_t size) { if (ENABLE_CONTROL_FLOW_INTEGRITY_BOOL) { DeclareSymbolGlobal(name); } DeclareLabel(name); // TODO(mvstanton): Investigate the proper incantations to mark the label as // a function on OSX. } void PlatformEmbeddedFileWriterMac::DeclareFunctionEnd(const char* name) {} void PlatformEmbeddedFileWriterMac::FilePrologue() {} void PlatformEmbeddedFileWriterMac::DeclareExternalFilename( int fileid, const char* filename) { fprintf(fp_, ".file %d \"%s\"\n", fileid, filename); } void PlatformEmbeddedFileWriterMac::FileEpilogue() {} int PlatformEmbeddedFileWriterMac::IndentedDataDirective( DataDirective directive) { return fprintf(fp_, " %s ", DirectiveAsString(directive)); } } // namespace internal } // namespace v8