|
root / base / usr / src / lib / ssp_ns
ssp_ns Plain Text 140 lines 3.6 KB
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2020 Oxide Computer Company
#

include		../Makefile.lib

# Hammerhead: amd64-only
SUBDIRS =	$(MACH64)

all :		TARGET = all
clean :	TARGET = clean
clobber :	TARGET = clobber
install :	TARGET = install

.KEEP_STATE:

all clean clobber: $(SUBDIRS)

install:	$(SUBDIRS)

$(SUBDIRS):  FRC
	@cd $@; pwd; $(MAKE) $(TARGET)

FRC:

include ../Makefile.targ
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2020 Oxide Computer Company
#

LIBRARY =	libssp_ns.a
VERS =		.1
OBJECTS =	ssp_ns.o

include ../../Makefile.lib

#
# We need to build an archive file; however, this is going to show up
# and be used in libraries and otherwise. So we need to still build it
# as position independent code. The Makefile system doesn't want to
# build a PIC file that's going into a .a file by default, so we have to
# do a little bit here.
#
LIBS =		$(LIBRARY)
SRCDIR =	../common
CFLAGS +=	$($(MACH)_C_PICFLAGS)

#
# Disable stack protection for the things providing the stack
# protection.
#
STACKPROTECT = none

CLOBBERFILES +=	$(LIBRARY)

.KEEP_STATE:

all:	$(LIBS)


include ../../Makefile.targ
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2020 Oxide Computer Company
#

include ../Makefile.com
include ../../Makefile.lib.64

install: all $(ROOTLIBS64)
/*
 * This file and its contents are supplied under the terms of the
 * Common Development and Distribution License ("CDDL"), version 1.0.
 * You may only use this file in accordance with the terms of version
 * 1.0 of the CDDL.
 *
 * A full copy of the text of the CDDL should have accompanied this
 * source.  A copy of the CDDL is also available via the Internet at
 * http://www.illumos.org/license/CDDL.
 */

/*
 * Copyright 2020 Oxide Computer Company
 */

#include <sys/ccompile.h>

/*
 * To impement gcc's stack protector library, the compiler emits a function call
 * to a symbol which can be called absolutely. As a result, to make that happen,
 * we mimic what gcc does with libssp and create an archive file that can be
 * used in the specs file to pull this in directly. This is a bit of a pain, but
 * that's the best we can do given the architecture that we have.
 *
 * Warning: This is a static archive. Nothing beyond the call for
 * __stack_chk_fail_local and calls to committed interfaces should be here. As
 * this implementation will be linked into programs, one should exercise care to
 * make sure we don't expose anything else here.
 */

extern void __stack_chk_fail(void);

void __HIDDEN
__stack_chk_fail_local(void)
{
	__stack_chk_fail();
}