diff --git a/lib/libc/freebsd/lib/csu/common/crtbegin.c b/lib/libc/freebsd/lib/csu/common/crtbegin.c index 20e6ea085d..b1ddaf7bd5 100644 --- a/lib/libc/freebsd/lib/csu/common/crtbegin.c +++ b/lib/libc/freebsd/lib/csu/common/crtbegin.c @@ -41,9 +41,8 @@ void __cxa_finalize(void *) __weak_symbol; * When we have ctors/dtors call from the dtor handler before calling * any dtors, otherwise use a destructor. */ -#ifndef HAVE_CTORS +/* zig patch: no HAVE_CTORS */ __attribute__((destructor)) -#endif static void run_cxa_finalize(void) { @@ -53,43 +52,6 @@ run_cxa_finalize(void) } #endif -/* - * On some architectures and toolchains we may need to call the .dtors. - * These are called in the order they are in the ELF file. - */ -#ifdef HAVE_CTORS -static void __do_global_dtors_aux(void) __used; - -static crt_func __CTOR_LIST__[] __section(".ctors") __used = { - (crt_func)-1 -}; -static crt_func __DTOR_LIST__[] __section(".dtors") __used = { - (crt_func)-1 -}; - -static void -__do_global_dtors_aux(void) -{ - crt_func fn; - int n; - -#ifdef SHARED - run_cxa_finalize(); -#endif - - for (n = 1;; n++) { - fn = __DTOR_LIST__[n]; - if (fn == (crt_func)0 || fn == (crt_func)-1) - break; - fn(); - } -} - -asm ( - ".pushsection .fini \n" - "\t" INIT_CALL_SEQ(__do_global_dtors_aux) "\n" - ".popsection \n" -); -#endif +/* zig patch: no HAVE_CTORS */ /* zig patch: remove gcj nonsense */ diff --git a/lib/libc/freebsd/lib/csu/common/crtend.c b/lib/libc/freebsd/lib/csu/common/crtend.c deleted file mode 100644 index 68a935b516..0000000000 --- a/lib/libc/freebsd/lib/csu/common/crtend.c +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-1-Clause - * - * Copyright 2018 Andrew Turner - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include "crt.h" - -typedef void (*crt_func)(void); - -/* zig patch: remove gcj nonsense */ - -#ifdef HAVE_CTORS - -/* - * On some architectures and toolchains we may need to call the .ctors. - * These are called in the reverse order they are in the ELF file. - */ -static void __do_global_ctors_aux(void) __used; - -static crt_func __CTOR_END__[] __section(".ctors") __used = { - (crt_func)0 -}; -static crt_func __DTOR_END__[] __section(".dtors") __used = { - (crt_func)0 -}; - -static void -__do_global_ctors_aux(void) -{ - crt_func fn; - int n; - - for (n = 1;; n++) { - fn = __CTOR_END__[-n]; - if (fn == (crt_func)0 || fn == (crt_func)-1) - break; - fn(); - } -} - -asm ( - ".pushsection .init \n" - "\t" INIT_CALL_SEQ(__do_global_ctors_aux) "\n" - ".popsection \n" -); -#endif diff --git a/src/libs/freebsd.zig b/src/libs/freebsd.zig index ff32b4649a..4b03bdefbc 100644 --- a/src/libs/freebsd.zig +++ b/src/libs/freebsd.zig @@ -139,10 +139,6 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre .path = "common" ++ path.sep_str ++ "crtbrand.S", .flags = acflags.items, }, - .{ - .path = "common" ++ path.sep_str ++ "crtend.c", - .flags = cflags.items, - }, .{ .path = "common" ++ path.sep_str ++ "feature_note.S", .flags = acflags.items,