summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Kolesov <Anton.Kolesov@synopsys.com>2016-06-22 17:48:29 (GMT)
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-06-23 18:48:25 (GMT)
commitca6271bd5f595871881447dd40b220c0e5abfb37 (patch)
treef6267799ee4f3c37ce544323e8e9e7dad639e6cd
parentbc5949fd4f8cddf4eee74492c86a8a72f4dee0e7 (diff)
ARC: Implement .note.ABI-tag section in crt1.S
Linux Standard Base specifies section .note.ABI-tag that can be considered as a marker for ELF files targeted to Linux systems. See https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html This section, for example, is used by the GDB to identify Linux ELFs as compared to baremetal ELFs that do not have this section. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
-rw-r--r--libc/sysdeps/linux/arc/crt1.S15
1 files changed, 15 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/arc/crt1.S b/libc/sysdeps/linux/arc/crt1.S
index 95c41f8..0fe3cf9 100644
--- a/libc/sysdeps/linux/arc/crt1.S
+++ b/libc/sysdeps/linux/arc/crt1.S
@@ -55,3 +55,18 @@ __start:
/* Should never get here.... */
flag 1
.size __start,.-__start
+
+/* Implement a .note.ABI-tag section that is mandatory for Linux executables
+ according to LSB. See:
+ https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html.
+ Also: libc/sysdeps/linux/avr32/crt1.S. */
+.section ".note.ABI-tag", "a"
+ .align 4
+ .long 1f - 0f /* Name length */
+ .long 3f - 2f /* Data length */
+ .long 1 /* Note type */
+0: .asciz "GNU" /* Vendor name */
+1: .align 4
+2: .long 0 /* Note data: Linux executable */
+ .long 3,9,0 /* Earliest compatible kernel */
+3: .align 4 /* Pad out section */