Skip to content

Commit

Permalink
consolidate fork detection prelude
Browse files Browse the repository at this point in the history
  • Loading branch information
camshaft committed Aug 27, 2024
1 parent 565eda1 commit bda4405
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 48 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ function(feature_probe PROBE_NAME)
SOURCES "${CMAKE_CURRENT_LIST_DIR}/tests/features/${PROBE_NAME}.c"
LINK_LIBRARIES ${LINK_LIB} ${OS_LIBS}
CMAKE_FLAGS ${ADDITIONAL_FLAGS}
COMPILE_DEFINITIONS -include "${CMAKE_CURRENT_LIST_DIR}/utils/s2n_prelude.h" -c ${GLOBAL_FLAGS} ${PROBE_FLAGS}
COMPILE_DEFINITIONS -I "${CMAKE_CURRENT_LIST_DIR}" -include "${CMAKE_CURRENT_LIST_DIR}/utils/s2n_prelude.h" -c ${GLOBAL_FLAGS} ${PROBE_FLAGS}
${ARGN}
OUTPUT_VARIABLE TRY_COMPILE_OUTPUT
)
Expand Down
12 changes: 1 addition & 11 deletions tests/features/S2N_MADVISE_SUPPORTED.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,7 @@
* permissions and limitations under the License.
*/

/* Keep in sync with utils/s2n_fork_detection.c */
#if defined(__FreeBSD__)
/* FreeBSD requires POSIX compatibility off for its syscalls (enables __BSD_VISIBLE)
* Without the below line, <sys/mman.h> cannot be imported (it requires __BSD_VISIBLE) */
#undef _POSIX_C_SOURCE
#elif !defined(__APPLE__) && !defined(_GNU_SOURCE)
#define _GNU_SOURCE
#endif

#include <stddef.h>
#include <sys/mman.h>
#include "utils/s2n_fork_detection_prelude.h"

int main() {
madvise(NULL, 0, 0);
Expand Down
10 changes: 1 addition & 9 deletions tests/features/S2N_MINHERIT_SUPPORTED.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,7 @@
* permissions and limitations under the License.
*/

/* Keep in sync with utils/s2n_fork_detection.c */
#if defined(__FreeBSD__)
/* FreeBSD requires POSIX compatibility off for its syscalls (enables __BSD_VISIBLE)
* Without the below line, <sys/mman.h> cannot be imported (it requires __BSD_VISIBLE) */
#undef _POSIX_C_SOURCE
#endif

#include <stddef.h>
#include <sys/mman.h>
#include "utils/s2n_fork_detection_prelude.h"

int main() {
minherit(NULL, 0, 0);
Expand Down
28 changes: 1 addition & 27 deletions utils/s2n_fork_detection.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,7 @@
* permissions and limitations under the License.
*/

/* This captures Darwin specialities. This is the only APPLE flavor we care about.
* Here we also capture varius required feature test macros.
*/
#if defined(__APPLE__)
typedef struct _opaque_pthread_once_t __darwin_pthread_once_t;
typedef __darwin_pthread_once_t pthread_once_t;
#define _DARWIN_C_SOURCE
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
/* FreeBSD requires POSIX compatibility off for its syscalls (enables __BSD_VISIBLE)
* Without the below line, <sys/mman.h> cannot be imported (it requires __BSD_VISIBLE) */
#undef _POSIX_C_SOURCE
#elif !defined(_GNU_SOURCE)
/* Keep in sync with feature probe tests/features/madvise.c */
#define _GNU_SOURCE
#endif

#include <sys/mman.h>

/* Not always defined for Darwin */
#if !defined(MAP_ANONYMOUS)
#define MAP_ANONYMOUS MAP_ANON
#endif

#include <pthread.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include "utils/s2n_fork_detection_prelude.h"

#include "error/s2n_errno.h"
#include "utils/s2n_fork_detection.h"
Expand Down
41 changes: 41 additions & 0 deletions utils/s2n_fork_detection_prelude.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

/* This captures Darwin specialities. This is the only APPLE flavor we care about.
* Here we also capture varius required feature test macros.
*/
#if defined(__APPLE__)
typedef struct _opaque_pthread_once_t __darwin_pthread_once_t;
typedef __darwin_pthread_once_t pthread_once_t;
#define _DARWIN_C_SOURCE
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
/* FreeBSD requires POSIX compatibility off for its syscalls (enables __BSD_VISIBLE)
* Without the below line, <sys/mman.h> cannot be imported (it requires __BSD_VISIBLE) */
#undef _POSIX_C_SOURCE
#elif !defined(_GNU_SOURCE)
#define _GNU_SOURCE
#endif

#include <sys/mman.h>

/* Not always defined for Darwin */
#if !defined(MAP_ANONYMOUS)
#define MAP_ANONYMOUS MAP_ANON
#endif

#include <pthread.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

0 comments on commit bda4405

Please sign in to comment.