Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F109527846
D47188.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D47188.diff
View Options
diff --git a/lib/libc/csu/aarch64/Makefile.inc b/lib/libc/csu/aarch64/Makefile.inc
--- a/lib/libc/csu/aarch64/Makefile.inc
+++ b/lib/libc/csu/aarch64/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_RELA \
- -DINIT_IRELOCS=""
+CFLAGS+= -DCRT_IRELOC_RELA
diff --git a/lib/libc/csu/aarch64/reloc.c b/lib/libc/csu/aarch64/reloc.c
--- a/lib/libc/csu/aarch64/reloc.c
+++ b/lib/libc/csu/aarch64/reloc.c
@@ -24,6 +24,13 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+
+static void
+ifunc_init(const Elf_Auxinfo *aux __unused)
+{
+}
+
static void
crt1_handle_rela(const Elf_Rela *r)
{
diff --git a/lib/libc/csu/amd64/Makefile.inc b/lib/libc/csu/amd64/Makefile.inc
--- a/lib/libc/csu/amd64/Makefile.inc
+++ b/lib/libc/csu/amd64/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_RELA \
- -DINIT_IRELOCS="init_cpu_features()"
+CFLAGS+= -DCRT_IRELOC_RELA
diff --git a/lib/libc/csu/amd64/reloc.c b/lib/libc/csu/amd64/reloc.c
--- a/lib/libc/csu/amd64/reloc.c
+++ b/lib/libc/csu/amd64/reloc.c
@@ -23,6 +23,8 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+
#include <machine/specialreg.h>
#include <machine/cpufunc.h>
@@ -30,7 +32,7 @@
static uint32_t cpu_stdext_feature, cpu_stdext_feature2;
static void
-init_cpu_features(void)
+ifunc_init(const Elf_Auxinfo *aux __unused)
{
u_int p[4];
diff --git a/lib/libc/csu/arm/Makefile.inc b/lib/libc/csu/arm/Makefile.inc
--- a/lib/libc/csu/arm/Makefile.inc
+++ b/lib/libc/csu/arm/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_SUPPRESS \
- -DINIT_IRELOCS=""
+CFLAGS+= -DCRT_IRELOC_SUPPRESS
diff --git a/lib/libc/csu/i386/Makefile.inc b/lib/libc/csu/i386/Makefile.inc
--- a/lib/libc/csu/i386/Makefile.inc
+++ b/lib/libc/csu/i386/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_REL \
- -DINIT_IRELOCS="init_cpu_features()"
+CFLAGS+= -DCRT_IRELOC_REL
diff --git a/lib/libc/csu/i386/reloc.c b/lib/libc/csu/i386/reloc.c
--- a/lib/libc/csu/i386/reloc.c
+++ b/lib/libc/csu/i386/reloc.c
@@ -23,6 +23,8 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+
#include <machine/specialreg.h>
#include <machine/cpufunc.h>
@@ -30,7 +32,7 @@
static uint32_t cpu_stdext_feature, cpu_stdext_feature2;
static void
-init_cpu_features(void)
+ifunc_init(const Elf_Auxinfo *aux __unused)
{
u_int cpuid_supported, p[4];
diff --git a/lib/libc/csu/libc_start1.c b/lib/libc/csu/libc_start1.c
--- a/lib/libc/csu/libc_start1.c
+++ b/lib/libc/csu/libc_start1.c
@@ -137,6 +137,24 @@
}
}
+static void
+handle_irelocs(char *env[])
+{
+#ifndef CRT_IRELOC_SUPPRESS
+ const Elf_Auxinfo *aux;
+
+ /* Find the auxiliary vector on the stack. */
+ while (*env++ != 0) /* Skip over environment, and NULL terminator */
+ ;
+ aux = (const Elf_Auxinfo *)env;
+
+ ifunc_init(aux);
+ process_irelocs();
+#else
+ (void)env;
+#endif
+}
+
void
__libc_start1(int argc, char *argv[], char *env[], void (*cleanup)(void),
int (*mainX)(int, char *[], char *[]))
@@ -146,10 +164,7 @@
if (&_DYNAMIC != NULL) {
atexit(cleanup);
} else {
-#ifndef CRT_IRELOC_SUPPRESS
- INIT_IRELOCS;
- process_irelocs();
-#endif
+ handle_irelocs(env);
_init_tls();
}
@@ -171,10 +186,7 @@
if (&_DYNAMIC != NULL) {
atexit(cleanup);
} else {
-#ifndef CRT_IRELOC_SUPPRESS
- INIT_IRELOCS;
- process_irelocs();
-#endif
+ handle_irelocs(env);
_init_tls();
}
diff --git a/lib/libc/csu/powerpc/Makefile.inc b/lib/libc/csu/powerpc/Makefile.inc
--- a/lib/libc/csu/powerpc/Makefile.inc
+++ b/lib/libc/csu/powerpc/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_SUPPRESS \
- -DINIT_IRELOCS=""
+CFLAGS+= -DCRT_IRELOC_SUPPRESS
diff --git a/lib/libc/csu/powerpc64/Makefile.inc b/lib/libc/csu/powerpc64/Makefile.inc
--- a/lib/libc/csu/powerpc64/Makefile.inc
+++ b/lib/libc/csu/powerpc64/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_RELA \
- -DINIT_IRELOCS="init_cpu_features(env)"
+CFLAGS+= -DCRT_IRELOC_RELA
diff --git a/lib/libc/csu/powerpc64/reloc.c b/lib/libc/csu/powerpc64/reloc.c
--- a/lib/libc/csu/powerpc64/reloc.c
+++ b/lib/libc/csu/powerpc64/reloc.c
@@ -24,15 +24,8 @@
static uint32_t cpu_features2;
static void
-init_cpu_features(char **env)
+ifunc_init(const Elf_Auxinfo *aux)
{
- const Elf_Auxinfo *aux;
-
- /* Find the auxiliary vector on the stack. */
- while (*env++ != 0) /* Skip over environment, and NULL terminator */
- ;
- aux = (const Elf_Auxinfo *)env;
-
/* Digest the auxiliary vector. */
for (; aux->a_type != AT_NULL; aux++) {
switch (aux->a_type) {
diff --git a/lib/libc/csu/powerpcspe/Makefile.inc b/lib/libc/csu/powerpcspe/Makefile.inc
--- a/lib/libc/csu/powerpcspe/Makefile.inc
+++ b/lib/libc/csu/powerpcspe/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_SUPPRESS \
- -DINIT_IRELOCS=""
+CFLAGS+= -DCRT_IRELOC_SUPPRESS
diff --git a/lib/libc/csu/riscv/Makefile.inc b/lib/libc/csu/riscv/Makefile.inc
--- a/lib/libc/csu/riscv/Makefile.inc
+++ b/lib/libc/csu/riscv/Makefile.inc
@@ -1,4 +1,3 @@
#
-CFLAGS+= -DCRT_IRELOC_RELA \
- -DINIT_IRELOCS="init_cpu_features(env)"
+CFLAGS+= -DCRT_IRELOC_RELA
diff --git a/lib/libc/csu/riscv/reloc.c b/lib/libc/csu/riscv/reloc.c
--- a/lib/libc/csu/riscv/reloc.c
+++ b/lib/libc/csu/riscv/reloc.c
@@ -24,15 +24,8 @@
static unsigned long elf_hwcap;
static void
-init_cpu_features(char **env)
+ifunc_init(const Elf_Auxinfo *aux)
{
- const Elf_Auxinfo *aux;
-
- /* Find the auxiliary vector on the stack. */
- while (*env++ != 0) /* Skip over environment, and NULL terminator */
- ;
- aux = (const Elf_Auxinfo *)env;
-
/* Digest the auxiliary vector. */
for (; aux->a_type != AT_NULL; aux++) {
switch (aux->a_type) {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Feb 7, 6:55 AM (20 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16507461
Default Alt Text
D47188.diff (5 KB)
Attached To
Mode
D47188: libc/csu: Unify INIT_RELOCS across architectures
Attached
Detach File
Event Timeline
Log In to Comment