[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v4 3/3] build: add debug symbols and comment sections to all linkers
Gcc generates them anyways. Let's take a little control over what it does. Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx> --- plat/common/include/common.lds.h | 67 ++++++++++++++++++++++++++++++++ plat/kvm/arm/link64.lds.S | 5 +++ plat/kvm/x86/link64.lds.S | 5 +++ plat/xen/arm/link32.lds.S | 4 ++ plat/xen/x86/link64.lds.S | 6 +++ 5 files changed, 87 insertions(+) create mode 100644 plat/common/include/common.lds.h diff --git a/plat/common/include/common.lds.h b/plat/common/include/common.lds.h new file mode 100644 index 00000000..8672b6ff --- /dev/null +++ b/plat/common/include/common.lds.h @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Copyright (c) 2019, NEC Laboratories Europe GmbH, NEC Corporation. + * 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. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. + */ + +#ifndef __UK_COMMON_LDS_H +#define __UK_COMMON_LDS_H + +/* DWARF debug sections. Symbols in the DWARF debugging sections are + * relative to the beginning of the section so we begin them at 0. + */ +#define DEBUG_SYMBOLS \ + /* DWARF 1 */ \ + .debug 0 : { *(.debug) } \ + .line 0 : { *(.line) } \ + /* GNU DWARF 1 extensions */ \ + .debug_srcinfo 0 : { *(.debug_srcinfo) } \ + .debug_sfnames 0 : { *(.debug_sfnames) } \ + /* DWARF 1.1 and DWARF 2 */ \ + .debug_aranges 0 : { *(.debug_aranges) } \ + .debug_pubnames 0 : { *(.debug_pubnames) } \ + /* DWARF 2 */ \ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } \ + .debug_abbrev 0 : { *(.debug_abbrev) } \ + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } \ + .debug_frame 0 : { *(.debug_frame) } \ + .debug_str 0 : { *(.debug_str) } \ + .debug_loc 0 : { *(.debug_loc) } \ + .debug_macinfo 0 : { *(.debug_macinfo) } \ + /* SGI/MIPS DWARF 2 extensions */ \ + .debug_weaknames 0 : { *(.debug_weaknames) } \ + .debug_funcnames 0 : { *(.debug_funcnames) } \ + .debug_typenames 0 : { *(.debug_typenames) } \ + .debug_varnames 0 : { *(.debug_varnames) } \ + /* DWARF 3 */ \ + .debug_pubtypes 0 : { *(.debug_pubtypes) } \ + .debug_ranges 0 : { *(.debug_ranges) } \ + /* DWARF Extension. */ \ + .debug_macro 0 : { *(.debug_macro) } \ + .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } + +#endif /* __UK_COMMON_LDS_H */ diff --git a/plat/kvm/arm/link64.lds.S b/plat/kvm/arm/link64.lds.S index 8157271b..96d9edcb 100644 --- a/plat/kvm/arm/link64.lds.S +++ b/plat/kvm/arm/link64.lds.S @@ -32,6 +32,7 @@ * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. */ #include <uk/arch/limits.h> +#include <common.lds.h> /* QEMU-AArch64 virt platform's ram base address */ #define RAM_BASE_ADDR 0x40000000 @@ -152,5 +153,9 @@ SECTIONS { } _end = .; + + .comment 0 : { *(.comment) } + DEBUG_SYMBOLS + /DISCARD/ : { *(.note.gnu.build-id) } } diff --git a/plat/kvm/x86/link64.lds.S b/plat/kvm/x86/link64.lds.S index 10951c21..2a258e5d 100644 --- a/plat/kvm/x86/link64.lds.S +++ b/plat/kvm/x86/link64.lds.S @@ -23,6 +23,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include <common.lds.h> + ENTRY(_libkvmplat_entry) SECTIONS { @@ -94,5 +96,8 @@ SECTIONS _end = .; + .comment 0 : { *(.comment) } + DEBUG_SYMBOLS + /DISCARD/ : { *(.note.gnu.build-id) } } diff --git a/plat/xen/arm/link32.lds.S b/plat/xen/arm/link32.lds.S index 6b038411..9af25f15 100644 --- a/plat/xen/arm/link32.lds.S +++ b/plat/xen/arm/link32.lds.S @@ -24,6 +24,8 @@ */ /* Taken from Mini-OS */ +#include <common.lds.h> + OUTPUT_ARCH(arm) ENTRY(_libxenplat_start) SECTIONS @@ -144,5 +146,7 @@ SECTIONS .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + DEBUG_SYMBOLS + /DISCARD/ : { *(.note.gnu.build-id) } } diff --git a/plat/xen/x86/link64.lds.S b/plat/xen/x86/link64.lds.S index 76b33972..44a9deb9 100644 --- a/plat/xen/x86/link64.lds.S +++ b/plat/xen/x86/link64.lds.S @@ -23,6 +23,8 @@ */ /* Taken from Mini-OS */ +#include <common.lds.h> + OUTPUT_FORMAT("elf64-x86-64") OUTPUT_ARCH(i386:x86-64) @@ -96,5 +98,9 @@ SECTIONS *(.exitcall.exit) } */ + + .comment 0 : { *(.comment) } + DEBUG_SYMBOLS + /DISCARD/ : { *(.note.gnu.build-id) } } -- 2.19.2 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |