blob: c3d9e124a9c7131a4be1c6f22581a0998079586a [file] [log] [blame]
/* Copyright 2017 The Fuchsia Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* The C++ compiler generates a reference to this symbol for each static
* destructor registered via __cxa_atexit. In our implementation, there is
* no need for it, so just define the symbol away rather than wasting a
* data word defining it as a real variable somewhere. See
* third_party/ulib/musl/src/exit/atexit.c for a more detailed explanation.
*
* LLD doesn't like it when this uses 0, because it makes that SHN_ABS and
* then is broken about handling STV_HIDDEN SHN_ABS symbols; it defines
* __ehdr_start as not SHN_ABS (though SHN_ABS is the only thing that
* actually makes sense for it), so that avoids the problem.
*/
PROVIDE_HIDDEN(__dso_handle = __ehdr_start);