GNU bug report logs - #29600
Emacs port to gcc -fcheck-pointer-bounds

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Thu, 7 Dec 2017 07:20:02 UTC

Severity: normal

Tags: patch

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Paul Eggert <eggert <at> cs.ucla.edu>
Subject: bug#29600: closed (Emacs port to gcc -fcheck-pointer-bounds)
Date: Fri, 15 Dec 2017 07:27:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#29600: Emacs port to gcc -fcheck-pointer-bounds

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 29600 <at> debbugs.gnu.org.

-- 
29600: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=29600
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 29600-done <at> debbugs.gnu.org
Subject: Emacs port to gcc -fcheck-pointer-bounds
Date: Thu, 14 Dec 2017 23:26:11 -0800
Closing this bug report, as the basic idea is installed on master now.

[Message part 3 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Emacs bug reports and feature requests <bug-gnu-emacs <at> gnu.org>
Subject: Emacs port to gcc -fcheck-pointer-bounds
Date: Wed, 6 Dec 2017 23:18:35 -0800
[Message part 4 (text/plain, inline)]
Attached is a series of three patches to port Emacs to 'gcc 
-fcheck-pointer-bounds'. This feature enables hardware bounds checking for some 
internal pointers of the Emacs interpreter, and I've used it to find a bug in 
Emacs itself. It's intended primarily for debugging Emacs internals, and is off 
by default. I would like to install these patches soon unless some problems turn 
up, and am submitting this as a bug report in case others who care about Emacs 
low-level internals would like to review the patches.

The first patch changes the basic Emacs internal type from an integer to a 
pointer of the same width. Although this doesn't significantly affect ordinary 
builds it's essential for -fcheck-pointer-type, where the C compiler must be 
told the location of every pointer (including tagged pointers) for the checking 
to work well. (No doubt I'm partial, but I think this patch also cleans up Emacs 
internals a bit even for typical platforms.) The patch should not change the 
behavior of the Emacs interpreter; it's mostly just treating some intptr_t 
values as pointer values instead.

The second patch builds on the first to fix Emacs so that it doesn't crash when 
-fcheck-pointer-bounds is used.

The third patch enables more pointer bounds checking. Not every pointer access 
is checked, just the ones for which -fcheck-pointer-bounds is easy. Although 
this doesn't catch every pointer-bounds error, it does catch some of them. 
Perhaps more checking could be added later.
[0001-Reimplement-Lisp_Object-as-pointer-to-incomplete.patch (text/x-patch, attachment)]
[0002-Port-to-gcc-fcheck-pointer-bounds.patch (text/x-patch, attachment)]
[0003-Narrow-pointer-bounds-when-appropriate.patch (text/x-patch, attachment)]

This bug report was last modified 7 years and 162 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.