libc: remove some dead code from freebsd crt0

This commit is contained in:
Alex Rønne Petersen 2025-12-01 00:24:17 +01:00
parent 26935d9da1
commit 4d6e979360
No known key found for this signature in database
3 changed files with 2 additions and 109 deletions

View file

@ -41,9 +41,8 @@ void __cxa_finalize(void *) __weak_symbol;
* When we have ctors/dtors call from the dtor handler before calling * When we have ctors/dtors call from the dtor handler before calling
* any dtors, otherwise use a destructor. * any dtors, otherwise use a destructor.
*/ */
#ifndef HAVE_CTORS /* zig patch: no HAVE_CTORS */
__attribute__((destructor)) __attribute__((destructor))
#endif
static void static void
run_cxa_finalize(void) run_cxa_finalize(void)
{ {
@ -53,43 +52,6 @@ run_cxa_finalize(void)
} }
#endif #endif
/* /* zig patch: no HAVE_CTORS */
* 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: remove gcj nonsense */ /* zig patch: remove gcj nonsense */

View file

@ -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 <sys/cdefs.h>
#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

View file

@ -139,10 +139,6 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre
.path = "common" ++ path.sep_str ++ "crtbrand.S", .path = "common" ++ path.sep_str ++ "crtbrand.S",
.flags = acflags.items, .flags = acflags.items,
}, },
.{
.path = "common" ++ path.sep_str ++ "crtend.c",
.flags = cflags.items,
},
.{ .{
.path = "common" ++ path.sep_str ++ "feature_note.S", .path = "common" ++ path.sep_str ++ "feature_note.S",
.flags = acflags.items, .flags = acflags.items,