about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--elf/Makefile9
-rw-r--r--elf/tst-big-note-lib.S10
3 files changed, 23 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 85506efc99..1ca155ebfc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2019-03-01  Florian Weimer  <fweimer@redhat.com>
+
+	[BZ #20419]
+	* elf/tst-big-note-lib.S: Create a syntactically valid note.
+	* elf/Makefile (tst-big-note-lib.so): Do not link with startup
+	code, to avoid creating an ABI tag note.
+	(modules-names-nobuild): Add tst-big-note-lib.
+
 2019-03-01  Stefan Liebler  <stli@linux.ibm.com>
 
 	* sysdeps/s390/wcscpy-vx.S: Add strong aliases to
diff --git a/elf/Makefile b/elf/Makefile
index 55204073a3..310a37cc13 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -316,8 +316,8 @@ endif
 modules-execstack-yes = tst-execstack-mod
 extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
 
-# filtmod1.so has a special rule
-modules-names-nobuild := filtmod1
+# filtmod1.so, tst-big-note-lib.so have special rules.
+modules-names-nobuild := filtmod1 tst-big-note-lib
 
 tests += $(tests-static)
 
@@ -1515,6 +1515,11 @@ tst-libc_dlvsym-static-ENV = \
 $(objpfx)tst-libc_dlvsym-static.out: $(objpfx)tst-libc_dlvsym-dso.so
 
 $(objpfx)tst-big-note: $(objpfx)tst-big-note-lib.so
+# Avoid creating an ABI tag note, which may come before the
+# artificial, large note in tst-big-note-lib.o and invalidate the
+# test.
+$(objpfx)tst-big-note-lib.so: $(objpfx)tst-big-note-lib.o
+	$(LINK.o) -shared -o $@ $(LDFLAGS.so) $<
 
 $(objpfx)tst-unwind-ctor: $(objpfx)tst-unwind-ctor-lib.so
 
diff --git a/elf/tst-big-note-lib.S b/elf/tst-big-note-lib.S
index e2008cf4ae..721686fa0e 100644
--- a/elf/tst-big-note-lib.S
+++ b/elf/tst-big-note-lib.S
@@ -20,7 +20,13 @@
    On a typical Linux system with 8MiB "ulimit -s", that was enough
    to trigger stack overflow in open_verify.  */
 
+#define NOTE_SIZE 8*1024*1024
+
 .pushsection .note.big,"a"
-.balign 4
-.fill 8*1024*1024, 1, 0
+	.balign 4
+	.long 5 		/* n_namesz.  Length of "GLIBC".  */
+	.long NOTE_SIZE		/* n_descsz.  */
+	.long 0			/* n_type.  */
+	.ascii "GLIBC\0\0\0"	/* Name and alignment to four bytes.  */
+	.fill NOTE_SIZE, 1, 0
 .popsection