Force global pagemaps into BSS (#364)

Also add a check that the test programs are under about ten megabytes
(they're currently around one on platforms that put inline statics full
of zeroes into BSS and around 270 on ones that don't).

Fixes #339
This commit is contained in:
David Chisnall
2021-08-05 10:13:59 +01:00
committed by GitHub
parent aec5ac060b
commit 605566974c
3 changed files with 12 additions and 0 deletions

View File

@@ -66,6 +66,9 @@ jobs:
- name: Build
working-directory: ${{github.workspace}}/build
run: NINJA_STATUS="%p [%f:%s/%t] %o/s, %es" ninja
- name: Test file size of binaries is sane
working-directory: ${{github.workspace}}/build
run: "ls -l func-first_operation-1 ; [ $(ls -l func-first_operation-1 | awk '{ print $5}') -lt 10000000 ]"
# If the tests are enabled for this job, run them
- name: Test
if: ${{ matrix.build-only != 'yes' }}

View File

@@ -44,6 +44,14 @@
# endif
#endif
#ifdef __APPLE__
# define SNMALLOC_FORCE_BSS __attribute__((section("__DATA,__bss")))
#elif defined(__ELF__)
# define SNMALLOC_FORCE_BSS __attribute__((section(".bss")))
#else
# define SNMALLOC_FORCE_BSS
#endif
#ifndef __has_builtin
# define __has_builtin(x) 0
#endif

View File

@@ -464,6 +464,7 @@ namespace snmalloc
* The global pagemap variable. The name of this symbol will include the
* type of `T` and `U`.
*/
SNMALLOC_FORCE_BSS
inline static T global_pagemap;
public: