]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Add a test for main () in a shared object
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 4 Oct 2017 22:40:37 +0000 (15:40 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 4 Oct 2017 22:40:49 +0000 (15:40 -0700)
Verify that crt1.o can be used with main () in a shared object.

* elf/Makefile (tests): Add tst-main1.
(modules-names): Add tst-main1mod.
($(objpfx)tst-main1): New.
(CRT-tst-main1): Likewise.
(LDFLAGS-tst-main1): Likewise.
(LDLIBS-tst-main1): Likewise.
(tst-main1mod.so-no-z-defs): Likewise.
* elf/tst-main1.c: New file.
* elf/tst-main1mod.c: Likewise.

ChangeLog
elf/Makefile
elf/tst-main1.c [new file with mode: 0644]
elf/tst-main1mod.c [new file with mode: 0644]

index c1fd8a7993289d8e9839222911316735c6da5547..6f1b3ceaa2f6922265847d4b1703120acac2ab96 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2017-10-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elf/Makefile (tests): Add tst-main1.
+       (modules-names): Add tst-main1mod.
+       ($(objpfx)tst-main1): New.
+       (CRT-tst-main1): Likewise.
+       (LDFLAGS-tst-main1): Likewise.
+       (LDLIBS-tst-main1): Likewise.
+       (tst-main1mod.so-no-z-defs): Likewise.
+       * elf/tst-main1.c: New file.
+       * elf/tst-main1mod.c: Likewise.
+
 2017-10-04  H.J. Lu  <hongjiu.lu@intel.com>
 
        * math/test-math-iscanonical.cc (do_test): Return errors != 0.
index c6edebd4ee2df033811728f3d25d8d33ce1c25eb..0dcbf2f3de2457664f6266d60a0f63b6e4a2f5fd 100644 (file)
@@ -185,7 +185,7 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \
         tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
         tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error tst-noload \
         tst-latepthread tst-tls-manydynamic tst-nodelete-dlclose \
-        tst-debug1
+        tst-debug1 tst-main1
 #       reldep9
 tests-internal += loadtest unload unload2 circleload1 \
         neededtest neededtest2 neededtest3 neededtest4 \
@@ -269,7 +269,8 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
                tst-audit11mod1 tst-audit11mod2 tst-auditmod11 \
                tst-audit12mod1 tst-audit12mod2 tst-audit12mod3 tst-auditmod12 \
                tst-latepthreadmod $(tst-tls-many-dynamic-modules) \
-               tst-nodelete-dlclose-dso tst-nodelete-dlclose-plugin
+               tst-nodelete-dlclose-dso tst-nodelete-dlclose-plugin \
+               tst-main1mod
 ifeq (yes,$(have-mtls-dialect-gnu2))
 tests += tst-gnu2-tls1
 modules-names += tst-gnu2-tls1mod
@@ -1427,3 +1428,9 @@ $(objpfx)tst-debug1.out: $(objpfx)tst-debug1mod1.so
 
 $(objpfx)tst-debug1mod1.so: $(objpfx)testobj1.so
        $(OBJCOPY) --only-keep-debug $< $@
+
+$(objpfx)tst-main1: $(objpfx)tst-main1mod.so
+CRT-tst-main1 := $(csu-objpfx)crt1.o
+LDFLAGS-tst-main1 = $(no-pie-ldflag)
+LDLIBS-tst-main1 = $(libsupport)
+tst-main1mod.so-no-z-defs = yes
diff --git a/elf/tst-main1.c b/elf/tst-main1.c
new file mode 100644 (file)
index 0000000..1285ea2
--- /dev/null
@@ -0,0 +1,19 @@
+/* Unit test for main () in a shared object.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This is empty.  */
diff --git a/elf/tst-main1mod.c b/elf/tst-main1mod.c
new file mode 100644 (file)
index 0000000..edbeaaf
--- /dev/null
@@ -0,0 +1,25 @@
+/* Unit test for main () in a shared object.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+static int
+do_test (void)
+{
+  return 0;
+}
+
+#include <support/test-driver.c>