; Copyright 2013 The Chromium Authors. All rights reserved.
; Use of this source code is governed by a BSD-style license that can be
; found in the LICENSE file.
LIBRARY  "chrome_elf.dll"

EXPORTS
  ; When functions are added to this file, they must also be added to
  ; chrome_elf_x64.def and chrome_elf_arm64.def

  ; From components/crash/content/app/crash_export_stubs.cc
  CrashForException_ExportThunk
  DumpHungProcessWithPtype_ExportThunk
  GetCrashpadDatabasePath_ExportThunk
  GetCrashReports_ExportThunk
  InjectDumpForHungInput_ExportThunk
  RequestSingleCrashUpload_ExportThunk
  SetUploadConsent_ExportThunk

  ; From chrome_elf/crash/crash_helper.cc
  SetMetricsClientId

  ; From chrome_elf/chrome_elf_main.cc
  DumpProcessWithoutCrash
  GetUserDataDirectoryThunk
  SignalChromeElf
  SignalInitializeCrashReporting

  ; From chrome/install_static
  GetInstallDetailsPayload

  ; From chrome_elf/blacklist/blacklist.cc
  AddDllToBlacklist
  IsBlacklistInitialized
  SuccessfullyBlocked

  ; From chrome_elf/third_party_dlls/logs.cc
  DrainLog
  RegisterLogNotification
  GetBlockedModulesCount
  GetUniqueBlockedModulesCount

  ; From chrome_elf/third_party_dlls/hook.cc
  DisableHook
  GetApplyHookResult
