git: c383f4857f16 - main - lib/csu: do not compile the body of handle_static_init() for PIC build at all
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 12 Mar 2023 21:49:35 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=c383f4857f1696c4beb782db36323f46f0c4f6de
commit c383f4857f1696c4beb782db36323f46f0c4f6de
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2023-03-12 01:45:37 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2023-03-12 21:47:41 +0000
lib/csu: do not compile the body of handle_static_init() for PIC build at all
The referenced symbols that provide init array boundaries are weak,
hidden, and undefined. The code that iterates over that arrays is not
used for the case when libc is compiled as dso.
This should fix linking with ld.bfd.
Sponsored by: The FreeBSD Foundation
MFC after: 3 weeks
---
lib/libc/csu/libc_start1.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/libc/csu/libc_start1.c b/lib/libc/csu/libc_start1.c
index 346409e3f370..d6a973bf0fe0 100644
--- a/lib/libc/csu/libc_start1.c
+++ b/lib/libc/csu/libc_start1.c
@@ -94,6 +94,7 @@ finalizer(void)
static void
handle_static_init(int argc, char **argv, char **env)
{
+#ifndef PIC
void (*fn)(int, char **, char **);
size_t array_size, n;
@@ -115,6 +116,7 @@ handle_static_init(int argc, char **argv, char **env)
if ((uintptr_t)fn != 0 && (uintptr_t)fn != 1)
fn(argc, argv, env);
}
+#endif
}
static void