mirror of
https://github.com/chromium/crashpad.git
synced 2025-01-15 10:07:56 +08:00
4b78956158
This ensures the symbol is not exposed in the binaries final symbol table. .globl needs to be kept so that it can still be linked against (in this case, by crashpad_info.cc.). (Tested on Fuchsia, hopefully functional elsewhere...) Bug: crashpad:196 Change-Id: I8c6b26cdd742a1c040779884fd97a8a34068dbdc Reviewed-on: https://chromium-review.googlesource.com/924337 Reviewed-by: Mark Mentovai <mark@chromium.org> Commit-Queue: Scott Graham <scottmg@chromium.org>
61 lines
2.1 KiB
ArmAsm
61 lines
2.1 KiB
ArmAsm
// Copyright 2018 The Crashpad Authors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// This note section is used on ELF platforms to give ElfImageReader a method
|
|
// of finding the instance of CrashpadInfo g_crashpad_info without requiring
|
|
// that symbol to be in the dynamic symbol table.
|
|
|
|
#include "build/build_config.h"
|
|
#include "util/misc/elf_note_types.h"
|
|
|
|
// namespace crashpad {
|
|
// CrashpadInfo g_crashpad_info;
|
|
// } // namespace crashpad
|
|
#define CRASHPAD_INFO_SYMBOL _ZN8crashpad15g_crashpad_infoE
|
|
|
|
#define NOTE_ALIGN 4
|
|
|
|
// This section must be "a"llocated so that it appears in the final binary at
|
|
// runtime, and "w"ritable so that the relocation to CRASHPAD_INFO_SYMBOL can
|
|
// be performed.
|
|
.section .note.crashpad.info,"aw",%note
|
|
.balign NOTE_ALIGN
|
|
# .globl indicates that it's available to link against other .o files. .hidden
|
|
# indicates that it will not appear in the executable's symbol table.
|
|
.globl CRASHPAD_NOTE_REFERENCE
|
|
.hidden CRASHPAD_NOTE_REFERENCE
|
|
.type CRASHPAD_NOTE_REFERENCE, %object
|
|
CRASHPAD_NOTE_REFERENCE:
|
|
.long name_end - name // namesz
|
|
.long desc_end - desc // descsz
|
|
.long CRASHPAD_ELF_NOTE_TYPE_CRASHPAD_INFO // type
|
|
name:
|
|
.asciz CRASHPAD_ELF_NOTE_NAME
|
|
name_end:
|
|
.balign NOTE_ALIGN
|
|
desc:
|
|
#if defined(ARCH_CPU_64_BITS)
|
|
.quad CRASHPAD_INFO_SYMBOL
|
|
#else
|
|
#if defined(ARCH_CPU_LITTLE_ENDIAN)
|
|
.long CRASHPAD_INFO_SYMBOL
|
|
.long 0
|
|
#else
|
|
.long 0
|
|
.long CRASHPAD_INFO_SYMBOL
|
|
#endif // ARCH_CPU_LITTLE_ENDIAN
|
|
#endif // ARCH_CPU_64_BITS
|
|
desc_end:
|
|
.size CRASHPAD_NOTE_REFERENCE, .-CRASHPAD_NOTE_REFERENCE
|