1. 01 Jan, 2019 1 commit
    • Paul Eggert's avatar
      Update more copyright years · a04bf151
      Paul Eggert authored
      Update some other copyright years automatically, by running:
      UPDATE_COPYRIGHT_MAX_LINE_LENGTH=79 admin/update-copyright'
      followed by 'admin/merge-gnulib'.
  2. 01 Jan, 2018 1 commit
  3. 12 Dec, 2017 2 commits
    • Paul Eggert's avatar
      Narrow pointer bounds when appropriate · 4295050e
      Paul Eggert authored
      This typically occurs in a storage manager, where the caller
      is expected to access only the newly-allocated object,
      instead of using the returned value to access unrelated
      parts of the heap.
      * src/alloc.c (allocate_string, allocate_string_data)
      (compact_small_strings, find_string_data_in_pure)
      (sweep_strings, setup_on_free_list, allocate_vectorlike
      * src/bytecode.c (exec_byte_code):
      * src/callint.c (Fcall_interactively):
      * src/dispnew.c (scrolling):
      * src/editfns.c (styled_format):
      * src/frame.c (xrdb_get_resource, x_get_resource_string):
      * src/fringe.c (Fdefine_fringe_bitmap):
      * src/gmalloc.c (malloc, realloc, aligned_alloc):
      Narrow pointer bounds when appropriate.
      * src/alloc.c (SDATA_OF_STRING):
      * src/lisp.h (make_lisp_symbol) [__CHKP__]:
      Widen bounds here, though.
      * src/bytecode.c, src/callint.c, src/dispnew.c, src/editfns.c:
      * src/emacs.c, src/frame.c, src/fringe.c:
      Include ptr-bounds.h.
      * src/ptr-bounds.h (ptr_bounds_clip): New function.
    • Paul Eggert's avatar
      Port to gcc -fcheck-pointer-bounds · 881abfc7
      Paul Eggert authored
      This is a minimal port, just to get Emacs running;
      it does not attempt to make the pointer bounds at all tight.
      * src/ptr-bounds.h: New file.
      * src/alloc.c, src/gmalloc.c: Include it.
      * src/alloc.c (live_string_holding, live_cons_holding)
      (live_symbol_holding, live_misc_holding, garbage_collect_1)
      (sweep_conses, sweep_floats):
      * src/gmalloc.c (malloc_initialize_1, _free_internal_nolock)
      Widen pointer bounds as necessary.
      We're in a memory allocator so this is OK.
      * src/lisp.h (lisp_h_XSYMBOL, make_lisp_symbol) [__CHKP__]:
      Do not convert from pointer to integer and back again, so
      that GCC does not lose track of pointer bounds.
      (XSYMBOL) [__CHKP__ && !USE_LSB_TAG]: Now a compile-time error.
      Although it's possible to support both -fcheck-pointer-bounds and
      --with-wide-int, it's more work; keep things simple for now.
      (DEFINE_LISP_SYMBOL) [__CHKP__]: Now a no-op, to avoid
      trouble with unbounded pointers.