Index: stable/11/lib/csu/arm/crt1.c =================================================================== --- stable/11/lib/csu/arm/crt1.c (revision 339299) +++ stable/11/lib/csu/arm/crt1.c (revision 339300) @@ -1,130 +1,132 @@ /* LINTLIBRARY */ /*- * Copyright 2001 David E. O'Brien. * All rights reserved. * Copyright 1996-1998 John D. Polstra. * All rights reserved. * Copyright (c) 1997 Jason R. Thorpe. * Copyright (c) 1995 Christopher G. Demetriou * All rights reserved. * * 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. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed for the * FreeBSD Project. See http://www.freebsd.org/ for * information about FreeBSD. * This product includes software developed for the * NetBSD Project. See http://www.netbsd.org/ for * information about NetBSD. * 4. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission * * 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 __FBSDID("$FreeBSD$"); +#include +#include #include #include "libc_private.h" #include "crtbrand.c" #include "ignore_init.c" struct Struct_Obj_Entry; struct ps_strings; extern void _start(int, char **, char **, const struct Struct_Obj_Entry *, void (*)(void), struct ps_strings *); #ifdef GCRT extern void _mcleanup(void); extern void monstartup(void *, void *); extern int eprol; extern int etext; #endif struct ps_strings *__ps_strings; void __start(int, char **, char **, struct ps_strings *, const struct Struct_Obj_Entry *, void (*)(void)); /* The entry function. */ __asm(" .text \n" " .align 0 \n" " .globl _start \n" " _start: \n" " mov r5, r2 /* cleanup */ \n" " mov r4, r1 /* obj_main */ \n" " mov r3, r0 /* ps_strings */ \n" " /* Get argc, argv, and envp from stack */ \n" " ldr r0, [sp, #0x0000] \n" " add r1, sp, #0x0004 \n" " add r2, r1, r0, lsl #2 \n" " add r2, r2, #0x0004 \n" " /* Ensure the stack is properly aligned before calling C code. */\n" " bic sp, sp, #7 \n" " sub sp, sp, #8 \n" " str r5, [sp, #4] \n" " str r4, [sp, #0] \n" "\n" " b __start "); /* ARGSUSED */ void __start(int argc, char **argv, char **env, struct ps_strings *ps_strings, const struct Struct_Obj_Entry *obj __unused, void (*cleanup)(void)) { handle_argv(argc, argv, env); if (ps_strings != (struct ps_strings *)0) __ps_strings = ps_strings; if (&_DYNAMIC != NULL) atexit(cleanup); else _init_tls(); #ifdef GCRT atexit(_mcleanup); monstartup(&eprol, &etext); #endif handle_static_init(argc, argv, env); exit(main(argc, argv, env)); } static const struct { int32_t namesz; int32_t descsz; int32_t type; char name[sizeof(NOTE_FREEBSD_VENDOR)]; char desc[sizeof(MACHINE_ARCH)]; } archtag __attribute__ ((section (NOTE_SECTION), aligned(4))) __used = { .namesz = sizeof(NOTE_FREEBSD_VENDOR), .descsz = sizeof(MACHINE_ARCH), - .type = ARCH_NOTETYPE, + .type = NT_FREEBSD_ARCH_TAG, .name = NOTE_FREEBSD_VENDOR, .desc = MACHINE_ARCH }; #ifdef GCRT __asm__(".text"); __asm__("eprol:"); __asm__(".previous"); #endif Index: stable/11/lib/csu/common/crtbrand.c =================================================================== --- stable/11/lib/csu/common/crtbrand.c (revision 339299) +++ stable/11/lib/csu/common/crtbrand.c (revision 339300) @@ -1,66 +1,67 @@ /*- * Copyright 2000 David E. O'Brien, John D. Polstra. * All rights reserved. * * 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. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 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 __FBSDID("$FreeBSD$"); #include +#include #include "notes.h" /* * Special ".note" entry specifying the ABI version. See * http://www.netbsd.org/Documentation/kernel/elf-notes.html * for more information. * * For all arches except sparc, gcc emits the section directive for the * following struct with a PROGBITS type. However, newer versions of binutils * (after 2.16.90) require the section to be of NOTE type, to guarantee that the * .note.ABI-tag section correctly ends up in the first page of the final * executable. * * Unfortunately, there is no clean way to tell gcc to use another section type, * so this C file (or the C file that includes it) must be compiled in multiple * steps: * * - Compile the .c file to a .s file. * - Edit the .s file to change the 'progbits' type to 'note', for the section * directive that defines the .note.ABI-tag section. * - Compile the .s file to an object file. * * These steps are done in the invididual Makefiles for each applicable arch. */ static const struct { int32_t namesz; int32_t descsz; int32_t type; char name[sizeof(NOTE_FREEBSD_VENDOR)]; int32_t desc; } abitag __attribute__ ((section (NOTE_SECTION), aligned(4))) __used = { .namesz = sizeof(NOTE_FREEBSD_VENDOR), .descsz = sizeof(int32_t), - .type = ABI_NOTETYPE, + .type = NT_FREEBSD_ABI_TAG, .name = NOTE_FREEBSD_VENDOR, .desc = __FreeBSD_version }; Index: stable/11/lib/csu/common/ignore_init.c =================================================================== --- stable/11/lib/csu/common/ignore_init.c (revision 339299) +++ stable/11/lib/csu/common/ignore_init.c (revision 339300) @@ -1,118 +1,120 @@ /*- * Copyright 2012 Konstantin Belousov * All rights reserved. * * 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. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 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 __FBSDID("$FreeBSD$"); +#include +#include #include "notes.h" extern int main(int, char **, char **); extern void (*__preinit_array_start[])(int, char **, char **) __hidden; extern void (*__preinit_array_end[])(int, char **, char **) __hidden; extern void (*__init_array_start[])(int, char **, char **) __hidden; extern void (*__init_array_end[])(int, char **, char **) __hidden; extern void (*__fini_array_start[])(void) __hidden; extern void (*__fini_array_end[])(void) __hidden; extern void _fini(void) __hidden; extern void _init(void) __hidden; extern int _DYNAMIC; #pragma weak _DYNAMIC char **environ; const char *__progname = ""; static void finalizer(void) { void (*fn)(void); size_t array_size, n; array_size = __fini_array_end - __fini_array_start; for (n = array_size; n > 0; n--) { fn = __fini_array_start[n - 1]; if ((uintptr_t)fn != 0 && (uintptr_t)fn != 1) (fn)(); } _fini(); } static inline void handle_static_init(int argc, char **argv, char **env) { void (*fn)(int, char **, char **); size_t array_size, n; if (&_DYNAMIC != NULL) return; atexit(finalizer); array_size = __preinit_array_end - __preinit_array_start; for (n = 0; n < array_size; n++) { fn = __preinit_array_start[n]; if ((uintptr_t)fn != 0 && (uintptr_t)fn != 1) fn(argc, argv, env); } _init(); array_size = __init_array_end - __init_array_start; for (n = 0; n < array_size; n++) { fn = __init_array_start[n]; if ((uintptr_t)fn != 0 && (uintptr_t)fn != 1) fn(argc, argv, env); } } static inline void handle_argv(int argc, char *argv[], char **env) { const char *s; if (environ == NULL) environ = env; if (argc > 0 && argv[0] != NULL) { __progname = argv[0]; for (s = __progname; *s != '\0'; s++) { if (*s == '/') __progname = s + 1; } } } static const struct { int32_t namesz; int32_t descsz; int32_t type; char name[sizeof(NOTE_FREEBSD_VENDOR)]; uint32_t desc; } crt_noinit_tag __attribute__ ((section (NOTE_SECTION), aligned(4))) __used = { .namesz = sizeof(NOTE_FREEBSD_VENDOR), .descsz = sizeof(uint32_t), - .type = CRT_NOINIT_NOTETYPE, + .type = NT_FREEBSD_NOINIT_TAG, .name = NOTE_FREEBSD_VENDOR, .desc = 0 }; Index: stable/11/lib/csu/common/notes.h =================================================================== --- stable/11/lib/csu/common/notes.h (revision 339299) +++ stable/11/lib/csu/common/notes.h (revision 339300) @@ -1,39 +1,35 @@ /*- * Copyright 2012 Konstantin Belousov * All rights reserved. * * 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. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 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. * * $FreeBSD$ */ #ifndef CSU_COMMON_NOTES_H #define CSU_COMMON_NOTES_H #define NOTE_FREEBSD_VENDOR "FreeBSD" #define NOTE_SECTION ".note.tag" -#define ABI_NOTETYPE 1 -#define CRT_NOINIT_NOTETYPE 2 -#define ARCH_NOTETYPE 3 - #endif Index: stable/11 =================================================================== --- stable/11 (revision 339299) +++ stable/11 (revision 339300) Property changes on: stable/11 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r339181