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..2d4e49d4 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..a7bf4fc9 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..6d8a8069 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..02467b71 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) }
}