blob: 737a6aa5d0bea13ad517d084533fc84c4854e84e [file] [log] [blame]
//===--- swift_sections.S -------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
///
/// \swift_sections.S
/// This file contains section markers for the computation of the location and
/// size of the conformances and metadata information for non-Darwin targets.
///
//===----------------------------------------------------------------------===//
#if !defined(SWIFT_BEGIN) && !defined(SWIFT_END)
#error "Define SWIFT_BEGIN or SWIFT_END to compile this file."
#endif
.macro define_sized_section name=1
#if defined(__arm__)
.section .\()\name, "aw", %progbits
#else
.section .\()\name, "aw", @progbits
#endif
.p2align 3
#if defined(SWIFT_BEGIN)
.globl .\()\name\()_start
.protected .\()\name\()_start
.\()\name\()_start:
#if defined(__BIG_ENDIAN__)
.long 0
.long .\()\name\()_end - .\()\name\()_start - 8
#else
.long .\()\name\()_end - .\()\name\()_start - 8
.long 0
#endif
#endif
#if defined(SWIFT_END)
.globl .\()\name\()_end
.protected .\()\name\()_end
.\()\name\()_end:
#endif
.endm
.macro define_simple_section name=1
#if defined(SWIFT_BEGIN)
#if defined(__arm__)
.section .\()\name, "aw", %progbits
#else
.section .\()\name, "aw", @progbits
#endif
// TODO .p2align 2 ?
.globl .\()\name\()_section
.protected .\()\name\()_section
.\()\name\()_section:
#endif
.endm
define_simple_section swift3_typeref
define_simple_section swift3_reflstr
define_simple_section swift3_fieldmd
define_simple_section swift3_assocty
define_sized_section swift2_protocol_conformances
define_sized_section swift2_type_metadata
#if defined(__arm__)
.section .note.GNU-stack,"",%progbits
#else
.section .note.GNU-stack,"",@progbits
#endif