head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC4:1.1.1.3 netbsd-11-0-RC3:1.1.1.3 netbsd-11-0-RC2:1.1.1.3 netbsd-11-0-RC1:1.1.1.3 gcc-14-3-0:1.1.1.3 perseant-exfatfs-base-20250801:1.1.1.3 netbsd-11:1.1.1.3.0.14 netbsd-11-base:1.1.1.3 gcc-12-5-0:1.1.1.3 netbsd-10-1-RELEASE:1.1.1.3 perseant-exfatfs-base-20240630:1.1.1.3 gcc-12-4-0:1.1.1.3 perseant-exfatfs:1.1.1.3.0.12 perseant-exfatfs-base:1.1.1.3 netbsd-8-3-RELEASE:1.1.1.1 netbsd-9-4-RELEASE:1.1.1.3 netbsd-10-0-RELEASE:1.1.1.3 netbsd-10-0-RC6:1.1.1.3 netbsd-10-0-RC5:1.1.1.3 netbsd-10-0-RC4:1.1.1.3 netbsd-10-0-RC3:1.1.1.3 netbsd-10-0-RC2:1.1.1.3 netbsd-10-0-RC1:1.1.1.3 gcc-12-3-0:1.1.1.3 gcc-10-5-0:1.1.1.3 netbsd-10:1.1.1.3.0.10 netbsd-10-base:1.1.1.3 netbsd-9-3-RELEASE:1.1.1.3 gcc-10-4-0:1.1.1.3 cjep_sun2x-base1:1.1.1.3 cjep_sun2x:1.1.1.3.0.8 cjep_sun2x-base:1.1.1.3 cjep_staticlib_x-base1:1.1.1.3 netbsd-9-2-RELEASE:1.1.1.3 cjep_staticlib_x:1.1.1.3.0.6 cjep_staticlib_x-base:1.1.1.3 gcc-10-3-0:1.1.1.3 netbsd-9-1-RELEASE:1.1.1.3 gcc-9-3-0:1.1.1.3 gcc-7-5-0:1.1.1.3 phil-wifi-20200421:1.1.1.3 phil-wifi-20200411:1.1.1.3 is-mlppp:1.1.1.3.0.4 is-mlppp-base:1.1.1.3 phil-wifi-20200406:1.1.1.3 netbsd-8-2-RELEASE:1.1.1.1 gcc-8-4-0:1.1.1.3 netbsd-9-0-RELEASE:1.1.1.3 netbsd-9-0-RC2:1.1.1.3 netbsd-9-0-RC1:1.1.1.3 phil-wifi-20191119:1.1.1.3 gcc-8-3-0:1.1.1.3 netbsd-9:1.1.1.3.0.2 netbsd-9-base:1.1.1.3 phil-wifi-20190609:1.1.1.3 netbsd-8-1-RELEASE:1.1.1.1 netbsd-8-1-RC1:1.1.1.1 pgoyette-compat-merge-20190127:1.1.1.1.28.2 pgoyette-compat-20190127:1.1.1.3 gcc-7-4-0:1.1.1.3 pgoyette-compat-20190118:1.1.1.2 pgoyette-compat-1226:1.1.1.2 pgoyette-compat-1126:1.1.1.2 gcc-6-5-0:1.1.1.2 pgoyette-compat-1020:1.1.1.1 pgoyette-compat-0930:1.1.1.1 pgoyette-compat-0906:1.1.1.1 netbsd-7-2-RELEASE:1.1.1.1 pgoyette-compat-0728:1.1.1.1 netbsd-8-0-RELEASE:1.1.1.1 phil-wifi:1.1.1.1.0.30 phil-wifi-base:1.1.1.1 pgoyette-compat-0625:1.1.1.1 netbsd-8-0-RC2:1.1.1.1 pgoyette-compat-0521:1.1.1.1 pgoyette-compat-0502:1.1.1.1 pgoyette-compat-0422:1.1.1.1 netbsd-8-0-RC1:1.1.1.1 pgoyette-compat-0415:1.1.1.1 pgoyette-compat-0407:1.1.1.1 pgoyette-compat-0330:1.1.1.1 pgoyette-compat-0322:1.1.1.1 pgoyette-compat-0315:1.1.1.1 netbsd-7-1-2-RELEASE:1.1.1.1 pgoyette-compat:1.1.1.1.0.28 pgoyette-compat-base:1.1.1.1 gcc-6-4-0:1.1.1.1 netbsd-7-1-1-RELEASE:1.1.1.1 gcc-5-5-0:1.1.1.1 matt-nb8-mediatek:1.1.1.1.0.26 matt-nb8-mediatek-base:1.1.1.1 perseant-stdc-iso10646:1.1.1.1.0.24 perseant-stdc-iso10646-base:1.1.1.1 netbsd-8:1.1.1.1.0.22 netbsd-8-base:1.1.1.1 prg-localcount2-base3:1.1.1.1 prg-localcount2-base2:1.1.1.1 prg-localcount2-base1:1.1.1.1 prg-localcount2:1.1.1.1.0.20 prg-localcount2-base:1.1.1.1 pgoyette-localcount-20170426:1.1.1.1 bouyer-socketcan-base1:1.1.1.1 pgoyette-localcount-20170320:1.1.1.1 netbsd-7-1:1.1.1.1.0.18 netbsd-7-1-RELEASE:1.1.1.1 netbsd-7-1-RC2:1.1.1.1 netbsd-7-nhusb-base-20170116:1.1.1.1 bouyer-socketcan:1.1.1.1.0.16 bouyer-socketcan-base:1.1.1.1 pgoyette-localcount-20170107:1.1.1.1 netbsd-7-1-RC1:1.1.1.1 pgoyette-localcount-20161104:1.1.1.1 netbsd-7-0-2-RELEASE:1.1.1.1 localcount-20160914:1.1.1.1 netbsd-7-nhusb:1.1.1.1.0.14 netbsd-7-nhusb-base:1.1.1.1 pgoyette-localcount-20160806:1.1.1.1 pgoyette-localcount-20160726:1.1.1.1 pgoyette-localcount:1.1.1.1.0.12 pgoyette-localcount-base:1.1.1.1 gcc-5-4-0:1.1.1.1 netbsd-7-0-1-RELEASE:1.1.1.1 gcc-5-3-0:1.1.1.1 netbsd-7-0:1.1.1.1.0.10 netbsd-7-0-RELEASE:1.1.1.1 gcc-4-8-5-pre-gcc-old-import:1.1.1.1 netbsd-7-0-RC3:1.1.1.1 netbsd-7-0-RC2:1.1.1.1 post-gcc-4-8-5-merge:1.1.1.1 gcc-4-8-5:1.1.1.1 netbsd-7-0-RC1:1.1.1.1 gcc-4-8-4:1.1.1.1 gcc-4-8-20141009:1.1.1.1 tls-maxphys-base:1.1.1.1 tls-maxphys:1.1.1.1.0.8 netbsd-7:1.1.1.1.0.6 netbsd-7-base:1.1.1.1 gcc-4-8-3:1.1.1.1 yamt-pagecache:1.1.1.1.0.4 yamt-pagecache-base9:1.1.1.1 tls-earlyentropy:1.1.1.1.0.2 tls-earlyentropy-base:1.1.1.1 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.1 riastradh-drm2-base3:1.1.1.1 gcc-4-8-3-pre-r208254:1.1.1.1 gcc-4-8-3-pre-r206687:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.1 date 2014.03.01.08.41.29; author mrg; state Exp; branches 1.1.1.1; next ; commitid TtaB91QNTknAoYqx; 1.1.1.1 date 2014.03.01.08.41.29; author mrg; state Exp; branches 1.1.1.1.4.1 1.1.1.1.8.1 1.1.1.1.28.1 1.1.1.1.30.1; next 1.1.1.2; commitid TtaB91QNTknAoYqx; 1.1.1.2 date 2018.11.04.00.12.37; author mrg; state Exp; branches; next 1.1.1.3; commitid bulspy67pMB6EyYA; 1.1.1.3 date 2019.01.19.10.14.11; author mrg; state Exp; branches; next ; commitid VQ8OwWIg5RS9kn8B; 1.1.1.1.4.1 date 2014.03.01.08.41.29; author yamt; state dead; branches; next 1.1.1.1.4.2; commitid DX8bafDLmqEbpyBx; 1.1.1.1.4.2 date 2014.05.22.16.37.45; author yamt; state Exp; branches; next ; commitid DX8bafDLmqEbpyBx; 1.1.1.1.8.1 date 2014.03.01.08.41.29; author tls; state dead; branches; next 1.1.1.1.8.2; commitid jTnpym9Qu0o4R1Nx; 1.1.1.1.8.2 date 2014.08.19.23.54.46; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.1.1.1.28.1 date 2018.11.26.01.50.57; author pgoyette; state Exp; branches; next 1.1.1.1.28.2; commitid Zj4q5SspGdKXto1B; 1.1.1.1.28.2 date 2019.01.26.21.59.32; author pgoyette; state Exp; branches; next ; commitid JKpcmvSjdT25dl9B; 1.1.1.1.30.1 date 2019.06.10.21.54.49; author christos; state Exp; branches; next ; commitid jtc8rnCzWiEEHGqB; desc @@ 1.1 log @Initial revision @ text @
The profile mode headers are included with
-D_GLIBCXX_PROFILE through preprocessor directives in
include/std/*.
Instrumented implementations are provided in
include/profile/*. All instrumentation hooks are macros
defined in include/profile/profiler.h.
All the implementation of the instrumentation hooks is in
include/profile/impl/*. Although all the code gets included,
thus is publicly visible, only a small number of functions are called from
outside this directory. All calls to hook implementations must be
done through macros defined in profiler.h. The macro
must ensure (1) that the call is guarded against reentrance and
(2) that the call can be turned off at compile time using a
-D_GLIBCXX_PROFILE_... compiler option.
Let's say the diagnostic name is "magic".
If you need to instrument a header not already under
include/profile/*, first edit the corresponding header
under include/std/ and add a preprocessor directive such
as the one in include/std/vector:
#ifdef _GLIBCXX_PROFILE # include <profile/vector> #endif
If the file you need to instrument is not yet under
include/profile/, make a copy of the one in
include/debug, or the main implementation.
You'll need to include the main implementation and inherit the classes
you want to instrument. Then define the methods you want to instrument,
define the instrumentation hooks and add calls to them.
Look at include/profile/vector for an example.
Add macros for the instrumentation hooks in
include/profile/impl/profiler.h.
Hook names must start with __profcxx_.
Make sure they transform
in no code with -D_NO_GLBICXX_PROFILE_MAGIC.
Make sure all calls to any method in namespace __gnu_profile
is protected against reentrance using macro
_GLIBCXX_PROFILE_REENTRANCE_GUARD.
All names of methods in namespace __gnu_profile called from
profiler.h must start with __trace_magic_.
Add the implementation of the diagnostic.
Create new file include/profile/impl/profiler_magic.h.
Define class __magic_info: public __object_info_base.
This is the representation of a line in the object table.
The __merge method is used to aggregate information
across all dynamic instances created at the same call context.
The __magnitude must return the estimation of the benefit
as a number of small operations, e.g., number of words copied.
The __write method is used to produce the raw trace.
The __advice method is used to produce the advice string.
Define class __magic_stack_info: public __magic_info.
This defines the content of a line in the stack table.
Define class __trace_magic: public __trace_base<__magic_info,
__magic_stack_info>.
It defines the content of the trace associated with this diagnostic.
Add initialization and reporting calls in
include/profile/impl/profiler_trace.h. Use
__trace_vector_to_list as an example.
Add documentation in file doc/xml/manual/profile_mode.xml.
The profile mode headers are included with
d37 1
a37 1
in no code with -D_NO_GLIBCXX_PROFILE_MAGIC.
@
1.1.1.1.28.1
log
@Sync with HEAD, resolve a couple of conflicts
@
text
@d2 1
a2 1
The profile mode headers are included with
@
1.1.1.1.28.2
log
@Sync with HEAD
@
text
@d37 1
a37 1
in no code with -D_NO_GLIBCXX_PROFILE_MAGIC.
@
1.1.1.2
log
@import GCC 6.5.0. this is largely a maint release with no
particularly features listed here:
http://gcc.gnu.org/gcc-6/changes.html
this fixes over 250 PRs in the GCC bugzilla:
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
@
text
@d2 1
a2 1
The profile mode headers are included with
@
1.1.1.3
log
@import GCC 7.4.0. main changes include:
The non-standard C++0x type traits has_trivial_default_constructor,
has_trivial_copy_constructor and has_trivial_copy_assign have been
removed.
On ARM targets (arm*-*-*), a bug introduced in GCC 5 that affects
conformance to the procedure call standard (AAPCS) has been fixed.
Many optimiser improvements
DWARF-5 support.
Many new and enhanced warnings.
Warnings about format strings now underline the pertinent part of
the string, and can offer suggested fixes.
Several new warnings related to buffer overflows and buffer
truncation.
New __builtin_add_overflow_p, __builtin_sub_overflow_p,
__builtin_mul_overflow_p built-ins added that test for overflow.
The C++ front end has experimental support for all of the current
C++17 draft.
The -fverbose-asm option has been expanded to prints comments
showing the source lines that correspond to the assembly.
The gcc and g++ driver programs will now provide suggestions for
misspelled arguments to command-line options.
AArch64 specific:
GCC has been updated to the latest revision of the procedure call
standard (AAPCS64) to provide support for parameter passing when
data types have been over-aligned.
The ARMv8.2-A and ARMv8.3-A architecture are now supported.
ARM specific:
Support for the ARMv5 and ARMv5E architectures has been
deprecated (which have no known implementations).
A new command-line option -mpure-code has been added. It does not
allow constant data to be placed in code sections.
x86 specific:
Support for the AVX-512 4FMAPS, 4VNNIW, VPOPCNTDQ and Software
Guard Extensions (SGX) ISA extensions has been added.
PPC specific:
GCC now diagnoses inline assembly that clobbers register r2.
RISC-V specific:
Support for the RISC-V instruction set has been added.
SH specific:
Support for SH5/SH64 has been removed.
Support for SH2A has been enhanced.
@
text
@d37 1
a37 1
in no code with -D_NO_GLIBCXX_PROFILE_MAGIC.
@
1.1.1.1.8.1
log
@file profile_mode_devel.html was added on branch tls-maxphys on 2014-08-19 23:54:46 +0000
@
text
@d1 67
@
1.1.1.1.8.2
log
@Rebase to HEAD as of a few days ago.
@
text
@a0 67
The profile mode headers are included with
-D_GLIBCXX_PROFILE through preprocessor directives in
include/std/*.
Instrumented implementations are provided in
include/profile/*. All instrumentation hooks are macros
defined in include/profile/profiler.h.
All the implementation of the instrumentation hooks is in
include/profile/impl/*. Although all the code gets included,
thus is publicly visible, only a small number of functions are called from
outside this directory. All calls to hook implementations must be
done through macros defined in profiler.h. The macro
must ensure (1) that the call is guarded against reentrance and
(2) that the call can be turned off at compile time using a
-D_GLIBCXX_PROFILE_... compiler option.
Let's say the diagnostic name is "magic".
If you need to instrument a header not already under
include/profile/*, first edit the corresponding header
under include/std/ and add a preprocessor directive such
as the one in include/std/vector:
#ifdef _GLIBCXX_PROFILE # include <profile/vector> #endif
If the file you need to instrument is not yet under
include/profile/, make a copy of the one in
include/debug, or the main implementation.
You'll need to include the main implementation and inherit the classes
you want to instrument. Then define the methods you want to instrument,
define the instrumentation hooks and add calls to them.
Look at include/profile/vector for an example.
Add macros for the instrumentation hooks in
include/profile/impl/profiler.h.
Hook names must start with __profcxx_.
Make sure they transform
in no code with -D_NO_GLBICXX_PROFILE_MAGIC.
Make sure all calls to any method in namespace __gnu_profile
is protected against reentrance using macro
_GLIBCXX_PROFILE_REENTRANCE_GUARD.
All names of methods in namespace __gnu_profile called from
profiler.h must start with __trace_magic_.
Add the implementation of the diagnostic.
Create new file include/profile/impl/profiler_magic.h.
Define class __magic_info: public __object_info_base.
This is the representation of a line in the object table.
The __merge method is used to aggregate information
across all dynamic instances created at the same call context.
The __magnitude must return the estimation of the benefit
as a number of small operations, e.g., number of words copied.
The __write method is used to produce the raw trace.
The __advice method is used to produce the advice string.
Define class __magic_stack_info: public __magic_info.
This defines the content of a line in the stack table.
Define class __trace_magic: public __trace_base<__magic_info,
__magic_stack_info>.
It defines the content of the trace associated with this diagnostic.
Add initialization and reporting calls in
include/profile/impl/profiler_trace.h. Use
__trace_vector_to_list as an example.
Add documentation in file doc/xml/manual/profile_mode.xml.
The profile mode headers are included with
-D_GLIBCXX_PROFILE through preprocessor directives in
include/std/*.
Instrumented implementations are provided in
include/profile/*. All instrumentation hooks are macros
defined in include/profile/profiler.h.
All the implementation of the instrumentation hooks is in
include/profile/impl/*. Although all the code gets included,
thus is publicly visible, only a small number of functions are called from
outside this directory. All calls to hook implementations must be
done through macros defined in profiler.h. The macro
must ensure (1) that the call is guarded against reentrance and
(2) that the call can be turned off at compile time using a
-D_GLIBCXX_PROFILE_... compiler option.
Let's say the diagnostic name is "magic".
If you need to instrument a header not already under
include/profile/*, first edit the corresponding header
under include/std/ and add a preprocessor directive such
as the one in include/std/vector:
#ifdef _GLIBCXX_PROFILE # include <profile/vector> #endif
If the file you need to instrument is not yet under
include/profile/, make a copy of the one in
include/debug, or the main implementation.
You'll need to include the main implementation and inherit the classes
you want to instrument. Then define the methods you want to instrument,
define the instrumentation hooks and add calls to them.
Look at include/profile/vector for an example.
Add macros for the instrumentation hooks in
include/profile/impl/profiler.h.
Hook names must start with __profcxx_.
Make sure they transform
in no code with -D_NO_GLBICXX_PROFILE_MAGIC.
Make sure all calls to any method in namespace __gnu_profile
is protected against reentrance using macro
_GLIBCXX_PROFILE_REENTRANCE_GUARD.
All names of methods in namespace __gnu_profile called from
profiler.h must start with __trace_magic_.
Add the implementation of the diagnostic.
Create new file include/profile/impl/profiler_magic.h.
Define class __magic_info: public __object_info_base.
This is the representation of a line in the object table.
The __merge method is used to aggregate information
across all dynamic instances created at the same call context.
The __magnitude must return the estimation of the benefit
as a number of small operations, e.g., number of words copied.
The __write method is used to produce the raw trace.
The __advice method is used to produce the advice string.
Define class __magic_stack_info: public __magic_info.
This defines the content of a line in the stack table.
Define class __trace_magic: public __trace_base<__magic_info,
__magic_stack_info>.
It defines the content of the trace associated with this diagnostic.
Add initialization and reporting calls in
include/profile/impl/profiler_trace.h. Use
__trace_vector_to_list as an example.
Add documentation in file doc/xml/manual/profile_mode.xml.