1 #!/usr/bin/ksh
2 #
3 # This file and its contents are supplied under the terms of the
4 # Common Development and Distribution License ("CDDL"), version 1.0.
5 # You may only use this file in accordance with the terms of version
6 # 1.0 of the CDDL.
7 #
8 # A full copy of the text of the CDDL should have accompanied this
9 # source. A copy of the CDDL is also available via the Internet at
10 # http://www.illumos.org/license/CDDL.
11 #
12
13 #
14 # Copyright 2018, Richard Lowe.
15 #
16
17 # Test that existing definitions of the start/stop symbols are reported
18 # as conflicting with internal symbols.
19
20 tmpdir=/tmp/test.$$
21 mkdir $tmpdir
22 cd $tmpdir
23
24 cleanup() {
25 cd /
26 rm -fr $tmpdir
27 }
28
29 trap 'cleanup' EXIT
30
31 cat > broken.c <<EOF
32 char foo[1024] __attribute__((section("set_foo")));
33 void *__start_set_foo;
34
35 int
36 main()
37 {
38 return (0);
39 }
40 EOF
41
42 # We expect any alternate linker to be in LD_ALTEXEC for us already
43 gcc -o broken broken.c -Wall -Wextra -Wl,-zfatal-warnings > in-use.$$.out 2>&1
44 if (( $? == 0 )); then
45 print -u2 "use of a reserved symbol didn't fail"
46 exit 1;
47 fi
48
49 grep -q "^ld: warning: reserved symbol '__start_set_foo' already defined in file" in-use.$$.out
50 if (( $? != 0 )); then
51 print -u2 "use of a reserved symbol failed for the wrong reason"
52 exit 1;
53 fi